• Benjamin Herrenschmidt's avatar
    powerpc/pci: Improve detection of unassigned bridge resources · b5561511
    Benjamin Herrenschmidt authored
    When the powerpc PCI layer is not configured to re-assign everything,
    it currently fails to detect that a PCI to PCI bridge has been left
    unassigned by the firmware and tries to allocate resource for the
    default window values in the bridge (0...X) (with the notable exception
    of a hack we have in there that detects some Apple firmware unassigned
    bridge resources).
    
    This results in resource allocation failures, which are generally
    fixed up later on but it causes scary warnings in the logs and we
    have seen the fixup code fall over in some circumstances (a different
    issue to fix as well).
    
    This code improves that by providing a more complete & useful function
    to intuit that a bridge was left unassigned by the firmware, and thus
    force a full re-allocation by the PCI code without trying to allocate
    the existing useless resources first.
    
    The algorithm we use basically considers unassigned a window that
    starts at 0 (PCI address) if the corresponding address space enable
    bit is not set. In addition, for memory space, it considers such a
    resource unassigned also if the host bridge isn't configured to
    forward cycles to address 0 (ie, the resource basically overlaps
    main memory).
    
    This fixes a range of problems with things like Bare-Metal support
    on pSeries machines, or attempt to use partial firmware PCI setup.
    Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
    b5561511
pci-common.c 36.3 KB