[PATCH 3/3] powerpc/pci: Remove pcibios_setup_bus_devices()

Alexey Kardashevskiy aik at ozlabs.ru
Tue Oct 1 15:40:10 AEST 2019



On 30/09/2019 12:08, Oliver O'Halloran wrote:
> With the previous patch applied pcibios_setup_device() will always be run
> when pcibios_bus_add_device() is called. There are several code paths where
> pcibios_setup_bus_device() is still called (the PowerPC specific PCI
> hotplug support is one) so with just the previous patch applied the setup
> can be run multiple times on a device, once before the device is added
> to the bus and once after.
> 
> There's no need to run the setup in the early case any more so just
> remove it entirely.
> 
> Signed-off-by: Oliver O'Halloran <oohall at gmail.com>



Tested-by: Alexey Kardashevskiy <aik at ozlabs.ru>
Reviewed-by: Alexey Kardashevskiy <aik at ozlabs.ru>

> ---
>  arch/powerpc/include/asm/pci.h    |  1 -
>  arch/powerpc/kernel/pci-common.c  | 25 -------------------------
>  arch/powerpc/kernel/pci-hotplug.c |  1 -
>  arch/powerpc/kernel/pci_of_scan.c |  1 -
>  4 files changed, 28 deletions(-)
> 
> diff --git a/arch/powerpc/include/asm/pci.h b/arch/powerpc/include/asm/pci.h
> index 327567b..63ed7e3 100644
> --- a/arch/powerpc/include/asm/pci.h
> +++ b/arch/powerpc/include/asm/pci.h
> @@ -113,7 +113,6 @@ extern pgprot_t	pci_phys_mem_access_prot(struct file *file,
>  					 pgprot_t prot);
>  
>  extern resource_size_t pcibios_io_space_offset(struct pci_controller *hose);
> -extern void pcibios_setup_bus_devices(struct pci_bus *bus);
>  extern void pcibios_setup_bus_self(struct pci_bus *bus);
>  extern void pcibios_setup_phb_io_space(struct pci_controller *hose);
>  extern void pcibios_scan_phb(struct pci_controller *hose);
> diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c
> index b89925ed..f8a59d7 100644
> --- a/arch/powerpc/kernel/pci-common.c
> +++ b/arch/powerpc/kernel/pci-common.c
> @@ -1000,24 +1000,6 @@ int pcibios_add_device(struct pci_dev *dev)
>  	return 0;
>  }
>  
> -void pcibios_setup_bus_devices(struct pci_bus *bus)
> -{
> -	struct pci_dev *dev;
> -
> -	pr_debug("PCI: Fixup bus devices %d (%s)\n",
> -		 bus->number, bus->self ? pci_name(bus->self) : "PHB");
> -
> -	list_for_each_entry(dev, &bus->devices, bus_list) {
> -		/* Cardbus can call us to add new devices to a bus, so ignore
> -		 * those who are already fully discovered
> -		 */
> -		if (pci_dev_is_added(dev))
> -			continue;
> -
> -		pcibios_setup_device(dev);
> -	}
> -}
> -
>  void pcibios_set_master(struct pci_dev *dev)
>  {
>  	/* No special bus mastering setup handling */
> @@ -1036,13 +1018,6 @@ void pcibios_fixup_bus(struct pci_bus *bus)
>  }
>  EXPORT_SYMBOL(pcibios_fixup_bus);
>  
> -void pci_fixup_cardbus(struct pci_bus *bus)
> -{
> -	/* Now fixup devices on that bus */
> -	pcibios_setup_bus_devices(bus);
> -}
> -
> -
>  static int skip_isa_ioresource_align(struct pci_dev *dev)
>  {
>  	if (pci_has_flag(PCI_CAN_SKIP_ISA_ALIGN) &&
> diff --git a/arch/powerpc/kernel/pci-hotplug.c b/arch/powerpc/kernel/pci-hotplug.c
> index fc62c4b..d6a67f8 100644
> --- a/arch/powerpc/kernel/pci-hotplug.c
> +++ b/arch/powerpc/kernel/pci-hotplug.c
> @@ -134,7 +134,6 @@ void pci_hp_add_devices(struct pci_bus *bus)
>  		 */
>  		slotno = PCI_SLOT(PCI_DN(dn->child)->devfn);
>  		pci_scan_slot(bus, PCI_DEVFN(slotno, 0));
> -		pcibios_setup_bus_devices(bus);
>  		max = bus->busn_res.start;
>  		/*
>  		 * Scan bridges that are already configured. We don't touch
> diff --git a/arch/powerpc/kernel/pci_of_scan.c b/arch/powerpc/kernel/pci_of_scan.c
> index f91d7e9..c3024f1 100644
> --- a/arch/powerpc/kernel/pci_of_scan.c
> +++ b/arch/powerpc/kernel/pci_of_scan.c
> @@ -414,7 +414,6 @@ static void __of_scan_bus(struct device_node *node, struct pci_bus *bus,
>  	 */
>  	if (!rescan_existing)
>  		pcibios_setup_bus_self(bus);
> -	pcibios_setup_bus_devices(bus);
>  
>  	/* Now scan child busses */
>  	for_each_pci_bridge(dev, bus)
> 

-- 
Alexey


More information about the Linuxppc-dev mailing list