drm/amdgpu/dpm: flush any thermal work on fini
authorAlex Deucher <alexander.deucher@amd.com>
Fri, 21 Oct 2016 20:30:10 +0000 (16:30 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 24 Oct 2016 21:00:10 +0000 (17:00 -0400)
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>
drivers/gpu/drm/amd/amdgpu/ci_dpm.c
drivers/gpu/drm/amd/amdgpu/kv_dpm.c
drivers/gpu/drm/amd/amdgpu/si_dpm.c

index 1d8c375..29e6061 100644 (file)
@@ -6236,6 +6236,8 @@ static int ci_dpm_sw_fini(void *handle)
 {
        struct amdgpu_device *adev = (struct amdgpu_device *)handle;
 
+       flush_work(&adev->pm.dpm.thermal.work);
+
        mutex_lock(&adev->pm.mutex);
        amdgpu_pm_sysfs_fini(adev);
        ci_dpm_fini(adev);
index f8618a3..71d2856 100644 (file)
@@ -3063,6 +3063,8 @@ static int kv_dpm_sw_fini(void *handle)
 {
        struct amdgpu_device *adev = (struct amdgpu_device *)handle;
 
+       flush_work(&adev->pm.dpm.thermal.work);
+
        mutex_lock(&adev->pm.mutex);
        amdgpu_pm_sysfs_fini(adev);
        kv_dpm_fini(adev);
index 3de7bca..ee77e9c 100644 (file)
@@ -7777,6 +7777,8 @@ static int si_dpm_sw_fini(void *handle)
 {
        struct amdgpu_device *adev = (struct amdgpu_device *)handle;
 
+       flush_work(&adev->pm.dpm.thermal.work);
+
        mutex_lock(&adev->pm.mutex);
        amdgpu_pm_sysfs_fini(adev);
        si_dpm_fini(adev);