From: Yinghai Lu <yinghai@kernel.org>
To: Bjorn Helgaas <bhelgaas@google.com>
Cc: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>,
Gu Zheng <guz.fnst@cn.fujitsu.com>,
Guo Chao <yan@linux.vnet.ibm.com>,
linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org,
Yinghai Lu <yinghai@kernel.org>
Subject: [PATCH v3 06/12] PCI: Only enable realloc auto when root bus has 64bit mmio
Date: Sat, 30 Nov 2013 14:40:32 -0800 [thread overview]
Message-ID: <1385851238-21085-7-git-send-email-yinghai@kernel.org> (raw)
In-Reply-To: <1385851238-21085-1-git-send-email-yinghai@kernel.org>
Joseph found
| commit b07f2ebc109b607789f648dedcff4b125f9afec6
| Date: Thu Feb 23 19:23:32 2012 -0800
|
| PCI: add a PCI resource reallocation config option
cause one system can not load driver for Intel x520 NIC's.
The root resource:
[ 1.212470] PCI host bridge to bus 0000:20
[ 1.212475] pci_bus 0000:20: root bus resource [bus 20-3e]
[ 1.212479] pci_bus 0000:20: root bus resource [io 0xc000-0xdfff]
[ 1.212483] pci_bus 0000:20: root bus resource [mem 0xfecc0000-0xfecfffff]
[ 1.212487] pci_bus 0000:20: root bus resource [mem 0xe9400000-0xe97fffff]
and bios does not assign sriov, also have two function ROM bar point to same
position.
[ 1.213197] pci 0000:22:00.0: [8086:10fb] type 00 class 0x020000
...
[ 1.213240] pci 0000:22:00.0: reg 0x30: [mem 0xe9500000-0xe957ffff pref]
[ 1.213303] pci 0000:22:00.0: reg 0x184: [mem 0x00000000-0x00003fff 64bit]
[ 1.213317] pci 0000:22:00.0: reg 0x190: [mem 0x00000000-0x00003fff 64bit]
[ 1.213366] pci 0000:22:00.1: [8086:10fb] type 00 class 0x020000
...
[ 1.213408] pci 0000:22:00.1: reg 0x30: [mem 0xe9500000-0xe957ffff pref]
[ 1.213468] pci 0000:22:00.1: reg 0x184: [mem 0x00000000-0x00003fff 64bit]
[ 1.213481] pci 0000:22:00.1: reg 0x190: [mem 0x00000000-0x00003fff 64bit]
[ 1.218527] pci 0000:20:03.0: PCI bridge to [bus 22]
[ 1.218534] pci 0000:20:03.0: bridge window [io 0xd000-0xdfff]
[ 1.218537] pci 0000:20:03.0: bridge window [mem 0xe9400000-0xe95fffff]
...
[ 1.254103] pci 0000:22:00.1: address space collision: [mem 0xe9500000-0xe957ffff pref] conflicts with 0000:22:00.0 [mem 0xe9500000-0xe957ffff pref]
[ 1.254111] pci 0000:23:00.1: address space collision: [mem 0xe9700000-0xe977ffff pref] conflicts with 0000:23:00.0 [mem 0xe9700000-0xe977ffff pref]
We don't need to enable realloc for this case, as we can not alter root bus mmio
range to get big one to hold two rom bar, and sriov under 4G.
Add checking if pci root bus have 4G above mmio res, and don't enable
realloc auto accordingly.
bug report at: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1245938
Reported-by: Joseph Salisbury <joseph.salisbury@canonical.com>
Signed-off-by: Yinghai Lu <yinghai@kernel.org>
---
drivers/pci/setup-bus.c | 32 +++++++++++++++++++++++++++-----
1 file changed, 27 insertions(+), 5 deletions(-)
diff --git a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c
index 219a410..f9e6efb 100644
--- a/drivers/pci/setup-bus.c
+++ b/drivers/pci/setup-bus.c
@@ -1432,17 +1432,39 @@ static int iov_resources_unassigned(struct pci_dev *dev, void *data)
return 0;
}
+static bool pci_bus_mem_above_4g(struct pci_bus *bus)
+{
+ int i;
+ struct resource *res;
+
+ pci_bus_for_each_resource(bus, res, i) {
+ struct pci_bus_region region;
+
+ if (!res || !(res->flags & IORESOURCE_MEM))
+ continue;
+
+ __pcibios_resource_to_bus(bus, ®ion, res);
+ if (region.end > 0xffffffff)
+ return true;
+ }
+
+ return false;
+}
+
static enum enable_type pci_realloc_detect(struct pci_bus *bus,
enum enable_type enable_local)
{
- bool unassigned = false;
-
if (enable_local != undefined)
return enable_local;
- pci_walk_bus(bus, iov_resources_unassigned, &unassigned);
- if (unassigned)
- return auto_enabled;
+ /* only enable auto when root bus does support 64bit mmio */
+ if (pci_bus_mem_above_4g(bus)) {
+ bool unassigned = false;
+
+ pci_walk_bus(bus, iov_resources_unassigned, &unassigned);
+ if (unassigned)
+ return auto_enabled;
+ }
return enable_local;
}
--
1.8.1.4
next prev parent reply other threads:[~2013-11-30 22:40 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-30 22:40 [PATCH v3 00/12] PCI: Double removing fix and allocate 64bit mmio pref Yinghai Lu
2013-11-30 22:40 ` [PATCH v3 01/12] PCI: Use device_release_driver in pci_stop_root_bus Yinghai Lu
2013-11-30 22:40 ` [PATCH v3 02/12] PCI: Move back pci_proc_attach_devices calling Yinghai Lu
2013-11-30 22:40 ` [PATCH v3 03/12] PCI: Move resources and bus_list releasing to pci_release_dev Yinghai Lu
2013-11-30 22:40 ` [PATCH v3 04/12] PCI: Destroy pci dev only once Yinghai Lu
2013-12-01 1:05 ` Rafael J. Wysocki
2013-12-04 2:19 ` Yinghai Lu
2013-12-04 20:03 ` Rafael J. Wysocki
2013-11-30 22:40 ` [PATCH v3 05/12] PCI: pcibus address to resource converting take bus instead of dev Yinghai Lu
2013-11-30 22:40 ` Yinghai Lu [this message]
2013-11-30 22:40 ` [PATCH v3 07/12] PCI: Don't use 4G bus address directly in resource allocation Yinghai Lu
2013-11-30 22:40 ` [PATCH v3 08/12] PCI: Try to allocate mem64 above 4G at first Yinghai Lu
2013-11-30 22:40 ` [PATCH v3 09/12] PCI: Kill PCIBIOS_MAX_MEM_32 Yinghai Lu
2013-11-30 22:40 ` [PATCH v3 10/12] PCI: Try best to allocate pref mmio 64bit above 4g Yinghai Lu
2013-11-30 22:40 ` [PATCH v3 11/12] PCI: Sort pci root bus resources list Yinghai Lu
2013-12-02 23:11 ` Bjorn Helgaas
2013-12-04 2:12 ` Yinghai Lu
2013-11-30 22:40 ` [PATCH v3 12/12] intel-gtt: Read 64bit for gmar_bus_addr Yinghai Lu
2013-12-01 17:05 ` [PATCH v3 00/12] PCI: Double removing fix and allocate 64bit mmio pref Myron Stowe
2013-12-04 2:03 ` Yinghai Lu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1385851238-21085-7-git-send-email-yinghai@kernel.org \
--to=yinghai@kernel.org \
--cc=bhelgaas@google.com \
--cc=guz.fnst@cn.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=rafael.j.wysocki@intel.com \
--cc=yan@linux.vnet.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).