kernel_optimize_test/arch/x86
Gary Hade 62f420f828 PCI: use _CRS for PCI resource allocation
Use _CRS for PCI resource allocation

This patch resolves an issue where incorrect PCI memory and i/o ranges
are being assigned to hotplugged PCI devices on some IBM systems.  The
resource mis-allocation not only makes the PCI device unuseable but
often makes the entire system unuseable due to resulting machine checks.

The hotplug capable PCI slots on the affected systems are not located
under a standard P2P bridge but are instead located under PCI root
bridges or subtractive decode P2P bridges.  For example, the IBM x3850
contains 2 hotplug capable PCI-X slots and 4 hotplug capable PCIe slots
with the PCI-X slots each located under a PCI root bridge and the PCIe
slots each located under a subtractive decode P2P bridge.

The current i386/x86_64 PCI resource allocation code does not use _CRS
returned resource information.  No other resource information source is
available for slots that are not below a standard P2P bridge so
incorrect ranges are being allocated from e820 hole causing the bad
result.

This patch causes the kernel to use _CRS returned resource info.  It is
roughly based on a change provided by Matthew Wilcox for the ia64 kernel
in 2005.  Due to possible buggy BIOS factor and possible yet to be
discovered kernel issues the function is disabled by default and can be
enabled with pci=use_crs.

Signed-off-by: Gary Hade <gary.hade@us.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2007-10-12 15:03:18 -07:00
..
boot x86_64: move kernel 2007-10-11 11:17:24 +02:00
crypto
ia32 i386/x86_64: move headers to include/asm-x86 2007-10-11 11:20:03 +02:00
kernel PCI: pci_get_device call from interrupt in reboot fixups 2007-10-12 15:03:15 -07:00
lib x86_64: move lib 2007-10-11 11:17:08 +02:00
mach-default
mach-es7000
mach-generic Merge branch 'dmi-const' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/misc-2.6 2007-10-11 19:18:45 -07:00
mach-visws
mach-voyager
math-emu
mm x86_64: move mm 2007-10-11 11:17:18 +02:00
oprofile
pci PCI: use _CRS for PCI resource allocation 2007-10-12 15:03:18 -07:00
power
vdso x86_64: move vdso 2007-10-11 11:17:10 +02:00
video
xen