Re: Commit f06e4ec breaks vmware

From: Ingo Molnar
Date: Mon Feb 04 2008 - 10:36:56 EST



* Jeff Chua <jeff.chua.linux@xxxxxxxxx> wrote:

> On Feb 4, 2008 10:53 PM, Ingo Molnar <mingo@xxxxxxx> wrote:
> > > commit 8d947344c47a40626730bb80d136d8daac9f2060
> > > Author: Glauber de Oliveira Costa <gcosta@xxxxxxxxxx>
> > > Date: Wed Jan 30 13:31:12 2008 +0100
> > >
> > > x86: change write_idt_entry signature
> >
> > does the patch below ontop of x86.git#mm fix this?
>
>
> > 32-bit or 64-bit guest kernel?
>
> 32-bit.
>
> Yep, this fixed the problem.

great! I've added:

Tested-by: Jeff Chua <jeff.chua.linux@xxxxxxxxx>

to the commit message as well, if you dont mind. Full patch is below.

> You're amazingly fast!

you did all the hard work by bisecting it down so fast - fixing it was
easy :)

Ingo

----------------------->
Subject: x86: VMI fix
From: Ingo Molnar <mingo@xxxxxxx>

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

commit 8d947344c47a40626730bb80d136d8daac9f2060
Author: Glauber de Oliveira Costa <gcosta@xxxxxxxxxx>
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@xxxxxxxxx>
Tested-by: Jeff Chua <jeff.chua.linux@xxxxxxxxx>
Signed-off-by: Ingo Molnar <mingo@xxxxxxx>
---
arch/x86/kernel/vmi_32.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

Index: linux-x86.q/arch/x86/kernel/vmi_32.c
===================================================================
--- linux-x86.q.orig/arch/x86/kernel/vmi_32.c
+++ linux-x86.q/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)
{
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,
const void *desc, int type)
{
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,
const void *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,
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/