Thread (56 messages) 56 messages, 3 authors, 2015-08-10

Re: [PATCH V2 5/6] powerpc/powernv: boundary the total vf bar size instead of the individual one

From: Gavin Shan <hidden>
Date: 2015-08-07 01:55:56

On Thu, Aug 06, 2015 at 10:03:04PM +0800, Wei Yang wrote:
On Thu, Aug 06, 2015 at 03:28:51PM +1000, Gavin Shan wrote:
quoted
On Wed, Aug 05, 2015 at 09:25:02AM +0800, Wei Yang wrote:
quoted
Each VF could have 6 BARs at most. When the total BAR size exceeds the
gate, after expanding it will also exhaust the M64 Window.

This patch limits the boundary by checking the total VF BAR size instead of
the individual BAR.

Signed-off-by: Wei Yang <redacted>
Ok. I didn't look at this when giving comments to last patch. It turns
you have the change in this patch. Please merge it with the previous
patch.
Hmm... I prefer to have them in two patches. One focus on the calculation of
gate and the other focus on checking the total VF BAR size. This would help
record the change.
It's fine to me as well. I'll take close look on your next revision since
you have to refresh the whole series. Is that fine to you?
quoted
quoted
---
arch/powerpc/platforms/powernv/pci-ioda.c |   13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/arch/powerpc/platforms/powernv/pci-ioda.c b/arch/powerpc/platforms/powernv/pci-ioda.c
index 31dcedc..4042303 100644
--- a/arch/powerpc/platforms/powernv/pci-ioda.c
+++ b/arch/powerpc/platforms/powernv/pci-ioda.c
@@ -2702,7 +2702,7 @@ static void pnv_pci_ioda_fixup_iov_resources(struct pci_dev *pdev)
	struct pnv_phb *phb;
	struct resource *res;
	int i;
-	resource_size_t size, gate;
+	resource_size_t size, gate, total_vf_bar_sz;
	struct pci_dn *pdn;
	int mul, total_vfs;
@@ -2729,6 +2729,7 @@ static void pnv_pci_ioda_fixup_iov_resources(struct pci_dev *pdev)
	 * Window and limit the system flexibility.
	 */
	gate = phb->ioda.m64_segsize >> 1;
+	total_vf_bar_sz = 0;

	for (i = 0; i < PCI_SRIOV_NUM_BARS; i++) {
		res = &pdev->resource[i + PCI_IOV_RESOURCES];
@@ -2741,13 +2742,13 @@ static void pnv_pci_ioda_fixup_iov_resources(struct pci_dev *pdev)
			return;
		}

-		size = pci_iov_resource_size(pdev, i + PCI_IOV_RESOURCES);
+		total_vf_bar_sz += pci_iov_resource_size(pdev,
+				i + PCI_IOV_RESOURCES);

		/* bigger than or equal to gate */
-		if (size >= gate) {
-			dev_info(&pdev->dev, "PowerNV: VF BAR%d: %pR IOV size "
-				"is bigger than %lld, roundup power2\n",
-				 i, res, gate);
+		if (total_vf_bar_sz >= gate) {
+			dev_info(&pdev->dev, "PowerNV: VF BAR Total IOV size "
+				"is bigger than %lld, roundup power2\n", gate);
			mul = roundup_pow_of_two(total_vfs);
			pdn->m64_single_mode = true;
			break;
-- 
1.7.9.5
-- 
Richard Yang
Help you, Help me
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help