• A
    powerpc/powernv: Fix insufficient memory allocation · 92a86756
    Alexey Kardashevskiy 提交于
    The pnv_pci_init_ioda_phb() helper allocates a blob to store auxilary
    data such PE and M32/M64 segment allocation maps; this single blob has
    few partitions, size of each is derived from the PE number -
    phb->ioda.total_pe_num.
    
    It was assumed that the minimum PE number is 8, however it is 4 for NPU
    so the pe_alloc part was missing in the allocated blob. It was invisible
    till recently as we were not tracking used M64 segments and NPUs do not
    use M32 segments so the phb->ioda.m32_segmap (which was pointing to the
    same address as phb->ioda.pe_alloc) has never been written to leaving
    the pe_alloc memory intact.
    
    After commit 401203ac2d "powerpc/powernv: Track M64 segment consumption"
    the pe_alloc gets corrupted and PE allocation cannot work. This fixes
    the issue by enforcing the minimum PE number to 8.
    
    Fixes: 401203ac2d15 ("powerpc/powernv: Track M64 segment consumption")
    Signed-off-by: NAlexey Kardashevskiy <aik@ozlabs.ru>
    Reviewed-by: NGavin Shan <gwshan@linux.vnet.ibm.com>
    Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
    92a86756
pci-ioda.c 96.9 KB