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

From: Hou Wenlong

Date: Tue Jan 20 2026 - 02:55:23 EST


+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@xxxxxxxxxxxx>
> Reviewed-by: Juergen Gross <jgross@xxxxxxxx>
> ---
> 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@xxxxxxxxxxxx
> ---
> 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
>
>