{
        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;
        if (NULL == phb || 0 == phb->buid)
                return;
 
-       /* FIXME: hotplug support on POWERNV */
        eeh_ops->of_probe(dn, NULL);
 }
 
        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);
 }