diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-11-15 01:44:23 -0500 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-11-15 01:44:23 -0500 |
| commit | c6192f77cf9f0273caa5a656ebaf8fe8047cebf0 (patch) | |
| tree | bbaed29d768604f909fc6ac8ce144f22de1bc832 /kernel/gsp_sema_service.c | |
| parent | 73b002e47acc654597a17bff1f7c4bb36fd97c90 (diff) | |
| download | open-iov-c6192f77cf9f0273caa5a656ebaf8fe8047cebf0.tar.gz open-iov-c6192f77cf9f0273caa5a656ebaf8fe8047cebf0.zip | |
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).
Diffstat (limited to 'kernel/gsp_sema_service.c')
| -rw-r--r-- | kernel/gsp_sema_service.c | 22 |
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); } } |
