Patch "PCI: Do not enable AtomicOps on VFs" has been added to the 5.15-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    PCI: Do not enable AtomicOps on VFs

to the 5.15-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     pci-do-not-enable-atomicops-on-vfs.patch
and it can be found in the queue-5.15 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit cb0e419750c7fe8a806ebadb9162df4bfe123b67
Author: Selvin Xavier <selvin.xavier@xxxxxxxxxxxx>
Date:   Sat Sep 11 03:03:05 2021 -0700

    PCI: Do not enable AtomicOps on VFs
    
    [ Upstream commit 5ec0a6fcb60ea430f8ee7e0bec22db9b22f856d3 ]
    
    Host crashes when pci_enable_atomic_ops_to_root() is called for VFs with
    virtual buses. The virtual buses added to SR-IOV have bus->self set to NULL
    and host crashes due to this.
    
      PID: 4481   TASK: ffff89c6941b0000  CPU: 53  COMMAND: "bash"
      ...
       #3 [ffff9a9481713808] oops_end at ffffffffb9025cd6
       #4 [ffff9a9481713828] page_fault_oops at ffffffffb906e417
       #5 [ffff9a9481713888] exc_page_fault at ffffffffb9a0ad14
       #6 [ffff9a94817138b0] asm_exc_page_fault at ffffffffb9c00ace
          [exception RIP: pcie_capability_read_dword+28]
          RIP: ffffffffb952fd5c  RSP: ffff9a9481713960  RFLAGS: 00010246
          RAX: 0000000000000001  RBX: ffff89c6b1096000  RCX: 0000000000000000
          RDX: ffff9a9481713990  RSI: 0000000000000024  RDI: 0000000000000000
          RBP: 0000000000000080   R8: 0000000000000008   R9: ffff89c64341a2f8
          R10: 0000000000000002  R11: 0000000000000000  R12: ffff89c648bab000
          R13: 0000000000000000  R14: 0000000000000000  R15: ffff89c648bab0c8
          ORIG_RAX: ffffffffffffffff  CS: 0010  SS: 0018
       #7 [ffff9a9481713988] pci_enable_atomic_ops_to_root at ffffffffb95359a6
       #8 [ffff9a94817139c0] bnxt_qplib_determine_atomics at ffffffffc08c1a33 [bnxt_re]
       #9 [ffff9a94817139d0] bnxt_re_dev_init at ffffffffc08ba2d1 [bnxt_re]
    
    Per PCIe r5.0, sec 9.3.5.10, the AtomicOp Requester Enable bit in Device
    Control 2 is reserved for VFs.  The PF value applies to all associated VFs.
    
    Return -EINVAL if pci_enable_atomic_ops_to_root() is called for a VF.
    
    Link: https://lore.kernel.org/r/1631354585-16597-1-git-send-email-selvin.xavier@xxxxxxxxxxxx
    Fixes: 35f5ace5dea4 ("RDMA/bnxt_re: Enable global atomic ops if platform supports")
    Fixes: 430a23689dea ("PCI: Add pci_enable_atomic_ops_to_root()")
    Signed-off-by: Selvin Xavier <selvin.xavier@xxxxxxxxxxxx>
    Signed-off-by: Bjorn Helgaas <bhelgaas@xxxxxxxxxx>
    Reviewed-by: Andy Gospodarek <gospo@xxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index ce2ab62b64cfa..a101faf3e88a9 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -3719,6 +3719,14 @@ int pci_enable_atomic_ops_to_root(struct pci_dev *dev, u32 cap_mask)
 	struct pci_dev *bridge;
 	u32 cap, ctl2;
 
+	/*
+	 * Per PCIe r5.0, sec 9.3.5.10, the AtomicOp Requester Enable bit
+	 * in Device Control 2 is reserved in VFs and the PF value applies
+	 * to all associated VFs.
+	 */
+	if (dev->is_virtfn)
+		return -EINVAL;
+
 	if (!pci_is_pcie(dev))
 		return -EINVAL;
 



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux