From c6192f77cf9f0273caa5a656ebaf8fe8047cebf0 Mon Sep 17 00:00:00 2001 From: Arthur Hanson Rasmusson Date: Sun, 15 Nov 2026 01:44:23 -0500 Subject: vgsp: channel-agnostic svc_mme_census + sema-mme-xscan diagnostic (eng48) 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). --- kernel/gsp_sema_service.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) 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); } } -- cgit v1.2.3