From de963552514e4becb67c9909a0db90353a5ef121 Mon Sep 17 00:00:00 2001 From: Arthur Hanson Rasmusson Date: Mon, 5 Oct 2026 15:58:43 -0400 Subject: vgsp: GR golden-replay groundwork and FWCLIENT promote mode 24 - golden replay (gsp_phys_rmcall_golden, default off): replay the stock client's post-load golden channel allocations (separate VAS, pushbuffer objects, USERD, bare GR channel, TURING_A 3D object) before the ladder channel; best-effort: a failure warns and the ladder continues. - on-ladder TURING_A (0xc597) 3D object allocation before the compute object (best-effort) to initialize server-side GR-instance state. - promote mode 24: the reference FWCLIENT non-3D set (MAIN, PM, PATCH, FECS_EVENT, PRIV_ACCESS_MAP, UNRESTRICTED_PRIV_ACCESS_MAP) as one GPU_PROMOTE_CTX on the KMD channel, with per-entry logging and explicit omission semantics; mode clamps/descriptions extended to 24. Live: mode 23 soft-stops 0x1f on the server-managed shared channel and reaches the per-buffer commit on the KMD channel, where it stops at the missing engine-context memdesc; mode 24 emits all six entries and is refused with 0x1f before BIND. All cycles release clean, GPU green. --- kernel/gsp_phys_gpu.h | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'kernel/gsp_phys_gpu.h') diff --git a/kernel/gsp_phys_gpu.h b/kernel/gsp_phys_gpu.h index ad99c7d..8322725 100644 --- a/kernel/gsp_phys_gpu.h +++ b/kernel/gsp_phys_gpu.h @@ -98,6 +98,13 @@ int gsp_phys_srv_ctxcommit_mode(void); */ int gsp_phys_rmcall_channel_value(void); +/* + * gsp_phys_rmcall_golden (default 0): replay the stock client's golden-image + * channel allocations in stage 3 before the ladder's own channel when set and + * gsp_phys_gpu=1. With 0, the ladder is byte-identical to before. + */ +bool gsp_phys_rmcall_golden_enabled(void); + /* * True when the gsp_phys_work_forward module parameter is set (default 0: the * guest's CE pushes stay software-emulated exactly as before). When set, the @@ -229,8 +236,15 @@ int gsp_phys_rmcall_engine_value(void); * PROMOTE_CTX with hVirtMemory, virtAddress/size and entryCount=0, so * the server creates the memdesc/vaList entry itself; * 7 = no-entry bare (virtAddress, size): PROMOTE_CTX with entryCount=0 and - * no hVirtMemory (the other documented no-entry branch). - * The parameter's set callback clamps any value outside 0..7 to 0 with a + * no hVirtMemory (the other documented no-entry branch); + * 8..23 = later KMD-channel/old-interface/hVirtMemory/FBMEM bisection + * shapes; see gsp_phys_gpu.c MODULE_PARM_DESC for the full list; + * 24 = the reference FWCLIENT non-3D set (MAIN/PM/PATCH/FECS_EVENT/ + * PRIV_ACCESS_MAP/UNRESTRICTED_PRIV_ACCESS_MAP) as one control on the + * V6 KMD-managed channel: combined PA+VA entries where the ladder has + * a VA, PM/PRIV_ACCESS_MAP init-only, unsourceable buffers omitted + * and logged. + * The parameter's set callback clamps any value outside 0..24 to 0 with a * warning and warns on every nonzero enable (a failed promote can assert * GSP-RM and wedge the device; recovery needs a reboot with human approval). * The booter snapshots the value when the rm-call ladder's stage 3 starts -- cgit v1.2.3