Skip to content

Commit

Permalink
x86/Xen: swap NX determination and GDT setup on BSP
Browse files Browse the repository at this point in the history
xen_setup_gdt(), via xen_load_gdt_boot(), wants to adjust page tables.
For this to work when NX is not available, x86_configure_nx() needs to
be called first.

[jgross] Note that this is a revert of 36104cb ("x86/xen:
Delay get_cpu_cap until stack canary is established"), which is possible
now that we no longer support running as PV guest in 32-bit mode.

Cc: <stable.vger.kernel.org> # 5.9
Fixes: 36104cb ("x86/xen: Delay get_cpu_cap until stack canary is established")
Reported-by: Olaf Hering <[email protected]>
Signed-off-by: Jan Beulich <[email protected]>
Reviewed-by: Juergen Gross <[email protected]>

Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Juergen Gross <[email protected]>
  • Loading branch information
jbeulich authored and jgross1 committed May 21, 2021
1 parent 97729b6 commit ae897fd
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions arch/x86/xen/enlighten_pv.c
Original file line number Diff line number Diff line change
Expand Up @@ -1273,16 +1273,16 @@ asmlinkage __visible void __init xen_start_kernel(void)
/* Get mfn list */
xen_build_dynamic_phys_to_machine();

/* Work out if we support NX */
get_cpu_cap(&boot_cpu_data);
x86_configure_nx();

/*
* Set up kernel GDT and segment registers, mainly so that
* -fstack-protector code can be executed.
*/
xen_setup_gdt(0);

/* Work out if we support NX */
get_cpu_cap(&boot_cpu_data);
x86_configure_nx();

/* Determine virtual and physical address sizes */
get_cpu_address_sizes(&boot_cpu_data);

Expand Down

0 comments on commit ae897fd

Please sign in to comment.