diff options
| -rw-r--r-- | kernel/gsp_sema_service.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/kernel/gsp_sema_service.c b/kernel/gsp_sema_service.c index 91f1df9..b2cf8a5 100644 --- a/kernel/gsp_sema_service.c +++ b/kernel/gsp_sema_service.c @@ -20673,7 +20673,17 @@ static void svc_handle_map_add(void); * any VA proceeds (bounded, cannot hang), interleaved launches included. */ #define SVC_GR_ARG_DEFER_MS 30000u -#define SVC_GR_ARG_DEFER_SLOTS 8 +/* + * r554: 64, not 8. The latch must remember every launch push VA of the + * current client (the UVM pool allocates ~8-10 channels and each command + * buffer reuses two launch push slots, so >8 distinct VAs are in rotation); + * with 8 slots each new VA evicted another and the "one deferral per VA" + * guarantee thrashed - r553 soak: victory_reduce re-deferred the same push + * VA (0x20043be64) every pass for 430 s ("partial argument set: 7-8 pages + * unresolved") and never forwarded. 64 covers a full client with margin; + * the table is per-boot tiny (64 * 16 B). + */ +#define SVC_GR_ARG_DEFER_SLOTS 64 static u64 svc_gr_arg_defer_va[SVC_GR_ARG_DEFER_SLOTS]; static unsigned long svc_gr_arg_defer_j[SVC_GR_ARG_DEFER_SLOTS]; static u32 svc_gr_arg_defer_pos; |
