• Gavin Shan's avatar
    powerpc/powernv: Allocate PE# in reverse order · 9fcd6f4a
    Gavin Shan authored
    PE number for one particular PE can be allocated dynamically or
    reserved according to the consumed M64 (64-bits prefetchable)
    segments of the PE. The M64 segment can't be remapped to arbitrary
    PE, meaning the PE number is determined according to the index
    of the consumed M64 segment. As below figure shows, M64 resource
    grows from low to high end, meaning the PE (number) reserved
    according to M64 segment grows from low to high end as well,
    so does the dynamically allocated PE number. It will lead to
    conflict: PE number (M64 segment) reserved by dynamic allocation
    is required by hot added PCI adapter at later point. It fails
    the PCI hotplug because of the PE number can't be reserved
    based on the index of the consumed M64 segment.
    
      +---+---+---+---+---+--------------------------------+-----+
      | 0 | 1 | 2 | 3 | 4 |      .......                   | 255 |
      +---+---+---+---+---+--------------------------------+-----+
    
      PE number for dynamic allocation          ----------------->
      PE number reserved for M64 segment        ----------------->
    
    To resolve above conflicts, this forces the PE number to be
    allocated dynamically in reverse order. With this patch applied,
    the PE numbers are reserved in ascending order, but allocated
    dynamically in reverse order.
    Signed-off-by: default avatarGavin Shan <gwshan@linux.vnet.ibm.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    9fcd6f4a
pci-ioda.c 97.2 KB