diff options
author | Alex Deucher <alexander.deucher@amd.com> | 2016-10-21 16:30:10 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2016-10-24 17:00:10 -0400 |
commit | 4560738a8e9d5c0a053b8b896487b83e6948f4a1 (patch) | |
tree | 535553648172e724012858b1a7fa61f624b0c3f3 | |
parent | e8d7515a983b5ccf6681db0ade3714e837581a97 (diff) |
drm/amdgpu/dpm: flush any thermal work on fini
Flush any outstanding thermal work before tearing down
the dpm driver.
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/ci_dpm.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/kv_dpm.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/si_dpm.c | 2 |
3 files changed, 6 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/ci_dpm.c b/drivers/gpu/drm/amd/amdgpu/ci_dpm.c index 1d8c375a3561..29e6061b9087 100644 --- a/drivers/gpu/drm/amd/amdgpu/ci_dpm.c +++ b/drivers/gpu/drm/amd/amdgpu/ci_dpm.c | |||
@@ -6236,6 +6236,8 @@ static int ci_dpm_sw_fini(void *handle) | |||
6236 | { | 6236 | { |
6237 | struct amdgpu_device *adev = (struct amdgpu_device *)handle; | 6237 | struct amdgpu_device *adev = (struct amdgpu_device *)handle; |
6238 | 6238 | ||
6239 | flush_work(&adev->pm.dpm.thermal.work); | ||
6240 | |||
6239 | mutex_lock(&adev->pm.mutex); | 6241 | mutex_lock(&adev->pm.mutex); |
6240 | amdgpu_pm_sysfs_fini(adev); | 6242 | amdgpu_pm_sysfs_fini(adev); |
6241 | ci_dpm_fini(adev); | 6243 | ci_dpm_fini(adev); |
diff --git a/drivers/gpu/drm/amd/amdgpu/kv_dpm.c b/drivers/gpu/drm/amd/amdgpu/kv_dpm.c index f8618a3881a8..71d2856222fa 100644 --- a/drivers/gpu/drm/amd/amdgpu/kv_dpm.c +++ b/drivers/gpu/drm/amd/amdgpu/kv_dpm.c | |||
@@ -3063,6 +3063,8 @@ static int kv_dpm_sw_fini(void *handle) | |||
3063 | { | 3063 | { |
3064 | struct amdgpu_device *adev = (struct amdgpu_device *)handle; | 3064 | struct amdgpu_device *adev = (struct amdgpu_device *)handle; |
3065 | 3065 | ||
3066 | flush_work(&adev->pm.dpm.thermal.work); | ||
3067 | |||
3066 | mutex_lock(&adev->pm.mutex); | 3068 | mutex_lock(&adev->pm.mutex); |
3067 | amdgpu_pm_sysfs_fini(adev); | 3069 | amdgpu_pm_sysfs_fini(adev); |
3068 | kv_dpm_fini(adev); | 3070 | kv_dpm_fini(adev); |
diff --git a/drivers/gpu/drm/amd/amdgpu/si_dpm.c b/drivers/gpu/drm/amd/amdgpu/si_dpm.c index 3de7bca5854b..ee77e9cb55b1 100644 --- a/drivers/gpu/drm/amd/amdgpu/si_dpm.c +++ b/drivers/gpu/drm/amd/amdgpu/si_dpm.c | |||
@@ -7777,6 +7777,8 @@ static int si_dpm_sw_fini(void *handle) | |||
7777 | { | 7777 | { |
7778 | struct amdgpu_device *adev = (struct amdgpu_device *)handle; | 7778 | struct amdgpu_device *adev = (struct amdgpu_device *)handle; |
7779 | 7779 | ||
7780 | flush_work(&adev->pm.dpm.thermal.work); | ||
7781 | |||
7780 | mutex_lock(&adev->pm.mutex); | 7782 | mutex_lock(&adev->pm.mutex); |
7781 | amdgpu_pm_sysfs_fini(adev); | 7783 | amdgpu_pm_sysfs_fini(adev); |
7782 | si_dpm_fini(adev); | 7784 | si_dpm_fini(adev); |