summaryrefslogtreecommitdiffstats
path: root/kernel/gsp_phys_gpu.c
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-07 15:33:31 -0400
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-07 15:33:31 -0400
commitd9c2545fac3c37c57e56b892ed3d0e054d8f6816 (patch)
treeeda241b4c95916698c946ff74965f0ce3efd1535 /kernel/gsp_phys_gpu.c
parentdfa3a05ad7752e40d214ccf78db4805cd0c7d68c (diff)
downloadopen-iov-d9c2545fac3c37c57e56b892ed3d0e054d8f6816.tar.gz
open-iov-d9c2545fac3c37c57e56b892ed3d0e054d8f6816.zip
vgsp: m113 - re-register the VAS page directory after planting data (re-commit probe)
All late engine-tree writes are invisible to the SM walker (only the commit-time snapshot resolves); the mail injection at a main-window fresh slot also fails (m112). Probe whether UNSET+SET_PAGE_DIRECTORY on the ladder VAS after planting forces the server walker to re-snapshot the tree; gated by gr_recommit.
Diffstat (limited to 'kernel/gsp_phys_gpu.c')
-rw-r--r--kernel/gsp_phys_gpu.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/kernel/gsp_phys_gpu.c b/kernel/gsp_phys_gpu.c
index e92e5f1..c5419a5 100644
--- a/kernel/gsp_phys_gpu.c
+++ b/kernel/gsp_phys_gpu.c
@@ -1050,6 +1050,24 @@ int gsp_phys_rmcall_gr_data_prewin_value(void)
EXPORT_SYMBOL_GPL(gsp_phys_rmcall_gr_data_prewin_value);
/*
+ * m113: after planting the launch's data mappings, re-register the VAS page
+ * directory (UNSET+SET) to force the server walker to re-snapshot the tree;
+ * all evidence says the SM walker resolves only the commit-time tree, and
+ * late writes (leaf or table) are invisible. Default 0.
+ */
+static int gsp_phys_rmcall_gr_recommit_param;
+module_param_named(gsp_phys_rmcall_gr_recommit,
+ gsp_phys_rmcall_gr_recommit_param, int, 0644);
+MODULE_PARM_DESC(gsp_phys_rmcall_gr_recommit,
+ "Re-register the VAS page directory after planting data (default 0)");
+
+int gsp_phys_rmcall_gr_recommit_value(void)
+{
+ return gsp_phys_rmcall_gr_recommit_param;
+}
+EXPORT_SYMBOL_GPL(gsp_phys_rmcall_gr_recommit_value);
+
+/*
* m95: program each GPC's MMU_CTRL from the hub's PFB MMU_CTRL (the real RM's
* grInitGPCMmuPRIRegs matching-fields copy) before a forwarded launch. The
* GPC-side walker refuses the SM I-fetch with MMU_NACK while hub-side reads