• Gavin Shan's avatar
    powerpc/eeh: Introduce eeh_pe struct · 968f968f
    Gavin Shan authored
    As defined in PAPR 2.4, Partitionable Endpoint (PE) is an I/O subtree
    that can be treated as a unit for the purposes of partitioning and error
    recovery. Therefore, eeh core should be aware of PE. With eeh_pe struct,
    we can support PE explicitly. Further more, it makes all the stuff much
    more data centralized. Another important reason is for eeh core to support
    multiple platforms. Some of them like pSeries figures out PEs through
    OF nodes while others like powernv have to do that through PCI bus/device
    tree. With explicit PE support, eeh core will be implemented based on
    the centrialized data and platform dependent implementations figure it
    out by their feasible ways.
    
    When the struct is designed, following factors are taken in account:
      * Reflecting the relationships of PEs. PE might have parent
        as well children.
      * Reflecting the association of PE and (eeh) devices.
      * PEs have PHB boundary.
      * PE should have unique address assigned in the corresponding
        PHB domain.
    Signed-off-by: default avatarGavin Shan <shangw@linux.vnet.ibm.com>
    Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
    968f968f
eeh.h 10.1 KB