summaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-07 12:37:42 -0400
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-07 12:37:42 -0400
commit00d26377ab5b3e2903f848edd3243d020e6089b4 (patch)
treef7c3b62173d4999919b10a1cada9306cc37e00ff /kernel
parent8b1198126605dc29a49b1dfe728409d2fa25a5ab (diff)
downloadopen-iov-00d26377ab5b3e2903f848edd3243d020e6089b4.tar.gz
open-iov-00d26377ab5b3e2903f848edd3243d020e6089b4.zip
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).
Diffstat (limited to 'kernel')
-rw-r--r--kernel/gsp_phys_booter.c14
1 files changed, 14 insertions, 0 deletions
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),