Gregory Haskins wrote: > Agreed. I was thinking that the interface for the "IOAPIC in kernel" model > would look something like the way the pic_send_irq() function looks, except > it would also convey BUS/IOAPIC id. > > so: kvm_inject_interrupt(int bus, int pin, int value); > > and the "kvmpic" driver would currently translate as bus = 0 (giving us > IRQ0-23). E.g. > > kvmpic_send_irq(int irq, int value) > { > kvm_inject_interrupt(0, irq, value); > } >
With appropriate modeling of edge vs level triggered, and translation of pin to vector, yes. > > >> Everything should keep working, that is a must. We just need the >> interfaces to follow the hardware faithfully. The issue with the ioapic >> eoi is worrying me performance wise, though; it looks like we need to >> push the ioapic too if we are to have no- compromise performance on >> unmodified OSes. >> > > Not sure if this will make you feel better, but it appears as though both the > QEMU and the in-kernel model that I inherited don't accurately support IOAPIC > EOI already. From that you can infer that there must not be any > level-sensitive interrupts in use today. Since the system seems to only have > the legacy ISA model (which dictates edge triggers, IIRC), this makes sense. > However, if we want to support level triggers in the future, we will have to > address this. I would be uncomfortable designing something that doesn't take > the IOAPIC EOI into account, even if its not immediately used. > > pci is level triggered, so maybe the guests just handle the inaccuracy. >> For unmodified guests, use the existing pci irq routing. I certainly >> wouldn't want to debug anything else. For modified guests, there's no >> real problem. >> > > Ill take your word for it ;) I spent a few minutes looking through the linux > kernel trying to figure out how to get a hint about a free vector without > assigning one statically in the header files and came up empty handed. Im > sure there is a way (or maybe static is ok?). > > No idea really, but the paravirt_ops stuff probably provides the right hooks. -- error compiling committee.c: too many arguments to function ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys-and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ kvm-devel mailing list kvm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/kvm-devel