• Wei Yang's avatar
    powerpc/pci: Don't unset PCI resources for VFs · c3b80fb0
    Wei Yang authored
    Flag PCI_REASSIGN_ALL_RSRC is used to ignore resources information setup by
    firmware, so that kernel would re-assign all resources of pci devices.
    
    On powerpc arch, this happens in a header fixup function
    pcibios_fixup_resources(), which will clean up the resources if this flag
    is set. This works fine for PFs, since after clean up, kernel will
    re-assign the resources in pcibios_resource_survey().
    
    Below is a simple call flow on how it works:
    
        pcibios_init
          pcibios_scan_phb
            pci_scan_child_bus
              ...
                pci_device_add
                  pci_fixup_device(pci_fixup_header)
                    pcibios_fixup_resources                     # header fixup
                      for (i = 0; i < DEVICE_COUNT_RESOURCE; i++)
                        dev->resource[i].start = 0
          pcibios_resource_survey                               # re-assign
            pcibios_allocate_resources
    
    However, the VF resources won't be re-assigned, since the VF resources are
    completely determined by the PF resources, and the PF resources have
    already been reassigned. This means we need to leave VF's resources
    un-cleared in pcibios_fixup_resources().
    
    In this patch, we skip the resource unset process in
    pcibios_fixup_resources(), if the pci_dev is a VF.
    Signed-off-by: default avatarWei Yang <weiyang@linux.vnet.ibm.com>
    Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
    c3b80fb0
pci-common.c 46.5 KB