[PATCH] drm/xe: unlock object in an error condition
Zeng, Oak
oak.zeng at intel.com
Fri Nov 29 16:05:21 UTC 2024
> -----Original Message-----
> From: Thomas Hellström <thomas.hellstrom at linux.intel.com>
> Sent: November 29, 2024 3:37 AM
> To: Zeng, Oak <oak.zeng at intel.com>; intel-xe at lists.freedesktop.org
> Subject: Re: [PATCH] drm/xe: unlock object in an error condition
>
> Hi, Oak,
>
>
> On Thu, 2024-11-28 at 16:34 -0500, Oak Zeng wrote:
> > In xe_gem_fault, we reserved a buffer object but didn't unreserve
> > it under an error condition. Unreserve it.
> >
> > Signed-off-by: Oak Zeng <oak.zeng at intel.com>
> > ---
> > drivers/gpu/drm/xe/xe_bo.c | 3 ++-
> > 1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/gpu/drm/xe/xe_bo.c
> b/drivers/gpu/drm/xe/xe_bo.c
> > index f51d86511cb9e..634a1b54ca60d 100644
> > --- a/drivers/gpu/drm/xe/xe_bo.c
> > +++ b/drivers/gpu/drm/xe/xe_bo.c
> > @@ -1286,7 +1286,7 @@ static vm_fault_t xe_gem_fault(struct
> vm_fault
> > *vmf)
> > }
> >
> > if (ret == VM_FAULT_RETRY && !(vmf->flags &
> > FAULT_FLAG_RETRY_NOWAIT))
> > - goto out;
> > + goto unlock;
>
> This change is not correct. On fault retries, the dma_resv lock and the
> mmap lock is already dropped by the ttm helpers. This weird
> construct
> is to allow wait for io outside wide locks, and then restart the fault.
I see. Thanks for the explanation.
Oak
>
> So this patch can be dropped.
>
> Thanks,
> Thomas
>
>
>
>
> > /*
> > * ttm_bo_vm_reserve() already has dma_resv_lock.
> > */
> > @@ -1297,6 +1297,7 @@ static vm_fault_t xe_gem_fault(struct
> vm_fault
> > *vmf)
> > mutex_unlock(&xe-
> >mem_access.vram_userfault.lock);
> > }
> >
> > +unlock:
> > dma_resv_unlock(tbo->base.resv);
> > out:
> > if (needs_rpm)
More information about the Intel-xe
mailing list