Thread (68 messages) flat view 68 messages, 5 authors, 2025-05-21

Re: [PATCH v6 02/16] PCI/DPC: Log Error Source ID only when valid

From: Bjorn Helgaas <helgaas@kernel.org>
Date: 2025-05-20 14:00:27
Also in: linux-pci, lkml

On Mon, May 19, 2025 at 04:15:56PM -0700, Sathyanarayanan Kuppuswamy wrote:
On 5/19/25 2:35 PM, Bjorn Helgaas wrote:
quoted
From: Bjorn Helgaas <bhelgaas@google.com>

DPC Error Source ID is only valid when the DPC Trigger Reason indicates
that DPC was triggered due to reception of an ERR_NONFATAL or ERR_FATAL
Message (PCIe r6.0, sec 7.9.14.5).

When DPC was triggered by ERR_NONFATAL (PCI_EXP_DPC_STATUS_TRIGGER_RSN_NFE)
or ERR_FATAL (PCI_EXP_DPC_STATUS_TRIGGER_RSN_FE) from a downstream device,
log the Error Source ID (decoded into domain/bus/device/function).  Don't
print the source otherwise, since it's not valid.

For DPC trigger due to reception of ERR_NONFATAL or ERR_FATAL, the dmesg
logging changes:

   - pci 0000:00:01.0: DPC: containment event, status:0x000d source:0x0200
   - pci 0000:00:01.0: DPC: ERR_FATAL detected
   + pci 0000:00:01.0: DPC: containment event, status:0x000d, ERR_FATAL received from 0000:02:00.0

and when DPC triggered for other reasons, where DPC Error Source ID is
undefined, e.g., unmasked uncorrectable error:

   - pci 0000:00:01.0: DPC: containment event, status:0x0009 source:0x0200
   - pci 0000:00:01.0: DPC: unmasked uncorrectable error detected
   + pci 0000:00:01.0: DPC: containment event, status:0x0009: unmasked uncorrectable error detected

Previously the "containment event" message was at KERN_INFO and the
"%s detected" message was at KERN_WARNING.  Now the single message is at
KERN_WARNING.
Since we are handling Uncorrectable errors, why not use pci_err?
Sounds reasonable to me.  I would do it in a separate patch because
the point of this one is to avoid logging junk when Error Source ID is
not valid.
quoted
+		pci_warn(pdev, "containment event, status:%#06x, %s received from %04x:%02x:%02x.%d\n",
+			 status,
I see the BDF extraction and format code in many places in the PCI
drivers. May be a common macro will make it more readable.
Good idea.  Not sure how to implement it, so I put that on my TODO
list for now.
quoted
+			 (reason == PCI_EXP_DPC_STATUS_TRIGGER_RSN_FE) ?
+				"ERR_FATAL" : "ERR_NONFATAL",
+			 pci_domain_nr(pdev->bus), PCI_BUS_NUM(source),
+			 PCI_SLOT(source), PCI_FUNC(source));
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help