• Wei Yang's avatar
    PCI: Consider additional PF's IOV BAR alignment in sizing and assigning · d74b9027
    Wei Yang authored
    When sizing and assigning resources, we divide the resources into two
    lists: the requested list and the additional list.  We don't consider the
    alignment of additional VF(n) BAR space.
    
    This is because the alignment required for the VF(n) BAR space is the size
    of an individual VF BAR, not the size of the space for *all* VFs.  But we
    want additional alignment to support partitioning on PowerNV.
    
    Consider the additional IOV BAR alignment when sizing and assigning
    resources.  When there is not enough system MMIO space to accomodate both
    the requested list and the additional list, the PF's IOV BAR alignment will
    not contribute to the bridge. When there is enough system MMIO space for
    both lists, the additional alignment will contribute to the bridge.
    
    The additional alignment is stored in the min_align of pci_dev_resource,
    which is stored in the additional list by add_to_list() at the end of
    pbus_size_mem(). The additional alignment is calculated in
    pci_resource_alignment().  For an IOV BAR, we have arch dependent function
    to get the alignment for different arch.
    
    [bhelgaas: changelog, printk cast]
    Signed-off-by: default avatarWei Yang <weiyang@linux.vnet.ibm.com>
    Acked-by: default avatarBjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
    d74b9027
setup-bus.c 48.5 KB