summaryrefslogtreecommitdiffstats
path: root/kernel/gsp_phys_gpu.c
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-05 13:39:25 -0400
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-05 13:39:25 -0400
commit97e7d0136fe63b08823d8b66d5bab84cfecf435b (patch)
tree0bfc209fdafb835198fa427a542f2e2fce98d843 /kernel/gsp_phys_gpu.c
parentd647c93e9375dc47613e0a554445e4b49467f119 (diff)
downloadopen-iov-97e7d0136fe63b08823d8b66d5bab84cfecf435b.tar.gz
open-iov-97e7d0136fe63b08823d8b66d5bab84cfecf435b.zip
vgsp: GR server-managed context commit experiments (EVICT, VA promote, external path)
Rung-2 bisection after the GET_CTX_BUFFER_INFO ABI fix made the server ctx geometry visible (8 buffers; MAIN 0x133000 FBMEM, PATCH 0x5000): - map the server MAIN/PATCH at the ladder ctx VAs with FBMEM PTEs and send the UVM-shape VA-only promote (bInitialize=0, bNonmapped=0). On the shared VAS the per-entry VA branch calls vaListSetManaged(NV_FALSE) and returns 0x40 because the server pre-booked MAIN as managed; EVICT_CTX (status 0) does not release that booking. - try the same VA promote on the external VAS where the server did not book (kgrctxMapCtxBuffers early-returns): the promote never replies (-110) and leaves the device in the locked fail-safe (WPR2 up, unbound). Do not repeat this shape without a new hypothesis. - FBMEM physAttr selection for the server MAIN fixed (aperture 2 -> 0x4); gsp_phys_rmcall_srv_ctxcommit parameter added (0 = pure server-managed, no client promote). - query prints all 16 entries and records PATCH; query ABI 80-B/5136. Hardware state after the external-VAS run: GPU wedged, reboot required (no automated reboot). All shapes stay default-off behind gr_promote=17 + gsp_phys_srv_ctxbuf.
Diffstat (limited to 'kernel/gsp_phys_gpu.c')
-rw-r--r--kernel/gsp_phys_gpu.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/kernel/gsp_phys_gpu.c b/kernel/gsp_phys_gpu.c
index 91f7a77..94d6652 100644
--- a/kernel/gsp_phys_gpu.c
+++ b/kernel/gsp_phys_gpu.c
@@ -182,6 +182,25 @@ bool gsp_phys_srv_ctxbuf_value(void)
EXPORT_SYMBOL_GPL(gsp_phys_srv_ctxbuf_value);
/*
+ * Server-managed GR context client commit (default 1). On the
+ * gsp_phys_srv_ctxbuf path the ladder sends GPU_INITIALIZE_CTX + a PA-only
+ * GPU_PROMOTE_CTX for the server-reported MAIN context buffer. Set 0 to test
+ * the pure server-managed shape: the GSP-RM allocated/mapped/committed the
+ * context itself and no client control is sent.
+ */
+static bool gsp_phys_srv_ctxcommit_param = true;
+module_param_named(gsp_phys_rmcall_srv_ctxcommit, gsp_phys_srv_ctxcommit_param,
+ bool, 0644);
+MODULE_PARM_DESC(gsp_phys_rmcall_srv_ctxcommit,
+ "On the server-managed GR ctx path send GPU_INITIALIZE_CTX + PA-only GPU_PROMOTE_CTX for the server MAIN (default 1); 0 = pure server-managed, no client promote");
+
+bool gsp_phys_srv_ctxcommit_value(void)
+{
+ return gsp_phys_srv_ctxcommit_param;
+}
+EXPORT_SYMBOL_GPL(gsp_phys_srv_ctxcommit_value);
+
+/*
* P5 wave-1 shadow work forwarding (default 0). When set, the sema service
* requests one real CE copy on the debugfs ladder's channel for each decoded
* guest CE push, using only the ladder's module-owned buffers; the software