mirror of
https://github.com/torvalds/linux.git
synced 2026-06-01 11:03:43 +02:00
drm/xe: Fix circular locking dependency
Fix this:
======================================================
WARNING: possible circular locking dependency detected
6.17.0-rc4-lgci-xe-xe-pw-153723v2+ #1 Tainted: G S U
------------------------------------------------------
xe_pm/11324 is trying to acquire lock:
ffff8881085f22a0 (&pc->freq_lock){+.+.}-{3:3}, at:
xe_guc_pc_start+0x39f/0xf70 [xe]
but task is already holding lock:
ffffffffa1020420 (xe_rpm_nod3cold_map){+.+.}-{0:0}, at:
xe_rpm_lockmap_acquire+0x1a/0x70 [xe]
which lock already depends on the new lock.
Possible unsafe locking scenario:
CPU0 CPU1
---- ----
lock(xe_rpm_nod3cold_map);
lock(&pc->freq_lock);
lock(xe_rpm_nod3cold_map);
lock(&pc->freq_lock);
Reported-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Closes: https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/6122
Fixes: 60d2b78991 ("drm/xe/guc: Add SLPC power profile interface")
Cc: Vinay Belgaumkar <vinay.belgaumkar@intel.com>
Reviewed-by: Vinay Belgaumkar <vinay.belgaumkar@intel.com>
Tested-by: Vinay Belgaumkar <vinay.belgaumkar@intel.com>
Link: https://lore.kernel.org/r/20250911212024.966757-2-rodrigo.vivi@intel.com
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
This commit is contained in:
parent
01ecf00463
commit
fed1a9d60f
|
|
@ -246,7 +246,9 @@ static ssize_t power_profile_store(struct kobject *kobj,
|
|||
struct xe_guc_pc *pc = dev_to_pc(dev);
|
||||
int err;
|
||||
|
||||
xe_pm_runtime_get(dev_to_xe(dev));
|
||||
err = xe_guc_pc_set_power_profile(pc, buff);
|
||||
xe_pm_runtime_put(dev_to_xe(dev));
|
||||
|
||||
return err ?: count;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1215,7 +1215,7 @@ int xe_guc_pc_set_power_profile(struct xe_guc_pc *pc, const char *buf)
|
|||
return -EINVAL;
|
||||
|
||||
guard(mutex)(&pc->freq_lock);
|
||||
xe_pm_runtime_get(pc_to_xe(pc));
|
||||
xe_pm_runtime_get_noresume(pc_to_xe(pc));
|
||||
|
||||
ret = pc_action_set_param(pc,
|
||||
SLPC_PARAM_POWER_PROFILE,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user