From de66b6136f5d5d10a8306a87ef4b7077ee69a350 Mon Sep 17 00:00:00 2001 From: Arthur Hanson Rasmusson Date: Wed, 7 Oct 2026 11:16:02 -0400 Subject: 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). --- kernel/gsp_phys_gpu.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'kernel/gsp_phys_gpu.c') 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 @@ -795,6 +795,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 -- cgit v1.2.3