Lines Matching refs:mes

162 static int mes_v11_0_submit_pkt_and_poll_completion(struct amdgpu_mes *mes,  in mes_v11_0_submit_pkt_and_poll_completion()  argument
168 struct amdgpu_device *adev = mes->adev; in mes_v11_0_submit_pkt_and_poll_completion()
169 struct amdgpu_ring *ring = &mes->ring[0]; in mes_v11_0_submit_pkt_and_poll_completion()
198 spin_lock_irqsave(&mes->ring_lock[0], flags); in mes_v11_0_submit_pkt_and_poll_completion()
228 spin_unlock_irqrestore(&mes->ring_lock[0], flags); in mes_v11_0_submit_pkt_and_poll_completion()
270 spin_unlock_irqrestore(&mes->ring_lock[0], flags); in mes_v11_0_submit_pkt_and_poll_completion()
307 static int mes_v11_0_add_hw_queue(struct amdgpu_mes *mes, in mes_v11_0_add_hw_queue() argument
310 struct amdgpu_device *adev = mes->adev; in mes_v11_0_add_hw_queue()
336 if (((adev->mes.sched_version & AMDGPU_MES_API_VERSION_MASK) >> in mes_v11_0_add_hw_queue()
360 return mes_v11_0_submit_pkt_and_poll_completion(mes, in mes_v11_0_add_hw_queue()
365 static int mes_v11_0_remove_hw_queue(struct amdgpu_mes *mes, in mes_v11_0_remove_hw_queue() argument
379 return mes_v11_0_submit_pkt_and_poll_completion(mes, in mes_v11_0_remove_hw_queue()
384 static int mes_v11_0_reset_queue_mmio(struct amdgpu_mes *mes, uint32_t queue_type, in mes_v11_0_reset_queue_mmio() argument
388 struct amdgpu_device *adev = mes->adev; in mes_v11_0_reset_queue_mmio()
478 static int mes_v11_0_map_legacy_queue(struct amdgpu_mes *mes, in mes_v11_0_map_legacy_queue() argument
498 return mes_v11_0_submit_pkt_and_poll_completion(mes, in mes_v11_0_map_legacy_queue()
503 static int mes_v11_0_unmap_legacy_queue(struct amdgpu_mes *mes, in mes_v11_0_unmap_legacy_queue() argument
531 return mes_v11_0_submit_pkt_and_poll_completion(mes, in mes_v11_0_unmap_legacy_queue()
536 static int mes_v11_0_suspend_gang(struct amdgpu_mes *mes, in mes_v11_0_suspend_gang() argument
552 return mes_v11_0_submit_pkt_and_poll_completion(mes, in mes_v11_0_suspend_gang()
557 static int mes_v11_0_resume_gang(struct amdgpu_mes *mes, in mes_v11_0_resume_gang() argument
571 return mes_v11_0_submit_pkt_and_poll_completion(mes, in mes_v11_0_resume_gang()
576 static int mes_v11_0_query_sched_status(struct amdgpu_mes *mes) in mes_v11_0_query_sched_status() argument
586 return mes_v11_0_submit_pkt_and_poll_completion(mes, in mes_v11_0_query_sched_status()
591 static int mes_v11_0_misc_op(struct amdgpu_mes *mes, in mes_v11_0_misc_op() argument
643 if ((mes->adev->mes.sched_version & AMDGPU_MES_VERSION_MASK) < 0x63) { in mes_v11_0_misc_op()
644 …dev_err(mes->adev->dev, "MES FW version must be larger than 0x63 to support limit single process f… in mes_v11_0_misc_op()
659 return mes_v11_0_submit_pkt_and_poll_completion(mes, in mes_v11_0_misc_op()
664 static int mes_v11_0_set_hw_resources(struct amdgpu_mes *mes) in mes_v11_0_set_hw_resources() argument
667 struct amdgpu_device *adev = mes->adev; in mes_v11_0_set_hw_resources()
676 mes_set_hw_res_pkt.vmid_mask_mmhub = mes->vmid_mask_mmhub; in mes_v11_0_set_hw_resources()
677 mes_set_hw_res_pkt.vmid_mask_gfxhub = mes->vmid_mask_gfxhub; in mes_v11_0_set_hw_resources()
680 mes_set_hw_res_pkt.g_sch_ctx_gpu_mc_ptr = mes->sch_ctx_gpu_addr[0]; in mes_v11_0_set_hw_resources()
682 mes->query_status_fence_gpu_addr[0]; in mes_v11_0_set_hw_resources()
686 mes->compute_hqd_mask[i]; in mes_v11_0_set_hw_resources()
690 mes->gfx_hqd_mask[i]; in mes_v11_0_set_hw_resources()
693 mes_set_hw_res_pkt.sdma_hqd_mask[i] = mes->sdma_hqd_mask[i]; in mes_v11_0_set_hw_resources()
697 mes->aggregated_doorbells[i]; in mes_v11_0_set_hw_resources()
716 mes->event_log_gpu_addr; in mes_v11_0_set_hw_resources()
722 return mes_v11_0_submit_pkt_and_poll_completion(mes, in mes_v11_0_set_hw_resources()
727 static int mes_v11_0_set_hw_resources_1(struct amdgpu_mes *mes) in mes_v11_0_set_hw_resources_1() argument
737 mes_set_hw_res_pkt.cleaner_shader_fence_mc_addr = mes->resource_1_gpu_addr[0]; in mes_v11_0_set_hw_resources_1()
738 if (amdgpu_sriov_is_mes_info_enable(mes->adev)) { in mes_v11_0_set_hw_resources_1()
740 mes->resource_1_gpu_addr[0] + AMDGPU_GPU_PAGE_SIZE; in mes_v11_0_set_hw_resources_1()
744 return mes_v11_0_submit_pkt_and_poll_completion(mes, in mes_v11_0_set_hw_resources_1()
749 static int mes_v11_0_reset_hw_queue(struct amdgpu_mes *mes, in mes_v11_0_reset_hw_queue() argument
755 return mes_v11_0_reset_queue_mmio(mes, input->queue_type, in mes_v11_0_reset_hw_queue()
781 return mes_v11_0_submit_pkt_and_poll_completion(mes, in mes_v11_0_reset_hw_queue()
806 adev->mes.fw[pipe]->data; in mes_v11_0_allocate_ucode_buffer()
808 fw_data = (const __le32 *)(adev->mes.fw[pipe]->data + in mes_v11_0_allocate_ucode_buffer()
816 &adev->mes.ucode_fw_obj[pipe], in mes_v11_0_allocate_ucode_buffer()
817 &adev->mes.ucode_fw_gpu_addr[pipe], in mes_v11_0_allocate_ucode_buffer()
818 (void **)&adev->mes.ucode_fw_ptr[pipe]); in mes_v11_0_allocate_ucode_buffer()
824 memcpy(adev->mes.ucode_fw_ptr[pipe], fw_data, fw_size); in mes_v11_0_allocate_ucode_buffer()
826 amdgpu_bo_kunmap(adev->mes.ucode_fw_obj[pipe]); in mes_v11_0_allocate_ucode_buffer()
827 amdgpu_bo_unreserve(adev->mes.ucode_fw_obj[pipe]); in mes_v11_0_allocate_ucode_buffer()
841 adev->mes.fw[pipe]->data; in mes_v11_0_allocate_ucode_data_buffer()
843 fw_data = (const __le32 *)(adev->mes.fw[pipe]->data + in mes_v11_0_allocate_ucode_data_buffer()
857 &adev->mes.data_fw_obj[pipe], in mes_v11_0_allocate_ucode_data_buffer()
858 &adev->mes.data_fw_gpu_addr[pipe], in mes_v11_0_allocate_ucode_data_buffer()
859 (void **)&adev->mes.data_fw_ptr[pipe]); in mes_v11_0_allocate_ucode_data_buffer()
865 memcpy(adev->mes.data_fw_ptr[pipe], fw_data, fw_size); in mes_v11_0_allocate_ucode_data_buffer()
867 amdgpu_bo_kunmap(adev->mes.data_fw_obj[pipe]); in mes_v11_0_allocate_ucode_data_buffer()
868 amdgpu_bo_unreserve(adev->mes.data_fw_obj[pipe]); in mes_v11_0_allocate_ucode_data_buffer()
876 amdgpu_bo_free_kernel(&adev->mes.data_fw_obj[pipe], in mes_v11_0_free_ucode_buffers()
877 &adev->mes.data_fw_gpu_addr[pipe], in mes_v11_0_free_ucode_buffers()
878 (void **)&adev->mes.data_fw_ptr[pipe]); in mes_v11_0_free_ucode_buffers()
880 amdgpu_bo_free_kernel(&adev->mes.ucode_fw_obj[pipe], in mes_v11_0_free_ucode_buffers()
881 &adev->mes.ucode_fw_gpu_addr[pipe], in mes_v11_0_free_ucode_buffers()
882 (void **)&adev->mes.ucode_fw_ptr[pipe]); in mes_v11_0_free_ucode_buffers()
890 if (adev->mes.sched_version && adev->mes.kiq_version) in mes_v11_0_get_fw_version()
900 adev->mes.sched_version = in mes_v11_0_get_fw_version()
903 adev->mes.kiq_version = in mes_v11_0_get_fw_version()
919 lower_32_bits(adev->mes.event_log_gpu_addr + AMDGPU_MES_LOG_BUFFER_SIZE)); in mes_v11_0_enable()
921 upper_32_bits(adev->mes.event_log_gpu_addr + AMDGPU_MES_LOG_BUFFER_SIZE)); in mes_v11_0_enable()
941 ucode_addr = adev->mes.uc_start_addr[pipe] >> 2; in mes_v11_0_enable()
984 if (!adev->mes.fw[pipe]) in mes_v11_0_load_microcode()
1004 ucode_addr = adev->mes.uc_start_addr[pipe] >> 2; in mes_v11_0_load_microcode()
1012 lower_32_bits(adev->mes.ucode_fw_gpu_addr[pipe])); in mes_v11_0_load_microcode()
1014 upper_32_bits(adev->mes.ucode_fw_gpu_addr[pipe])); in mes_v11_0_load_microcode()
1021 lower_32_bits(adev->mes.data_fw_gpu_addr[pipe])); in mes_v11_0_load_microcode()
1023 upper_32_bits(adev->mes.data_fw_gpu_addr[pipe])); in mes_v11_0_load_microcode()
1055 &adev->mes.eop_gpu_obj[pipe], in mes_v11_0_allocate_eop_buf()
1056 &adev->mes.eop_gpu_addr[pipe], in mes_v11_0_allocate_eop_buf()
1064 adev->mes.eop_gpu_obj[pipe]->tbo.base.size); in mes_v11_0_allocate_eop_buf()
1066 amdgpu_bo_kunmap(adev->mes.eop_gpu_obj[pipe]); in mes_v11_0_allocate_eop_buf()
1067 amdgpu_bo_unreserve(adev->mes.eop_gpu_obj[pipe]); in mes_v11_0_allocate_eop_buf()
1253 kiq->pmf->kiq_map_queues(kiq_ring, &adev->mes.ring[0]); in mes_v11_0_kiq_enable_queue()
1267 ring = &adev->mes.ring[0]; in mes_v11_0_queue_init()
1297 ring = &adev->mes.ring[0]; in mes_v11_0_ring_init()
1308 ring->eop_gpu_addr = adev->mes.eop_gpu_addr[AMDGPU_MES_SCHED_PIPE]; in mes_v11_0_ring_init()
1332 ring->eop_gpu_addr = adev->mes.eop_gpu_addr[AMDGPU_MES_KIQ_PIPE]; in mes_v11_0_kiq_ring_init()
1350 ring = &adev->mes.ring[0]; in mes_v11_0_mqd_sw_init()
1369 adev->mes.mqd_backup[pipe] = kmalloc(mqd_size, GFP_KERNEL); in mes_v11_0_mqd_sw_init()
1370 if (!adev->mes.mqd_backup[pipe]) { in mes_v11_0_mqd_sw_init()
1385 adev->mes.funcs = &mes_v11_0_funcs; in mes_v11_0_sw_init()
1386 adev->mes.kiq_hw_init = &mes_v11_0_kiq_hw_init; in mes_v11_0_sw_init()
1387 adev->mes.kiq_hw_fini = &mes_v11_0_kiq_hw_fini; in mes_v11_0_sw_init()
1389 adev->mes.event_log_size = AMDGPU_MES_LOG_BUFFER_SIZE + AMDGPU_MES_MSCRATCH_SIZE; in mes_v11_0_sw_init()
1427 &adev->mes.resource_1[0], in mes_v11_0_sw_init()
1428 &adev->mes.resource_1_gpu_addr[0], in mes_v11_0_sw_init()
1429 &adev->mes.resource_1_addr[0]); in mes_v11_0_sw_init()
1443 amdgpu_bo_free_kernel(&adev->mes.resource_1[0], &adev->mes.resource_1_gpu_addr[0], in mes_v11_0_sw_fini()
1444 &adev->mes.resource_1_addr[0]); in mes_v11_0_sw_fini()
1447 kfree(adev->mes.mqd_backup[pipe]); in mes_v11_0_sw_fini()
1449 amdgpu_bo_free_kernel(&adev->mes.eop_gpu_obj[pipe], in mes_v11_0_sw_fini()
1450 &adev->mes.eop_gpu_addr[pipe], in mes_v11_0_sw_fini()
1452 amdgpu_ucode_release(&adev->mes.fw[pipe]); in mes_v11_0_sw_fini()
1459 amdgpu_bo_free_kernel(&adev->mes.ring[0].mqd_obj, in mes_v11_0_sw_fini()
1460 &adev->mes.ring[0].mqd_gpu_addr, in mes_v11_0_sw_fini()
1461 &adev->mes.ring[0].mqd_ptr); in mes_v11_0_sw_fini()
1464 amdgpu_ring_fini(&adev->mes.ring[0]); in mes_v11_0_sw_fini()
1569 if ((adev->mes.sched_version & AMDGPU_MES_VERSION_MASK) >= 0x47) in mes_v11_0_kiq_hw_init()
1570 adev->mes.enable_legacy_queue_map = true; in mes_v11_0_kiq_hw_init()
1572 adev->mes.enable_legacy_queue_map = false; in mes_v11_0_kiq_hw_init()
1574 if (adev->mes.enable_legacy_queue_map) { in mes_v11_0_kiq_hw_init()
1589 if (adev->mes.ring[0].sched.ready) { in mes_v11_0_kiq_hw_fini()
1590 mes_v11_0_kiq_dequeue(&adev->mes.ring[0]); in mes_v11_0_kiq_hw_fini()
1591 adev->mes.ring[0].sched.ready = false; in mes_v11_0_kiq_hw_fini()
1609 if (adev->mes.ring[0].sched.ready) in mes_v11_0_hw_init()
1629 r = mes_v11_0_set_hw_resources(&adev->mes); in mes_v11_0_hw_init()
1633 if ((adev->mes.sched_version & AMDGPU_MES_VERSION_MASK) >= 0x50) { in mes_v11_0_hw_init()
1634 r = mes_v11_0_set_hw_resources_1(&adev->mes); in mes_v11_0_hw_init()
1641 r = mes_v11_0_query_sched_status(&adev->mes); in mes_v11_0_hw_init()
1658 adev->mes.ring[0].sched.ready = true; in mes_v11_0_hw_init()