The adev->pm.mutx is already held at the beginning of
amdgpu_dpm_compute_clocks/amdgpu_dpm_enable_uvd/amdgpu_dpm_enable_vce.
But on their calling path, amdgpu_display_bandwidth_update will be
called and thus its sub functions amdgpu_dpm_get_sclk/mclk. They
will then try to acquire the same adev->pm.mutex and deadlock will
occur.
By placing amdgpu_display_bandwidth_update outside of adev->pm.mutex
protection(considering logically they do not need such protection) and
restructuring the call flow accordingly, we can eliminate the deadlock
issue. This comes with no real logics change.
Fixes:
|
||
---|---|---|
.. | ||
cik_dpm.h | ||
kv_dpm.c | ||
kv_dpm.h | ||
kv_smc.c | ||
legacy_dpm.c | ||
legacy_dpm.h | ||
Makefile | ||
ppsmc.h | ||
r600_dpm.h | ||
si_dpm.c | ||
si_dpm.h | ||
si_smc.c | ||
sislands_smc.h |