[PATCH RESEND v2] x86/xen/pvh: Enable PAE mode for 32-bit guest only when CONFIG_X86_PAE is set

Hou Wenlong posted 1 patch 4 weeks, 1 day ago
arch/x86/platform/pvh/head.S | 2 ++
1 file changed, 2 insertions(+)
[PATCH RESEND v2] x86/xen/pvh: Enable PAE mode for 32-bit guest only when CONFIG_X86_PAE is set
Posted by Hou Wenlong 4 weeks, 1 day ago
The PVH entry is available for 32-bit KVM guests, and 32-bit KVM guests
do not depend on CONFIG_X86_PAE. However, mk_early_pgtbl_32() builds
different pagetables depending on whether CONFIG_X86_PAE is set.
Therefore, enabling PAE mode for 32-bit KVM guests without
CONFIG_X86_PAE being set would result in a boot failure during CR3
loading.

Signed-off-by: Hou Wenlong <houwenlong.hwl@antgroup.com>
Reviewed-by: Juergen Gross <jgross@suse.com>
---
I resend this because I encountered the 32-bit KVM guest PVH booting failure again. I
hope this can be fixed.
original v2:
https://lore.kernel.org/all/0469c27833be58aa66471920aa77922489d86c63.1713873613.git.houwenlong.hwl@antgroup.com
---
 arch/x86/platform/pvh/head.S | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/arch/x86/platform/pvh/head.S b/arch/x86/platform/pvh/head.S
index 344030c1a81d..53ee2d53fcf8 100644
--- a/arch/x86/platform/pvh/head.S
+++ b/arch/x86/platform/pvh/head.S
@@ -91,10 +91,12 @@ SYM_CODE_START(pvh_start_xen)
 
 	leal rva(early_stack_end)(%ebp), %esp
 
+#if defined(CONFIG_X86_64) || defined(CONFIG_X86_PAE)
 	/* Enable PAE mode. */
 	mov %cr4, %eax
 	orl $X86_CR4_PAE, %eax
 	mov %eax, %cr4
+#endif
 
 #ifdef CONFIG_X86_64
 	/* Enable Long mode. */

base-commit: b7dccac786071bba98b0d834c517fd44a22c50f9
prerequisite-patch-id: 590fa7e96c6bb8e0b9d15017cfa5ce1eb314957a
-- 
2.31.1
Re: [PATCH RESEND v2] x86/xen/pvh: Enable PAE mode for 32-bit guest only when CONFIG_X86_PAE is set
Posted by Hou Wenlong 2 weeks, 5 days ago
+kvm, I'm not sure whether it is needed.

On Sat, Jan 10, 2026 at 12:00:08PM +0800, Hou Wenlong wrote:
> The PVH entry is available for 32-bit KVM guests, and 32-bit KVM guests
> do not depend on CONFIG_X86_PAE. However, mk_early_pgtbl_32() builds
> different pagetables depending on whether CONFIG_X86_PAE is set.
> Therefore, enabling PAE mode for 32-bit KVM guests without
> CONFIG_X86_PAE being set would result in a boot failure during CR3
> loading.
> 
> Signed-off-by: Hou Wenlong <houwenlong.hwl@antgroup.com>
> Reviewed-by: Juergen Gross <jgross@suse.com>
> ---
> I resend this because I encountered the 32-bit KVM guest PVH booting failure again. I
> hope this can be fixed.
> original v2:
> https://lore.kernel.org/all/0469c27833be58aa66471920aa77922489d86c63.1713873613.git.houwenlong.hwl@antgroup.com
> ---
>  arch/x86/platform/pvh/head.S | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/arch/x86/platform/pvh/head.S b/arch/x86/platform/pvh/head.S
> index 344030c1a81d..53ee2d53fcf8 100644
> --- a/arch/x86/platform/pvh/head.S
> +++ b/arch/x86/platform/pvh/head.S
> @@ -91,10 +91,12 @@ SYM_CODE_START(pvh_start_xen)
>  
>  	leal rva(early_stack_end)(%ebp), %esp
>  
> +#if defined(CONFIG_X86_64) || defined(CONFIG_X86_PAE)
>  	/* Enable PAE mode. */
>  	mov %cr4, %eax
>  	orl $X86_CR4_PAE, %eax
>  	mov %eax, %cr4
> +#endif
>  
>  #ifdef CONFIG_X86_64
>  	/* Enable Long mode. */
> 
> base-commit: b7dccac786071bba98b0d834c517fd44a22c50f9
> prerequisite-patch-id: 590fa7e96c6bb8e0b9d15017cfa5ce1eb314957a
> -- 
> 2.31.1
> 
>
Re: [PATCH RESEND v2] x86/xen/pvh: Enable PAE mode for 32-bit guest only when CONFIG_X86_PAE is set
Posted by Jürgen Groß 2 weeks, 5 days ago
On 20.01.26 08:39, Hou Wenlong wrote:
> +kvm, I'm not sure whether it is needed.

I have queued it in the Xen tree for the next merge window.


Juergen

