pci: introduce for_each_pci_bridge() helper
Subsystems (3)
PATCH 1/1 pci: introduce for_each_pci_bridge() helper
It seems often the following pattern has been used
list_for_each_entry(dev, &bus->devices, bus_list) {
if (pci_is_bridge(dev)) {
...
}
}Here for_each_pci_bridge() helper is introduced to make that code better to write and read by lowing indentation level. It also saves one or few lines of code in each occurrence.
Convert PCI core parts here at the same time.
Signed-off-by Andy Shevchenko <[email protected]>
--- drivers/pci/hotplug/acpiphp_glue.c | 15 ++++++--------- drivers/pci/hotplug/cpci_hotplug_pci.c | 7 ++----- drivers/pci/hotplug/pciehp_pci.c | 5 ++--- drivers/pci/hotplug/shpchp_pci.c | 6 ++---- drivers/pci/probe.c | 6 ++---- drivers/pci/setup-bus.c | 7 +++---- include/linux/pci.h | 4 ++++ 7 files changed, 21 insertions(+), 29 deletions(-)
drivers/pci/hotplug/acpiphp_glue.c +6 -9
@@ -462,18 +462,15 @@ static void enable_slot(struct acpiphp_slot *slot)acpiphp_rescan_slot (slot); max =acpiphp_max_busnr (bus);for (pass =0 ; pass <2 ; pass++) { -list_for_each_entry (dev, &bus->devices, bus_list) { +for_each_pci_bridge (dev, bus) {if (PCI_SLOT (dev->devfn) != slot->device)continue ; -if (pci_is_bridge (dev)) { - max =pci_scan_bridge (bus, dev, max, pass); -if (pass && dev->subordinate) { -check_hotplug_bridge (slot, dev); -pcibios_resource_survey_bus (dev->subordinate); -__pci_bus_size_bridges (dev->subordinate, - &add_list); - } + max =pci_scan_bridge (bus, dev, max, pass); +if (pass && dev->subordinate) { +check_hotplug_bridge (slot, dev); +pcibios_resource_survey_bus (dev->subordinate); +__pci_bus_size_bridges (dev->subordinate, &add_list); } } }
drivers/pci/hotplug/cpci_hotplug_pci.c +2 -5
@@ -286,14 +286,11 @@ int cpci_configure_slot(struct slot *slot) } parent = slot->dev->bus; -list_for_each_entry (dev, &parent->devices, bus_list) { -if (PCI_SLOT (dev->devfn) !=PCI_SLOT (slot->devfn)) -continue ; -if (pci_is_bridge (dev)) +for_each_pci_bridge (dev, parent) { +if (PCI_SLOT (dev->devfn) ==PCI_SLOT (slot->devfn))pci_hp_add_bridge (dev); } -pci_assign_unassigned_bridge_resources (parent->self);pci_bus_add_devices (parent);
drivers/pci/hotplug/pciehp_pci.c +2 -3
@@ -60,9 +60,8 @@ int pciehp_configure_device(struct slot *p_slot) goto out; } -list_for_each_entry (dev, &parent->devices, bus_list) -if (pci_is_bridge (dev)) -pci_hp_add_bridge (dev); +for_each_pci_bridge (dev, parent) +pci_hp_add_bridge (dev);pci_assign_unassigned_bridge_resources (bridge);pcie_bus_configure_settings (parent);
drivers/pci/hotplug/shpchp_pci.c +2 -4
@@ -61,10 +61,8 @@ int shpchp_configure_device(struct slot *p_slot) goto out; } -list_for_each_entry (dev, &parent->devices, bus_list) { -if (PCI_SLOT (dev->devfn) != p_slot->device) -continue ; -if (pci_is_bridge (dev)) +for_each_pci_bridge (dev, parent) { +if (PCI_SLOT (dev->devfn) == p_slot->device)pci_hp_add_bridge (dev); }
drivers/pci/probe.c +2 -4
@@ -2421,10 +2421,8 @@ unsigned int pci_scan_child_bus(struct pci_bus *bus) }for (pass =0 ; pass <2 ; pass++) -list_for_each_entry (dev, &bus->devices, bus_list) { -if (pci_is_bridge (dev)) - max =pci_scan_bridge (bus, dev, max, pass); - } +for_each_pci_bridge (dev, bus) + max =pci_scan_bridge (bus, dev, max, pass);/* * Make sure a hotplug bridge has at least the minimum requested
drivers/pci/setup-bus.c +3 -4
@@ -1921,10 +1921,9 @@ void pci_assign_unassigned_bus_resources(struct pci_bus *bus)want additional resources */ down_read (&pci_bus_sem); -list_for_each_entry (dev, &bus->devices, bus_list) -if (pci_is_bridge (dev) &&pci_has_subordinate (dev)) -__pci_bus_size_bridges (dev->subordinate, - &add_list); +for_each_pci_bridge (dev, bus) +if (pci_has_subordinate (dev)) +__pci_bus_size_bridges (dev->subordinate, &add_list);up_read (&pci_bus_sem);__pci_bus_assign_resources (bus, &add_list,NULL );BUG_ON (!list_empty (&add_list));
include/linux/pci.h +4 -0
@@ -596,6 +596,10 @@ static inline bool pci_is_bridge(struct pci_dev *dev) dev->hdr_type ==PCI_HEADER_TYPE_CARDBUS ; } +#define for_each_pci_bridge (dev, bus) \ + list_for_each_entry(dev, &bus->devices, bus_list) \ + if (!pci_is_bridge(dev)) {} else +static inline struct pci_dev *pci_upstream_bridge (struct pci_dev *dev) { dev =pci_physfn (dev);
Signature · 1 line
2.14.2
Bjorn Helgaas
AppliedQuoted 8 lines · Andy Shevchenko
It seems often the following pattern has been used
list_for_each_entry(dev, &bus->devices, bus_list) { if (pci_is_bridge(dev)) { ... } }
Quoted 7 lines
Here
for_each_pci_bridge()helper is introduced to make that code better to write and read by lowing indentation level. It also saves one or few lines of code in each occurrence.Convert PCI core parts here at the same time.
Signed-off-by Andy Shevchenko <[email protected]>
Applied to pci/misc for v4.15, thanks!
Quoted 150 lines
--- drivers/pci/hotplug/acpiphp_glue.c | 15 ++++++--------- drivers/pci/hotplug/cpci_hotplug_pci.c | 7 ++----- drivers/pci/hotplug/pciehp_pci.c | 5 ++--- drivers/pci/hotplug/shpchp_pci.c | 6 ++---- drivers/pci/probe.c | 6 ++---- drivers/pci/setup-bus.c | 7 +++---- include/linux/pci.h | 4 ++++ 7 files changed, 21 insertions(+), 29 deletions(-)drivers/pci/hotplug/acpiphp_glue.c +6
-9@@ -462,18 +462,15 @@ static void enable_slot(struct acpiphp_slot *slot)acpiphp_rescan_slot (slot); max =acpiphp_max_busnr (bus);for (pass =0 ; pass <2 ; pass++) { -list_for_each_entry (dev, &bus->devices, bus_list) { +for_each_pci_bridge (dev, bus) {if (PCI_SLOT (dev->devfn) != slot->device)continue ; -if (pci_is_bridge (dev)) { - max =pci_scan_bridge (bus, dev, max, pass); -if (pass && dev->subordinate) { -check_hotplug_bridge (slot, dev); -pcibios_resource_survey_bus (dev->subordinate); -__pci_bus_size_bridges (dev->subordinate, - &add_list); - } + max =pci_scan_bridge (bus, dev, max, pass); +if (pass && dev->subordinate) { +check_hotplug_bridge (slot, dev); +pcibios_resource_survey_bus (dev->subordinate); +__pci_bus_size_bridges (dev->subordinate, &add_list); } } }drivers/pci/hotplug/cpci_hotplug_pci.c +2
-5@@ -286,14 +286,11 @@ int cpci_configure_slot(struct slot *slot) } parent = slot->dev->bus; -list_for_each_entry (dev, &parent->devices, bus_list) { -if (PCI_SLOT (dev->devfn) !=PCI_SLOT (slot->devfn)) -continue ; -if (pci_is_bridge (dev)) +for_each_pci_bridge (dev, parent) { +if (PCI_SLOT (dev->devfn) ==PCI_SLOT (slot->devfn))pci_hp_add_bridge (dev); } -pci_assign_unassigned_bridge_resources (parent->self);pci_bus_add_devices (parent);drivers/pci/hotplug/pciehp_pci.c +2
-3@@ -60,9 +60,8 @@ int pciehp_configure_device(struct slot *p_slot) goto out; } -list_for_each_entry (dev, &parent->devices, bus_list) -if (pci_is_bridge (dev)) -pci_hp_add_bridge (dev); +for_each_pci_bridge (dev, parent) +pci_hp_add_bridge (dev);pci_assign_unassigned_bridge_resources (bridge);pcie_bus_configure_settings (parent);drivers/pci/hotplug/shpchp_pci.c +2
-4@@ -61,10 +61,8 @@ int shpchp_configure_device(struct slot *p_slot) goto out; } -list_for_each_entry (dev, &parent->devices, bus_list) { -if (PCI_SLOT (dev->devfn) != p_slot->device) -continue ; -if (pci_is_bridge (dev)) +for_each_pci_bridge (dev, parent) { +if (PCI_SLOT (dev->devfn) == p_slot->device)pci_hp_add_bridge (dev); }drivers/pci/probe.c +2
-4@@ -2421,10 +2421,8 @@ unsigned int pci_scan_child_bus(struct pci_bus *bus) }for (pass =0 ; pass <2 ; pass++) -list_for_each_entry (dev, &bus->devices, bus_list) { -if (pci_is_bridge (dev)) - max =pci_scan_bridge (bus, dev, max, pass); - } +for_each_pci_bridge (dev, bus) + max =pci_scan_bridge (bus, dev, max, pass);/* * Make sure a hotplug bridge has at least the minimum requested drivers/pci/setup-bus.c +3
-4@@ -1921,10 +1921,9 @@ void pci_assign_unassigned_bus_resources(struct pci_bus *bus)want additional resources */ down_read (&pci_bus_sem); -list_for_each_entry (dev, &bus->devices, bus_list) -if (pci_is_bridge (dev) &&pci_has_subordinate (dev)) -__pci_bus_size_bridges (dev->subordinate, - &add_list); +for_each_pci_bridge (dev, bus) +if (pci_has_subordinate (dev)) +__pci_bus_size_bridges (dev->subordinate, &add_list);up_read (&pci_bus_sem);__pci_bus_assign_resources (bus, &add_list,NULL );BUG_ON (!list_empty (&add_list));include/linux/pci.h +4
-0@@ -596,6 +596,10 @@ static inline bool pci_is_bridge(struct pci_dev *dev) dev->hdr_type ==PCI_HEADER_TYPE_CARDBUS ; } +#define for_each_pci_bridge (dev, bus) \ + list_for_each_entry(dev, &bus->devices, bus_list) \ + if (!pci_is_bridge(dev)) {} else +static inline struct pci_dev *pci_upstream_bridge (struct pci_dev *dev) { dev =pci_physfn (dev);Signature · 6 lines
2.14.2 -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html