Re: [Intel-gfx] [PATCH 12/26] drm/scheduler: use new iterator in drm_sched_job_add_implicit_dependencies v2

Sascha Hauer
2021-11-16T14:05:20Z

On Mon, Nov 15, 2021 at 03:08:49PM +0100, Daniel Vetter wrote:
> On Mon, Nov 15, 2021 at 03:03:53PM +0100, Sascha Hauer wrote:
> > Hi,
> >
> > On Fri, Sep 17, 2021 at 02:34:59PM +0200, Christian König wrote:
> > > Simplifying the code a bit.
> > >
> > > v2: use dma_resv_for_each_fence
> > >
> > > Signed-off-by: Christian König <christian.koenig@amd.com>
> > > ---
> > > drivers/gpu/drm/scheduler/sched_main.c | 26 ++++++--------------------
> > > 1 file changed, 6 insertions(+), 20 deletions(-)
> > >
> > > diff --git a/drivers/gpu/drm/scheduler/sched_main.c b/drivers/gpu/drm/scheduler/sched_main.c
> > > index 042c16b5d54a..5bc5f775abe1 100644
> > > --- a/drivers/gpu/drm/scheduler/sched_main.c
> > > +++ b/drivers/gpu/drm/scheduler/sched_main.c
> > > @@ -699,30 +699,16 @@ int drm_sched_job_add_implicit_dependencies(struct drm_sched_job *job,
> > > struct drm_gem_object *obj,
> > > bool write)
> > > {
> > > + struct dma_resv_iter cursor;
> > > + struct dma_fence *fence;
> > > int ret;
> > > - struct dma_fence **fences;
> > > - unsigned int i, fence_count;
> > > -
> > > - if (!write) {
> > > - struct dma_fence *fence = dma_resv_get_excl_unlocked(obj->resv);
> > > -
> > > - return drm_sched_job_add_dependency(job, fence);
> > > - }
> > > -
> > > - ret = dma_resv_get_fences(obj->resv, NULL, &fence_count, &fences);
> > > - if (ret || !fence_count)
> > > - return ret;
> > >
> > > - for (i = 0; i < fence_count; i++) {
> > > - ret = drm_sched_job_add_dependency(job, fences[i]);
> > > + dma_resv_for_each_fence(&cursor, obj->resv, write, fence) {
> > > + ret = drm_sched_job_add_dependency(job, fence);
> > > if (ret)
> > > - break;
> > > + return ret;
> > > }
> > > -
> > > - for (; i < fence_count; i++)
> > > - dma_fence_put(fences[i]);
> > > - kfree(fences);
> > > - return ret;
> > > + return 0;
> > > }
> > > EXPORT_SYMBOL(drm_sched_job_add_implicit_dependencies);
> > >
> >
> > This patch lets the panfrost driver explode on v5.16-rc1 with the
> > following. I didn't bisect it, but it goes away when I revert this
> > patch. I only started weston, nothing more.
> >
> > Any idea what goes wrong here?
>
> Should be fixed in 13e9e30cafea1, but Christian pushed it to the wrong
> patch so it missed -rc1.

I can confirm 13e9e30cafea1 fixes the issue, thanks

Sascha

--
Pengutronix e.K. | |
Steuerwalder Str. 21 | http://www.pengutronix.de/ |
31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |