Messages in this thread Patch in this message | | | Date | Thu, 03 Jun 2010 13:43:03 -0700 | From | Yinghai Lu <> | Subject | [PATCH -v2] pci: clear bridge resource size if BIOS assign bad one |
| |
Make sure We can reject wrong size from BIOS.
https://bugzilla.kernel.org/show_bug.cgi?id=16009 Yannick found that video does not work with 2.6.34
the root cause: BIOS assigned wrong range to pci bridge. and before 2.6.34 kernel will just get range that is needed. for 2.6.34. | d65245c PCI: don't shrink bridge resources will try to range size is bigger than old one. (used by boot stage multi-try to get big BAR size for pci bridge, and pcie hotplug to get big range)
So try to 0 for old size for pci bridge in this boot stage case.
Reported-by: Yannick <yannick.roehlly@free.fr> Analyzed-by: Bjorn Helgaas <bjorn.helgaas@hp.com> Signed-off-by: Yinghai Lu <yinghai@kernel.org>
--- arch/microblaze/pci/pci-common.c | 1 + arch/mn10300/unit-asb2305/pci-asb2305.c | 1 + arch/powerpc/kernel/pci-common.c | 1 + arch/x86/pci/i386.c | 1 + 4 files changed, 4 insertions(+)
Index: linux-2.6/arch/x86/pci/i386.c =================================================================== --- linux-2.6.orig/arch/x86/pci/i386.c +++ linux-2.6/arch/x86/pci/i386.c @@ -136,6 +136,7 @@ static void __init pcibios_allocate_bus_ * child resource allocations in this * range. */ + r->start = r->end = 0; r->flags = 0; } } Index: linux-2.6/arch/microblaze/pci/pci-common.c =================================================================== --- linux-2.6.orig/arch/microblaze/pci/pci-common.c +++ linux-2.6/arch/microblaze/pci/pci-common.c @@ -1277,6 +1277,7 @@ void pcibios_allocate_bus_resources(stru printk(KERN_WARNING "PCI: Cannot allocate resource region " "%d of PCI bridge %d, will remap\n", i, bus->number); clear_resource: + res->start = res->end = 0; res->flags = 0; } Index: linux-2.6/arch/mn10300/unit-asb2305/pci-asb2305.c =================================================================== --- linux-2.6.orig/arch/mn10300/unit-asb2305/pci-asb2305.c +++ linux-2.6/arch/mn10300/unit-asb2305/pci-asb2305.c @@ -117,6 +117,7 @@ static void __init pcibios_allocate_bus_ * Invalidate the resource to prevent * child resource allocations in this * range. */ + r->start = r->end = 0; r->flags = 0; } } Index: linux-2.6/arch/powerpc/kernel/pci-common.c =================================================================== --- linux-2.6.orig/arch/powerpc/kernel/pci-common.c +++ linux-2.6/arch/powerpc/kernel/pci-common.c @@ -1309,6 +1309,7 @@ void pcibios_allocate_bus_resources(stru printk(KERN_WARNING "PCI: Cannot allocate resource region " "%d of PCI bridge %d, will remap\n", i, bus->number); clear_resource: + res->start = res->end = 0; res->flags = 0; }
| |