drm/amdgpu: centrally calls the .ras_fini function of all ras blocks
centrally calls the .ras_fini function of all ras blocks. Signed-off-by: yipechai <YiPeng.Chai@amd.com> Reviewed-by: Tao Zhou <tao.zhou1@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
		
							parent
							
								
									667c7091a3
								
							
						
					
					
						commit
						1f211a827c
					
				| @ -454,17 +454,7 @@ int amdgpu_gmc_ras_late_init(struct amdgpu_device *adev) | ||||
| 
 | ||||
| void amdgpu_gmc_ras_fini(struct amdgpu_device *adev) | ||||
| { | ||||
| 	if (adev->umc.ras && adev->umc.ras->ras_block.ras_fini) | ||||
| 		adev->umc.ras->ras_block.ras_fini(adev, adev->umc.ras_if); | ||||
| 
 | ||||
| 	if (adev->mmhub.ras && adev->mmhub.ras->ras_block.ras_fini) | ||||
| 		adev->mmhub.ras->ras_block.ras_fini(adev, adev->mmhub.ras_if); | ||||
| 
 | ||||
| 	if (adev->gmc.xgmi.ras && adev->gmc.xgmi.ras->ras_block.ras_fini) | ||||
| 		adev->gmc.xgmi.ras->ras_block.ras_fini(adev, adev->gmc.xgmi.ras_if); | ||||
| 
 | ||||
| 	if (adev->hdp.ras && adev->hdp.ras->ras_block.ras_fini) | ||||
| 		adev->hdp.ras->ras_block.ras_fini(adev, adev->hdp.ras_if); | ||||
| } | ||||
| 
 | ||||
| 	/*
 | ||||
|  | ||||
| @ -2572,11 +2572,25 @@ int amdgpu_ras_pre_fini(struct amdgpu_device *adev) | ||||
| int amdgpu_ras_fini(struct amdgpu_device *adev) | ||||
| { | ||||
| 	struct amdgpu_ras_block_list *ras_node, *tmp; | ||||
| 	struct amdgpu_ras_block_object *obj = NULL; | ||||
| 	struct amdgpu_ras *con = amdgpu_ras_get_context(adev); | ||||
| 
 | ||||
| 	if (!adev->ras_enabled || !con) | ||||
| 		return 0; | ||||
| 
 | ||||
| 	list_for_each_entry_safe(ras_node, tmp, &adev->ras_list, node) { | ||||
| 		if (ras_node->ras_obj) { | ||||
| 			obj = ras_node->ras_obj; | ||||
| 			if (amdgpu_ras_is_supported(adev, obj->ras_comm.block) && | ||||
| 			    obj->ras_fini) | ||||
| 				obj->ras_fini(adev, &obj->ras_comm); | ||||
| 		} | ||||
| 
 | ||||
| 		/* Clear ras blocks from ras_list and free ras block list node */ | ||||
| 		list_del(&ras_node->node); | ||||
| 		kfree(ras_node); | ||||
| 	} | ||||
| 
 | ||||
| 	amdgpu_ras_fs_fini(adev); | ||||
| 	amdgpu_ras_interrupt_remove_all(adev); | ||||
| 
 | ||||
| @ -2590,12 +2604,6 @@ int amdgpu_ras_fini(struct amdgpu_device *adev) | ||||
| 	amdgpu_ras_set_context(adev, NULL); | ||||
| 	kfree(con); | ||||
| 
 | ||||
| 	/* Clear ras blocks from ras_list and free ras block list node */ | ||||
| 	list_for_each_entry_safe(ras_node, tmp, &adev->ras_list, node) { | ||||
| 		list_del(&ras_node->node); | ||||
| 		kfree(ras_node); | ||||
| 	} | ||||
| 
 | ||||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -2432,9 +2432,6 @@ static int gfx_v9_0_sw_fini(void *handle) | ||||
| 	int i; | ||||
| 	struct amdgpu_device *adev = (struct amdgpu_device *)handle; | ||||
| 
 | ||||
| 	if (adev->gfx.ras && adev->gfx.ras->ras_block.ras_fini) | ||||
| 		adev->gfx.ras->ras_block.ras_fini(adev, adev->gfx.ras_if); | ||||
| 
 | ||||
| 	for (i = 0; i < adev->gfx.num_gfx_rings; i++) | ||||
| 		amdgpu_ring_fini(&adev->gfx.gfx_ring[i]); | ||||
| 	for (i = 0; i < adev->gfx.num_compute_rings; i++) | ||||
|  | ||||
| @ -1995,10 +1995,6 @@ static int sdma_v4_0_sw_fini(void *handle) | ||||
| 	struct amdgpu_device *adev = (struct amdgpu_device *)handle; | ||||
| 	int i; | ||||
| 
 | ||||
| 	if (adev->sdma.ras && adev->sdma.ras->ras_block.hw_ops && | ||||
| 		adev->sdma.ras->ras_block.ras_fini) | ||||
| 		adev->sdma.ras->ras_block.ras_fini(adev, adev->sdma.ras_if); | ||||
| 
 | ||||
| 	for (i = 0; i < adev->sdma.num_instances; i++) { | ||||
| 		amdgpu_ring_fini(&adev->sdma.instance[i].ring); | ||||
| 		if (adev->sdma.has_page_queue) | ||||
|  | ||||
| @ -1214,9 +1214,6 @@ static int soc15_common_sw_fini(void *handle) | ||||
| { | ||||
| 	struct amdgpu_device *adev = (struct amdgpu_device *)handle; | ||||
| 
 | ||||
| 	if (adev->nbio.ras && adev->nbio.ras->ras_block.ras_fini) | ||||
| 		adev->nbio.ras->ras_block.ras_fini(adev, adev->nbio.ras_if); | ||||
| 
 | ||||
| 	if (adev->df.funcs && | ||||
| 	    adev->df.funcs->sw_fini) | ||||
| 		adev->df.funcs->sw_fini(adev); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user