]> git.kernelconcepts.de Git - karo-tx-linux.git/commit
PCI: Set SR-IOV NumVFs to zero after enumeration
authorAlexander Duyck <aduyck@mirantis.com>
Thu, 29 Oct 2015 21:20:50 +0000 (16:20 -0500)
committerBjorn Helgaas <bhelgaas@google.com>
Thu, 29 Oct 2015 21:20:50 +0000 (16:20 -0500)
commitea9a8854161d9580cfabe011c0ae296ecc0e1d4f
treeaba12bea0bf507847cc9afdfdc5617f7efa1da89
parentff45f9ddbcf5418ff6402432d14ad91a40d9bea9
PCI: Set SR-IOV NumVFs to zero after enumeration

The enumeration path should leave NumVFs set to zero.  But after
4449f079722c ("PCI: Calculate maximum number of buses required for VFs"),
we call virtfn_max_buses() in the enumeration path, which changes NumVFs.
This NumVFs change is visible via lspci and sysfs until a driver enables
SR-IOV.

Iterate from TotalVFs down to zero so NumVFs is zero when we're finished
computing the maximum number of buses.  Validate offset and stride in
the loop, so we can test it at every possible NumVFs setting.  Rename
virtfn_max_buses() to compute_max_vf_buses() to hint that it does have a
side effect of updating iov->max_VF_buses.

[bhelgaas: changelog, rename, allow numVF==1 && stride==0, rework loop,
reverse sense of error path]
Fixes: 4449f079722c ("PCI: Calculate maximum number of buses required for VFs")
Based-on-patch-by: Ethan Zhao <ethan.zhao@oracle.com>
Signed-off-by: Alexander Duyck <aduyck@mirantis.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
drivers/pci/iov.c