On 5/15/25 11:05, Philipp Stanner wrote: > On Thu, 2025-05-15 at 10:48 +0200, Christian König wrote: >> Explicitly adding the scheduler maintainers. >> >> On 5/15/25 04:07, Lin.Cao wrote: >>> Previously we only signaled finished fence which may cause some >>> submission's dependency cannot be cleared the cause benchmark hang. >>> Signal both scheduled fence and finished fence could fix this >>> issue. > > Code seems legit to me; but be so kind and also pimp up the commit > message a bit, Christian. It's not very clear what the bug is and why > setting the parent to NULL solves it. Or is the issue simply that the > fence might be dropped unsignaled, being a bug by definition? Needs to > be written down.
The later, we simply forgot to signal the scheduled fence when an application was killed. > Grammar is also a bit too broken. > > And running the unit tests before pushing is probably also a good idea. And maybe even writing a new unit test for that. Regards, Christian. > >>> >>> Signed-off-by: Lin.Cao <linca...@amd.com> > > Acked-by: Philipp Stanner <pha...@kernel.org> > >> >> Reviewed-by: Christian König <christian.koe...@amd.com> >> >> Danilo & Philipp can we quickly get an rb for that? I'm volunteering >> to push it to drm-misc-fixes and add the necessary stable tags since >> this is a fix for a rather ugly bug. >> >> Regards, >> Christian. >> >> >>> --- >>> drivers/gpu/drm/scheduler/sched_entity.c | 1 + >>> 1 file changed, 1 insertion(+) >>> >>> diff --git a/drivers/gpu/drm/scheduler/sched_entity.c >>> b/drivers/gpu/drm/scheduler/sched_entity.c >>> index bd39db7bb240..e671aa241720 100644 >>> --- a/drivers/gpu/drm/scheduler/sched_entity.c >>> +++ b/drivers/gpu/drm/scheduler/sched_entity.c >>> @@ -176,6 +176,7 @@ static void >>> drm_sched_entity_kill_jobs_work(struct work_struct *wrk) >>> { >>> struct drm_sched_job *job = container_of(wrk, >>> typeof(*job), work); >>> >>> + drm_sched_fence_scheduled(job->s_fence, NULL); >>> drm_sched_fence_finished(job->s_fence, -ESRCH); >>> WARN_ON(job->s_fence->parent); >>> job->sched->ops->free_job(job); >> >