Browse Source

x86: VMI fix

Jeff Chua bisected down a vmware guest boot breakage (hang) to
this paravirt change:

  commit 8d947344c47a40626730bb80d136d8daac9f2060
  Author: Glauber de Oliveira Costa <gcosta@redhat.com>
  Date:   Wed Jan 30 13:31:12 2008 +0100

    x86: change write_idt_entry signature

fix the off-by-one indexing bug ...

Bisected-by: Jeff Chua <jeff.chua.linux@gmail.com>
Tested-by: Jeff Chua <jeff.chua.linux@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Ingo Molnar 17 years ago
parent
commit
262d5ee272
1 changed files with 3 additions and 3 deletions
  1. 3 3
      arch/x86/kernel/vmi_32.c

+ 3 - 3
arch/x86/kernel/vmi_32.c

@@ -220,21 +220,21 @@ static void vmi_set_tr(void)
 static void vmi_write_idt_entry(gate_desc *dt, int entry, const gate_desc *g)
 static void vmi_write_idt_entry(gate_desc *dt, int entry, const gate_desc *g)
 {
 {
 	u32 *idt_entry = (u32 *)g;
 	u32 *idt_entry = (u32 *)g;
-	vmi_ops.write_idt_entry(dt, entry, idt_entry[0], idt_entry[2]);
+	vmi_ops.write_idt_entry(dt, entry, idt_entry[0], idt_entry[1]);
 }
 }
 
 
 static void vmi_write_gdt_entry(struct desc_struct *dt, int entry,
 static void vmi_write_gdt_entry(struct desc_struct *dt, int entry,
 				const void *desc, int type)
 				const void *desc, int type)
 {
 {
 	u32 *gdt_entry = (u32 *)desc;
 	u32 *gdt_entry = (u32 *)desc;
-	vmi_ops.write_gdt_entry(dt, entry, gdt_entry[0], gdt_entry[2]);
+	vmi_ops.write_gdt_entry(dt, entry, gdt_entry[0], gdt_entry[1]);
 }
 }
 
 
 static void vmi_write_ldt_entry(struct desc_struct *dt, int entry,
 static void vmi_write_ldt_entry(struct desc_struct *dt, int entry,
 				const void *desc)
 				const void *desc)
 {
 {
 	u32 *ldt_entry = (u32 *)desc;
 	u32 *ldt_entry = (u32 *)desc;
-	vmi_ops.write_idt_entry(dt, entry, ldt_entry[0], ldt_entry[2]);
+	vmi_ops.write_idt_entry(dt, entry, ldt_entry[0], ldt_entry[1]);
 }
 }
 
 
 static void vmi_load_sp0(struct tss_struct *tss,
 static void vmi_load_sp0(struct tss_struct *tss,