summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-07 11:05:24 -0400
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-07 11:05:24 -0400
commitab6fed7ee35a114541373af90184acde9bd94b6b (patch)
treee06e5ecd04e65f7344211a6ccc87409213e8a5ec
parent2520bdb490398c1190d53fbd700ecba178fe8bb9 (diff)
downloadopen-iov-ab6fed7ee35a114541373af90184acde9bd94b6b.tar.gz
open-iov-ab6fed7ee35a114541373af90184acde9bd94b6b.zip
gr-regs/vgsp: sample PGRAPH_INTR + PGRAPH_INTR_EN at the dispatch window
The m75/m78/m79 launch windows show FECS_CTXSW_STATUS_FE_0.GR_INTR_REQ (bit17) asserted through the SKED CWD ACTIVE state and a following CTXSW_REQ (bit0) that results in the context save/unload. The real driver carries GR_INTR only transiently during its context load and clears it before ACTIVE. The PGRAPH interrupt latch (0x400100) names what the engine is signaling (e.g. ILLEGAL_METHOD bit4, SEMAPHORE bit1, NOTIFY); sampled by the external sampler and dumped in the launch post-mortem.
-rw-r--r--kernel/gsp_phys_booter.c6
-rw-r--r--tools/gr-regs/reg_sampler.py2
2 files changed, 6 insertions, 2 deletions
diff --git a/kernel/gsp_phys_booter.c b/kernel/gsp_phys_booter.c
index 241fe04..dbc6c43 100644
--- a/kernel/gsp_phys_booter.c
+++ b/kernel/gsp_phys_booter.c
@@ -16727,7 +16727,7 @@ gr_page_unmapped:
ioread32(bar0 + 0x0040a508u),
ioread32(bar0 + 0x0040a50cu));
if (bar0)
- pr_info("vgsp-gr: SKED readback: HWW_ESR=0x%08x HWW_EN=0x%08x INFO1=0x%08x INFO2=0x%08x INFO3=0x%08x CWD_T0=0x%08x CWD_T1=0x%08x CWD_T2=0x%08x ACT=0x%08x FECS_CTX=0x%08x CWD_FS=0x%08x\n",
+ pr_info("vgsp-gr: SKED readback: HWW_ESR=0x%08x HWW_EN=0x%08x INFO1=0x%08x INFO2=0x%08x INFO3=0x%08x CWD_T0=0x%08x CWD_T1=0x%08x CWD_T2=0x%08x ACT=0x%08x FECS_CTX=0x%08x CWD_FS=0x%08x PGRAPH_INTR=0x%08x INTR_EN=0x%08x\n",
ioread32(bar0 + 0x00407020u),
ioread32(bar0 + 0x00407024u),
ioread32(bar0 + 0x00407028u),
@@ -16738,7 +16738,9 @@ gr_page_unmapped:
ioread32(bar0 + 0x00407068u),
ioread32(bar0 + 0x00407054u),
ioread32(bar0 + 0x00409b00u),
- ioread32(bar0 + 0x00405b00u));
+ ioread32(bar0 + 0x00405b00u),
+ ioread32(bar0 + 0x00400100u),
+ ioread32(bar0 + 0x0040013cu));
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 495ace8..af00db7 100644
--- a/tools/gr-regs/reg_sampler.py
+++ b/tools/gr-regs/reg_sampler.py
@@ -31,6 +31,8 @@ import time
DEV = "/sys/bus/pci/devices/0000:01:00.0/resource0"
REGS = [
(0x000200, "PMC_ENABLE"),
+ (0x400100, "PGRAPH_INTR"),
+ (0x40013C, "PGRAPH_INTR_EN"),
(0x400700, "PGRAPH_STATUS"),
(0x400504, "GRFIFO_STATUS"),
(0x400704, "TRAPPED_ADDR"),