Merge branch 'pci/list-for-each-entry' into next
* pci/list-for-each-entry: PCI: Remove pci_bus_b() and use list_for_each_entry() directly pcmcia: Use list_for_each_entry() for bus traversal powerpc/PCI: Use list_for_each_entry() for bus traversal drm: Use list_for_each_entry() for bus traversal ARM/PCI: Use list_for_each_entry() for bus traversal ACPI / hotplug / PCI: Use list_for_each_entry() for bus traversalhifive-unleashed-5.1
commit
6354647f55
|
@ -57,14 +57,11 @@ static void pcibios_bus_report_status(struct pci_bus *bus, u_int status_mask, in
|
||||||
|
|
||||||
void pcibios_report_status(u_int status_mask, int warn)
|
void pcibios_report_status(u_int status_mask, int warn)
|
||||||
{
|
{
|
||||||
struct list_head *l;
|
struct pci_bus *bus;
|
||||||
|
|
||||||
list_for_each(l, &pci_root_buses) {
|
|
||||||
struct pci_bus *bus = pci_bus_b(l);
|
|
||||||
|
|
||||||
|
list_for_each_entry(bus, &pci_root_buses, node)
|
||||||
pcibios_bus_report_status(bus, status_mask, warn);
|
pcibios_bus_report_status(bus, status_mask, warn);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We don't use this to fix the device, but initialisation of it.
|
* We don't use this to fix the device, but initialisation of it.
|
||||||
|
|
|
@ -208,7 +208,6 @@ long sys_pciconfig_iobase(long which, unsigned long in_bus,
|
||||||
unsigned long in_devfn)
|
unsigned long in_devfn)
|
||||||
{
|
{
|
||||||
struct pci_controller* hose;
|
struct pci_controller* hose;
|
||||||
struct list_head *ln;
|
|
||||||
struct pci_bus *bus = NULL;
|
struct pci_bus *bus = NULL;
|
||||||
struct device_node *hose_node;
|
struct device_node *hose_node;
|
||||||
|
|
||||||
|
@ -230,8 +229,7 @@ long sys_pciconfig_iobase(long which, unsigned long in_bus,
|
||||||
* used on pre-domains setup. We return the first match
|
* used on pre-domains setup. We return the first match
|
||||||
*/
|
*/
|
||||||
|
|
||||||
for (ln = pci_root_buses.next; ln != &pci_root_buses; ln = ln->next) {
|
list_for_each_entry(bus, &pci_root_buses, node) {
|
||||||
bus = pci_bus_b(ln);
|
|
||||||
if (in_bus >= bus->number && in_bus <= bus->busn_res.end)
|
if (in_bus >= bus->number && in_bus <= bus->busn_res.end)
|
||||||
break;
|
break;
|
||||||
bus = NULL;
|
bus = NULL;
|
||||||
|
|
|
@ -37,15 +37,15 @@ find_bus_among_children(struct pci_bus *bus,
|
||||||
struct device_node *dn)
|
struct device_node *dn)
|
||||||
{
|
{
|
||||||
struct pci_bus *child = NULL;
|
struct pci_bus *child = NULL;
|
||||||
struct list_head *tmp;
|
struct pci_bus *tmp;
|
||||||
struct device_node *busdn;
|
struct device_node *busdn;
|
||||||
|
|
||||||
busdn = pci_bus_to_OF_node(bus);
|
busdn = pci_bus_to_OF_node(bus);
|
||||||
if (busdn == dn)
|
if (busdn == dn)
|
||||||
return bus;
|
return bus;
|
||||||
|
|
||||||
list_for_each(tmp, &bus->children) {
|
list_for_each_entry(tmp, &bus->children, node) {
|
||||||
child = find_bus_among_children(pci_bus_b(tmp), dn);
|
child = find_bus_among_children(tmp, dn);
|
||||||
if (child)
|
if (child)
|
||||||
break;
|
break;
|
||||||
};
|
};
|
||||||
|
|
|
@ -319,7 +319,8 @@ static int drm_open_helper(struct inode *inode, struct file *filp,
|
||||||
pci_dev_put(pci_dev);
|
pci_dev_put(pci_dev);
|
||||||
}
|
}
|
||||||
if (!dev->hose) {
|
if (!dev->hose) {
|
||||||
struct pci_bus *b = pci_bus_b(pci_root_buses.next);
|
struct pci_bus *b = list_entry(pci_root_buses.next,
|
||||||
|
struct pci_bus, node);
|
||||||
if (b)
|
if (b)
|
||||||
dev->hose = b->sysdata;
|
dev->hose = b->sysdata;
|
||||||
}
|
}
|
||||||
|
|
|
@ -450,7 +450,7 @@ static void cleanup_bridge(struct acpiphp_bridge *bridge)
|
||||||
*/
|
*/
|
||||||
static unsigned char acpiphp_max_busnr(struct pci_bus *bus)
|
static unsigned char acpiphp_max_busnr(struct pci_bus *bus)
|
||||||
{
|
{
|
||||||
struct list_head *tmp;
|
struct pci_bus *tmp;
|
||||||
unsigned char max, n;
|
unsigned char max, n;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -463,8 +463,8 @@ static unsigned char acpiphp_max_busnr(struct pci_bus *bus)
|
||||||
*/
|
*/
|
||||||
max = bus->busn_res.start;
|
max = bus->busn_res.start;
|
||||||
|
|
||||||
list_for_each(tmp, &bus->children) {
|
list_for_each_entry(tmp, &bus->children, node) {
|
||||||
n = pci_bus_max_busnr(pci_bus_b(tmp));
|
n = pci_bus_max_busnr(tmp);
|
||||||
if (n > max)
|
if (n > max)
|
||||||
max = n;
|
max = n;
|
||||||
}
|
}
|
||||||
|
|
|
@ -108,12 +108,12 @@ static bool pcie_ari_disabled;
|
||||||
*/
|
*/
|
||||||
unsigned char pci_bus_max_busnr(struct pci_bus* bus)
|
unsigned char pci_bus_max_busnr(struct pci_bus* bus)
|
||||||
{
|
{
|
||||||
struct list_head *tmp;
|
struct pci_bus *tmp;
|
||||||
unsigned char max, n;
|
unsigned char max, n;
|
||||||
|
|
||||||
max = bus->busn_res.end;
|
max = bus->busn_res.end;
|
||||||
list_for_each(tmp, &bus->children) {
|
list_for_each_entry(tmp, &bus->children, node) {
|
||||||
n = pci_bus_max_busnr(pci_bus_b(tmp));
|
n = pci_bus_max_busnr(tmp);
|
||||||
if(n > max)
|
if(n > max)
|
||||||
max = n;
|
max = n;
|
||||||
}
|
}
|
||||||
|
|
|
@ -55,13 +55,13 @@ pci_find_upstream_pcie_bridge(struct pci_dev *pdev)
|
||||||
static struct pci_bus *pci_do_find_bus(struct pci_bus *bus, unsigned char busnr)
|
static struct pci_bus *pci_do_find_bus(struct pci_bus *bus, unsigned char busnr)
|
||||||
{
|
{
|
||||||
struct pci_bus *child;
|
struct pci_bus *child;
|
||||||
struct list_head *tmp;
|
struct pci_bus *tmp;
|
||||||
|
|
||||||
if(bus->number == busnr)
|
if(bus->number == busnr)
|
||||||
return bus;
|
return bus;
|
||||||
|
|
||||||
list_for_each(tmp, &bus->children) {
|
list_for_each_entry(tmp, &bus->children, node) {
|
||||||
child = pci_do_find_bus(pci_bus_b(tmp), busnr);
|
child = pci_do_find_bus(tmp, busnr);
|
||||||
if(child)
|
if(child)
|
||||||
return child;
|
return child;
|
||||||
}
|
}
|
||||||
|
@ -111,7 +111,7 @@ pci_find_next_bus(const struct pci_bus *from)
|
||||||
down_read(&pci_bus_sem);
|
down_read(&pci_bus_sem);
|
||||||
n = from ? from->node.next : pci_root_buses.next;
|
n = from ? from->node.next : pci_root_buses.next;
|
||||||
if (n != &pci_root_buses)
|
if (n != &pci_root_buses)
|
||||||
b = pci_bus_b(n);
|
b = list_entry(n, struct pci_bus, node);
|
||||||
up_read(&pci_bus_sem);
|
up_read(&pci_bus_sem);
|
||||||
return b;
|
return b;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1076,7 +1076,7 @@ static void yenta_config_init(struct yenta_socket *socket)
|
||||||
*/
|
*/
|
||||||
static void yenta_fixup_parent_bridge(struct pci_bus *cardbus_bridge)
|
static void yenta_fixup_parent_bridge(struct pci_bus *cardbus_bridge)
|
||||||
{
|
{
|
||||||
struct list_head *tmp;
|
struct pci_bus *sibling;
|
||||||
unsigned char upper_limit;
|
unsigned char upper_limit;
|
||||||
/*
|
/*
|
||||||
* We only check and fix the parent bridge: All systems which need
|
* We only check and fix the parent bridge: All systems which need
|
||||||
|
@ -1095,18 +1095,18 @@ static void yenta_fixup_parent_bridge(struct pci_bus *cardbus_bridge)
|
||||||
/* stay within the limits of the bus range of the parent: */
|
/* stay within the limits of the bus range of the parent: */
|
||||||
upper_limit = bridge_to_fix->parent->busn_res.end;
|
upper_limit = bridge_to_fix->parent->busn_res.end;
|
||||||
|
|
||||||
/* check the bus ranges of all silbling bridges to prevent overlap */
|
/* check the bus ranges of all sibling bridges to prevent overlap */
|
||||||
list_for_each(tmp, &bridge_to_fix->parent->children) {
|
list_for_each_entry(sibling, &bridge_to_fix->parent->children,
|
||||||
struct pci_bus *silbling = pci_bus_b(tmp);
|
node) {
|
||||||
/*
|
/*
|
||||||
* If the silbling has a higher secondary bus number
|
* If the sibling has a higher secondary bus number
|
||||||
* and it's secondary is equal or smaller than our
|
* and it's secondary is equal or smaller than our
|
||||||
* current upper limit, set the new upper limit to
|
* current upper limit, set the new upper limit to
|
||||||
* the bus number below the silbling's range:
|
* the bus number below the sibling's range:
|
||||||
*/
|
*/
|
||||||
if (silbling->busn_res.start > bridge_to_fix->busn_res.end
|
if (sibling->busn_res.start > bridge_to_fix->busn_res.end
|
||||||
&& silbling->busn_res.start <= upper_limit)
|
&& sibling->busn_res.start <= upper_limit)
|
||||||
upper_limit = silbling->busn_res.start - 1;
|
upper_limit = sibling->busn_res.start - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Show that the wanted subordinate number is not possible: */
|
/* Show that the wanted subordinate number is not possible: */
|
||||||
|
|
|
@ -463,7 +463,6 @@ struct pci_bus {
|
||||||
unsigned int is_added:1;
|
unsigned int is_added:1;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define pci_bus_b(n) list_entry(n, struct pci_bus, node)
|
|
||||||
#define to_pci_bus(n) container_of(n, struct pci_bus, dev)
|
#define to_pci_bus(n) container_of(n, struct pci_bus, dev)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in New Issue