> 
> On Sat, Jan 10, 2026 at 12:00:08PM +0800, Hou Wenlong wrote:
>> The PVH entry is available for 32-bit KVM guests, and 32-bit KVM guests
>> do not depend on CONFIG_X86_PAE. However, mk_early_pgtbl_32() builds
>> different pagetables depending on whether CONFIG_X86_PAE is set.
>> Therefore, enabling PAE mode for 32-bit KVM guests without
>> CONFIG_X86_PAE being set would result in a boot failure during CR3
>> loading.
>>
>> Signed-off-by: Hou Wenlong <houwenlong.hwl@antgroup.com>
>> Reviewed-by: Juergen Gross <jgross@suse.com>
>> ---
>> I resend this because I encountered the 32-bit KVM guest PVH booting failure again. I
>> hope this can be fixed.
>> original v2:
>> https://lore.kernel.org/all/0469c27833be58aa66471920aa77922489d86c63.1713873613.git.houwenlong.hwl@antgroup.com
>> ---
>>   arch/x86/platform/pvh/head.S | 2 ++
>>   1 file changed, 2 insertions(+)
>>
>> diff --git a/arch/x86/platform/pvh/head.S b/arch/x86/platform/pvh/head.S
>> index 344030c1a81d..53ee2d53fcf8 100644
>> --- a/arch/x86/platform/pvh/head.S
>> +++ b/arch/x86/platform/pvh/head.S
>> @@ -91,10 +91,12 @@ SYM_CODE_START(pvh_start_xen)
>>   
>>   	leal rva(early_stack_end)(%ebp), %esp
>>   
>> +#if defined(CONFIG_X86_64) || defined(CONFIG_X86_PAE)
>>   	/* Enable PAE mode. */
>>   	mov %cr4, %eax
>>   	orl $X86_CR4_PAE, %eax
>>   	mov %eax, %cr4
>> +#endif
>>   
>>   #ifdef CONFIG_X86_64
>>   	/* Enable Long mode. */
>>
>> base-commit: b7dccac786071bba98b0d834c517fd44a22c50f9
>> prerequisite-patch-id: 590fa7e96c6bb8e0b9d15017cfa5ce1eb314957a
>> -- 
>> 2.31.1
>>
>>

Re: [PATCH RESEND v2] x86/xen/pvh: Enable PAE mode for 32-bit guest only when CONFIG_X86_PAE is set
Posted by Hou Wenlong 2 weeks, 5 days ago
On Tue, Jan 20, 2026 at 08:48:43AM +0100, Jürgen Groß wrote:
> On 20.01.26 08:39, Hou Wenlong wrote:
> >+kvm, I'm not sure whether it is needed.
> 
> I have queued it in the Xen tree for the next merge window.
>
Thanks for the notification.
 
> 
> Juergen
> 
> >
> >On Sat, Jan 10, 2026 at 12:00:08PM +0800, Hou Wenlong wrote:
> >>The PVH entry is available for 32-bit KVM guests, and 32-bit KVM guests
> >>do not depend on CONFIG_X86_PAE. However, mk_early_pgtbl_32() builds
> >>different pagetables depending on whether CONFIG_X86_PAE is set.
> >>Therefore, enabling PAE mode for 32-bit KVM guests without
> >>CONFIG_X86_PAE being set would result in a boot failure during CR3
> >>loading.
> >>
> >>Signed-off-by: Hou Wenlong <houwenlong.hwl@antgroup.com>
> >>Reviewed-by: Juergen Gross <jgross@suse.com>
> >>---
> >>I resend this because I encountered the 32-bit KVM guest PVH booting failure again. I
> >>hope this can be fixed.
> >>original v2:
> >>https://lore.kernel.org/all/0469c27833be58aa66471920aa77922489d86c63.1713873613.git.houwenlong.hwl@antgroup.com
> >>---
> >>  arch/x86/platform/pvh/head.S | 2 ++
> >>  1 file changed, 2 insertions(+)
> >>
> >>diff --git a/arch/x86/platform/pvh/head.S b/arch/x86/platform/pvh/head.S
> >>index 344030c1a81d..53ee2d53fcf8 100644
> >>--- a/arch/x86/platform/pvh/head.S
> >>+++ b/arch/x86/platform/pvh/head.S
> >>@@ -91,10 +91,12 @@ SYM_CODE_START(pvh_start_xen)
> >>  	leal rva(early_stack_end)(%ebp), %esp
> >>+#if defined(CONFIG_X86_64) || defined(CONFIG_X86_PAE)
> >>  	/* Enable PAE mode. */
> >>  	mov %cr4, %eax
> >>  	orl $X86_CR4_PAE, %eax
> >>  	mov %eax, %cr4
> >>+#endif
> >>  #ifdef CONFIG_X86_64
> >>  	/* Enable Long mode. */
> >>
> >>base-commit: b7dccac786071bba98b0d834c517fd44a22c50f9
> >>prerequisite-patch-id: 590fa7e96c6bb8e0b9d15017cfa5ce1eb314957a
> >>-- 
> >>2.31.1
> >>
> >>
> 

> pub  2048R/28BF132F 2014-06-02 Juergen Gross <jg@pfupf.net>
> uid                            Juergen Gross <jgross@suse.com>
> uid                            Juergen Gross <jgross@novell.com>
> uid                            Juergen Gross <jgross@suse.de>
> sub  2048R/16375B53 2014-06-02