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 <ooh...@gmail.com>



Tested-by: Alexey Kardashevskiy <a...@ozlabs.ru>
Reviewed-by: Alexey Kardashevskiy <a...@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

Reply via email to