Thread (85 messages) 85 messages, 4 authors, 2015-03-02

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;
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help