Paolo Bonzini <pbonz...@redhat.com> writes: > Il 15/10/2013 14:43, Markus Armbruster ha scritto: >> Paolo, or maybe Andreas, >> >> To go beyond RFC with this series, I need to explain why isa-i8259 and >> kvm-i8259 cannot_instantiate_with_device_add_yet, or drop that. I'd >> appreciate your help. >> >> Both are derived from TYPE_PIC_COMMON, which is derived from >> TYPE_ISA_DEVICE. >> >> I figure isa-i8259 cannot_instantiate_with_device_add_yet, because it >> sets global isa_pic and slave_pic. slave_pic appears to be a lame way >> to wire the slave PIC to the master PIC behind QOM's back. isa_pic >> appears to be a lame way to wire the master PIC to whatever it needs to >> be wired to. Is that a fair description? > > Yes. > >> If yes, is it sufficient reason for >> cannot_instantiate_with_device_add_yet? >> >> kvm-i8259 is the same device implemented with kernel support. Does it >> have its own reason for cannot_instantiate_with_device_add_yet? >> >> If not, should it keep cannot_instantiate_with_device_add_yet for >> symmetry with isa-i8259? > > Both i8259 implementations have to be matched with an appropriate array > of qemu_irqs, such as the one returned by kvm_i8259_init. I think this > is the reason why kvm-i8259 cannot be instantiated from the command-line.
Let me try to elaborate, to make sure I understand. Unlike ordinary ISA devices, the i8259 devices need additional wiring, done by code. For instance, board code like pc_q35_init(), pc_piix.c's pc_init1(), mips_malta_init(), ... wire up their IRQ input lines. The slave's IRQ output line is wired to the master's IRQ2 in hw/intc/i8259.c for isa-i8259, and the kernel for kvm-i8259. The master's IRQ output line is wired up by board code (it's complicated). Correct? If yes, I can turn it into a suitable comment.