Skip to content

Commit 8af3798

Browse files
Myron Stowegregkh
authored andcommitted
PCI: Skip MPS logic for Virtual Functions (VFs)
commit 3dbe97e upstream. PCIe r4.0, sec 9.3.5.4, "Device Control Register", shows both Max_Payload_Size (MPS) and Max_Read_request_Size (MRRS) to be 'RsvdP' for VFs. Just prior to the table it states: "PF and VF functionality is defined in Section 7.5.3.4 except where noted in Table 9-16. For VF fields marked 'RsvdP', the PF setting applies to the VF." All of which implies that with respect to Max_Payload_Size Supported (MPSS), MPS, and MRRS values, we should not be paying any attention to the VF's fields, but rather only to the PF's. Only looking at the PF's fields also logically makes sense as it's the sole physical interface to the PCIe bus. Link: https://bugzilla.kernel.org/show_bug.cgi?id=200527 Fixes: 27d868b ("PCI: Set MPS to match upstream bridge") Signed-off-by: Myron Stowe <myron.stowe@redhat.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Cc: stable@vger.kernel.org # 4.3+ Cc: Keith Busch <keith.busch@intel.com> Cc: Sinan Kaya <okaya@kernel.org> Cc: Dongdong Liu <liudongdong3@huawei.com> Cc: Jon Mason <jdmason@kudzu.us> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent cf9c2bc commit 8af3798

1 file changed

Lines changed: 4 additions & 0 deletions

File tree

drivers/pci/probe.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1560,6 +1560,10 @@ static void pci_configure_mps(struct pci_dev *dev)
15601560
if (!pci_is_pcie(dev) || !bridge || !pci_is_pcie(bridge))
15611561
return;
15621562

1563+
/* MPS and MRRS fields are of type 'RsvdP' for VFs, short-circuit out */
1564+
if (dev->is_virtfn)
1565+
return;
1566+
15631567
mps = pcie_get_mps(dev);
15641568
p_mps = pcie_get_mps(bridge);
15651569

0 commit comments

Comments
 (0)