Keeping the selector that was loaded from the 32-bit GDT is okay, because only code segment descriptors differ between 32- and 64-bit mode. In fact the same is true for %ss as well, so let's just remove the whole segment loading from load_tss. Thanks to Bandan Das for debugging. Reported-by: Shih-Wei Li <shihwei@xxxxxxxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> --- x86/cstart64.S | 6 ------ 1 file changed, 6 deletions(-) diff --git a/x86/cstart64.S b/x86/cstart64.S index 8d5ee2d..e947888 100644 --- a/x86/cstart64.S +++ b/x86/cstart64.S @@ -213,12 +213,6 @@ idt_descr: load_tss: lidtq idt_descr - mov $0x10, %eax - mov %ax, %ds - mov %ax, %es - mov %ax, %fs - mov %ax, %gs - mov %ax, %ss mov $(APIC_DEFAULT_PHYS_BASE + APIC_ID), %eax mov (%rax), %eax shr $24, %eax -- 1.8.3.1 -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html