[PATCH 8/8] powerpc/eeh: Remove eeh_probe_devices() and eeh_addr_cache_build()

Sam Bobroff sbobroff at linux.ibm.com
Tue Apr 9 13:31:21 AEST 2019


On Wed, Mar 20, 2019 at 05:05:49PM +1100, Alexey Kardashevskiy wrote:
> 
> 
> On 20/03/2019 13:58, Sam Bobroff wrote:
> > Now that EEH support for all devices (on PowerNV and pSeries) is
> > provided by the pcibios bus add device hooks, eeh_probe_devices() and
> > eeh_addr_cache_build() are redundant and can be removed.
> > 
> > Note that previously on pSeries, useless EEH sysfs files were created
> > for some devices that did not have EEH support and this change
> > prevents them from being created.
> > 
> > Signed-off-by: Sam Bobroff <sbobroff at linux.ibm.com>
> > ---
> >  arch/powerpc/include/asm/eeh.h               |  6 ----
> >  arch/powerpc/kernel/eeh.c                    | 13 --------
> >  arch/powerpc/kernel/eeh_cache.c              | 32 --------------------
> >  arch/powerpc/platforms/powernv/eeh-powernv.c |  5 ++-
> >  arch/powerpc/platforms/pseries/pci.c         |  3 +-
> >  5 files changed, 3 insertions(+), 56 deletions(-)
> > 
> > diff --git a/arch/powerpc/include/asm/eeh.h b/arch/powerpc/include/asm/eeh.h
> > index 791b9e6fcc45..f1eca1757cbc 100644
> > --- a/arch/powerpc/include/asm/eeh.h
> > +++ b/arch/powerpc/include/asm/eeh.h
> > @@ -290,13 +290,11 @@ struct pci_bus *eeh_pe_bus_get(struct eeh_pe *pe);
> >  struct eeh_dev *eeh_dev_init(struct pci_dn *pdn);
> >  void eeh_dev_phb_init_dynamic(struct pci_controller *phb);
> >  void eeh_show_enabled(void);
> > -void eeh_probe_devices(void);
> >  int __init eeh_ops_register(struct eeh_ops *ops);
> >  int __exit eeh_ops_unregister(const char *name);
> >  int eeh_check_failure(const volatile void __iomem *token);
> >  int eeh_dev_check_failure(struct eeh_dev *edev);
> >  void eeh_addr_cache_init(void);
> > -void eeh_addr_cache_build(void);
> >  void eeh_add_device_early(struct pci_dn *);
> >  void eeh_add_device_tree_early(struct pci_dn *);
> >  void eeh_add_device_late(struct pci_dev *);
> > @@ -347,8 +345,6 @@ static inline bool eeh_phb_enabled(void)
> >  	return false;
> >  }
> >  
> > -static inline void eeh_probe_devices(void) { }
> > -
> >  static inline void *eeh_dev_init(struct pci_dn *pdn, void *data)
> >  {
> >  	return NULL;
> > @@ -365,8 +361,6 @@ static inline int eeh_check_failure(const volatile void __iomem *token)
> >  
> >  static inline void eeh_addr_cache_init(void) { }
> >  
> > -static inline void eeh_addr_cache_build(void) { }
> > -
> >  static inline void eeh_add_device_early(struct pci_dn *pdn) { }
> >  
> >  static inline void eeh_add_device_tree_early(struct pci_dn *pdn) { }
> > diff --git a/arch/powerpc/kernel/eeh.c b/arch/powerpc/kernel/eeh.c
> > index 217e14bb1fb6..cd2abbe41497 100644
> > --- a/arch/powerpc/kernel/eeh.c
> > +++ b/arch/powerpc/kernel/eeh.c
> > @@ -1166,19 +1166,6 @@ static struct notifier_block eeh_reboot_nb = {
> >  	.notifier_call = eeh_reboot_notifier,
> >  };
> >  
> > -void eeh_probe_devices(void)
> > -{
> > -	struct pci_controller *hose, *tmp;
> > -	struct pci_dn *pdn;
> > -
> > -	/* Enable EEH for all adapters */
> > -	list_for_each_entry_safe(hose, tmp, &hose_list, list_node) {
> > -		pdn = hose->pci_data;
> > -		traverse_pci_dn(pdn, eeh_ops->probe, NULL);
> > -	}
> > -	eeh_show_enabled();
> > -}
> > -
> >  /**
> >   * eeh_init - EEH initialization
> >   *
> > diff --git a/arch/powerpc/kernel/eeh_cache.c b/arch/powerpc/kernel/eeh_cache.c
> > index f93dd5cf6a39..c40078d036af 100644
> > --- a/arch/powerpc/kernel/eeh_cache.c
> > +++ b/arch/powerpc/kernel/eeh_cache.c
> > @@ -278,38 +278,6 @@ void eeh_addr_cache_init(void)
> >  	spin_lock_init(&pci_io_addr_cache_root.piar_lock);
> >  }
> >  
> > -/**
> > - * eeh_addr_cache_build - Build a cache of I/O addresses
> > - *
> > - * Build a cache of pci i/o addresses.  This cache will be used to
> > - * find the pci device that corresponds to a given address.
> > - * This routine scans all pci busses to build the cache.
> > - * Must be run late in boot process, after the pci controllers
> > - * have been scanned for devices (after all device resources are known).
> > - */
> > -void eeh_addr_cache_build(void)
> > -{
> > -	struct pci_dn *pdn;
> > -	struct eeh_dev *edev;
> > -	struct pci_dev *dev = NULL;
> > -
> > -	for_each_pci_dev(dev) {
> > -		pdn = pci_get_pdn_by_devfn(dev->bus, dev->devfn);
> > -		if (!pdn)
> > -			continue;
> > -
> > -		edev = pdn_to_eeh_dev(pdn);
> > -		if (!edev)
> > -			continue;
> > -
> > -		dev->dev.archdata.edev = edev;
> > -		edev->pdev = dev;
> > -
> > -		eeh_addr_cache_insert_dev(dev);
> > -		eeh_sysfs_add_device(dev);
> > -	}
> > -}
> > -
> >  static int eeh_addr_cache_show(struct seq_file *s, void *v)
> >  {
> >  	struct pci_io_addr_range *piar;
> > diff --git a/arch/powerpc/platforms/powernv/eeh-powernv.c b/arch/powerpc/platforms/powernv/eeh-powernv.c
> > index 81b0923cc55f..6a08f4fab255 100644
> > --- a/arch/powerpc/platforms/powernv/eeh-powernv.c
> > +++ b/arch/powerpc/platforms/powernv/eeh-powernv.c
> > @@ -240,9 +240,7 @@ int pnv_eeh_post_init(void)
> >  	struct pnv_phb *phb;
> >  	int ret = 0;
> >  
> > -	/* Probe devices & build address cache */
> > -	eeh_probe_devices();
> > -	eeh_addr_cache_build();
> > +	eeh_show_enabled();
> >  
> >  	/* Register OPAL event notifier */
> >  	eeh_event_irq = opal_event_request(ilog2(OPAL_EVENT_PCI_ERROR));
> > @@ -360,6 +358,7 @@ static int pnv_eeh_find_ecap(struct pci_dn *pdn, int cap)
> >  	return 0;
> >  }
> >  
> > +
> 
> Unrelated new line. Otherwise

Thanks, I'll fix it as part of merging in patch #5.

> 
> Reviewed-by: Alexey Kardashevskiy <aik at ozlabs.ru>
> 
> 
> 
> 
> >  /**
> >   * pnv_eeh_probe - Do probe on PCI device
> >   * @pdn: PCI device node
> > diff --git a/arch/powerpc/platforms/pseries/pci.c b/arch/powerpc/platforms/pseries/pci.c
> > index 7be80882c08d..7c781b04fb15 100644
> > --- a/arch/powerpc/platforms/pseries/pci.c
> > +++ b/arch/powerpc/platforms/pseries/pci.c
> > @@ -242,8 +242,7 @@ void __init pSeries_final_fixup(void)
> >  
> >  	pSeries_request_regions();
> >  
> > -	eeh_probe_devices();
> > -	eeh_addr_cache_build();
> > +	eeh_show_enabled();
> >  #ifdef CONFIG_EEH
> >  	if (eeh_enabled())
> >  		eeh_add_flag(EEH_PHB_ENABLED);
> > 
> 
> -- 
> Alexey
> 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: not available
URL: <http://lists.ozlabs.org/pipermail/linuxppc-dev/attachments/20190409/5e7bc35f/attachment.sig>


More information about the Linuxppc-dev mailing list