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
> 

Attachment: signature.asc
Description: PGP signature

Reply via email to