From e74e4d83c6da4ef4764b54dbe51687641acdcc52 Mon Sep 17 00:00:00 2001 From: Arthur Hanson Rasmusson Date: Fri, 9 Oct 2026 18:05:18 -0400 Subject: Revert "vgsp-sema: hold an entry on any unresolvable operand, not only mid-scan (ISSUE-0002)" This reverts commit 61cc7629f989edd216c4381313c07f15ceaf1559. --- kernel/gsp_sema_service.c | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/kernel/gsp_sema_service.c b/kernel/gsp_sema_service.c index d73a5df..96c9064 100644 --- a/kernel/gsp_sema_service.c +++ b/kernel/gsp_sema_service.c @@ -3542,20 +3542,9 @@ static int svc_op_translate(struct nv_vgpu_device *vgpu, u64 va, u64 *addr, * calling for this same page). Tell the pump so it can hold the entry * and retry it while the scan is in progress: a copy whose operand is * only resolvable by the scan needs several passes. - * - * ISSUE-0002 (r58): hold on ANY unresolvable operand, not only while - * a targeted scan is already running. The guest's pma scrub submits - * memsets of freshly allocated vidmem on a GR channel; the operand - * translations (client buffer VAs pinned by the scanner) land ~1 s - * after the push, and the one-pass skip lost the memset forever - - * the guest then spun in scrubCheckAndWaitForSize (c3: 3 bigop - * memsets rc=-22 at 17:54:35, their pins logged at 17:54:36, the - * channel froze at get=89 with the client in pmaAllocatePages). - * The hold is bounded by the pump's retry counter, so a translation - * that never lands costs the bounded hold, then the entry is - * consumed exactly as before. - */ - svc.op_tr_pending = 1; + */ + if (svc_resolve_in_progress(va & ~0xfffULL)) + svc.op_tr_pending = 1; return -ENOENT; } @@ -13043,7 +13032,7 @@ static void svc_pump_channels(struct nv_vgpu_device *vgpu) * channel. */ if (svc.op_tr_pending && - ch->op_retry < 160) { + ch->op_retry < 24) { ch->op_retry++; svc.gpfifo_nomap++; /* -- cgit v1.2.3