diff options
author | Ingo Molnar <mingo@elte.hu> | 2008-02-04 10:47:54 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-02-04 10:47:54 -0500 |
commit | 262d5ee27271703a0396d63649430f43f3b5deb3 (patch) | |
tree | 60e83b9bf075263641f7d6ca831feeec55f80929 /arch/x86/kernel/vmi_32.c | |
parent | 38cb47ba0187c481aa949d3bbf149e014e8cacda (diff) |
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>
Diffstat (limited to 'arch/x86/kernel/vmi_32.c')
-rw-r--r-- | arch/x86/kernel/vmi_32.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/arch/x86/kernel/vmi_32.c b/arch/x86/kernel/vmi_32.c index 4525bc2c2e19..12affe1f9bce 100644 --- a/arch/x86/kernel/vmi_32.c +++ b/arch/x86/kernel/vmi_32.c | |||
@@ -220,21 +220,21 @@ static void vmi_set_tr(void) | |||
220 | static void vmi_write_idt_entry(gate_desc *dt, int entry, const gate_desc *g) | 220 | static void vmi_write_idt_entry(gate_desc *dt, int entry, const gate_desc *g) |
221 | { | 221 | { |
222 | u32 *idt_entry = (u32 *)g; | 222 | u32 *idt_entry = (u32 *)g; |
223 | vmi_ops.write_idt_entry(dt, entry, idt_entry[0], idt_entry[2]); | 223 | vmi_ops.write_idt_entry(dt, entry, idt_entry[0], idt_entry[1]); |
224 | } | 224 | } |
225 | 225 | ||
226 | static void vmi_write_gdt_entry(struct desc_struct *dt, int entry, | 226 | static void vmi_write_gdt_entry(struct desc_struct *dt, int entry, |
227 | const void *desc, int type) | 227 | const void *desc, int type) |
228 | { | 228 | { |
229 | u32 *gdt_entry = (u32 *)desc; | 229 | u32 *gdt_entry = (u32 *)desc; |
230 | vmi_ops.write_gdt_entry(dt, entry, gdt_entry[0], gdt_entry[2]); | 230 | vmi_ops.write_gdt_entry(dt, entry, gdt_entry[0], gdt_entry[1]); |
231 | } | 231 | } |
232 | 232 | ||
233 | static void vmi_write_ldt_entry(struct desc_struct *dt, int entry, | 233 | static void vmi_write_ldt_entry(struct desc_struct *dt, int entry, |
234 | const void *desc) | 234 | const void *desc) |
235 | { | 235 | { |
236 | u32 *ldt_entry = (u32 *)desc; | 236 | u32 *ldt_entry = (u32 *)desc; |
237 | vmi_ops.write_idt_entry(dt, entry, ldt_entry[0], ldt_entry[2]); | 237 | vmi_ops.write_idt_entry(dt, entry, ldt_entry[0], ldt_entry[1]); |
238 | } | 238 | } |
239 | 239 | ||
240 | static void vmi_load_sp0(struct tss_struct *tss, | 240 | static void vmi_load_sp0(struct tss_struct *tss, |