• Gavin Shan's avatar
    powerpc/powernv/ioda1: M64 support on P7IOC · 99451551
    Gavin Shan authored
    This enables M64 window on P7IOC, which has been enabled on PHB3.
    Different from PHB3 where 16 M64 BARs are supported and each of
    them can be owned by one particular PE# exclusively or divided
    evenly to 256 segments, every P7IOC PHB has 16 M64 BARs and each
    of them are divided to 8 segments. So every P7IOC PHB supports
    128 M64 segments in total. P7IOC has M64DT, which helps mapping
    one particular M64 segment# to arbitrary PE#. PHB3 doesn't have
    M64DT, indicating that one M64 segment can only be pinned to the
    fixed PE#.
    
    In order to unified M64 support M64 on P7IOC and PHB3, we just
    provide 128 M64 segments on every P7IOC PHB and each of them is
    pinned to the fixed PE# by bypassing the function of M64DT. In
    turn, we just need different phb->init_m64() for P7IOC and PHB3
    and maps M64 segment in pnv_ioda_reserve_m64_pe() for P7IOC, most
    of the code are shared by them.
    Signed-off-by: default avatarGavin Shan <gwshan@linux.vnet.ibm.com>
    Reviewed-by: default avatarAlistair Popple <alistair@popple.id.au>
    Reviewed-by: default avatarAlexey Kardashevskiy <aik@ozlabs.ru>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    99451551
pci-ioda.c 94.8 KB