Skip to content

Commit

Permalink
drm/i915: Only activate i915_active debugobject once
Browse files Browse the repository at this point in the history
The point of debug_object_activate is to mark the first, and only the
first, acquisition. The object then remains active until the last
release.  However, we marked up all successful first acquires even though
we allowed concurrent parties to try and acquire the i915_active
simultaneously (serialised by the i915_active.mutex).

Testcase: igt/gem_mmap_gtt/fault-concurrent
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Matthew Auld <matthew.auld@intel.com>
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190827132631.18627-1-chris@chris-wilson.co.uk
  • Loading branch information
Chris Wilson committed Aug 27, 2019
1 parent 21b0c32 commit f52c6d0
Showing 1 changed file with 6 additions and 2 deletions.
8 changes: 6 additions & 2 deletions drivers/gpu/drm/i915/i915_active.c
Original file line number Diff line number Diff line change
Expand Up @@ -92,12 +92,16 @@ static void debug_active_init(struct i915_active *ref)

static void debug_active_activate(struct i915_active *ref)
{
debug_object_activate(ref, &active_debug_desc);
lockdep_assert_held(&ref->mutex);
if (!atomic_read(&ref->count)) /* before the first inc */
debug_object_activate(ref, &active_debug_desc);
}

static void debug_active_deactivate(struct i915_active *ref)
{
debug_object_deactivate(ref, &active_debug_desc);
lockdep_assert_held(&ref->mutex);
if (!atomic_read(&ref->count)) /* after the last dec */
debug_object_deactivate(ref, &active_debug_desc);
}

static void debug_active_fini(struct i915_active *ref)
Expand Down

0 comments on commit f52c6d0

Please sign in to comment.