mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 11:11:45 -04:00
Revert "PCI: remove transparent bridge sizing"
This reverts commit 8fa5913d54, which
caused various interesting problems for people, including wrong resource
allocations. See for example bugzilla entry "2.6.25-rc2: ohci1394
problem (MMIO broken)" at
http://bugzilla.kernel.org/show_bug.cgi?id=10080
And Gary Hade says:
"The same change had also exposed an issue reported by Paul Martin that
has been causing an Oops while hotplugging ThinkPads to a ThinkPad
Dock II. See
http://lkml.org/lkml/2008/2/19/405
http://bugzilla.kernel.org/show_bug.cgi?id=9961
I have a fix for the ThinkPad docking Oops but if the issue being
discussed here is caused by the transparent bridge sizing removal
change I totally agree that it should be reverted."
The transparent bridge sizing removal change was motivated by
insufficient PCI memory resource for a transparent bridge window that
was being created as a result of expansion ROM(s) being included in
the transparent bridge sizing calculations.
A later "PCI: Remove default PCI expansion ROM memory allocation"
change ( re: http://lkml.org/lkml/2007/12/11/361 ) removes the
expansion ROM(s) from the transparent bridge sizing calculations which
actually resolves the original issue in a different manner. So, even
if the "PCI: remove transparent bridge sizing" is not problematic it
is no longer needed anyway."
Identified-by: Ivan Kokshaysky <[email protected]>
Tested-by: Thomas Meyer <[email protected]>
Acked-by: Gary Hade <[email protected]>
Acked-by: Ingo Molnar <[email protected]>
Cc: Stefan Richter <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
This commit is contained in:
parent
05dda977f2
commit
12c22d6ef2
1 changed files with 0 additions and 5 deletions
|
|
@ -486,12 +486,7 @@ void __ref pci_bus_size_bridges(struct pci_bus *bus)
|
|||
break;
|
||||
|
||||
case PCI_CLASS_BRIDGE_PCI:
|
||||
/* don't size subtractive decoding (transparent)
|
||||
* PCI-to-PCI bridges */
|
||||
if (bus->self->transparent)
|
||||
break;
|
||||
pci_bridge_check_ranges(bus);
|
||||
/* fall through */
|
||||
default:
|
||||
pbus_size_io(bus);
|
||||
/* If the bridge supports prefetchable range, size it
|
||||
|
|
|
|||
Loading…
Reference in a new issue