]> www.infradead.org Git - nvme.git/commitdiff
drm/i915: Make __engine_unpark() compatible with ww locking.
authorMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
Tue, 23 Mar 2021 15:50:16 +0000 (16:50 +0100)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Wed, 24 Mar 2021 16:27:20 +0000 (17:27 +0100)
Take the ww lock around engine_unpark. Because of the
many many places where rpm is used, I chose the safest option
and used a trylock to opportunistically take this lock for
__engine_unpark.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: https://patchwork.freedesktop.org/patch/msgid/20210323155059.628690-28-maarten.lankhorst@linux.intel.com
drivers/gpu/drm/i915/gt/intel_engine_pm.c

index e67d09259dd0c3d04b6e3b34f365026c8ef59538..25838f1038e143d9386498c290700dd037c0a21b 100644 (file)
@@ -27,12 +27,16 @@ static void dbg_poison_ce(struct intel_context *ce)
                int type = i915_coherent_map_type(ce->engine->i915);
                void *map;
 
+               if (!i915_gem_object_trylock(obj))
+                       return;
+
                map = i915_gem_object_pin_map(obj, type);
                if (!IS_ERR(map)) {
                        memset(map, CONTEXT_REDZONE, obj->base.size);
                        i915_gem_object_flush_map(obj);
                        i915_gem_object_unpin_map(obj);
                }
+               i915_gem_object_unlock(obj);
        }
 }