Commit ae897fda authored by Jan Beulich's avatar Jan Beulich Committed by Juergen Gross
Browse files

x86/Xen: swap NX determination and GDT setup on BSP



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 36104cb9 ("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: 36104cb9 ("x86/xen: Delay get_cpu_cap until stack canary is established")
Reported-by: default avatarOlaf Hering <olaf@aepfle.de>
Signed-off-by: default avatarJan Beulich <jbeulich@suse.com>
Reviewed-by: default avatarJuergen Gross <jgross@suse.com>

Link: https://lore.kernel.org/r/12a866b0-9e89-59f7-ebeb-a2a6cec0987a@suse.com


Signed-off-by: default avatarJuergen Gross <jgross@suse.com>
parent 97729b65
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -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);