diff options
author | Bjorn Helgaas <bjorn.helgaas@hp.com> | 2010-09-22 11:09:19 -0600 |
---|---|---|
committer | Jesse Barnes <jbarnes@virtuousgeek.org> | 2010-11-11 09:34:31 -0800 |
commit | 4723d0f2f96e6c910f951d595067eb31e0dd2d01 (patch) | |
tree | 85d300668fabccebf033603790031927f9b09693 /drivers/pci/proc.c | |
parent | ac3abf2c37a9b0be604ea9825705a8510a9a6ba3 (diff) | |
download | linux-stable-4723d0f2f96e6c910f951d595067eb31e0dd2d01.tar.gz linux-stable-4723d0f2f96e6c910f951d595067eb31e0dd2d01.tar.bz2 linux-stable-4723d0f2f96e6c910f951d595067eb31e0dd2d01.zip |
x86/PCI: coalesce overlapping host bridge windows
Some BIOSes provide PCI host bridge windows that overlap, e.g.,
pci_root PNP0A03:00: host bridge window [mem 0xb0000000-0xffffffff]
pci_root PNP0A03:00: host bridge window [mem 0xafffffff-0xdfffffff]
pci_root PNP0A03:00: host bridge window [mem 0xf0000000-0xffffffff]
If we simply insert these as children of iomem_resource, the second window
fails because it conflicts with the first, and the third is inserted as a
child of the first, i.e.,
b0000000-ffffffff PCI Bus 0000:00
f0000000-ffffffff PCI Bus 0000:00
When we claim PCI device resources, this can cause collisions like this
if we put them in the first window:
pci 0000:00:01.0: address space collision: [mem 0xff300000-0xff4fffff] conflicts with PCI Bus 0000:00 [mem 0xf0000000-0xffffffff]
Host bridge windows are top-level resources by definition, so it doesn't
make sense to make the third window a child of the first. This patch
coalesces any host bridge windows that overlap. For the example above,
the result is this single window:
pci_root PNP0A03:00: host bridge window [mem 0xafffffff-0xffffffff]
This fixes a 2.6.34 regression.
Reference: https://bugzilla.kernel.org/show_bug.cgi?id=17011
Reported-and-tested-by: Anisse Astier <anisse@astier.eu>
Reported-and-tested-by: Pramod Dematagoda <pmd.lotr.gandalf@gmail.com>
Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Diffstat (limited to 'drivers/pci/proc.c')
0 files changed, 0 insertions, 0 deletions