Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1237011
| From | Yinghai Lu <yinghai@kernel.org> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH v6 21/53] PCI: Treat ROM resource as optional during realloc |
| Date | 2015-10-01 08:10 +0200 |
| Message-ID | <qeFe3-3CQ-23@gated-at.bofh.it> (permalink) |
| References | <qeF4l-3bG-3@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
Current on realloc path, we just ignore ROM resource if we can not assign
them in first try.
Treat ROM resources as optional resources,so try to allocate them together
with required ones, if can not assign them, could go with other required
resources only, and try to allocate them second time in expand path.
Signed-off-by: Yinghai Lu <yinghai@kernel.org>
---
drivers/pci/setup-bus.c | 37 ++++++++++++++++++++-----------------
1 file changed, 20 insertions(+), 17 deletions(-)
diff --git a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c
index 0a89d06..554d019 100644
--- a/drivers/pci/setup-bus.c
+++ b/drivers/pci/setup-bus.c
@@ -377,18 +377,10 @@ static void assign_requested_resources_sorted(struct list_head *head,
idx = res - &dev_res->dev->resource[0];
if (resource_size(res) &&
pci_assign_resource(dev_res->dev, idx)) {
- if (fail_head) {
- /*
- * if the failed res is for ROM BAR, and it will
- * be enabled later, don't add it to the list
- */
- if (!((idx == PCI_ROM_RESOURCE) &&
- (!(res->flags & IORESOURCE_ROM_ENABLE))))
- add_to_list(fail_head,
- dev_res->dev, res,
- 0 /* don't care */,
- 0 /* don't care */);
- }
+ if (fail_head)
+ add_to_list(fail_head, dev_res->dev, res,
+ 0 /* don't care */,
+ 0 /* don't care */);
reset_resource(res);
}
}
@@ -1148,6 +1140,19 @@ out:
return good_align;
}
+static inline bool is_optional(int i)
+{
+
+ if (i == PCI_ROM_RESOURCE)
+ return true;
+
+#ifdef CONFIG_PCI_IOV
+ if (i >= PCI_IOV_RESOURCES && i <= PCI_IOV_RESOURCE_END)
+ return true;
+#endif
+
+ return false;
+}
/**
* pbus_size_mem() - size the memory window of a given bus
*
@@ -1204,10 +1209,8 @@ static int pbus_size_mem(struct pci_bus *bus, unsigned long mask,
r_size = resource_size(r);
align = pci_resource_alignment(dev, r);
-#ifdef CONFIG_PCI_IOV
- /* put SRIOV requested res to the optional list */
- if (realloc_head && i >= PCI_IOV_RESOURCES &&
- i <= PCI_IOV_RESOURCE_END) {
+ /* put SRIOV/ROM res to realloc list */
+ if (realloc_head && is_optional(i)) {
add_to_align_test_list(&align_test_add_list,
align, r_size);
r->end = r->start - 1;
@@ -1217,7 +1220,7 @@ static int pbus_size_mem(struct pci_bus *bus, unsigned long mask,
max_add_align = align;
continue;
}
-#endif
+
if (align > (1ULL<<37)) { /*128 Gb*/
dev_warn(&dev->dev, "disabling BAR %d: %pR (bad alignment %#llx)\n",
i, r, (unsigned long long) align);
--
1.8.4.5
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[PATCH v6 00/53] PCI: Resource allocation cleanup for v4.4 Yinghai Lu <yinghai@kernel.org> - 2015-10-01 08:10 +0200 [PATCH v6 27/53] PCI: Separate out save_resources()/restore_resources() Yinghai Lu <yinghai@kernel.org> - 2015-10-01 08:10 +0200 [PATCH v6 41/53] PCI: Kill macro checking for bus io port sizing Yinghai Lu <yinghai@kernel.org> - 2015-10-01 08:10 +0200 [PATCH v6 38/53] PCI: Unify calculate_size() for io port and MMIO Yinghai Lu <yinghai@kernel.org> - 2015-10-01 08:10 +0200 [PATCH v6 46/53] PCI: Check pref compatible bit for mem64 resource of PCIe device Yinghai Lu <yinghai@kernel.org> - 2015-10-01 08:10 +0200 [PATCH v6 35/53] PCI: Don't add too much optional size for hotplug bridge io Yinghai Lu <yinghai@kernel.org> - 2015-10-01 08:10 +0200 [PATCH v6 50/53] PCI: Restore pref MMIO allocation logic for host bridge without mmio64 Yinghai Lu <yinghai@kernel.org> - 2015-10-01 08:10 +0200 [PATCH v6 16/53] PCI: Optimize bus align/size calculation for optional during sizing Yinghai Lu <yinghai@kernel.org> - 2015-10-01 08:10 +0200 [PATCH v6 21/53] PCI: Treat ROM resource as optional during realloc Yinghai Lu <yinghai@kernel.org> - 2015-10-01 08:10 +0200 [PATCH v6 30/53] PCI: Skip required+optional if there is no optional Yinghai Lu <yinghai@kernel.org> - 2015-10-01 08:10 +0200 [PATCH v6 39/53] PCI: Allow bridge optional only io port resource required size to be 0 Yinghai Lu <yinghai@kernel.org> - 2015-10-01 08:10 +0200 [PATCH v6 25/53] PCI: Cache window alignment value during bus sizing Yinghai Lu <yinghai@kernel.org> - 2015-10-01 08:10 +0200 [PATCH v6 53/53] PCI: Don't set flags to 0 when assign resource fail Yinghai Lu <yinghai@kernel.org> - 2015-10-01 08:10 +0200 [PATCH v6 17/53] PCI: Don't add too much optional size for hotplug bridge MMIO Yinghai Lu <yinghai@kernel.org> - 2015-10-01 08:10 +0200 [PATCH v6 42/53] resources: Split out __allocate_resource() Yinghai Lu <yinghai@kernel.org> - 2015-10-01 08:10 +0200 [PATCH v6 48/53] PCI: Add has_mem64 for struct host_bridge Yinghai Lu <yinghai@kernel.org> - 2015-10-01 08:10 +0200 [PATCH v6 33/53] PCI: Add support for more than two alt_size entries under same bridge Yinghai Lu <yinghai@kernel.org> - 2015-10-01 08:10 +0200 [PATCH v6 45/53] PCI: Add debug print out for min_align and alt_size Yinghai Lu <yinghai@kernel.org> - 2015-10-01 08:10 +0200 [PATCH v6 24/53] PCI: Add __add_to_list() Yinghai Lu <yinghai@kernel.org> - 2015-10-01 08:20 +0200 [PATCH v6 44/53] PCI, x86: Allocate from high in available window for MMIO Yinghai Lu <yinghai@kernel.org> - 2015-10-01 08:20 +0200 [PATCH v6 12/53] PCI: Cleanup res_to_dev_res() printout Yinghai Lu <yinghai@kernel.org> - 2015-10-01 08:20 +0200 [PATCH v6 52/53] PCI: Introduce resource_disabled() Yinghai Lu <yinghai@kernel.org> - 2015-10-01 08:20 +0200 [PATCH v6 51/53] PCI, x86: Add pci=assign_pref_bars to reallocate pref BARs Yinghai Lu <yinghai@kernel.org> - 2015-10-01 09:00 +0200 [PATCH v6 26/53] PCI: Check if resource is allocated before trying to assign one Yinghai Lu <yinghai@kernel.org> - 2015-10-01 09:00 +0200 [PATCH v6 20/53] PCI: Rename pdev_sort_resources() to pdev_assign_resources_prepare() Yinghai Lu <yinghai@kernel.org> - 2015-10-01 09:00 +0200 [PATCH v6 49/53] PCI: Only treat non-pref mmio64 as pref if host bridge has mmio64 Yinghai Lu <yinghai@kernel.org> - 2015-10-01 09:00 +0200 [PATCH v6 34/53] PCI: Fix size calculation with old_size on rescan path Yinghai Lu <yinghai@kernel.org> - 2015-10-01 09:00 +0200
csiph-web