]> git.ipfire.org Git - thirdparty/kernel/stable.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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 19 Feb 2016 22:28:27 +0000 (14:28 -0800)
commit16a7fccaff5101c80f52b799728a0cbbd2892b12
tree2eb40753a3d348c27a4fe2c38858fcb59ce94d12
parent1d9e01c3e770d03bd1be12f17c33d7e3e778c220
PCI: Set SR-IOV NumVFs to zero after enumeration

commit ea9a8854161d9580cfabe011c0ae296ecc0e1d4f upstream.

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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/pci/iov.c