• Gary Hade's avatar
    PCI: boot parameter to avoid expansion ROM memory allocation · bb71ad88
    Gary Hade authored
    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: default avatarGary Hade <garyhade@us.ibm.com>
    Signed-off-by: default avatarJesse Barnes <jbarnes@virtuousgeek.org>
    bb71ad88
common.c 13.1 KB