diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-21 00:51:24 -0400 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-21 00:51:24 -0400 |
| commit | 229bec2c0bc6c638f80e4b4591806146f518be70 (patch) | |
| tree | 3a9e33aa8a76386edbc359046b1eec8678f10ba8 | |
| parent | 9a0e97580f70365f34dcc170b679bbcc9c3afdad (diff) | |
| download | open-iov-229bec2c0bc6c638f80e4b4591806146f518be70.tar.gz open-iov-229bec2c0bc6c638f80e4b4591806146f518be70.zip | |
sema: r398 size the inline-once table to 8192 slots (256 KB)
r398 evidence: the memset's inline write executed twice for the same push
(85634.101649 first, 85642.940808 replay 70 us before the D2H readback,
zeroing the accumulator). 76 inline writes happened between the two - the
64-slot table had evicted the key. 8192 slots give a ~100x margin over the
busiest observed burst.
| -rw-r--r-- | kernel/gsp_sema_service.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/kernel/gsp_sema_service.c b/kernel/gsp_sema_service.c index ef89a52..f803309 100644 --- a/kernel/gsp_sema_service.c +++ b/kernel/gsp_sema_service.c @@ -8419,8 +8419,14 @@ static bool svc_gr_cand_push_seen(u64 push_va) * bytes): the release payload inside every push makes the hash unique per * push, so a new client's identical-looking write never collides. Session * scoped (cleared by svc_session_flush). Service-thread only. + * + * Sizing (r398): the ring must outlive the gap between a push's first + * execution and its next re-decode. The observed failing case had 76 + * inline writes between the two, which evicted a 64-slot table and let + * the memset re-run; 8192 slots (256 KB) gives a ~100x margin over the + * busiest observed burst. */ -#define SVC_INLINE_ONCE_SLOTS 64 +#define SVC_INLINE_ONCE_SLOTS 8192 static struct { u64 push_va; u64 hash; |
