On Mon, Jul 15, 2019 at 06:56:08PM +1000, Oliver O'Halloran wrote: > At the point where we start inserting ranges into the EEH address cache the > binding between pci_dev and eeh_dev has already been set up. Instead of > consulting the pci_dn tree we can retrieve the eeh_dev directly using > pci_dev_to_eeh_dev(). > > Signed-off-by: Oliver O'Halloran <[email protected]>
In fact the binding between pci_dev and eeh_dev is set up right before the calls to eeh_addr_cache_insert_dev() (see eeh_addr_cache_build() and eeh_add_device_tree_late()) so this looks clearly correct to me. A few simple tests of EEH recovery still succeed as well. Reviewed-by: Sam Bobroff <[email protected]> Tested-by: Sam Bobroff <[email protected]> > --- > arch/powerpc/kernel/eeh_cache.c | 10 +--------- > 1 file changed, 1 insertion(+), 9 deletions(-) > > diff --git a/arch/powerpc/kernel/eeh_cache.c b/arch/powerpc/kernel/eeh_cache.c > index 3204723..908ba69 100644 > --- a/arch/powerpc/kernel/eeh_cache.c > +++ b/arch/powerpc/kernel/eeh_cache.c > @@ -156,18 +156,10 @@ eeh_addr_cache_insert(struct pci_dev *dev, > resource_size_t alo, > > static void __eeh_addr_cache_insert_dev(struct pci_dev *dev) > { > - struct pci_dn *pdn; > struct eeh_dev *edev; > int i; > > - pdn = pci_get_pdn_by_devfn(dev->bus, dev->devfn); > - if (!pdn) { > - pr_warn("PCI: no pci dn found for dev=%s\n", > - pci_name(dev)); > - return; > - } > - > - edev = pdn_to_eeh_dev(pdn); > + edev = pci_dev_to_eeh_dev(dev); > if (!edev) { > pr_warn("PCI: no EEH dev found for %s\n", > pci_name(dev)); > -- > 2.9.5 >
signature.asc
Description: PGP signature
