From 8b1198126605dc29a49b1dfe728409d2fa25a5ab Mon Sep 17 00:00:00 2001 From: Arthur Hanson Rasmusson Date: Wed, 7 Oct 2026 12:03:02 -0400 Subject: vgsp: m86 - sticky gsp_phys_rmcall_gr_override_hex module parameter The override blob can now be supplied at load (hex string, <= 1 page) and is parsed at the first forwarded launch, so the minimal-kernel experiment no longer depends on a debugfs write racing the guest's launch. Also observed in the m86 attempt: after many failed launches the forwarded ring desynced (USERD GP_PUT rewound to 1 while the engine's GP_GET was 513; IQ2M sentinel intact, no FE fetch) - a fresh boot is required per experiment. --- kernel/gsp_phys_gpu.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'kernel/gsp_phys_gpu.c') diff --git a/kernel/gsp_phys_gpu.c b/kernel/gsp_phys_gpu.c index e3ca2e8..ee6625c 100644 --- a/kernel/gsp_phys_gpu.c +++ b/kernel/gsp_phys_gpu.c @@ -795,6 +795,23 @@ unsigned int gsp_phys_rmcall_gr_lmem_tpc_size_value(void) } EXPORT_SYMBOL_GPL(gsp_phys_rmcall_gr_lmem_tpc_size_value); +/* + * m86 sticky override (gsp_phys_rmcall_gr_override_hex; default empty): hex + * bytes stored into the program-page override at first forwarded launch, so + * the override survives every module reload without a debugfs write. + */ +static char *gsp_phys_rmcall_gr_override_hex_param; +module_param_named(gsp_phys_rmcall_gr_override_hex, + gsp_phys_rmcall_gr_override_hex_param, charp, 0644); +MODULE_PARM_DESC(gsp_phys_rmcall_gr_override_hex, + "Hex bytes applied to the forwarded launch's program page at the QMD offset (default empty)"); + +const char *gsp_phys_rmcall_gr_override_hex_value(void) +{ + return gsp_phys_rmcall_gr_override_hex_param; +} +EXPORT_SYMBOL_GPL(gsp_phys_rmcall_gr_override_hex_value); + /* * m84 ctx-image probe (gsp_phys_rmcall_gr_img_probe; default 0). After the * stage-4 GR sem proof the ladder re-binds the rmcall channel to COPY0, -- cgit v1.2.3