Linux PCI subsystem development
 help / color / mirror / Atom feed
* [PATCH 0/2] PCI/DPC: Fix EDR recovery path issues
@ 2026-02-12 19:18 Danielle Costantino
  2026-02-12 19:18 ` [PATCH 1/2] PCI/DPC: Clear Interrupt Status in dpc_reset_link() Danielle Costantino
  2026-02-12 19:18 ` [PATCH 2/2] PCI/EDR: Defer AER status clearing until after recovery Danielle Costantino
  0 siblings, 2 replies; 15+ messages in thread
From: Danielle Costantino @ 2026-02-12 19:18 UTC (permalink / raw)
  To: Bjorn Helgaas
  Cc: Keith Busch, Kuppuswamy Sathyanarayanan, Lukas Wunner,
	Mahesh J Salgaonkar, Oliver O'Halloran, linux-pci,
	Danielle Costantino

Two fixes for the firmware-first EDR path in DPC error recovery.

Both were found investigating recurring DPC events on a platform using
firmware-first EDR, where each recovery left stale state in the DPC
Status register and cleared AER diagnostic data before driver callbacks
could inspect it.

Patch 1 fixes DPC Interrupt Status (bit 3) never being cleared in the
EDR path.  In native DPC, dpc_irq() clears it in the top-half, but
EDR bypasses dpc_irq() entirely.  After this fix, dpc_reset_link()
clears both Trigger Status and Interrupt Status together.

Patch 2 moves pci_aer_raw_clear_status() from before pcie_do_recovery()
to after it in edr_handle_event(), so AER registers remain readable
throughout the driver recovery callbacks.

Tested on a firmware-first EDR platform.  A natural DPC event
confirmed:
  - DPC Status properly cleared: 0x2000 (clean) vs 0x2008 (stale, unpatched)
  - AER data available during recovery (GHES captured aer_uncor_status:
    0x00100010 throughout recovery window)
  - Full recovery successful in ~2.3s with link re-establishment

Danielle Costantino (2):
  PCI/DPC: Clear Interrupt Status in dpc_reset_link()
  PCI/EDR: Defer AER status clearing until after recovery

 drivers/pci/pcie/dpc.c | 10 +++++++++-
 drivers/pci/pcie/edr.c | 11 ++++++++++-
 2 files changed, 19 insertions(+), 2 deletions(-)

--
2.47.3


^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2026-02-13 17:08 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-02-12 19:18 [PATCH 0/2] PCI/DPC: Fix EDR recovery path issues Danielle Costantino
2026-02-12 19:18 ` [PATCH 1/2] PCI/DPC: Clear Interrupt Status in dpc_reset_link() Danielle Costantino
2026-02-12 19:50   ` Kuppuswamy Sathyanarayanan
2026-02-12 21:23     ` Keith Busch
2026-02-12 21:49       ` Kuppuswamy Sathyanarayanan
2026-02-12 22:12         ` Keith Busch
2026-02-12 22:51           ` Kuppuswamy Sathyanarayanan
2026-02-13  1:22             ` Keith Busch
2026-02-13  4:28               ` Sathyanarayanan Kuppuswamy
2026-02-13 14:01                 ` Keith Busch
2026-02-13 17:08                   ` Kuppuswamy Sathyanarayanan
     [not found]               ` <4c0d0575-0da1-49ff-878e-65622b442e98@linux.intel.com>
2026-02-13  4:29                 ` Sathyanarayanan Kuppuswamy
2026-02-12 21:36   ` Lukas Wunner
2026-02-12 21:50     ` Keith Busch
2026-02-12 19:18 ` [PATCH 2/2] PCI/EDR: Defer AER status clearing until after recovery Danielle Costantino

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox