summaryrefslogtreecommitdiffstats
path: root/kernel/gsp_phys_gpu.c
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-05 13:40:15 -0400
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-05 13:40:15 -0400
commite075cb90a31b1b6dd6deec713faa0db9f21218dc (patch)
treeeb9c07872f45a2b28eeef9b87f198a0ee5f7a453 /kernel/gsp_phys_gpu.c
parent3cd6ac1e06d4f13245dcbb55ebd63a86573cfedf (diff)
downloadopen-iov-e075cb90a31b1b6dd6deec713faa0db9f21218dc.tar.gz
open-iov-e075cb90a31b1b6dd6deec713faa0db9f21218dc.zip
vgsp: add gsp_phys_rmcall_channel to force one GR channel variant
Lets a bisection pair any promote shape with any channel shape, in particular V6 (SKIP_CTXBUFFER_ALLOC, KMD-managed) with the server-managed VA-only promote: with skip-ctxbuffer the server's kgrctxMapCtxBuffers does not pre-book the engine context vaList, so the VA branch's vaListSetManaged(NV_FALSE) gate should pass and the per-buffer commit can program the engine context VA. Default 0 keeps the mode-selected walk byte-identical. Not hardware-tested (GPU wedged; see Handoff ADDENDUM 51).
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 94d6652..54fa84a 100644
--- a/kernel/gsp_phys_gpu.c
+++ b/kernel/gsp_phys_gpu.c
@@ -201,6 +201,25 @@ bool gsp_phys_srv_ctxcommit_value(void)
EXPORT_SYMBOL_GPL(gsp_phys_srv_ctxcommit_value);
/*
+ * Force one channel-alloc variant id on the GR ladder (default 0 = the
+ * promote-mode-selected default). 5 = V5 (client memdescs, no skip-ctxbuffer;
+ * the server books its managed engine context), 6 = V6 (SKIP_CTXBUFFER_ALLOC,
+ * KMD-managed: the server skips the ctx-buffer map/book, so a client VA-only
+ * promote can add and commit the engine context VA).
+ */
+static int gsp_phys_rmcall_channel_param;
+module_param_named(gsp_phys_rmcall_channel, gsp_phys_rmcall_channel_param,
+ int, 0644);
+MODULE_PARM_DESC(gsp_phys_rmcall_channel,
+ "Force one GR channel-alloc variant id (1/3/4/5/6); 0 = mode-selected default walk");
+
+int gsp_phys_rmcall_channel_value(void)
+{
+ return gsp_phys_rmcall_channel_param;
+}
+EXPORT_SYMBOL_GPL(gsp_phys_rmcall_channel_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