summaryrefslogtreecommitdiffstats
path: root/kernel/gsp_phys_gpu.c
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-07 11:16:02 -0400
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-07 11:16:02 -0400
commitde66b6136f5d5d10a8306a87ef4b7077ee69a350 (patch)
tree49c44cca73f1eaad50f0e20355eee2bab889525f /kernel/gsp_phys_gpu.c
parent10102bfbd9435d3a6683c20bb7e75120a46db0aa (diff)
downloadopen-iov-de66b6136f5d5d10a8306a87ef4b7077ee69a350.tar.gz
open-iov-de66b6136f5d5d10a8306a87ef4b7077ee69a350.zip
vgsp: m83 - host-readable sysmem error notifier for the RM's channel-error records
NV_PGRAPH_EXCEPTION reads 0x01000000 (GPC) with EXCEPTION1 GPC1:0=0b11 at the QMD activation; the fault record the engine writes goes to the channel's error notifier, which is server FBMEM today and unreadable. gsp_phys_rmcall_gr_notifier_sys=1 registers a host sysmem chunk as the hObjectError memory object and carries it in the channel's errorNotifierMem with the SYS aperture, so the RM's asynchronous channel-error report is dumped in the launch post-mortem (the m35 lane still uses the captured substitute object shape).
Diffstat (limited to 'kernel/gsp_phys_gpu.c')
-rw-r--r--kernel/gsp_phys_gpu.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/kernel/gsp_phys_gpu.c b/kernel/gsp_phys_gpu.c
index a71ab97..f094d36 100644
--- a/kernel/gsp_phys_gpu.c
+++ b/kernel/gsp_phys_gpu.c
@@ -796,6 +796,26 @@ unsigned int gsp_phys_rmcall_gr_lmem_tpc_size_value(void)
EXPORT_SYMBOL_GPL(gsp_phys_rmcall_gr_lmem_tpc_size_value);
/*
+ * m83 sysmem error notifier (gsp_phys_rmcall_gr_notifier_sys; default 0).
+ * The mode-35 V7 error notifier is normally a server FBMEM class-0x40 memory
+ * object (unreadable). With 1 it is a host sysmem chunk registered as the
+ * hObjectError memory object and carried in the channel's errorNotifierMem
+ * with the SYS aperture, so the RM's asynchronous channel-error records for
+ * the GPC exception are readable (dumped in the launch post-mortem).
+ */
+static int gsp_phys_rmcall_gr_notifier_sys_param;
+module_param_named(gsp_phys_rmcall_gr_notifier_sys,
+ gsp_phys_rmcall_gr_notifier_sys_param, int, 0644);
+MODULE_PARM_DESC(gsp_phys_rmcall_gr_notifier_sys,
+ "Mode-35 error notifier as host sysmem (RM fault records readable; default 0)");
+
+int gsp_phys_rmcall_gr_notifier_sys_value(void)
+{
+ return gsp_phys_rmcall_gr_notifier_sys_param;
+}
+EXPORT_SYMBOL_GPL(gsp_phys_rmcall_gr_notifier_sys_value);
+
+/*
* m78 lane-enable skip mask (gsp_phys_rmcall_gr_lane_skip; default 0). Bit 0
* skips R2 #1059 GR_SET_CTXSW_PREEMPTION_MODE (CILP), bit 1 skips #1061
* SET_TIMESLICE, bit 2 skips #1063 device-sched. Used to bisect which