On Thu, 2021-09-16 at 09:28 -0700, Matthew Brost wrote: > Don't blow up on a GEM_WARN_ON in __i915_gem_object_is_lmem if the > object is pinned (not evictable). > > Signed-off-by: Matthew Brost <matthew.brost@xxxxxxxxx> > Cc: Thomas Hellström <thomas.hellstrom@xxxxxxxxxxxxxxx> Reviewed-by: Thomas Hellström <thomas.hellstrom@xxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/i915/gem/i915_gem_lmem.c | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/i915/gem/i915_gem_lmem.c > b/drivers/gpu/drm/i915/gem/i915_gem_lmem.c > index 034226c5d4d0..d659239fcbcc 100644 > --- a/drivers/gpu/drm/i915/gem/i915_gem_lmem.c > +++ b/drivers/gpu/drm/i915/gem/i915_gem_lmem.c > @@ -56,8 +56,8 @@ bool i915_gem_object_is_lmem(struct > drm_i915_gem_object *obj) > * @obj: The object to check. > * > * This function is intended to be called from within the fence > signaling > - * path where the fence keeps the object from being migrated. For > example > - * during gpu reset or similar. > + * path where the fence, or a pin, keeps the object from being > migrated. For > + * example during gpu reset or similar. > * > * Return: Whether the object is resident in lmem. > */ > @@ -66,7 +66,8 @@ bool __i915_gem_object_is_lmem(struct > drm_i915_gem_object *obj) > struct intel_memory_region *mr = READ_ONCE(obj->mm.region); > > #ifdef CONFIG_LOCKDEP > - GEM_WARN_ON(dma_resv_test_signaled(obj->base.resv, true)); > + GEM_WARN_ON(dma_resv_test_signaled(obj->base.resv, true) && > + !i915_gem_object_evictable(obj)); > #endif > return mr && (mr->type == INTEL_MEMORY_LOCAL || > mr->type == INTEL_MEMORY_STOLEN_LOCAL);