Lines Matching refs:mes

45 	struct amdgpu_mes *mes = &adev->mes;  in amdgpu_mes_doorbell_init()  local
48 mes->doorbell_bitmap = bitmap_zalloc(PAGE_SIZE / sizeof(u32), GFP_KERNEL); in amdgpu_mes_doorbell_init()
49 if (!mes->doorbell_bitmap) { in amdgpu_mes_doorbell_init()
54 mes->num_mes_dbs = PAGE_SIZE / AMDGPU_ONE_DOORBELL_SIZE; in amdgpu_mes_doorbell_init()
56 adev->mes.aggregated_doorbells[i] = mes->db_start_dw_offset + i * 2; in amdgpu_mes_doorbell_init()
57 set_bit(i, mes->doorbell_bitmap); in amdgpu_mes_doorbell_init()
70 r = amdgpu_bo_create_kernel(adev, adev->mes.event_log_size, PAGE_SIZE, in amdgpu_mes_event_log_init()
72 &adev->mes.event_log_gpu_obj, in amdgpu_mes_event_log_init()
73 &adev->mes.event_log_gpu_addr, in amdgpu_mes_event_log_init()
74 &adev->mes.event_log_cpu_addr); in amdgpu_mes_event_log_init()
80 memset(adev->mes.event_log_cpu_addr, 0, adev->mes.event_log_size); in amdgpu_mes_event_log_init()
88 bitmap_free(adev->mes.doorbell_bitmap); in amdgpu_mes_doorbell_free()
95 adev->mes.adev = adev; in amdgpu_mes_init()
97 idr_init(&adev->mes.pasid_idr); in amdgpu_mes_init()
98 idr_init(&adev->mes.gang_id_idr); in amdgpu_mes_init()
99 idr_init(&adev->mes.queue_id_idr); in amdgpu_mes_init()
100 ida_init(&adev->mes.doorbell_ida); in amdgpu_mes_init()
101 spin_lock_init(&adev->mes.queue_id_lock); in amdgpu_mes_init()
102 mutex_init(&adev->mes.mutex_hidden); in amdgpu_mes_init()
105 spin_lock_init(&adev->mes.ring_lock[i]); in amdgpu_mes_init()
107 adev->mes.total_max_queue = AMDGPU_FENCE_MES_QUEUE_ID_MASK; in amdgpu_mes_init()
108 adev->mes.vmid_mask_mmhub = 0xffffff00; in amdgpu_mes_init()
109 adev->mes.vmid_mask_gfxhub = adev->gfx.disable_kq ? 0xfffffffe : 0xffffff00; in amdgpu_mes_init()
127 adev->mes.gfx_hqd_mask[i] = adev->gfx.disable_kq ? 0xFF : 0xFE; in amdgpu_mes_init()
134 adev->mes.gfx_hqd_mask[i] = adev->gfx.disable_kq ? 0x3 : 0x2; in amdgpu_mes_init()
145 adev->mes.compute_hqd_mask[i] = adev->gfx.disable_kq ? 0xF : 0xC; in amdgpu_mes_init()
156 adev->mes.sdma_hqd_mask[i] = 0xfc; in amdgpu_mes_init()
160 r = amdgpu_device_wb_get(adev, &adev->mes.sch_ctx_offs[i]); in amdgpu_mes_init()
167 adev->mes.sch_ctx_gpu_addr[i] = in amdgpu_mes_init()
168 adev->wb.gpu_addr + (adev->mes.sch_ctx_offs[i] * 4); in amdgpu_mes_init()
169 adev->mes.sch_ctx_ptr[i] = in amdgpu_mes_init()
170 (uint64_t *)&adev->wb.wb[adev->mes.sch_ctx_offs[i]]; in amdgpu_mes_init()
173 &adev->mes.query_status_fence_offs[i]); in amdgpu_mes_init()
180 adev->mes.query_status_fence_gpu_addr[i] = adev->wb.gpu_addr + in amdgpu_mes_init()
181 (adev->mes.query_status_fence_offs[i] * 4); in amdgpu_mes_init()
182 adev->mes.query_status_fence_ptr[i] = in amdgpu_mes_init()
183 (uint64_t *)&adev->wb.wb[adev->mes.query_status_fence_offs[i]]; in amdgpu_mes_init()
200 if (adev->mes.sch_ctx_ptr[i]) in amdgpu_mes_init()
201 amdgpu_device_wb_free(adev, adev->mes.sch_ctx_offs[i]); in amdgpu_mes_init()
202 if (adev->mes.query_status_fence_ptr[i]) in amdgpu_mes_init()
204 adev->mes.query_status_fence_offs[i]); in amdgpu_mes_init()
207 idr_destroy(&adev->mes.pasid_idr); in amdgpu_mes_init()
208 idr_destroy(&adev->mes.gang_id_idr); in amdgpu_mes_init()
209 idr_destroy(&adev->mes.queue_id_idr); in amdgpu_mes_init()
210 ida_destroy(&adev->mes.doorbell_ida); in amdgpu_mes_init()
211 mutex_destroy(&adev->mes.mutex_hidden); in amdgpu_mes_init()
219 amdgpu_bo_free_kernel(&adev->mes.event_log_gpu_obj, in amdgpu_mes_fini()
220 &adev->mes.event_log_gpu_addr, in amdgpu_mes_fini()
221 &adev->mes.event_log_cpu_addr); in amdgpu_mes_fini()
224 if (adev->mes.sch_ctx_ptr[i]) in amdgpu_mes_fini()
225 amdgpu_device_wb_free(adev, adev->mes.sch_ctx_offs[i]); in amdgpu_mes_fini()
226 if (adev->mes.query_status_fence_ptr[i]) in amdgpu_mes_fini()
228 adev->mes.query_status_fence_offs[i]); in amdgpu_mes_fini()
233 idr_destroy(&adev->mes.pasid_idr); in amdgpu_mes_fini()
234 idr_destroy(&adev->mes.gang_id_idr); in amdgpu_mes_fini()
235 idr_destroy(&adev->mes.queue_id_idr); in amdgpu_mes_fini()
236 ida_destroy(&adev->mes.doorbell_ida); in amdgpu_mes_fini()
237 mutex_destroy(&adev->mes.mutex_hidden); in amdgpu_mes_fini()
255 amdgpu_mes_lock(&adev->mes); in amdgpu_mes_suspend()
256 r = adev->mes.funcs->suspend_gang(&adev->mes, &input); in amdgpu_mes_suspend()
257 amdgpu_mes_unlock(&adev->mes); in amdgpu_mes_suspend()
279 amdgpu_mes_lock(&adev->mes); in amdgpu_mes_resume()
280 r = adev->mes.funcs->resume_gang(&adev->mes, &input); in amdgpu_mes_resume()
281 amdgpu_mes_unlock(&adev->mes); in amdgpu_mes_resume()
303 amdgpu_mes_lock(&adev->mes); in amdgpu_mes_map_legacy_queue()
304 r = adev->mes.funcs->map_legacy_queue(&adev->mes, &queue_input); in amdgpu_mes_map_legacy_queue()
305 amdgpu_mes_unlock(&adev->mes); in amdgpu_mes_map_legacy_queue()
328 amdgpu_mes_lock(&adev->mes); in amdgpu_mes_unmap_legacy_queue()
329 r = adev->mes.funcs->unmap_legacy_queue(&adev->mes, &queue_input); in amdgpu_mes_unmap_legacy_queue()
330 amdgpu_mes_unlock(&adev->mes); in amdgpu_mes_unmap_legacy_queue()
360 amdgpu_mes_lock(&adev->mes); in amdgpu_mes_reset_legacy_queue()
361 r = adev->mes.funcs->reset_hw_queue(&adev->mes, &queue_input); in amdgpu_mes_reset_legacy_queue()
362 amdgpu_mes_unlock(&adev->mes); in amdgpu_mes_reset_legacy_queue()
387 if (!adev->mes.funcs->misc_op) { in amdgpu_mes_rreg()
392 amdgpu_mes_lock(&adev->mes); in amdgpu_mes_rreg()
393 r = adev->mes.funcs->misc_op(&adev->mes, &op_input); in amdgpu_mes_rreg()
394 amdgpu_mes_unlock(&adev->mes); in amdgpu_mes_rreg()
416 if (!adev->mes.funcs->misc_op) { in amdgpu_mes_wreg()
422 amdgpu_mes_lock(&adev->mes); in amdgpu_mes_wreg()
423 r = adev->mes.funcs->misc_op(&adev->mes, &op_input); in amdgpu_mes_wreg()
424 amdgpu_mes_unlock(&adev->mes); in amdgpu_mes_wreg()
445 if (!adev->mes.funcs->misc_op) { in amdgpu_mes_reg_write_reg_wait()
451 amdgpu_mes_lock(&adev->mes); in amdgpu_mes_reg_write_reg_wait()
452 r = adev->mes.funcs->misc_op(&adev->mes, &op_input); in amdgpu_mes_reg_write_reg_wait()
453 amdgpu_mes_unlock(&adev->mes); in amdgpu_mes_reg_write_reg_wait()
471 if (!adev->mes.funcs->misc_op) { in amdgpu_mes_set_shader_debugger()
489 if (((adev->mes.sched_version & AMDGPU_MES_API_VERSION_MASK) >> in amdgpu_mes_set_shader_debugger()
493 amdgpu_mes_lock(&adev->mes); in amdgpu_mes_set_shader_debugger()
495 r = adev->mes.funcs->misc_op(&adev->mes, &op_input); in amdgpu_mes_set_shader_debugger()
499 amdgpu_mes_unlock(&adev->mes); in amdgpu_mes_set_shader_debugger()
510 if (!adev->mes.funcs->misc_op) { in amdgpu_mes_flush_shader_debugger()
520 amdgpu_mes_lock(&adev->mes); in amdgpu_mes_flush_shader_debugger()
522 r = adev->mes.funcs->misc_op(&adev->mes, &op_input); in amdgpu_mes_flush_shader_debugger()
526 amdgpu_mes_unlock(&adev->mes); in amdgpu_mes_flush_shader_debugger()
534 return adev->mes.aggregated_doorbells[prio]; in amdgpu_mes_get_aggregated_doorbell_index()
564 r = amdgpu_ucode_request(adev, &adev->mes.fw[pipe], AMDGPU_UCODE_REQUIRED, in amdgpu_mes_init_microcode()
568 r = amdgpu_ucode_request(adev, &adev->mes.fw[pipe], in amdgpu_mes_init_microcode()
577 adev->mes.fw[pipe]->data; in amdgpu_mes_init_microcode()
578 adev->mes.uc_start_addr[pipe] = in amdgpu_mes_init_microcode()
581 adev->mes.data_start_addr[pipe] = in amdgpu_mes_init_microcode()
584 ucode_ptr = (u32 *)(adev->mes.fw[pipe]->data + in amdgpu_mes_init_microcode()
586 adev->mes.fw_version[pipe] = in amdgpu_mes_init_microcode()
602 info->fw = adev->mes.fw[pipe]; in amdgpu_mes_init_microcode()
609 info->fw = adev->mes.fw[pipe]; in amdgpu_mes_init_microcode()
617 amdgpu_ucode_release(&adev->mes.fw[pipe]); in amdgpu_mes_init_microcode()
623 uint32_t mes_rev = adev->mes.sched_version & AMDGPU_MES_VERSION_MASK; in amdgpu_mes_suspend_resume_all_supported()
644 if (!adev->mes.funcs->misc_op) { in amdgpu_mes_set_enforce_isolation()
650 amdgpu_mes_lock(&adev->mes); in amdgpu_mes_set_enforce_isolation()
651 r = adev->mes.funcs->misc_op(&adev->mes, &op_input); in amdgpu_mes_set_enforce_isolation()
652 amdgpu_mes_unlock(&adev->mes); in amdgpu_mes_set_enforce_isolation()
682 uint32_t *mem = (uint32_t *)(adev->mes.event_log_cpu_addr); in amdgpu_debugfs_mes_event_log_show()
685 mem, adev->mes.event_log_size, false); in amdgpu_debugfs_mes_event_log_show()