summaryrefslogtreecommitdiffstats
path: root/kernel/gsp_phys_gpu.c
diff options
context:
space:
mode:
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 0c7e1e5..9100959 100644
--- a/kernel/gsp_phys_gpu.c
+++ b/kernel/gsp_phys_gpu.c
@@ -619,6 +619,25 @@ int gsp_phys_rmcall_gr_qmdvirt_value(void)
EXPORT_SYMBOL_GPL(gsp_phys_rmcall_gr_qmdvirt_value);
/*
+ * Explicit-PCAS gate (default 1). The rebuilt launch carries the vendor's
+ * turingPushPcas(CU_PCAS_TYPE_COPY) pair (SEND_PCAS_A = QMD>>8 followed by
+ * SEND_SIGNALING_PCAS_B = INVALIDATE|SCHEDULE). The stock guest push does
+ * not emit these (it relies on the IQ2M window's implied copy PCAS); setting
+ * this to 0 emits the pure vendor window-only form for the A/B test.
+ */
+static int gsp_phys_rmcall_gr_pcas_param = 1;
+module_param_named(gsp_phys_rmcall_gr_pcas,
+ gsp_phys_rmcall_gr_pcas_param, int, 0644);
+MODULE_PARM_DESC(gsp_phys_rmcall_gr_pcas,
+ "Emit the explicit SEND_PCAS_A/SEND_SIGNALING_PCAS_B pair in the GR launch block (default 1 = vendor turingPushPcas copy form; 0 = window-only stock form)");
+
+int gsp_phys_rmcall_gr_pcas_value(void)
+{
+ return gsp_phys_rmcall_gr_pcas_param;
+}
+EXPORT_SYMBOL_GPL(gsp_phys_rmcall_gr_pcas_value);
+
+/*
* Rank-2 qmdwin diagnostic (gsp_phys_rmcall_gr_qmdwin; default 0). When set,
* a forwarded GR launch relocates its inline-QMD destination from the guest
* QMD VA to a dedicated module page mapped at the ladder's own window-0 VA