[PATCH 0/6] drm/xe: Capture additional HW register state in devcoredump
Nareshkumar Gollakoti <[email protected]>
| Newsgroups | org.freedesktop.lists.intel-xe |
|---|---|
| Message-ID | <[email protected]> |
This series extends the Xe devcoredump with additional hardware register
state to improve post-mortem debugging of GPU hangs and faults on Xe3p.
Today the devcoredump captures GuC log/CT, engine and submission state.
When triaging hangs it is often necessary to also know the static HW
configuration (fuses), GuC status/error state, GAM page-fault reporting
and L3 node status at the time of the hang. Collecting these at capture
time makes the dump self-contained and avoids relying on separate
probe-time logging.
To do this, the series adds a small generic MMIO register-dump helper
(descriptor list -> snapshot -> print/free) and uses it for several
register groups. Each group is captured for both the primary GT and,
where applicable, the media GT, and is gated to Xe3p (GRAPHICS_VER >= 35).
Registers requiring MCR steering are read through
xe_gt_mcr_unicast_read_any(); the remaining GAM registers use INSTANCE0
default steering and are read directly.
Snapshots are allocated with GFP_ATOMIC as capture runs inside the
dma_fence signalling section, matching the surrounding captures, and are
freed in the existing devcoredump teardown path.
Patches:
1 Add the generic reg-dump helpers and capture GT/media fuse registers.
2 Capture GT and media GuC status/error registers.
3 Print register offsets alongside names in the GuC engine capture
output (32- and 64-bit), easing cross-reference with the bspec.
4 Capture the GAM page-fault report head/tail registers.
5 Add the TDL gfx registers to the XeHPG extended GuC capture list.
6 Capture L3 node status registers (MCR, read via unicast_read_any()).
Sample devcoredump output gains the following sections:
**** GT Fuse Register Dump ****
**** Media GT Fuse Register Dump ****
**** GT GuC Register Dump ****
**** Media GT GuC Register Dump ****
**** GAM PF Report ****
**** Node Status ****
Nareshkumar Gollakoti (6):
drm/xe/devcoredump: Capture GT fuse registers in devcoredump
drm/xe/devcoredump: Add GuC register snapshot to devcoredump
drm/xe/guc: Print register addresses in capture snapshot output
drm/xe: dump GAM page fault report registers in devcoredump
drm/xe/guc: add TDL gfx registers to capture list
drm/xe: capture L3 node status registers in devcoredump
drivers/gpu/drm/xe/regs/xe_gt_regs.h | 17 ++
drivers/gpu/drm/xe/regs/xe_guc_regs.h | 13 ++
drivers/gpu/drm/xe/xe_devcoredump.c | 266 ++++++++++++++++++++++
drivers/gpu/drm/xe/xe_devcoredump_types.h | 45 ++++
drivers/gpu/drm/xe/xe_device.h | 5 +
drivers/gpu/drm/xe/xe_guc_capture.c | 15 +-
6 files changed, 356 insertions(+), 5 deletions(-)
--
2.43.0