drm/amdgpu: add common sdma_ras_fini function
sdma_ras_fini can be shared among all generations of sdma Signed-off-by: Tao Zhou <tao.zhou1@amd.com> Reviewed-by: Guchun Chen <guchun.chen@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
		
							parent
							
								
									3b7b7647be
								
							
						
					
					
						commit
						e536c81850
					
				| @ -136,6 +136,25 @@ free: | ||||
| 	return r; | ||||
| } | ||||
| 
 | ||||
| void amdgpu_sdma_ras_fini(struct amdgpu_device *adev) | ||||
| { | ||||
| 	if (amdgpu_ras_is_supported(adev, AMDGPU_RAS_BLOCK__SDMA) && | ||||
| 			adev->sdma.ras_if) { | ||||
| 		struct ras_common_if *ras_if = adev->sdma.ras_if; | ||||
| 		struct ras_ih_if ih_info = { | ||||
| 			.head = *ras_if, | ||||
| 			/* the cb member will not be used by
 | ||||
| 			 * amdgpu_ras_interrupt_remove_handler, init it only | ||||
| 			 * to cheat the check in ras_late_fini | ||||
| 			 */ | ||||
| 			.cb = amdgpu_sdma_process_ras_data_cb, | ||||
| 		}; | ||||
| 
 | ||||
| 		amdgpu_ras_late_fini(adev, ras_if, &ih_info); | ||||
| 		kfree(ras_if); | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| int amdgpu_sdma_process_ras_data_cb(struct amdgpu_device *adev, | ||||
| 		void *err_data, | ||||
| 		struct amdgpu_iv_entry *entry) | ||||
|  | ||||
| @ -106,6 +106,7 @@ int amdgpu_sdma_get_index_from_ring(struct amdgpu_ring *ring, uint32_t *index); | ||||
| uint64_t amdgpu_sdma_get_csa_mc_addr(struct amdgpu_ring *ring, unsigned vmid); | ||||
| int amdgpu_sdma_ras_late_init(struct amdgpu_device *adev, | ||||
| 			      void *ras_ih_info); | ||||
| void amdgpu_sdma_ras_fini(struct amdgpu_device *adev); | ||||
| int amdgpu_sdma_process_ras_data_cb(struct amdgpu_device *adev, | ||||
| 		void *err_data, | ||||
| 		struct amdgpu_iv_entry *entry); | ||||
|  | ||||
| @ -1772,21 +1772,7 @@ static int sdma_v4_0_sw_fini(void *handle) | ||||
| 	struct amdgpu_device *adev = (struct amdgpu_device *)handle; | ||||
| 	int i; | ||||
| 
 | ||||
| 	if (amdgpu_ras_is_supported(adev, AMDGPU_RAS_BLOCK__SDMA) && | ||||
| 			adev->sdma.ras_if) { | ||||
| 		struct ras_common_if *ras_if = adev->sdma.ras_if; | ||||
| 		struct ras_ih_if ih_info = { | ||||
| 			.head = *ras_if, | ||||
| 		}; | ||||
| 
 | ||||
| 		/*remove fs first*/ | ||||
| 		amdgpu_ras_debugfs_remove(adev, ras_if); | ||||
| 		amdgpu_ras_sysfs_remove(adev, ras_if); | ||||
| 		/*remove the IH*/ | ||||
| 		amdgpu_ras_interrupt_remove_handler(adev, &ih_info); | ||||
| 		amdgpu_ras_feature_enable(adev, ras_if, 0); | ||||
| 		kfree(ras_if); | ||||
| 	} | ||||
| 	amdgpu_sdma_ras_fini(adev); | ||||
| 
 | ||||
| 	for (i = 0; i < adev->sdma.num_instances; i++) { | ||||
| 		amdgpu_ring_fini(&adev->sdma.instance[i].ring); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user