mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-07 06:14:24 +08:00
drm/i915: Only activate i915_active debugobject once
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
This commit is contained in:
parent
21b0c32bda
commit
f52c6d0df6
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user