Loading drivers/pci/probe.c +27 −4 Original line number Diff line number Diff line Loading @@ -883,11 +883,11 @@ static void pci_set_bus_msi_domain(struct pci_bus *bus) static int pci_register_host_bridge(struct pci_host_bridge *bridge) { struct device *parent = bridge->dev.parent; struct resource_entry *window, *n; struct resource_entry *window, *next, *n; struct pci_bus *bus, *b; resource_size_t offset; resource_size_t offset, next_offset; LIST_HEAD(resources); struct resource *res; struct resource *res, *next_res; char addr[64], *fmt; const char *name; int err; Loading Loading @@ -970,11 +970,34 @@ static int pci_register_host_bridge(struct pci_host_bridge *bridge) if (nr_node_ids > 1 && pcibus_to_node(bus) == NUMA_NO_NODE) dev_warn(&bus->dev, "Unknown NUMA node; performance will be reduced\n"); /* Coalesce contiguous windows */ resource_list_for_each_entry_safe(window, n, &resources) { if (list_is_last(&window->node, &resources)) break; next = list_next_entry(window, node); offset = window->offset; res = window->res; next_offset = next->offset; next_res = next->res; if (res->flags != next_res->flags || offset != next_offset) continue; if (res->end + 1 == next_res->start) { next_res->start = res->start; res->flags = res->start = res->end = 0; } } /* Add initial resources to the bus */ resource_list_for_each_entry_safe(window, n, &resources) { list_move_tail(&window->node, &bridge->windows); offset = window->offset; res = window->res; if (!res->end) continue; list_move_tail(&window->node, &bridge->windows); if (res->flags & IORESOURCE_BUS) pci_bus_insert_busn_res(bus, bus->number, res->end); Loading Loading
drivers/pci/probe.c +27 −4 Original line number Diff line number Diff line Loading @@ -883,11 +883,11 @@ static void pci_set_bus_msi_domain(struct pci_bus *bus) static int pci_register_host_bridge(struct pci_host_bridge *bridge) { struct device *parent = bridge->dev.parent; struct resource_entry *window, *n; struct resource_entry *window, *next, *n; struct pci_bus *bus, *b; resource_size_t offset; resource_size_t offset, next_offset; LIST_HEAD(resources); struct resource *res; struct resource *res, *next_res; char addr[64], *fmt; const char *name; int err; Loading Loading @@ -970,11 +970,34 @@ static int pci_register_host_bridge(struct pci_host_bridge *bridge) if (nr_node_ids > 1 && pcibus_to_node(bus) == NUMA_NO_NODE) dev_warn(&bus->dev, "Unknown NUMA node; performance will be reduced\n"); /* Coalesce contiguous windows */ resource_list_for_each_entry_safe(window, n, &resources) { if (list_is_last(&window->node, &resources)) break; next = list_next_entry(window, node); offset = window->offset; res = window->res; next_offset = next->offset; next_res = next->res; if (res->flags != next_res->flags || offset != next_offset) continue; if (res->end + 1 == next_res->start) { next_res->start = res->start; res->flags = res->start = res->end = 0; } } /* Add initial resources to the bus */ resource_list_for_each_entry_safe(window, n, &resources) { list_move_tail(&window->node, &bridge->windows); offset = window->offset; res = window->res; if (!res->end) continue; list_move_tail(&window->node, &bridge->windows); if (res->flags & IORESOURCE_BUS) pci_bus_insert_busn_res(bus, bus->number, res->end); Loading