arch/x86/platform/pvh/head.S | 2 ++ 1 file changed, 2 insertions(+)
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
+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 > >
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 >> >>
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
© 2016 - 2026 Red Hat, Inc.