Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Tao Zhou and committed by
Alex Deucher
e536c818 3b7b7647

+21 -15
+19
drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c
··· 136 136 return r; 137 137 } 138 138 139 + void amdgpu_sdma_ras_fini(struct amdgpu_device *adev) 140 + { 141 + if (amdgpu_ras_is_supported(adev, AMDGPU_RAS_BLOCK__SDMA) && 142 + adev->sdma.ras_if) { 143 + struct ras_common_if *ras_if = adev->sdma.ras_if; 144 + struct ras_ih_if ih_info = { 145 + .head = *ras_if, 146 + /* the cb member will not be used by 147 + * amdgpu_ras_interrupt_remove_handler, init it only 148 + * to cheat the check in ras_late_fini 149 + */ 150 + .cb = amdgpu_sdma_process_ras_data_cb, 151 + }; 152 + 153 + amdgpu_ras_late_fini(adev, ras_if, &ih_info); 154 + kfree(ras_if); 155 + } 156 + } 157 + 139 158 int amdgpu_sdma_process_ras_data_cb(struct amdgpu_device *adev, 140 159 void *err_data, 141 160 struct amdgpu_iv_entry *entry)
+1
drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.h
··· 106 106 uint64_t amdgpu_sdma_get_csa_mc_addr(struct amdgpu_ring *ring, unsigned vmid); 107 107 int amdgpu_sdma_ras_late_init(struct amdgpu_device *adev, 108 108 void *ras_ih_info); 109 + void amdgpu_sdma_ras_fini(struct amdgpu_device *adev); 109 110 int amdgpu_sdma_process_ras_data_cb(struct amdgpu_device *adev, 110 111 void *err_data, 111 112 struct amdgpu_iv_entry *entry);
+1 -15
drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
··· 1772 1772 struct amdgpu_device *adev = (struct amdgpu_device *)handle; 1773 1773 int i; 1774 1774 1775 - if (amdgpu_ras_is_supported(adev, AMDGPU_RAS_BLOCK__SDMA) && 1776 - adev->sdma.ras_if) { 1777 - struct ras_common_if *ras_if = adev->sdma.ras_if; 1778 - struct ras_ih_if ih_info = { 1779 - .head = *ras_if, 1780 - }; 1781 - 1782 - /*remove fs first*/ 1783 - amdgpu_ras_debugfs_remove(adev, ras_if); 1784 - amdgpu_ras_sysfs_remove(adev, ras_if); 1785 - /*remove the IH*/ 1786 - amdgpu_ras_interrupt_remove_handler(adev, &ih_info); 1787 - amdgpu_ras_feature_enable(adev, ras_if, 0); 1788 - kfree(ras_if); 1789 - } 1775 + amdgpu_sdma_ras_fini(adev); 1790 1776 1791 1777 for (i = 0; i < adev->sdma.num_instances; i++) { 1792 1778 amdgpu_ring_fini(&adev->sdma.instance[i].ring);