summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-11-14 22:31:28 -0500
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-11-14 22:31:28 -0500
commite976d61a318f15337c048d8d96e8d32c0e725df2 (patch)
tree7418ead0f935249cd9b537fb9d442082c31a526d
parent601f89e8c3314f96525ef0bbf6df2daa806ea916 (diff)
downloadopen-iov-e976d61a318f15337c048d8d96e8d32c0e725df2.tar.gz
open-iov-e976d61a318f15337c048d8d96e8d32c0e725df2.zip
vgsp: admit any channel's MME setup runs into the prelude capture (sema_mme_prelude_cap_any, default 0) (eng48)
The X DDX indirect lane (h=0x1000013) replays its 3D windows verbatim but never builds the MME pack because svc_mme_prelude_capture rejects every non-beef channel, so pl_n=0 and emit_prelude skips. c487 proved the X lane emits a 2799-word pack when pl_n>0. New bool sema_mme_prelude_cap_any=1 bypasses the beef gate and feeds the same signature-deduped capture; default 0 keeps legacy beef-only behaviour bit-for-bit. Validation pending.
-rw-r--r--kernel/gsp_sema_service.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/kernel/gsp_sema_service.c b/kernel/gsp_sema_service.c
index e7a0172..9f6840e 100644
--- a/kernel/gsp_sema_service.c
+++ b/kernel/gsp_sema_service.c
@@ -20027,6 +20027,19 @@ static u32 svc_mme_prelude_code_words;
module_param_named(sema_mme_prelude_cap, svc_mme_prelude_flag, uint, 0644);
MODULE_PARM_DESC(sema_mme_prelude_cap,
"Capture the client's MME context-setup method runs (0x114..0x124, 0x234, 0x550..0x568, 0x3400..0x34fc) from trusted beef pushes for the GR launch builder's one-time preplay (default 1)");
+/*
+ * SESSION 158: the capture below rejects every non-beef channel, so the X
+ * DDX indirect lane (h=0x1000013) never builds a prelude (pl_n=0) and its
+ * replay window cannot emit the MME pack - the chain stops at the feed even
+ * though the release clause is channel-agnostic and c487 proved the X lane
+ * emits a 2799-word pack when pl_n>0. Admitting any channel's setup runs
+ * into the same signature-deduped capture gives the indirect lane the same
+ * prelude feed; default 0 keeps the legacy beef-only behaviour bit-for-bit.
+ */
+static bool svc_mme_prelude_cap_any;
+module_param_named(sema_mme_prelude_cap_any, svc_mme_prelude_cap_any, bool, 0644);
+MODULE_PARM_DESC(sema_mme_prelude_cap_any,
+ "Capture MME context-setup method runs from ANY channel, not only trusted beef pushes (default 0 = legacy beef-only)");
/*
* SESSION 153-CONTINUED-63: the MME START-ADDRESS RAM table (macro slot ->
@@ -20162,7 +20175,8 @@ static void svc_mme_prelude_capture(const u8 *buf, u32 len, u64 push_va,
if (!READ_ONCE(svc_mme_prelude_flag))
return;
- if ((h_object & 0xfffff000u) != 0xbeef0000u)
+ if ((h_object & 0xfffff000u) != 0xbeef0000u &&
+ !READ_ONCE(svc_mme_prelude_cap_any))
return;
while (off + 4u <= len) {
u32 hdr, op, cnt, addr, span = 1u, i;