From: Selvin Xavier <selvin.xavier@broadcom.com>
To: linux-pci@vger.kernel.org, bhelgaas@google.com
Cc: dledford@redhat.com, jgg@nvidia.com, linux-rdma@vger.kernel.org,
Felix.Kuehling@amd.com, Shaoyun.Liu@amd.com,
Jay.Cornwall@amd.com, andrew.gospodarek@broadcom.com,
michael.chan@broadcom.com,
Selvin Xavier <selvin.xavier@broadcom.com>
Subject: [PATCH] PCI: Do not enable pci atomics on VFs
Date: Sat, 11 Sep 2021 03:03:05 -0700 [thread overview]
Message-ID: <1631354585-16597-1-git-send-email-selvin.xavier@broadcom.com> (raw)
Host crashes when pci_enable_atomic_ops_to_root is called for VFs
with virtual buses. The virtual buses added to SR-IOV has bus->self
set to NULL and host crashes due to this.
PID: 4481 TASK: ffff89c6941b0000 CPU: 53 COMMAND: "bash"
#0 [ffff9a94817136d8] machine_kexec at ffffffffb90601a4
#1 [ffff9a9481713728] __crash_kexec at ffffffffb9190d5d
#2 [ffff9a94817137f0] crash_kexec at ffffffffb9191c4d
#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]
RIP: 00007f450602f648 RSP: 00007ffe880869e8 RFLAGS: 00000246
RAX: ffffffffffffffda RBX: 0000000000000002 RCX: 00007f450602f648
RDX: 0000000000000002 RSI: 0000555c566c4a60 RDI: 0000000000000001
RBP: 0000555c566c4a60 R8: 000000000000000a R9: 00007f45060c2580
R10: 000000000000000a R11: 0000000000000246 R12: 00007f45063026e0
R13: 0000000000000002 R14: 00007f45062fd880 R15: 0000000000000002
ORIG_RAX: 0000000000000001 CS: 0033 SS: 002b
AtomicOp Requester Enable bit in the Device Control 2 register
is reserved for VFs and drivers shouldn't enable it for VFs.
Adding a check to return EINVAL if pci_enable_atomic_ops_to_root
is called with VF pci device.
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@broadcom.com>
---
drivers/pci/pci.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index aacf575..d968a36 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -3702,6 +3702,14 @@ int pci_enable_atomic_ops_to_root(struct pci_dev *dev, u32 cap_mask)
struct pci_dev *bridge;
u32 cap, ctl2;
+ /*
+ * As per PCIe r5.0, sec 9.3.5.10, the AtomicOp Requester Enable
+ * bit in the Device Control 2 register is reserved in VFs and the PF
+ * value applies to all associated VFs. Return -EINVAL if called for VFs.
+ */
+ if (dev->is_virtfn)
+ return -EINVAL;
+
if (!pci_is_pcie(dev))
return -EINVAL;
--
2.5.5
next reply other threads:[~2021-09-11 10:04 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-11 10:03 Selvin Xavier [this message]
2021-09-13 12:28 ` [PATCH] PCI: Do not enable pci atomics on VFs Andy Gospodarek
2021-09-14 20:16 ` Bjorn Helgaas
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1631354585-16597-1-git-send-email-selvin.xavier@broadcom.com \
--to=selvin.xavier@broadcom.com \
--cc=Felix.Kuehling@amd.com \
--cc=Jay.Cornwall@amd.com \
--cc=Shaoyun.Liu@amd.com \
--cc=andrew.gospodarek@broadcom.com \
--cc=bhelgaas@google.com \
--cc=dledford@redhat.com \
--cc=jgg@nvidia.com \
--cc=linux-pci@vger.kernel.org \
--cc=linux-rdma@vger.kernel.org \
--cc=michael.chan@broadcom.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.