To make selectors work reliably, we need to write zero to it before writing its final value. --- i386/i386/cpuboot.S | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/i386/i386/cpuboot.S b/i386/i386/cpuboot.S
index 09855864..f549a2bc 100644
--- a/i386/i386/cpuboot.S
+++ b/i386/i386/cpuboot.S
@@ -182,6 +182,8 @@ apboot_jmp_offset:
shr $8, %ax
movb %al, apboot_percpu_high
+ xorl %ebx, %ebx
+ movw %bx, %gs
movw $PERCPU_DS, %ax
movw %ax, %gs
--
2.45.2
