On 2011-05-29 17:10, Avi Kivity wrote: > On 05/29/2011 06:05 PM, Jan Kiszka wrote: >> On 2011-05-29 14:57, Avi Kivity wrote: >> > Recent changes killed the ioapic_irq_hack hack, use the >> isa_get_irq() API >> > instead. >> > >> > Signed-off-by: Avi Kivity<avi@xxxxxxxxxx> >> > --- >> > hw/isa-bus.c | 2 +- >> > hw/testdev.c | 4 +--- >> > 2 files changed, 2 insertions(+), 4 deletions(-) >> > >> > diff --git a/hw/isa-bus.c b/hw/isa-bus.c >> > index 2765543..7e06efc 100644 >> > --- a/hw/isa-bus.c >> > +++ b/hw/isa-bus.c >> > @@ -66,7 +66,7 @@ void isa_bus_irqs(qemu_irq *irqs) >> > */ >> > qemu_irq isa_get_irq(int isairq) >> > { >> > - if (isairq< 0 || isairq> 15) { >> > + if (isairq< 0 || isairq> 23) { >> >> That's a fairly evil hack. It will break again when we clean up the kvm >> irqchips (not to speak of side effects in non-irqchip/non-kvm mode). >> >> Why not hook into the kvm irqchip directly? Would keep generic code out >> of this business until we have real irq pin manipulation in qemu. > > Firstly, I did the minimal patch to get things working, as is my custom > when fixing up merge/refactoring problems. Not that I often follow up > with the clean fix. The minimal fix would be simply initializing ioapic_isa_hack again. That was lost while merging with the xen bits. > > Second, I'm not sure it's such a hack. The hack is that isa_get_irq is supposed to return ISA IRQs, not GSIs. Name-wise, there is already a bit mixed up in QEMU, but at least not in that function. > Suppose our motherboard wired > the PCI links to GSI16-19 (or GSI16-23, as we once wanted before we had > MSI-X)? We'd need an API to access non-ISA interrupt lines. > > So what's the clean fix here? gsi_get_irq()? Maybe. Depends on the requirements of the testdev. If you also want to address PIC and IOAPIC separately or simulate injection from a specific device, we need more logic. We also need a better interface to discover and track legacy IRQ routes for device assignment. Markus is currently collecting requirements for qdev enhancements, and I think generic IRQ manipulation and discovery belongs there. Jan
Attachment:
signature.asc
Description: OpenPGP digital signature