1
0
Fork 0
alistair23-linux/arch/x86/pci
Gary Hade bb71ad8802 PCI: boot parameter to avoid expansion ROM memory allocation
Contention for scarce PCI memory resources has been growing
due to an 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 provides a new 'pci=norom' kernel boot parameter
that can be used to disable the default PCI expansion ROM memory
resource allocation.  This provides a way to avoid the above
described issues on systems that do not contain PCI devices
for which drivers or user-level applications depend on the
default PCI expansion ROM memory resource allocation behavior.

Signed-off-by: Gary Hade <garyhade@us.ibm.com>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
2008-06-10 10:59:50 -07:00
..
Makefile x86_64: move pci 2007-10-11 11:17:12 +02:00
Makefile_32 x86: undo visws/numaq build changes 2008-05-04 20:04:45 +02:00
Makefile_64 x86: multi pci root bus with different io resource range, on 64-bit 2008-04-26 23:41:04 +02:00
acpi.c x86/pci: add pci=skip_isa_align command lines. 2008-05-05 09:22:08 -07:00
common.c PCI: boot parameter to avoid expansion ROM memory allocation 2008-06-10 10:59:50 -07:00
direct.c x86 pci: remove checking type for mmconfig probe 2008-04-26 23:41:04 +02:00
early.c i386: move pci 2007-10-11 11:16:36 +02:00
fixup.c x86/pci: remove flag in pci_cfg_space_size_ext 2008-04-29 15:34:05 -07:00
i386.c x86/PCI: X86_PAT & mprotect 2008-05-13 09:51:54 -07:00
init.c PCI/x86: fix up PCI stuff so that PCI_GOANY supports OLPC 2008-06-05 14:29:25 -07:00
irq.c x86/PCI: janitor work in irq.c 2008-06-10 10:59:46 -07:00
k8-bus_64.c x86: remove spew print out about bus to node mapping 2008-05-10 19:31:45 +02:00
legacy.c x86: get mp_bus_to_node early 2008-04-26 23:41:04 +02:00
mmconfig-shared.c x86: add pci=check_enable_amd_mmconf and dmi check 2008-04-26 23:41:04 +02:00
mmconfig_32.c x86: clear pci_mmcfg_virt when mmcfg get rejected 2008-04-26 23:41:03 +02:00
mmconfig_64.c x86: clear pci_mmcfg_virt when mmcfg get rejected 2008-04-26 23:41:03 +02:00
mp_bus_to_node.c x86: get mp_bus_to_node early 2008-04-26 23:41:04 +02:00
numa.c x86: remove mpc_oem_bus_info() 2008-04-17 17:41:08 +02:00
olpc.c PCI/x86: fix up PCI stuff so that PCI_GOANY supports OLPC 2008-06-05 14:29:25 -07:00
pcbios.c PCI: remove initial bios sort of PCI devices on x86 2008-04-20 21:46:58 -07:00
pci.h PCI: boot parameter to avoid expansion ROM memory allocation 2008-06-10 10:59:50 -07:00
visws.c Change pci_raw_ops to pci_raw_read/write 2008-02-10 12:52:46 -08:00