Complete diff:hm, this wont work on Xen then.
diff --git a/arch/x86/kernel/cpu/cpu_debug.c b/arch/x86/kernel/cpu/cpu_debug.c
index 0bdf4da..08c365a 100755
--- a/arch/x86/kernel/cpu/cpu_debug.c
+++ b/arch/x86/kernel/cpu/cpu_debug.c
@@ -464,19 +464,19 @@ static void print_dt(void *seq)
unsigned long ldt;
/* IDT */
- store_idt((struct desc_ptr *)&dt);
+ native_store_idt((struct desc_ptr *)&dt);
Strange it should work for Xen, Are you getting any error.
Xen also uses native_store_idt:
arch/x86/xen/enlighten.c: .store_idt = native_store_idt,
print_desc_ptr("IDT", seq, dt);we do have a store_tr() primitive - why open code the assembly?
/* GDT */
- store_gdt((struct desc_ptr *)&dt);
+ native_store_gdt((struct desc_ptr *)&dt);
print_desc_ptr("GDT", seq, dt);
/* LDT */
- store_ldt(ldt);
+ asm volatile("sldt %0" : "=m" (ldt));
seq_printf(seq, " LDT\t: %016lx\n", ldt);
/* TR */
- store_tr(ldt);
+ asm volatile("str %0" : "=r" (ldt));
seq_printf(seq, " TR\t: %016lx\n", ldt);
It is a single line code to avoid further conflicts, so i moved it here.