Marcelo Tosatti wrote: > Hi Anthony, > > On Fri, Jun 13, 2008 at 02:38:08PM +0800, Xu, Anthony wrote: >> Hi Avi and all >> >> This is the revised one, >> >> All PCI devices send interrupt to both PIC and IOAPIC, >> a). When PIC is enabled and IOAPIC is disabled, all redirect >> entries in IOAPIC are masked. B) When PIC is disabled and IPAPIC is >> enabled, link entry bit7 is set, means this link entry is disable. >> Guest OS need to guarantee PIC and IOAPIC are not enabled in the same >> time. Otherwise cause many suspicious interrupt to guest. >> >> Test by running guest linux in kvm/ia32 and kvm/ia64. > > Interrupt sharing is stable under Linux, PCI hotplug is happy, and > Windows is happy. Ship it! Thanks, I will > > I had to apply your patch by hand, your mailer eats newlines and other > nasty things, please fix that (or send attached patches). Sorry, I'll attach patch. > >> >> + Name (PICD, 0) >> >> - /* PCI Bus definition */ >> + Method(_PIC, 1) >> + { >> + Store(Arg0, PICD) >> + } >> + >> + /*PCI Bus definition */ > > Why did you take off the space before the "P" of PCI? Before you ask > me, no, I don't have anything better to do :) typo > >> Scope(\_SB) { >> Device(PCI0) { >> Name (_HID, EisaId ("PNP0A03")) >> Name (_ADR, 0x00) >> Name (_UID, 1) >> - Name(_PRT, Package() { >> + >> + Method(_PRT,0){ >> + If(PICD){ > > Put some spaces there too. Okay > >> diff --git a/qemu/hw/pci.c b/qemu/hw/pci.c >> index a23a466..f96fbb5 100644 >> --- a/qemu/hw/pci.c >> +++ b/qemu/hw/pci.c >> @@ -27,6 +27,8 @@ >> #include "net.h" >> #include "pc.h" >> >> +#include "qemu-kvm.h" >> + >> //#define DEBUG_PCI >> >> struct PCIBus { >> @@ -534,12 +536,18 @@ static void pci_set_irq(void *opaque, int >> irq_num, int level) PCIDevice *pci_dev = (PCIDevice *)opaque; >> PCIBus *bus; >> int change; >> - >> +#ifdef KVM_CAP_IRQCHIP >> + int irq; >> +#endif >> change = level - pci_dev->irq_state[irq_num]; >> if (!change) >> return; >> >> pci_dev->irq_state[irq_num] = level; >> +#ifdef KVM_CAP_IRQCHIP >> + irq = ioapic_map_irq(pci_dev->devfn, irq_num); >> + ioapic_set_irq(opaque, irq, change); >> +#endif > > I think you should avoid any changes to pci.c. Perhaps create a new > ioapic_and_pic_map / ioapic_and_pic_set pair of functions and change > pc.c to use that instead of piix_set_irq. I'll consider how to do this > > Other than that (and KVM_CAP_IRQCHIP mentioned by Avi, along with > making sure this works with "-no-kvm") looks great. Agree > > Regarding the non-PIIX link devices I mentioned, that can be done > later if necessary. Agree, if we need to support dynamic irq, or support multiple IOAPIC. Anthony -- To unsubscribe from this list: send the line "unsubscribe kvm-ia64" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html