spapr: Direct all PCI hotplug to host bridge, rather than P2P bridge
A P2P bridge will attempt to handle the hotplug with SHPC, which doesn't work in the PAPR environment. Instead we want to direct all PCI hotplug actions to the PAPR specific host bridge which will use the PAPR hotplug mechanism. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Acked-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
05929a6c5d
commit
cb60008706
@ -4094,6 +4094,17 @@ static HotplugHandler *spapr_get_hotplug_handler(MachineState *machine,
|
||||
object_dynamic_cast(OBJECT(dev), TYPE_SPAPR_PCI_HOST_BRIDGE)) {
|
||||
return HOTPLUG_HANDLER(machine);
|
||||
}
|
||||
if (object_dynamic_cast(OBJECT(dev), TYPE_PCI_DEVICE)) {
|
||||
PCIDevice *pcidev = PCI_DEVICE(dev);
|
||||
PCIBus *root = pci_device_root_bus(pcidev);
|
||||
SpaprPhbState *phb =
|
||||
(SpaprPhbState *)object_dynamic_cast(OBJECT(BUS(root)->parent),
|
||||
TYPE_SPAPR_PCI_HOST_BRIDGE);
|
||||
|
||||
if (phb) {
|
||||
return HOTPLUG_HANDLER(phb);
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user