瀏覽代碼

drm/amdgpu: fix cik sdma ucode memleak

Signed-off-by: Monk Liu <Monk.Liu@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Monk Liu 9 年之前
父節點
當前提交
d1ff53b7c2
共有 1 個文件被更改,包括 11 次插入0 次删除
  1. 11 0
      drivers/gpu/drm/amd/amdgpu/cik_sdma.c

+ 11 - 0
drivers/gpu/drm/amd/amdgpu/cik_sdma.c

@@ -66,6 +66,16 @@ MODULE_FIRMWARE("radeon/mullins_sdma1.bin");
 
 
 u32 amdgpu_cik_gpu_check_soft_reset(struct amdgpu_device *adev);
 u32 amdgpu_cik_gpu_check_soft_reset(struct amdgpu_device *adev);
 
 
+
+static void cik_sdma_free_microcode(struct amdgpu_device *adev)
+{
+	int i;
+	for (i = 0; i < adev->sdma.num_instances; i++) {
+			release_firmware(adev->sdma.instance[i].fw);
+			adev->sdma.instance[i].fw = NULL;
+	}
+}
+
 /*
 /*
  * sDMA - System DMA
  * sDMA - System DMA
  * Starting with CIK, the GPU has new asynchronous
  * Starting with CIK, the GPU has new asynchronous
@@ -1005,6 +1015,7 @@ static int cik_sdma_sw_fini(void *handle)
 	for (i = 0; i < adev->sdma.num_instances; i++)
 	for (i = 0; i < adev->sdma.num_instances; i++)
 		amdgpu_ring_fini(&adev->sdma.instance[i].ring);
 		amdgpu_ring_fini(&adev->sdma.instance[i].ring);
 
 
+	cik_sdma_free_microcode(adev);
 	return 0;
 	return 0;
 }
 }