Commit f58b6385 authored by Brian Gerst's avatar Brian Gerst Committed by Ingo Molnar
Browse files

x86/pvh: Use fixed_percpu_data for early boot GSBASE



Instead of having a private area for the stack canary, use
fixed_percpu_data for GSBASE like the native kernel.

Signed-off-by: default avatarBrian Gerst <brgerst@gmail.com>
Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
Reviewed-by: default avatarArd Biesheuvel <ardb@kernel.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Link: https://lore.kernel.org/r/20250123190747.745588-5-brgerst@gmail.com
parent a9a76b38
Loading
Loading
Loading
Loading
+9 −6
Original line number Diff line number Diff line
@@ -173,10 +173,15 @@ SYM_CODE_START(pvh_start_xen)
1:
	UNWIND_HINT_END_OF_STACK

	/* Set base address in stack canary descriptor. */
	mov $MSR_GS_BASE,%ecx
	leal canary(%rip), %eax
	xor %edx, %edx
	/*
	 * Set up GSBASE.
	 * Note that on SMP the boot CPU uses the init data section until
	 * the per-CPU areas are set up.
	 */
	movl $MSR_GS_BASE,%ecx
	leaq INIT_PER_CPU_VAR(fixed_percpu_data)(%rip), %rdx
	movq %edx, %eax
	shrq $32, %rdx
	wrmsr

	/* Call xen_prepare_pvh() via the kernel virtual mapping */
@@ -238,8 +243,6 @@ SYM_DATA_START_LOCAL(gdt_start)
SYM_DATA_END_LABEL(gdt_start, SYM_L_LOCAL, gdt_end)

	.balign 16
SYM_DATA_LOCAL(canary, .fill 48, 1, 0)

SYM_DATA_START_LOCAL(early_stack)
	.fill BOOT_STACK_SIZE, 1, 0
SYM_DATA_END_LABEL(early_stack, SYM_L_LOCAL, early_stack_end)