diff options
author | Oliver O'Halloran <oohall@gmail.com> | 2019-05-01 18:05:59 +1000 |
---|---|---|
committer | Oliver O'Halloran <oohall@gmail.com> | 2019-05-06 16:19:46 +1000 |
commit | 22057f868f3b2b1fd02647a738f6da0858b5eb6c (patch) | |
tree | 15c7b041fdc0dfb7c4934206f0a0e89e8e830a92 /core/pci.c | |
parent | 54811997b6d02dacaf8dd0d61cadaf3786dbabb0 (diff) | |
download | skiboot-22057f868f3b2b1fd02647a738f6da0858b5eb6c.zip skiboot-22057f868f3b2b1fd02647a738f6da0858b5eb6c.tar.gz skiboot-22057f868f3b2b1fd02647a738f6da0858b5eb6c.tar.bz2 |
pci/iov: Remove skiboot VF tracking
This feature was added a few years ago in response to a request to make
the MaxPayloadSize (MPS) field of a Virtual Function match the MPS of the
Physical Function that hosts it.
The SR-IOV specification states the the MPS field of the VF is "ResvP".
This indicates the VF will use whatever MPS is configured on the PF and
that the field should be treated as a reserved field in the config space
of the VF. In other words, a SR-IOV spec compliant VF should always return
zero in the MPS field. Adding hacks in OPAL to make it non-zero is...
misguided at best.
Additionally, there is a bug in the way pci_device structures are handled
by VFs that results in a crash on fast-reboot that occurs if VFs are
enabled and then disabled prior to rebooting. This patch fixes the bug by
removing the code entirely. This patch has no impact on SR-IOV support on
the host operating system.
Cc: Sergey Miroshnichenko <s.miroshnichenko@yadro.com>
Cc: skiboot-stable@lists.ozlabs.org
Tested-by: Santwana Samantray <santwana.samantray@in.ibm.com>
Tested-by: Satheesh Rajendran <satheera@in.ibm.com>
[oliver: added tested-bys]
Signed-off-by: Oliver O'Halloran <oohall@gmail.com>
Diffstat (limited to 'core/pci.c')
-rw-r--r-- | core/pci.c | 2 |
1 files changed, 0 insertions, 2 deletions
@@ -18,7 +18,6 @@ #include <cpu.h> #include <pci.h> #include <pci-cfg.h> -#include <pci-iov.h> #include <pci-slot.h> #include <pci-quirk.h> #include <timebase.h> @@ -193,7 +192,6 @@ void pci_init_capabilities(struct phb *phb, struct pci_device *pd) { pci_init_pcie_cap(phb, pd); pci_init_aer_cap(phb, pd); - pci_init_iov_cap(phb, pd); pci_init_pm_cap(phb, pd); } |