On 11/10/2020 20:03, Philippe Mathieu-Daudé wrote: > The Grackle PCI host model expects the interrupt controller > being set, but does not verify it is present. Add a check to > help developers using this model. > > Signed-off-by: Philippe Mathieu-Daudé <f4...@amsat.org> > --- > hw/pci-host/grackle.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/hw/pci-host/grackle.c b/hw/pci-host/grackle.c > index 57c29b20afb..20361d215ca 100644 > --- a/hw/pci-host/grackle.c > +++ b/hw/pci-host/grackle.c > @@ -76,6 +76,10 @@ static void grackle_realize(DeviceState *dev, Error **errp) > GrackleState *s = GRACKLE_PCI_HOST_BRIDGE(dev); > PCIHostState *phb = PCI_HOST_BRIDGE(dev); > > + if (!s->pic) { > + error_setg(errp, TYPE_GRACKLE_PCI_HOST_BRIDGE ": 'pic' link not > set"); > + return; > + } > phb->bus = pci_register_root_bus(dev, NULL, > pci_grackle_set_irq, > pci_grackle_map_irq,
Reviewing this now, my feeling is that both grackle and uninorth are doing the wrong thing here by passing in a link to the PIC - certainly if I had written this more recently than I originally did, I would simply use qdev_init_gpio_out() for the IRQ lines and do the wiring during machine init. I've got a few other things to look at first, but I'll post a patchset later which I think will improve this for both Mac machines. ATB, Mark.