Commit 26a74850 authored by Gavin Shan's avatar Gavin Shan Committed by Benjamin Herrenschmidt

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: default avatarGavin Shan <shangw@linux.vnet.ibm.com>
Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
parent 326a98ea
...@@ -758,6 +758,14 @@ static void eeh_add_device_early(struct device_node *dn) ...@@ -758,6 +758,14 @@ static void eeh_add_device_early(struct device_node *dn)
{ {
struct pci_controller *phb; 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)) if (!of_node_to_eeh_dev(dn))
return; return;
phb = of_node_to_eeh_dev(dn)->phb; phb = of_node_to_eeh_dev(dn)->phb;
...@@ -766,7 +774,6 @@ static void eeh_add_device_early(struct device_node *dn) ...@@ -766,7 +774,6 @@ static void eeh_add_device_early(struct device_node *dn)
if (NULL == phb || 0 == phb->buid) if (NULL == phb || 0 == phb->buid)
return; return;
/* FIXME: hotplug support on POWERNV */
eeh_ops->of_probe(dn, NULL); eeh_ops->of_probe(dn, NULL);
} }
...@@ -817,6 +824,13 @@ static void eeh_add_device_late(struct pci_dev *dev) ...@@ -817,6 +824,13 @@ static void eeh_add_device_late(struct pci_dev *dev)
edev->pdev = dev; edev->pdev = dev;
dev->dev.archdata.edev = edev; 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); eeh_addr_cache_insert_dev(dev);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment