On Tue, Mar 23, 2021 at 04:50:23PM +0100, Maarten Lankhorst wrote: > i915_gem_object_pin_map potentially needs a ww context, so ensure we > have one we can revoke. > > Signed-off-by: Maarten Lankhorst <maarten.lankhorst@xxxxxxxxxxxxxxx> > Reviewed-by: Thomas Hellström <thomas.hellstrom@xxxxxxxxxxxxxxx> We shouldn't hand-roll our own vm_access callback, generic_access_phys should be used here instead. I've applied this, but can you pls do a follow up patch here? Thanks, Daniel > --- > drivers/gpu/drm/i915/gem/i915_gem_mman.c | 24 ++++++++++++++++++++++-- > 1 file changed, 22 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/i915/gem/i915_gem_mman.c b/drivers/gpu/drm/i915/gem/i915_gem_mman.c > index 163208a6260d..2561a2f1e54f 100644 > --- a/drivers/gpu/drm/i915/gem/i915_gem_mman.c > +++ b/drivers/gpu/drm/i915/gem/i915_gem_mman.c > @@ -421,7 +421,9 @@ vm_access(struct vm_area_struct *area, unsigned long addr, > { > struct i915_mmap_offset *mmo = area->vm_private_data; > struct drm_i915_gem_object *obj = mmo->obj; > + struct i915_gem_ww_ctx ww; > void *vaddr; > + int err = 0; > > if (i915_gem_object_is_readonly(obj) && write) > return -EACCES; > @@ -430,10 +432,18 @@ vm_access(struct vm_area_struct *area, unsigned long addr, > if (addr >= obj->base.size) > return -EINVAL; > > + i915_gem_ww_ctx_init(&ww, true); > +retry: > + err = i915_gem_object_lock(obj, &ww); > + if (err) > + goto out; > + > /* As this is primarily for debugging, let's focus on simplicity */ > vaddr = i915_gem_object_pin_map(obj, I915_MAP_FORCE_WC); > - if (IS_ERR(vaddr)) > - return PTR_ERR(vaddr); > + if (IS_ERR(vaddr)) { > + err = PTR_ERR(vaddr); > + goto out; > + } > > if (write) { > memcpy(vaddr + addr, buf, len); > @@ -443,6 +453,16 @@ vm_access(struct vm_area_struct *area, unsigned long addr, > } > > i915_gem_object_unpin_map(obj); > +out: > + if (err == -EDEADLK) { > + err = i915_gem_ww_ctx_backoff(&ww); > + if (!err) > + goto retry; > + } > + i915_gem_ww_ctx_fini(&ww); > + > + if (err) > + return err; > > return len; > } > -- > 2.31.0 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel