summaryrefslogtreecommitdiffstats
path: root/kernel/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/main.c')
-rw-r--r--kernel/main.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/kernel/main.c b/kernel/main.c
index f662b94..258de41 100644
--- a/kernel/main.c
+++ b/kernel/main.c
@@ -174,6 +174,7 @@ static rm_vgpu_vfio_ops_t g_rm_vgpu_vfio_ops;
static struct mdev_parent *g_mdev_parent = NULL;
static bool gsp_phys_gpu_param;
+static bool gsp_phys_gr_forward_param;
/* VFIO ops implementation */
static NV_STATUS nv_vgpu_vfio_probe(struct pci_dev *pdev, NvU32 vgpu_type_id, NvU32 *vgpu_id);
@@ -2596,6 +2597,23 @@ bool gsp_phys_gpu_enabled(void)
}
/*
+ * GR (compute) forwarding: when set, a guest GR channel's decoded inline-QMD
+ * launch is captured by the sema service and submitted as real work on the
+ * ladder's physical GR channel instead of (or before) the host CUDA bridge.
+ * Default off: every path is inert and the bridge/software emulation stays
+ * byte-identical. The backend additionally refuses until a real GR
+ * submission has proved out at boot (boot_stage.rmcall_gr_exec_ok), so the
+ * parameter alone can never make the module pretend GR works.
+ */
+module_param_named(gsp_phys_gr_forward, gsp_phys_gr_forward_param, bool, 0644);
+MODULE_PARM_DESC(gsp_phys_gr_forward, "Forward guest GR (compute) launches to the physical GR engine on the debugfs ladder channel (default 0; requires gsp_phys_gpu + a proven GR ladder submission)");
+
+bool gsp_phys_gr_forward_enabled(void)
+{
+ return gsp_phys_gr_forward_param;
+}
+
+/*
* GR ring discovery: pin the compute channels' rings/USERDs, which follow the
* CE rings in the channel video-memory allocation. Default on; set 0 to leave
* GR channels untranslated when debugging push-execution side effects.