From 9200f35a11df0c021c08f55fbc04e08ac7c702a6 Mon Sep 17 00:00:00 2001 From: Arthur Hanson Rasmusson Date: Wed, 7 Oct 2026 12:37:42 -0400 Subject: vgsp/gr-regs: per-GPC exception + activity + GPCMMU ESR readback PGRAPH_EXCEPTION bit24 (GPC) with EXCEPTION1 GPC1:0=0b11 fires at every forwarded QMD activation and the engine then saves/unloads. The per-GPC PRI window (BAR0 0x500000 + gpc*0x8000) carries NV_PGPC_PRI_GPCCS_GPC_EXCEPTION (0x2c90: PROP/ZCULL/GCC/SETUP/PES/TPC/GPCMMU0/GPCCS bits), GPC_ACTIVITY1.GPCMMU0 (0x2c84: FAULTED=6) and the GPCMMU GLOBAL_ESR (0x324): the post-mortem and the external sampler now record them to name the failing GPC sub-unit (or the GPC MMU). --- kernel/gsp_phys_booter.c | 14 ++++++++++++++ tools/gr-regs/reg_sampler.py | 7 +++++++ 2 files changed, 21 insertions(+) diff --git a/kernel/gsp_phys_booter.c b/kernel/gsp_phys_booter.c index ee433e1..c70a79f 100644 --- a/kernel/gsp_phys_booter.c +++ b/kernel/gsp_phys_booter.c @@ -17021,6 +17021,20 @@ gr_page_unmapped: ioread32(bar0 + 0x00405b00u), ioread32(bar0 + 0x00400100u), ioread32(bar0 + 0x0040013cu)); + if (bar0) { + u32 g; + + for (g = 0; g < 6; g++) { + u32 b = 0x00500000u + + g * 0x8000u; + + pr_info("vgsp-gr: post-mortem GPC%u exc=0x%08x act1=0x%08x mmuesr=0x%08x\n", + g, + ioread32(bar0 + b + 0x2c90u), + ioread32(bar0 + b + 0x2c84u), + ioread32(bar0 + b + 0x324u)); + } + } if (bar0) pr_info("vgsp-gr: SKED watermark[0..15]=0x%08x 0x%08x 0x%08x 0x%08x 0x%08x 0x%08x 0x%08x 0x%08x 0x%08x 0x%08x 0x%08x 0x%08x 0x%08x 0x%08x 0x%08x 0x%08x\n", ioread32(bar0 + 0x004070a0u), diff --git a/tools/gr-regs/reg_sampler.py b/tools/gr-regs/reg_sampler.py index 25879ef..e66a299 100644 --- a/tools/gr-regs/reg_sampler.py +++ b/tools/gr-regs/reg_sampler.py @@ -36,6 +36,13 @@ REGS = [ (0x400118, "PGRAPH_EXCEPTION1"), (0x40011C, "PGRAPH_EXCEPTION2"), (0x40013C, "PGRAPH_INTR_EN"), + (0x502C90, "GPC0_EXCEPTION"), + (0x502C84, "GPC0_ACTIVITY1"), + (0x50AC90, "GPC1_EXCEPTION"), + (0x512C90, "GPC2_EXCEPTION"), + (0x51AC90, "GPC3_EXCEPTION"), + (0x522C90, "GPC4_EXCEPTION"), + (0x52AC90, "GPC5_EXCEPTION"), (0x400700, "PGRAPH_STATUS"), (0x400504, "GRFIFO_STATUS"), (0x400704, "TRAPPED_ADDR"), -- cgit v1.2.3