On 10 June 2011 13:51, Anthony Liguori <aligu...@us.ibm.com> wrote: > On 06/10/2011 03:13 AM, Markus Armbruster wrote: >> >> Jan Kiszka<jan.kis...@siemens.com> writes: >>> >>> Resource management, e.g. IRQs. That will be useful for other types of >>> buses as well. >> >> A device should be able to say "I need to be connected to an IRQ line". >> Feels generic to me. > > More specifically, a device has input IRQs. A device has no idea what > number the IRQ is tied to. > > Devices may also have output IRQs. At the qdev layer, we should be able to > connect an arbitrary output IRQ to an arbitrary input IRQ.
Actually, devices have input and output I/O signals (GPIOs, if you like). A subset of these are IRQs. We already have some APIs in QEMU which claim to be dealing with 'irq's but actually are just for wiring up generic signals; I'd rather we didn't proliferate that terminology confusion if possible. (And a single GPIO wire is just one kind of thing you might want to link between two devices, obviously. MMIO is another.) > So the crux of the problem is that: > > -device isa-serial,id=serial,irq=3 > > Is very wrong. It ought to look something more like > > -device piix3,id=piix3 -device isa-serial,id=serial,irq=piix3.irq[3] This makes the wiring of this signal look like a property of the isa-serial device, which is a bit odd, since it's just as much a property of the piix3. Actually it's neither, it's a property of the machine model, and you might actually want a syntax a bit more like: piix3 = piix3(property=value, property=value...); serial = isa-serial(property=value...); connect(serial.irq, piix3.irq[3]); (in some mythical stitching language, which I think makes much more sense than command line switches anyway.) -- PMM