tss_descr is declared as a struct descriptor_table_ptr but it is actualy pointing to an _entry_ in the GDT. Also it is different per CPU, but tss_descr does not recognize that. Fix both by reusing the code (already present e.g. in the vmware_backdoors test) that extracts the base from the GDT entry; and also provide a helper to retrieve the limit, which is needed in vmx.c. Patch 1 adjusts the structs for GDT descriptors, so that the same code works for both 32-bit and 64-bit (apart from the high 32 bits of the base field). Paolo Paolo Bonzini (2): unify structs for GDT descriptors replace tss_descr global with a function lib/x86/desc.c | 26 +++++++++++-------- lib/x86/desc.h | 58 ++++++++++++++++++++++++++++++++++-------- x86/cstart64.S | 1 - x86/svm_tests.c | 15 +++-------- x86/taskswitch.c | 2 +- x86/vmware_backdoors.c | 22 +++++----------- x86/vmx.c | 9 ++++--- 7 files changed, 78 insertions(+), 55 deletions(-) -- 2.27.0