mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git
synced 2026-04-18 03:23:53 -04:00
drm/i915: Track gt pm wakerefs
Track every intel_gt_pm_get() until its corresponding release in
intel_gt_pm_put() by returning a cookie to the caller for acquire that
must be passed by on released. When there is an imbalance, we can see who
either tried to free a stale wakeref, or who forgot to free theirs.
v2: track recently added calls in gen8_ggtt_bind_get_ce and
destroyed_worker_func
Signed-off-by: Andrzej Hajda <andrzej.hajda@intel.com>
Reviewed-by: Andi Shyti <andi.shyti@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20231030-ref_tracker_i915-v1-2-006fe6b96421@intel.com
This commit is contained in:
@@ -99,7 +99,8 @@ static void __intel_wakeref_put_work(struct work_struct *wrk)
|
||||
void __intel_wakeref_init(struct intel_wakeref *wf,
|
||||
struct drm_i915_private *i915,
|
||||
const struct intel_wakeref_ops *ops,
|
||||
struct intel_wakeref_lockclass *key)
|
||||
struct intel_wakeref_lockclass *key,
|
||||
const char *name)
|
||||
{
|
||||
wf->i915 = i915;
|
||||
wf->ops = ops;
|
||||
@@ -111,6 +112,10 @@ void __intel_wakeref_init(struct intel_wakeref *wf,
|
||||
INIT_DELAYED_WORK(&wf->work, __intel_wakeref_put_work);
|
||||
lockdep_init_map(&wf->work.work.lockdep_map,
|
||||
"wakeref.work", &key->work, 0);
|
||||
|
||||
#if IS_ENABLED(CONFIG_DRM_I915_DEBUG_WAKEREF)
|
||||
ref_tracker_dir_init(&wf->debug, INTEL_REFTRACK_DEAD_COUNT, name);
|
||||
#endif
|
||||
}
|
||||
|
||||
int intel_wakeref_wait_for_idle(struct intel_wakeref *wf)
|
||||
|
||||
Reference in New Issue
Block a user