diff options
author | Alex Deucher <alexander.deucher@amd.com> | 2016-06-01 11:09:01 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2016-06-09 10:48:56 -0400 |
commit | 768c95e70c4bd33b3da32a15dd33486246f4ca79 (patch) | |
tree | 91f007ea811d55cd161fcd14a1f4932cbde5308b | |
parent | a6dcfd9cc55432e4dcbe058d6ae9f07fb3452992 (diff) |
drm/amdgpu: fix fw leak in non-powerplay dpm code
We need to release the firmware on driver tear down.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/ci_dpm.c | 3 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/fiji_dpm.c | 5 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/iceland_dpm.c | 5 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/tonga_dpm.c | 5 |
4 files changed, 18 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/ci_dpm.c b/drivers/gpu/drm/amd/amdgpu/ci_dpm.c index ea407db1fbcf..5ec1f1e9c983 100644 --- a/drivers/gpu/drm/amd/amdgpu/ci_dpm.c +++ b/drivers/gpu/drm/amd/amdgpu/ci_dpm.c | |||
@@ -6221,6 +6221,9 @@ static int ci_dpm_sw_fini(void *handle) | |||
6221 | ci_dpm_fini(adev); | 6221 | ci_dpm_fini(adev); |
6222 | mutex_unlock(&adev->pm.mutex); | 6222 | mutex_unlock(&adev->pm.mutex); |
6223 | 6223 | ||
6224 | release_firmware(adev->pm.fw); | ||
6225 | adev->pm.fw = NULL; | ||
6226 | |||
6224 | return 0; | 6227 | return 0; |
6225 | } | 6228 | } |
6226 | 6229 | ||
diff --git a/drivers/gpu/drm/amd/amdgpu/fiji_dpm.c b/drivers/gpu/drm/amd/amdgpu/fiji_dpm.c index 245cabf06575..ed03b75175d4 100644 --- a/drivers/gpu/drm/amd/amdgpu/fiji_dpm.c +++ b/drivers/gpu/drm/amd/amdgpu/fiji_dpm.c | |||
@@ -72,6 +72,11 @@ static int fiji_dpm_sw_init(void *handle) | |||
72 | 72 | ||
73 | static int fiji_dpm_sw_fini(void *handle) | 73 | static int fiji_dpm_sw_fini(void *handle) |
74 | { | 74 | { |
75 | struct amdgpu_device *adev = (struct amdgpu_device *)handle; | ||
76 | |||
77 | release_firmware(adev->pm.fw); | ||
78 | adev->pm.fw = NULL; | ||
79 | |||
75 | return 0; | 80 | return 0; |
76 | } | 81 | } |
77 | 82 | ||
diff --git a/drivers/gpu/drm/amd/amdgpu/iceland_dpm.c b/drivers/gpu/drm/amd/amdgpu/iceland_dpm.c index 460bc8ad37e6..825ccd63f2dc 100644 --- a/drivers/gpu/drm/amd/amdgpu/iceland_dpm.c +++ b/drivers/gpu/drm/amd/amdgpu/iceland_dpm.c | |||
@@ -72,6 +72,11 @@ static int iceland_dpm_sw_init(void *handle) | |||
72 | 72 | ||
73 | static int iceland_dpm_sw_fini(void *handle) | 73 | static int iceland_dpm_sw_fini(void *handle) |
74 | { | 74 | { |
75 | struct amdgpu_device *adev = (struct amdgpu_device *)handle; | ||
76 | |||
77 | release_firmware(adev->pm.fw); | ||
78 | adev->pm.fw = NULL; | ||
79 | |||
75 | return 0; | 80 | return 0; |
76 | } | 81 | } |
77 | 82 | ||
diff --git a/drivers/gpu/drm/amd/amdgpu/tonga_dpm.c b/drivers/gpu/drm/amd/amdgpu/tonga_dpm.c index b7615cefcac4..f06f6f4dc3a8 100644 --- a/drivers/gpu/drm/amd/amdgpu/tonga_dpm.c +++ b/drivers/gpu/drm/amd/amdgpu/tonga_dpm.c | |||
@@ -71,6 +71,11 @@ static int tonga_dpm_sw_init(void *handle) | |||
71 | 71 | ||
72 | static int tonga_dpm_sw_fini(void *handle) | 72 | static int tonga_dpm_sw_fini(void *handle) |
73 | { | 73 | { |
74 | struct amdgpu_device *adev = (struct amdgpu_device *)handle; | ||
75 | |||
76 | release_firmware(adev->pm.fw); | ||
77 | adev->pm.fw = NULL; | ||
78 | |||
74 | return 0; | 79 | return 0; |
75 | } | 80 | } |
76 | 81 | ||