Re: [PATCH V11 07/17] powerpc/pci: Don't unset pci resources for VFs
From: Benjamin Herrenschmidt <hidden>
Date: 2015-02-10 02:15:12
Also in:
linux-pci
On Tue, 2015-02-10 at 09:51 +0800, Wei Yang wrote:
On Tue, Feb 10, 2015 at 11:36:24AM +1100, Benjamin Herrenschmidt wrote:quoted
On Thu, 2015-01-15 at 10:27 +0800, Wei Yang wrote:quoted
If we're going to reassign resources with flag PCI_REASSIGN_ALL_RSRC, all resources will be cleaned out during device header fixup time and then get reassigned by PCI core. However, the VF resources won't be reassigned and thus, we shouldn't clean them out. This patch adds a condition. If the pci_dev is a VF, skip the resource unset process.I don't understand this, can you elaborate ? Why wouldn't we reassign the IOV resource just like everything else ?Sure. VFs work a little bit different from normal devices. On powernv platform, we have PCI_REASSIGN_ALL_RSRC set, which means all resource retrieved from hardware will be cleaned and re-assigned by kernel. While VF's resources are calculated from PF's IOV BAR, in virtfn_add(). And after this, there is not re-assign process for VFs.
I still don't undertand, you mean SR-IOV is assigned before we assign everybody else ? That doesn't make sense to me... Ben.
quoted
Ben.quoted
Signed-off-by: Wei Yang <redacted> --- arch/powerpc/kernel/pci-common.c | 4 ++++ 1 file changed, 4 insertions(+)diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c index 37d512d..889f743 100644 --- a/arch/powerpc/kernel/pci-common.c +++ b/arch/powerpc/kernel/pci-common.c@@ -788,6 +788,10 @@ static void pcibios_fixup_resources(struct pci_dev *dev) pci_name(dev)); return; } + + if (dev->is_virtfn) + return; + for (i = 0; i < DEVICE_COUNT_RESOURCE; i++) { struct resource *res = dev->resource + i; struct pci_bus_region reg;