powerpc/eeh: Delay EEH probe during hotplug
While doing EEH recovery, the PCI devices of the problematic PE should be removed and then added to the system again. During the so-called hotplug event, the PCI devices of the problematic PE will be probed through early/late phase. We would delay EEH probe on late point for PowerNV platform since the PCI device isn't available in early phase. Signed-off-by: Gavin Shan <shangw@linux.vnet.ibm.com> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:
parent
326a98ea93
commit
26a74850b3
|
@ -758,6 +758,14 @@ static void eeh_add_device_early(struct device_node *dn)
|
|||
{
|
||||
struct pci_controller *phb;
|
||||
|
||||
/*
|
||||
* If we're doing EEH probe based on PCI device, we
|
||||
* would delay the probe until late stage because
|
||||
* the PCI device isn't available this moment.
|
||||
*/
|
||||
if (!eeh_probe_mode_devtree())
|
||||
return;
|
||||
|
||||
if (!of_node_to_eeh_dev(dn))
|
||||
return;
|
||||
phb = of_node_to_eeh_dev(dn)->phb;
|
||||
|
@ -766,7 +774,6 @@ static void eeh_add_device_early(struct device_node *dn)
|
|||
if (NULL == phb || 0 == phb->buid)
|
||||
return;
|
||||
|
||||
/* FIXME: hotplug support on POWERNV */
|
||||
eeh_ops->of_probe(dn, NULL);
|
||||
}
|
||||
|
||||
|
@ -817,6 +824,13 @@ static void eeh_add_device_late(struct pci_dev *dev)
|
|||
edev->pdev = dev;
|
||||
dev->dev.archdata.edev = edev;
|
||||
|
||||
/*
|
||||
* We have to do the EEH probe here because the PCI device
|
||||
* hasn't been created yet in the early stage.
|
||||
*/
|
||||
if (eeh_probe_mode_dev())
|
||||
eeh_ops->dev_probe(dev, NULL);
|
||||
|
||||
eeh_addr_cache_insert_dev(dev);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue