On Tue, Dec 22, 2009 at 09:15:57AM +0200, Gleb Natapov wrote: > On Mon, Dec 21, 2009 at 10:21:14PM +0000, Mikolaj Kucharski wrote: > > On Mon, Dec 21, 2009 at 09:22:52AM +0200, Gleb Natapov wrote: > > > > I have personal interest in resolving RedHat's bz #508801, unfortunately > > > > I cannot do that myself, so I wanted to ask on the list for help, but now > > > > I'm confused where should I go. > > > > > > > Can you try kvm modules from latest kvm.git please? It looks like emulation of > > > "push %ds" fails and it was added after 2.6.32. > > > > Having following GIT repositories: > > > > git://git.kernel.org/pub/scm/virt/kvm/kvm.git > > git://git.kernel.org/pub/scm/virt/kvm/kvm-kmod.git > > > > Which one I should use to build my modules from? I would like to keep my > > system (Fedora 12) consistent and I don't want to have any parts built > > outside of rpm. I would like to contribute/help for RedHat's bz #508801 > > resolution, but I need some directions. > > > > Is kvm.git whole Linux kernel? > > > Don't bother, I already tested upstream with OpenBSD and, as Avi said, > the problem is somewhere else. > For some strange reason openbsd configures gsi 4 (com0) and gsi 12 (i8042) to be level triggered active high in ioapic. That causes KVM to send endless stream of interrupts into the guest, so guest's stack overflows into framebuffer area. At this point KVM start to emulate instructions and fails. I don't know why openbsd configures those interrupts incorrectly. It also ignores my attempts to override interrupt polarity/type with ACPI tables. Somebody knowledgeable in openbsd should look into why it configures interrupt controller incorrectly. If I override wrong settings inside KVM like in the patch below openbsd boots, but I doubt com port is usable. diff --git a/virt/kvm/ioapic.c b/virt/kvm/ioapic.c index 38a2d20..fc37eac 100644 --- a/virt/kvm/ioapic.c +++ b/virt/kvm/ioapic.c @@ -121,6 +121,8 @@ static void ioapic_write_indirect(struct kvm_ioapic *ioapic, u32 val) default: index = (ioapic->ioregsel - 0x10) >> 1; + if (!(ioapic->ioregsel & 1)) + val &= ~0xa000; ioapic_debug("change redir index %x val %x\n", index, val); if (index >= IOAPIC_NUM_PINS) return; -- Gleb. -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html