linux/arch/x86/pci
Gary Hade 9f8daccaa0 PCI: remove default PCI expansion ROM memory allocation
increasing number of PCI slots in large multi-node systems.  The kernel
currently attempts by default to allocate memory for all PCI expansion
ROMs so there has also been an increasing number of PCI memory
allocation failures seen on these systems.  This occurs because the BIOS
either (1) provides insufficient PCI memory resource for all the
expansion ROMs or (2) provides adequate PCI memory resource for
expansion ROMs but provides the space in kernel unexpected BIOS assigned
P2P non-prefetch windows.

The resulting PCI memory allocation failures may be benign when related
to memory requests for expansion ROMs themselves but in some cases they
can occur when attempting to allocate space for more critical BARs.
This can happen when a successful expansion ROM allocation request
consumes memory resource that was intended for a non-ROM BAR.  We have
seen this happen during PCI hotplug of an adapter that contains a P2P
bridge where successful memory allocation for an expansion ROM BAR on
device behind the bridge consumed memory that was intended for a non-ROM
BAR on the P2P bridge.  In all cases the allocation failure messages can
be very confusing for users.

This patch addresses the issue by changing the kernel default behavior
so that expansion ROM memory allocations are no longer attempted by
default when the BIOS has not assigned a specific address range to the
expansion ROM BAR.  This was done by changing the 'pci=rom' boot option
behavior for BIOS unassigned expansion ROMs to actually match it's
current kernel-parameters.txt description which already implies "off" by
default. Behavior for BIOS assigned expansion ROMs implemented in
pcibios_assign_resources() [arch/x86/pci/i386.c] is unchanged.

Signed-off-by: Gary Hade <garyhade@us.ibm.com>
Cc: Greg KH <greg@kroah.com>
Cc: Jan Beulich <jbeulich@novell.com>
Acked-by: "Jun'ichi Nomura" <j-nomura@ce.jp.nec.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2008-01-30 13:31:59 +01:00
..
acpi.c Pull fluff into release branch 2007-11-20 01:21:47 -05:00
common.c PCI: remove default PCI expansion ROM memory allocation 2008-01-30 13:31:59 +01:00
direct.c i386: move pci 2007-10-11 11:16:36 +02:00
early.c i386: move pci 2007-10-11 11:16:36 +02:00
fixup.c PCI: re-enable onboard sound on "MSI K8T Neo2-FIR" 2007-10-12 15:03:16 -07:00
i386.c PCI: modify PCI bridge control ISA flag for clarity 2007-10-12 15:03:18 -07:00
init.c i386: move pci 2007-10-11 11:16:36 +02:00
irq.c spelling fixes: arch/i386/ 2007-10-20 01:13:56 +02:00
k8-bus_64.c x86_64: move pci 2007-10-11 11:17:12 +02:00
legacy.c i386: move pci 2007-10-11 11:16:36 +02:00
Makefile x86_64: move pci 2007-10-11 11:17:12 +02:00
Makefile_32 i386: move pci 2007-10-11 11:16:36 +02:00
Makefile_64 x86_64: move pci 2007-10-11 11:17:12 +02:00
mmconfig_32.c i386: move pci 2007-10-11 11:16:36 +02:00
mmconfig_64.c x86_64: move pci 2007-10-11 11:17:12 +02:00
mmconfig-shared.c i386: move pci 2007-10-11 11:16:36 +02:00
numa.c i386: move pci 2007-10-11 11:16:36 +02:00
pcbios.c i386: move pci 2007-10-11 11:16:36 +02:00
pci.h PCI: use _CRS for PCI resource allocation 2007-10-12 15:03:18 -07:00
visws.c i386: move pci 2007-10-11 11:16:36 +02:00