summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-11-15 01:44:23 -0500
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-11-15 01:44:23 -0500
commitc6192f77cf9f0273caa5a656ebaf8fe8047cebf0 (patch)
treebbaed29d768604f909fc6ac8ce144f22de1bc832
parent73b002e47acc654597a17bff1f7c4bb36fd97c90 (diff)
downloadopen-iov-c6192f77cf9f0273caa5a656ebaf8fe8047cebf0.tar.gz
open-iov-c6192f77cf9f0273caa5a656ebaf8fe8047cebf0.zip
vgsp: channel-agnostic svc_mme_census + sema-mme-xscan diagnostic (eng48)HEADmaster
Follows the same any-channel rule as sema_mme_prelude_cap_any and emits 'sema-mme-xscan: ... hits=0' when a push yields no MME-family ops (scan coverage evidence). c693: X-lane pushes (0x120010000/0x1200a0000/0x120010004) show hits=0 - the indirect-mode X pushes carry no MME setup runs, so the prelude feed has nothing; the MME setup runs likely ride the beef ring (whose entries the walk skips as garbage in the read lottery).
-rw-r--r--kernel/gsp_sema_service.c22
1 files changed, 21 insertions, 1 deletions
diff --git a/kernel/gsp_sema_service.c b/kernel/gsp_sema_service.c
index 9f6840e..9ba7ed0 100644
--- a/kernel/gsp_sema_service.c
+++ b/kernel/gsp_sema_service.c
@@ -18029,6 +18029,9 @@ static u32 svc_pushraw_nz;
* summary (first-hit offsets + first data word). Read-only; bounded.
*/
static u32 svc_mme_census_n;
+static u32 svc_mme_xscan_n;
+/* eng48: defined with its module_param further below; the census reads it. */
+static bool svc_mme_prelude_cap_any;
static void svc_mme_census(const u8 *buf, u32 len, u64 push_va, u32 h_object)
{
@@ -18039,7 +18042,14 @@ static void svc_mme_census(const u8 *buf, u32 len, u64 push_va, u32 h_object)
if (!READ_ONCE(svc_mme_census_flag) || svc_mme_census_n >= 128)
return;
- if ((h_object & 0xfffff000u) != 0xbeef0000u)
+ /*
+ * eng48 diagnostic: the prelude feed gate is now channel-agnostic
+ * when sema_mme_prelude_cap_any is on, so the census that answers
+ * "which push carries the MME setup runs" must follow the same
+ * rule; otherwise an X-lane setup push is invisible here.
+ */
+ if ((h_object & 0xfffff000u) != 0xbeef0000u &&
+ !READ_ONCE(svc_mme_prelude_cap_any))
return;
while (off + 4 <= len && nhit < 16) {
u32 hdr, op, cnt, addr;
@@ -18076,6 +18086,16 @@ static void svc_mme_census(const u8 *buf, u32 len, u64 push_va, u32 h_object)
svc_mme_census_n++;
pr_info("sema-mme-census: h=0x%x va=0x%llx len=%u n=%u hits=[%s]\n",
h_object, push_va, len, nhit, line);
+ } else if ((h_object & 0xfffff000u) != 0xbeef0000u &&
+ svc_mme_xscan_n < 32) {
+ /*
+ * eng48: evidence of scan coverage on the X lane. A zero
+ * here still proves the push was censused (the absence of
+ * MME-family ids is a finding, not a skipped scan).
+ */
+ svc_mme_xscan_n++;
+ pr_info("sema-mme-xscan: h=0x%x va=0x%llx len=%u hits=0\n",
+ h_object, push_va, len);
}
}