Lines Matching full:sdma

554 	for (i = 0; i < adev->sdma.num_instances; i++) {  in sdma_v4_0_setup_ulv()
586 for (i = 0; i < adev->sdma.num_instances; i++) { in sdma_v4_0_destroy_inst_ctx()
587 release_firmware(adev->sdma.instance[i].fw); in sdma_v4_0_destroy_inst_ctx()
588 adev->sdma.instance[i].fw = NULL; in sdma_v4_0_destroy_inst_ctx()
591 all SDMA isntances */ in sdma_v4_0_destroy_inst_ctx()
597 memset((void *)adev->sdma.instance, 0, in sdma_v4_0_destroy_inst_ctx()
659 err = request_firmware(&adev->sdma.instance[0].fw, fw_name, adev->dev); in sdma_v4_0_init_microcode()
663 err = sdma_v4_0_init_inst_ctx(&adev->sdma.instance[0]); in sdma_v4_0_init_microcode()
667 for (i = 1; i < adev->sdma.num_instances; i++) { in sdma_v4_0_init_microcode()
671 for every SDMA instance */ in sdma_v4_0_init_microcode()
672 memcpy((void *)&adev->sdma.instance[i], in sdma_v4_0_init_microcode()
673 (void *)&adev->sdma.instance[0], in sdma_v4_0_init_microcode()
679 err = request_firmware(&adev->sdma.instance[i].fw, fw_name, adev->dev); in sdma_v4_0_init_microcode()
683 err = sdma_v4_0_init_inst_ctx(&adev->sdma.instance[i]); in sdma_v4_0_init_microcode()
693 for (i = 0; i < adev->sdma.num_instances; i++) { in sdma_v4_0_init_microcode()
696 info->fw = adev->sdma.instance[i].fw; in sdma_v4_0_init_microcode()
851 struct amdgpu_sdma_instance *sdma = amdgpu_sdma_get_instance_from_ring(ring); in sdma_v4_0_ring_insert_nop() local
855 if (sdma && sdma->burst_nop && (i == 0)) in sdma_v4_0_ring_insert_nop()
989 struct amdgpu_ring *sdma[AMDGPU_MAX_SDMA_INSTANCES]; in sdma_v4_0_gfx_stop() local
993 for (i = 0; i < adev->sdma.num_instances; i++) { in sdma_v4_0_gfx_stop()
994 sdma[i] = &adev->sdma.instance[i].ring; in sdma_v4_0_gfx_stop()
996 if ((adev->mman.buffer_funcs_ring == sdma[i]) && unset != 1) { in sdma_v4_0_gfx_stop()
1031 struct amdgpu_ring *sdma[AMDGPU_MAX_SDMA_INSTANCES]; in sdma_v4_0_page_stop() local
1036 for (i = 0; i < adev->sdma.num_instances; i++) { in sdma_v4_0_page_stop()
1037 sdma[i] = &adev->sdma.instance[i].page; in sdma_v4_0_page_stop()
1039 if ((adev->mman.buffer_funcs_ring == sdma[i]) && in sdma_v4_0_page_stop()
1093 for (i = 0; i < adev->sdma.num_instances; i++) { in sdma_v4_0_ctx_switch_enable()
1105 * Enable SDMA utilization. Its only supported on in sdma_v4_0_ctx_switch_enable()
1110 adev->sdma.instance[i].fw_version >= 14) in sdma_v4_0_ctx_switch_enable()
1134 if (adev->sdma.has_page_queue) in sdma_v4_0_enable()
1138 for (i = 0; i < adev->sdma.num_instances; i++) { in sdma_v4_0_enable()
1173 struct amdgpu_ring *ring = &adev->sdma.instance[i].ring; in sdma_v4_0_gfx_resume()
1263 struct amdgpu_ring *ring = &adev->sdma.instance[i].page; in sdma_v4_0_page_resume()
1423 * sdma_v4_0_load_microcode - load the sDMA ME ucode
1440 for (i = 0; i < adev->sdma.num_instances; i++) { in sdma_v4_0_load_microcode()
1441 if (!adev->sdma.instance[i].fw) in sdma_v4_0_load_microcode()
1444 hdr = (const struct sdma_firmware_header_v1_0 *)adev->sdma.instance[i].fw->data; in sdma_v4_0_load_microcode()
1449 (adev->sdma.instance[i].fw->data + in sdma_v4_0_load_microcode()
1459 adev->sdma.instance[i].fw_version); in sdma_v4_0_load_microcode()
1491 /* enable sdma ring preemption */ in sdma_v4_0_start()
1496 for (i = 0; i < adev->sdma.num_instances; i++) { in sdma_v4_0_start()
1501 if (adev->sdma.has_page_queue) in sdma_v4_0_start()
1526 for (i = 0; i < adev->sdma.num_instances; i++) { in sdma_v4_0_start()
1527 ring = &adev->sdma.instance[i].ring; in sdma_v4_0_start()
1533 if (adev->sdma.has_page_queue) { in sdma_v4_0_start()
1534 struct amdgpu_ring *page = &adev->sdma.instance[i].page; in sdma_v4_0_start()
1681 * Update PTEs by copying them from the GART using sDMA (VEGA10).
1709 * Update PTEs by writing them manually using sDMA (VEGA10).
1730 * sdma_v4_0_vm_set_pte_pde - update the page tables using sDMA
1739 * Update the page tables using sDMA (VEGA10).
1767 struct amdgpu_sdma_instance *sdma = amdgpu_sdma_get_instance_from_ring(ring); in sdma_v4_0_ring_pad_ib() local
1773 if (sdma && sdma->burst_nop && (i == 0)) in sdma_v4_0_ring_pad_ib()
1804 * sdma_v4_0_ring_emit_vm_flush - vm flush using sDMA
1811 * using sDMA (VEGA10).
1836 uint fw_version = adev->sdma.instance[0].fw_version; in sdma_v4_0_fw_support_paging_queue()
1857 adev->sdma.num_instances = 1; in sdma_v4_0_early_init()
1859 adev->sdma.num_instances = 8; in sdma_v4_0_early_init()
1861 adev->sdma.num_instances = 5; in sdma_v4_0_early_init()
1863 adev->sdma.num_instances = 2; in sdma_v4_0_early_init()
1867 DRM_ERROR("Failed to load sdma firmware!\n"); in sdma_v4_0_early_init()
1873 adev->sdma.has_page_queue = false; in sdma_v4_0_early_init()
1875 adev->sdma.has_page_queue = true; in sdma_v4_0_early_init()
1900 if (adev->sdma.funcs && in sdma_v4_0_late_init()
1901 adev->sdma.funcs->reset_ras_error_count) in sdma_v4_0_late_init()
1902 adev->sdma.funcs->reset_ras_error_count(adev); in sdma_v4_0_late_init()
1905 if (adev->sdma.funcs && adev->sdma.funcs->ras_late_init) in sdma_v4_0_late_init()
1906 return adev->sdma.funcs->ras_late_init(adev, &ih_info); in sdma_v4_0_late_init()
1917 /* SDMA trap event */ in sdma_v4_0_sw_init()
1918 for (i = 0; i < adev->sdma.num_instances; i++) { in sdma_v4_0_sw_init()
1921 &adev->sdma.trap_irq); in sdma_v4_0_sw_init()
1926 /* SDMA SRAM ECC event */ in sdma_v4_0_sw_init()
1927 for (i = 0; i < adev->sdma.num_instances; i++) { in sdma_v4_0_sw_init()
1930 &adev->sdma.ecc_irq); in sdma_v4_0_sw_init()
1935 /* SDMA VM_HOLE/DOORBELL_INV/POLL_TIMEOUT/SRBM_WRITE_PROTECTION event*/ in sdma_v4_0_sw_init()
1936 for (i = 0; i < adev->sdma.num_instances; i++) { in sdma_v4_0_sw_init()
1939 &adev->sdma.vm_hole_irq); in sdma_v4_0_sw_init()
1945 &adev->sdma.doorbell_invalid_irq); in sdma_v4_0_sw_init()
1951 &adev->sdma.pool_timeout_irq); in sdma_v4_0_sw_init()
1957 &adev->sdma.srbm_write_irq); in sdma_v4_0_sw_init()
1962 for (i = 0; i < adev->sdma.num_instances; i++) { in sdma_v4_0_sw_init()
1963 ring = &adev->sdma.instance[i].ring; in sdma_v4_0_sw_init()
1967 DRM_DEBUG("SDMA %d use_doorbell being set to: [%s]\n", i, in sdma_v4_0_sw_init()
1973 sprintf(ring->name, "sdma%d", i); in sdma_v4_0_sw_init()
1974 r = amdgpu_ring_init(adev, ring, 1024, &adev->sdma.trap_irq, in sdma_v4_0_sw_init()
1980 if (adev->sdma.has_page_queue) { in sdma_v4_0_sw_init()
1981 ring = &adev->sdma.instance[i].page; in sdma_v4_0_sw_init()
1993 &adev->sdma.trap_irq, in sdma_v4_0_sw_init()
2009 if (adev->sdma.funcs && adev->sdma.funcs->ras_fini) in sdma_v4_0_sw_fini()
2010 adev->sdma.funcs->ras_fini(adev); in sdma_v4_0_sw_fini()
2012 for (i = 0; i < adev->sdma.num_instances; i++) { in sdma_v4_0_sw_fini()
2013 amdgpu_ring_fini(&adev->sdma.instance[i].ring); in sdma_v4_0_sw_fini()
2014 if (adev->sdma.has_page_queue) in sdma_v4_0_sw_fini()
2015 amdgpu_ring_fini(&adev->sdma.instance[i].page); in sdma_v4_0_sw_fini()
2047 for (i = 0; i < adev->sdma.num_instances; i++) { in sdma_v4_0_hw_fini()
2048 amdgpu_irq_put(adev, &adev->sdma.ecc_irq, in sdma_v4_0_hw_fini()
2080 for (i = 0; i < adev->sdma.num_instances; i++) { in sdma_v4_0_is_idle()
2093 u32 sdma[AMDGPU_MAX_SDMA_INSTANCES]; in sdma_v4_0_wait_for_idle() local
2097 for (j = 0; j < adev->sdma.num_instances; j++) { in sdma_v4_0_wait_for_idle()
2098 sdma[j] = RREG32_SDMA(j, mmSDMA0_STATUS_REG); in sdma_v4_0_wait_for_idle()
2099 if (!(sdma[j] & SDMA0_STATUS_REG__IDLE_MASK)) in sdma_v4_0_wait_for_idle()
2102 if (j == adev->sdma.num_instances) in sdma_v4_0_wait_for_idle()
2137 DRM_DEBUG("IH: SDMA trap\n"); in sdma_v4_0_process_trap_irq()
2141 amdgpu_fence_process(&adev->sdma.instance[instance].ring); in sdma_v4_0_process_trap_irq()
2145 amdgpu_fence_process(&adev->sdma.instance[instance].page); in sdma_v4_0_process_trap_irq()
2152 amdgpu_fence_process(&adev->sdma.instance[instance].page); in sdma_v4_0_process_trap_irq()
2187 DRM_ERROR("Illegal instruction in SDMA command stream\n"); in sdma_v4_0_process_illegal_inst_irq()
2195 drm_sched_fault(&adev->sdma.instance[instance].ring.sched); in sdma_v4_0_process_illegal_inst_irq()
2224 if (instance < 0 || instance >= adev->sdma.num_instances) { in sdma_v4_0_print_iv_entry()
2225 dev_err(adev->dev, "sdma instance invalid %d\n", instance); in sdma_v4_0_print_iv_entry()
2236 "[sdma%d] address:0x%016llx src_id:%u ring:%u vmid:%u " in sdma_v4_0_print_iv_entry()
2257 dev_dbg_ratelimited(adev->dev, "SDMA received a doorbell from BIF with byte_enable !=0xff\n"); in sdma_v4_0_process_doorbell_invalid_irq()
2277 "SDMA gets an Register Write SRBM_WRITE command in non-privilege command buffer\n"); in sdma_v4_0_process_srbm_write_irq()
2290 for (i = 0; i < adev->sdma.num_instances; i++) { in sdma_v4_0_update_medium_grain_clock_gating()
2304 for (i = 0; i < adev->sdma.num_instances; i++) { in sdma_v4_0_update_medium_grain_clock_gating()
2329 for (i = 0; i < adev->sdma.num_instances; i++) { in sdma_v4_0_update_medium_grain_light_sleep()
2330 /* 1-not override: enable sdma mem light sleep */ in sdma_v4_0_update_medium_grain_light_sleep()
2337 for (i = 0; i < adev->sdma.num_instances; i++) { in sdma_v4_0_update_medium_grain_light_sleep()
2338 /* 0-override:disable sdma mem light sleep */ in sdma_v4_0_update_medium_grain_light_sleep()
2450 * On Arcturus, SDMA instance 5~7 has a different vmhub type(AMDGPU_MMHUB_1).
2553 for (i = 0; i < adev->sdma.num_instances; i++) { in sdma_v4_0_set_ring_funcs()
2555 adev->sdma.instance[i].ring.funcs = in sdma_v4_0_set_ring_funcs()
2558 adev->sdma.instance[i].ring.funcs = in sdma_v4_0_set_ring_funcs()
2560 adev->sdma.instance[i].ring.me = i; in sdma_v4_0_set_ring_funcs()
2561 if (adev->sdma.has_page_queue) { in sdma_v4_0_set_ring_funcs()
2563 adev->sdma.instance[i].page.funcs = in sdma_v4_0_set_ring_funcs()
2566 adev->sdma.instance[i].page.funcs = in sdma_v4_0_set_ring_funcs()
2568 adev->sdma.instance[i].page.me = i; in sdma_v4_0_set_ring_funcs()
2605 adev->sdma.trap_irq.num_types = adev->sdma.num_instances; in sdma_v4_0_set_irq_funcs()
2606 adev->sdma.ecc_irq.num_types = adev->sdma.num_instances; in sdma_v4_0_set_irq_funcs()
2608 switch (adev->sdma.num_instances) { in sdma_v4_0_set_irq_funcs()
2611 adev->sdma.vm_hole_irq.num_types = adev->sdma.num_instances; in sdma_v4_0_set_irq_funcs()
2612 adev->sdma.doorbell_invalid_irq.num_types = adev->sdma.num_instances; in sdma_v4_0_set_irq_funcs()
2613 adev->sdma.pool_timeout_irq.num_types = adev->sdma.num_instances; in sdma_v4_0_set_irq_funcs()
2614 adev->sdma.srbm_write_irq.num_types = adev->sdma.num_instances; in sdma_v4_0_set_irq_funcs()
2619 adev->sdma.trap_irq.funcs = &sdma_v4_0_trap_irq_funcs; in sdma_v4_0_set_irq_funcs()
2620 adev->sdma.illegal_inst_irq.funcs = &sdma_v4_0_illegal_inst_irq_funcs; in sdma_v4_0_set_irq_funcs()
2621 adev->sdma.ecc_irq.funcs = &sdma_v4_0_ecc_irq_funcs; in sdma_v4_0_set_irq_funcs()
2622 adev->sdma.vm_hole_irq.funcs = &sdma_v4_0_vm_hole_irq_funcs; in sdma_v4_0_set_irq_funcs()
2623 adev->sdma.doorbell_invalid_irq.funcs = &sdma_v4_0_doorbell_invalid_irq_funcs; in sdma_v4_0_set_irq_funcs()
2624 adev->sdma.pool_timeout_irq.funcs = &sdma_v4_0_pool_timeout_irq_funcs; in sdma_v4_0_set_irq_funcs()
2625 adev->sdma.srbm_write_irq.funcs = &sdma_v4_0_srbm_write_irq_funcs; in sdma_v4_0_set_irq_funcs()
2629 * sdma_v4_0_emit_copy_buffer - copy buffer using the sDMA engine
2659 * sdma_v4_0_emit_fill_buffer - fill buffer using the sDMA engine
2693 if (adev->sdma.has_page_queue) in sdma_v4_0_set_buffer_funcs()
2694 adev->mman.buffer_funcs_ring = &adev->sdma.instance[0].page; in sdma_v4_0_set_buffer_funcs()
2696 adev->mman.buffer_funcs_ring = &adev->sdma.instance[0].ring; in sdma_v4_0_set_buffer_funcs()
2713 for (i = 0; i < adev->sdma.num_instances; i++) { in sdma_v4_0_set_vm_pte_funcs()
2714 if (adev->sdma.has_page_queue) in sdma_v4_0_set_vm_pte_funcs()
2715 sched = &adev->sdma.instance[i].page.sched; in sdma_v4_0_set_vm_pte_funcs()
2717 sched = &adev->sdma.instance[i].ring.sched; in sdma_v4_0_set_vm_pte_funcs()
2720 adev->vm_manager.vm_pte_num_scheds = adev->sdma.num_instances; in sdma_v4_0_set_vm_pte_funcs()
2732 /* the SDMA_EDC_COUNTER register in each sdma instance in sdma_v4_0_get_ras_error_count()
2739 DRM_INFO("Detected %s in SDMA%d, SED %d\n", in sdma_v4_0_get_ras_error_count()
2775 for (i = 0; i < adev->sdma.num_instances; i++) in sdma_v4_0_reset_ras_error_count()
2792 adev->sdma.funcs = &sdma_v4_0_ras_funcs; in sdma_v4_0_set_ras_funcs()
2795 adev->sdma.funcs = &sdma_v4_4_ras_funcs; in sdma_v4_0_set_ras_funcs()