Lines Matching refs:adev

26 int amdgpu_umc_ras_late_init(struct amdgpu_device *adev)  in amdgpu_umc_ras_late_init()  argument
36 if (!adev->umc.ras_if) { in amdgpu_umc_ras_late_init()
37 adev->umc.ras_if = in amdgpu_umc_ras_late_init()
39 if (!adev->umc.ras_if) in amdgpu_umc_ras_late_init()
41 adev->umc.ras_if->block = AMDGPU_RAS_BLOCK__UMC; in amdgpu_umc_ras_late_init()
42 adev->umc.ras_if->type = AMDGPU_RAS_ERROR__MULTI_UNCORRECTABLE; in amdgpu_umc_ras_late_init()
43 adev->umc.ras_if->sub_block_index = 0; in amdgpu_umc_ras_late_init()
45 ih_info.head = fs_info.head = *adev->umc.ras_if; in amdgpu_umc_ras_late_init()
47 r = amdgpu_ras_late_init(adev, adev->umc.ras_if, in amdgpu_umc_ras_late_init()
52 if (amdgpu_ras_is_supported(adev, adev->umc.ras_if->block)) { in amdgpu_umc_ras_late_init()
53 r = amdgpu_irq_get(adev, &adev->gmc.ecc_irq, 0); in amdgpu_umc_ras_late_init()
62 if (adev->umc.ras_funcs && in amdgpu_umc_ras_late_init()
63 adev->umc.ras_funcs->err_cnt_init) in amdgpu_umc_ras_late_init()
64 adev->umc.ras_funcs->err_cnt_init(adev); in amdgpu_umc_ras_late_init()
69 amdgpu_ras_late_fini(adev, adev->umc.ras_if, &ih_info); in amdgpu_umc_ras_late_init()
71 kfree(adev->umc.ras_if); in amdgpu_umc_ras_late_init()
72 adev->umc.ras_if = NULL; in amdgpu_umc_ras_late_init()
76 void amdgpu_umc_ras_fini(struct amdgpu_device *adev) in amdgpu_umc_ras_fini() argument
78 if (amdgpu_ras_is_supported(adev, AMDGPU_RAS_BLOCK__UMC) && in amdgpu_umc_ras_fini()
79 adev->umc.ras_if) { in amdgpu_umc_ras_fini()
80 struct ras_common_if *ras_if = adev->umc.ras_if; in amdgpu_umc_ras_fini()
86 amdgpu_ras_late_fini(adev, ras_if, &ih_info); in amdgpu_umc_ras_fini()
91 int amdgpu_umc_process_ras_data_cb(struct amdgpu_device *adev, in amdgpu_umc_process_ras_data_cb() argument
96 struct amdgpu_ras *con = amdgpu_ras_get_context(adev); in amdgpu_umc_process_ras_data_cb()
98 kgd2kfd_set_sram_ecc_flag(adev->kfd.dev); in amdgpu_umc_process_ras_data_cb()
99 if (adev->umc.ras_funcs && in amdgpu_umc_process_ras_data_cb()
100 adev->umc.ras_funcs->query_ras_error_count) in amdgpu_umc_process_ras_data_cb()
101 adev->umc.ras_funcs->query_ras_error_count(adev, ras_error_status); in amdgpu_umc_process_ras_data_cb()
103 if (adev->umc.ras_funcs && in amdgpu_umc_process_ras_data_cb()
104 adev->umc.ras_funcs->query_ras_error_address && in amdgpu_umc_process_ras_data_cb()
105 adev->umc.max_ras_err_cnt_per_query) { in amdgpu_umc_process_ras_data_cb()
107 kcalloc(adev->umc.max_ras_err_cnt_per_query, in amdgpu_umc_process_ras_data_cb()
114 dev_warn(adev->dev, "Failed to alloc memory for " in amdgpu_umc_process_ras_data_cb()
120 adev->umc.ras_funcs->query_ras_error_address(adev, ras_error_status); in amdgpu_umc_process_ras_data_cb()
125 dev_info(adev->dev, "%ld uncorrectable hardware errors " in amdgpu_umc_process_ras_data_cb()
131 amdgpu_ras_add_bad_pages(adev, err_data->err_addr, in amdgpu_umc_process_ras_data_cb()
133 amdgpu_ras_save_bad_pages(adev); in amdgpu_umc_process_ras_data_cb()
135 if (adev->smu.ppt_funcs && adev->smu.ppt_funcs->send_hbm_bad_pages_num) in amdgpu_umc_process_ras_data_cb()
136 adev->smu.ppt_funcs->send_hbm_bad_pages_num(&adev->smu, con->eeprom_control.ras_num_recs); in amdgpu_umc_process_ras_data_cb()
139 amdgpu_ras_reset_gpu(adev); in amdgpu_umc_process_ras_data_cb()
146 int amdgpu_umc_process_ecc_irq(struct amdgpu_device *adev, in amdgpu_umc_process_ecc_irq() argument
150 struct ras_common_if *ras_if = adev->umc.ras_if; in amdgpu_umc_process_ecc_irq()
160 amdgpu_ras_interrupt_dispatch(adev, &ih_data); in amdgpu_umc_process_ecc_irq()