diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-09 12:38:01 -0400 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-09 12:38:01 -0400 |
| commit | 6d5d8b91acc8e5f70cc0f578e13c48fe85e9dd4b (patch) | |
| tree | a2761f605415305cfb26046b1c78df50bd0814d6 /kernel | |
| parent | 04c6190ed1c63fd69ea97c0ee1c9ff488d8b9202 (diff) | |
| download | open-iov-6d5d8b91acc8e5f70cc0f578e13c48fe85e9dd4b.tar.gz open-iov-6d5d8b91acc8e5f70cc0f578e13c48fe85e9dd4b.zip | |
vgsp-sema: free the release-apply budget and re-arm the push decode budget per session (ISSUE-0002)
The ipin store/lookup probes served their purpose (the displaced-pin race
is understood and handled); keeping them consumed the shared per-session
counter_rel_dbg budget before the release path could log, which left r25's
second-client stall blind. Remove them and reset svc.entry_log in the
session flush so the next session's sema-push decode lines are visible.
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/gsp_sema_service.c | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/kernel/gsp_sema_service.c b/kernel/gsp_sema_service.c index c002c50..904ac65 100644 --- a/kernel/gsp_sema_service.c +++ b/kernel/gsp_sema_service.c @@ -1962,15 +1962,8 @@ static void svc_ipin_alt_store(u64 va, u64 pa, int ap) static int svc_ipin_lookup(u64 va, u64 *pa, int *ap) { - int rc = pin_lookup_tab(svc.ipin, SVC_IPIN_SLOTS, SVC_IPIN_PROBE, va, pa, - ap, false); - - if (svc_pool_sem_va(va) && gsp_sema_dbg && svc.counter_rel_dbg < 256) { - svc.counter_rel_dbg++; - pr_info("vgsp-sema: ipin-lookup va=0x%llx rc=%d pa=0x%llx\n", - va, rc, rc ? 0 : *pa); - } - return rc; + return pin_lookup_tab(svc.ipin, SVC_IPIN_SLOTS, SVC_IPIN_PROBE, va, pa, + ap, false); } static void svc_ipin_store(u64 va, u64 pa, int ap) @@ -1998,10 +1991,6 @@ static void svc_ipin_store(u64 va, u64 pa, int ap) */ if (svc_pool_sem_va(va)) svc_pool_pa_forget(va); - if (svc_pool_sem_va(va) && gsp_sema_dbg && svc.counter_rel_dbg < 256) { - svc.counter_rel_dbg++; - pr_info("vgsp-sema: ipin-store va=0x%llx pa=0x%llx\n", va, pa); - } } /* Any pinned translation: injected truth first, then self-discovered pins. */ @@ -6703,6 +6692,14 @@ static void svc_session_flush(void) svc.counter_noslot_dbg = 0; svc.sem256_log = 0; svc.xfer_raw_log = 0; + /* + * The push decode budget (`sema-push` lines) is per-session too: the + * first client of a boot otherwise spends it and the next session's + * release decode is invisible in exactly the runs that need diagnosis + * (the second client's missing release was undecodable in r25 because + * entry_log was already exhausted by the first client). + */ + svc.entry_log = 0; memset(svc_hot, 0, sizeof(svc_hot)); memset(svc_retry_q, 0, sizeof(svc_retry_q)); memset(svc_pool_pa, 0, sizeof(svc_pool_pa)); |
