On Fri, Aug 20, 2021 at 11:31:56AM -0700, Daniele Ceraolo Spurio wrote: > > > On 8/18/2021 11:16 PM, Matthew Brost wrote: > > Kick tasklet after queuing a request so it submitted in a timely manner. > > > > Fixes: 3a4cdf1982f0 ("drm/i915/guc: Implement GuC context operations for new inteface") > > Is this actually a bug or just a performance issue? in the latter case I > don't think we need a fixes tag. > Basically the tasklet won't get queued in certain ituations until the heartbeat ping. Didn't notice it as the tasklet is only used during flow control or after a full GT reset which both are rather rare. We can probably drop the fixes tag as GuC submission isn't on by default is still works without this fix. > > Signed-off-by: Matthew Brost <matthew.brost@xxxxxxxxx> > > --- > > drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c | 1 + > > 1 file changed, 1 insertion(+) > > > > diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c b/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c > > index 8f7a11e65ef5..d61f906105ef 100644 > > --- a/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c > > +++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c > > @@ -1050,6 +1050,7 @@ static inline void queue_request(struct i915_sched_engine *sched_engine, > > list_add_tail(&rq->sched.link, > > i915_sched_lookup_priolist(sched_engine, prio)); > > set_bit(I915_FENCE_FLAG_PQUEUE, &rq->fence.flags); > > + tasklet_hi_schedule(&sched_engine->tasklet); > > the caller of queue_request() already has a tasklet_hi_schedule in another > branch of the if/else statement. Maybe we can have the caller own the kick > to keep it in one place? Not a blocker. > I guess it could be: bool kick = need_taklet() if (kick) queue_requst() else kick = bypass() if (kick) kick_tasklet() Idk, it that is better? I'll think on this and decide before the next post. Matt > Reviewed-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@xxxxxxxxx> > > Daniele > > > } > > static int guc_bypass_tasklet_submit(struct intel_guc *guc, >