diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-11-04 07:49:31 -0500 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-11-04 07:49:31 -0500 |
| commit | 34cac6163d06ebd47e0e7336888fe3b84ce9c30f (patch) | |
| tree | 9d6f3a5b0d21cfe87991f6ce2f00ad7e97a2d157 /kernel/gsp_sema_service.c | |
| parent | 78b2ddd3ac93fc4db8769a0bb5def898ee3f3943 (diff) | |
| download | open-iov-34cac6163d06ebd47e0e7336888fe3b84ce9c30f.tar.gz open-iov-34cac6163d06ebd47e0e7336888fe3b84ce9c30f.zip | |
vgsp-mme: CONT-118 strict release + FE-busy deferral - sema_gl_mme_hold_strict (calls release only when pre_words_out==0 && fe_idle() && live_gen==pl_gen) and sema_gl_mme_fe_defer (busy-defer the load-only carrier at svc_gr_request before fill/consume, bounded 4 consecutive defers/gen with GIVEUP log) - both default 1, independent live A/B, 0 = legacy-equivalent
Diffstat (limited to 'kernel/gsp_sema_service.c')
| -rw-r--r-- | kernel/gsp_sema_service.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/kernel/gsp_sema_service.c b/kernel/gsp_sema_service.c index 532f89d..64139f0 100644 --- a/kernel/gsp_sema_service.c +++ b/kernel/gsp_sema_service.c @@ -34201,6 +34201,26 @@ static bool svc_gr_request(struct nv_vgpu_device *vgpu, return false; } /* + * r1445 5c: submit-side FE-busy deferral of the load-only carrier. + * A 0 return from the launch builder cannot express this (it is the + * block length and a zero-length block is never publishable), so the + * gate lives here, the same busy-defer shape as the prelude gate + * above: nothing is emitted or submitted, no release is authored, + * the candidate survives and the pump re-offers it. The predicate + * (gsp_phys_gr_mme_fe_defer_wanted) is the builder's own load-only + * decision plus the 0x400504 FE-idle read, bounded per generation so + * a never-idle FE falls back to the historical carrier. + */ + if (svc_gr_cand.stream_3d && + gsp_phys_gr_mme_fe_defer_wanted(ch->h_object, + svc_gr_cand.stream_n)) { + clear_bit_unlock(SVC_FWD_INFLIGHT, &svc_fwd_state); + mutex_unlock(&svc_fwd_lock); + svc_gr_busy_defer = true; + svc.fwd_gr_refused++; + return false; + } + /* * SESSION 153-CONTINUED-62: the gate's fail-open edge (see * gsp_sema_mme_immature_skip). Past the gate window a beef window * whose macro program is STILL missing must not be forwarded - the |
