• Guilherme G. Piccoli's avatar
    UBUNTU: SAUCE: (noup) powerpc/pci: Assign fixed PHB number based on device-tree properties · ebfd4a07
    Guilherme G. Piccoli authored
    BugLink: http://bugs.launchpad.net/bugs/1560514
    https://patchwork.ozlabs.org/patch/599720/
    
    The domain/PHB field of PCI addresses has its value obtained from a
    global variable, incremented each time a new domain (represented by
    struct pci_controller) is added on the system. The domain addition
    process happens during boot or due to PCI device hotplug.
    
    As recent kernels are using predictable naming for network interfaces,
    the network stack is more tied to PCI naming. This can be a problem in
    hotplug scenarios, because PCI addresses will change if devices are
    removed and then re-added. This situation seems unusual, but it can
    happen if a user wants to replace a NIC without rebooting the machine,
    for example.
    
    This patch changes the way PCI domain values are generated: now, we use
    device-tree properties to assign fixed PHB numbers to PCI addresses
    when available (meaning pSeries and PowerNV cases). We also use a bitmap
    to allow dynamic PHB numbering when device-tree properties are not
    used. This bitmap keeps track of used PHB numbers and if a PHB is
    released (by hotplug operations for example), it allows the reuse of
    this PHB number, avoiding PCI address to change in case of device remove
    and re-add soon after. No functional changes were introduced.
    Reviewed-by: default avatarGavin Shan <gwshan@linux.vnet.ibm.com>
    Signed-off-by: default avatarGuilherme G. Piccoli <gpiccoli@linux.vnet.ibm.com>
    Signed-off-by: default avatarTim Gardner <tim.gardner@canonical.com>
    ebfd4a07
pci-common.c 47.8 KB