diff options
Diffstat (limited to 'kernel/gsp_sema_service.c')
| -rw-r--r-- | kernel/gsp_sema_service.c | 29 |
1 files changed, 1 insertions, 28 deletions
diff --git a/kernel/gsp_sema_service.c b/kernel/gsp_sema_service.c index 9b937e4..514fa1e 100644 --- a/kernel/gsp_sema_service.c +++ b/kernel/gsp_sema_service.c @@ -7853,34 +7853,7 @@ static void svc_qmd_accum(struct nv_vgpu_device *vgpu, struct svc_channel *ch, if (gsp_phys_gr_forward_enabled() && trusted && !replay) svc_gr_cand_capture(ch, st, recs, n, push, push_len, st->push_va); - else if (gsp_phys_gr_forward_enabled() && !trusted && - !replay && !gsp_cuda_bridge_enabled()) { - /* - * r351 (launch-lottery class): a complete QMD decoded - * before the capture trust exists (the pin stream has - * not reached this push page yet) used to fall to the - * disabled bridge (a no-op), COMPLETE the pass, and - * every later re-decode was replay-suppressed - the - * launch never ran and the client read zeros - * (victory_reduce first run: zero GR LAUNCH lines, - * the immediate re-run green once the pins had - * landed). Hold the entry instead: op_tr_pending - * forces the pump to clear the replay suppression - * and retry the decode, so the launch is captured as - * soon as an injected pin arrives. The opdef hold - * expiry still bounds it (a genuinely unforwardable - * launch is released, never hung). replay=1 keeps - * the original suppression: it means a prior pass - * COMPLETED, i.e. the launch was already captured - - * re-capturing would run it twice. - */ - svc.op_tr_pending = 1; - if (svc_gr_await_log < 64) { - svc_gr_await_log++; - pr_info("sema-gr: launch held (no capture trust yet) va=0x%llx push=0x%llx\n", - st->push_va, push); - } - } else if (!replay || !gsp_phys_gr_forward_enabled()) + else if (!replay || !gsp_phys_gr_forward_enabled()) gsp_cuda_bridge_launch(vgpu, ch->h_object, st->qmd, st->qmd_dev_va, st->push_va, recs, n); |
