On 10/12/20 11:23 AM, Mark Cave-Ayland wrote:
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.
Awesome, thanks!
ATB,
Mark.