• Oliver O'Halloran's avatar
    powerpc/eeh: Move PE tree setup into the platform · a131bfc6
    Oliver O'Halloran authored
    The EEH core has a concept of a "PE tree" to support PowerNV. The PE tree
    follows the PCI bus structures because a reset asserted on an upstream
    bridge will be propagated to the downstream bridges. On pseries there's a
    1-1 correspondence between what the guest sees are a PHB and a PE so the
    "tree" is really just a single node.
    
    Current the EEH core is reponsible for setting up this PE tree which it
    does by traversing the pci_dn tree. The structure of the pci_dn tree
    matches the bus tree on PowerNV which leads to the PE tree being "correct"
    this setup method doesn't make a whole lot of sense and it's actively
    confusing for the pseries case where it doesn't really do anything.
    
    We want to remove the dependence on pci_dn anyway so this patch move
    choosing where to insert a new PE into the platform code rather than
    being part of the generic EEH code. For PowerNV this simplifies the
    tree building logic and removes the use of pci_dn. For pseries we
    keep the existing logic. I'm not really convinced it does anything
    due to the 1-1 PE-to-PHB correspondence so every device under that
    PHB should be in the same PE, but I'd rather not remove it entirely
    until we've had a chance to look at it more deeply.
    Signed-off-by: default avatarOliver O'Halloran <oohall@gmail.com>
    Reviewed-by: default avatarAlexey Kardashevskiy <aik@ozlabs.ru>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20200725081231.39076-14-oohall@gmail.com
    a131bfc6
eeh-powernv.c 44.2 KB