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 /include | |
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 'include')
-rw-r--r-- | include/pci-iov.h | 37 |
1 files changed, 0 insertions, 37 deletions
diff --git a/include/pci-iov.h b/include/pci-iov.h deleted file mode 100644 index 787b2cd..0000000 --- a/include/pci-iov.h +++ /dev/null @@ -1,37 +0,0 @@ -/* Copyright 2013-2016 IBM Corp. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - * implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __PCI_IOV_H -#define __PCI_IOV_H - -struct pci_iov { - struct phb *phb; - struct pci_device *pd; - struct pci_device *VFs; - uint32_t pos; - bool enabled; - struct pci_cfg_reg_filter pcrf; - - uint16_t init_VFs; - uint16_t total_VFs; - uint16_t num_VFs; - uint16_t offset; - uint16_t stride; -}; - -extern void pci_init_iov_cap(struct phb *phb, struct pci_device *pd); - -#endif |