From a3687334b04a605d8f326a2756bb089f08e2c716 Mon Sep 17 00:00:00 2001 From: Arthur Hanson Rasmusson Date: Tue, 6 Oct 2026 11:57:33 -0400 Subject: vgsp: golden-exec shape bisection + fwclient per-entry promotion + pool-VA stall fix - Mode 28 golden execution lane behind gsp_phys_rmcall_gr_promote=28 with a shape bitmask (gsp_phys_rmcall_golden_exec_shape: ring / entries=8 / sysmem USERD / USERD size / hObjectBuffer=VAS / skip replay TURING_A) and a USERD control-offset helper. Finding: the RM-managed golden channel hangs any GR object construct (-110, no assert) as soon as client submission wiring (ring or sysmem USERD) is attached, so only the captured server-owned shape constructs; the machinery is kept for future wiring ideas. - fwclient mask bit 11 (0x800): send each non-MAIN FWCLIENT promote entry as its own one-entry control and continue past refusals. V6 acceptance matrix: PM, PATCH, PRIV_ACCESS_MAP, UNRESTRICTED_PRIV_ACCESS_MAP accepted, FECS_EVENT refused 0x1f. - fwclient mask bit 12 (0x1000): golden9 VA-only global bookings (BUNDLE_CB, PAGEPOOL, ATTRIBUTE_CB, RTV_CB_GLOBAL) accepted on V6; bits 13/14 (0x2000/0x4000): FECS PA-only (refused 0x1f) and FECS VA-only (accepted). - gsp_phys_rmcall_srv_main_ignore: ignore a server-reported MAIN in the srv-ctx commit and force the client INITIALIZE_CTX + VA-only fallback. - gsp_sema_service: pool semaphores never fall back to the learned map; queue the absolute release via svc_pending_add until svc_pool_pa_resolve succeeds, and judge pool slots through the verified resolver in svc_apply_pending and the release decode (UVM registration stall fix). --- kernel/gsp_phys_gpu.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'kernel/gsp_phys_gpu.h') diff --git a/kernel/gsp_phys_gpu.h b/kernel/gsp_phys_gpu.h index a38067a..65e1e1f 100644 --- a/kernel/gsp_phys_gpu.h +++ b/kernel/gsp_phys_gpu.h @@ -89,6 +89,13 @@ bool gsp_phys_srv_ctxbuf_value(void); * controls. gsp_phys_srv_ctxcommit_value() is true for any nonzero mode. */ bool gsp_phys_srv_ctxcommit_value(void); + +/* + * gsp_phys_rmcall_srv_main_ignore (default 0): when set, the srv-ctx commit + * ignores a server-reported MAIN ctx buffer and forces the client + * INITIALIZE_CTX + VA-only promote fallback. + */ +bool gsp_phys_srv_main_ignore_value(void); int gsp_phys_srv_ctxcommit_mode(void); /* @@ -105,6 +112,14 @@ int gsp_phys_rmcall_channel_value(void); */ u32 gsp_phys_rmcall_fwclient_mask_value(void); +/* + * gsp_phys_rmcall_golden_exec_shape (default 7): mode-28 golden execution + * channel shape bitmask. bit0 GPFIFO ring at VA_GPFIFO, bit1 + * gpFifoEntries=8 (else the captured 32), bit2 sysmem USERD chunk (else the + * captured FBMEM slice). + */ +u32 gsp_phys_rmcall_golden_exec_shape_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 -- cgit v1.2.3