summaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-09 18:05:18 -0400
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-09 18:05:18 -0400
commite74e4d83c6da4ef4764b54dbe51687641acdcc52 (patch)
treede6bff13a7771fef9dfab3b5d7a5f67a00304fd5 /kernel
parent61cc7629f989edd216c4381313c07f15ceaf1559 (diff)
downloadopen-iov-e74e4d83c6da4ef4764b54dbe51687641acdcc52.tar.gz
open-iov-e74e4d83c6da4ef4764b54dbe51687641acdcc52.zip
Revert "vgsp-sema: hold an entry on any unresolvable operand, not only mid-scan (ISSUE-0002)"
This reverts commit 61cc7629f989edd216c4381313c07f15ceaf1559.
Diffstat (limited to 'kernel')
-rw-r--r--kernel/gsp_sema_service.c19
1 files 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++;
/*