Lines Matching refs:adev
42 struct amdgpu_device *adev = ring->adev; in amdgpu_sdma_get_instance_from_ring() local
45 for (i = 0; i < adev->sdma.num_instances; i++) in amdgpu_sdma_get_instance_from_ring()
46 if (ring == &adev->sdma.instance[i].ring || in amdgpu_sdma_get_instance_from_ring()
47 ring == &adev->sdma.instance[i].page) in amdgpu_sdma_get_instance_from_ring()
48 return &adev->sdma.instance[i]; in amdgpu_sdma_get_instance_from_ring()
55 struct amdgpu_device *adev = ring->adev; in amdgpu_sdma_get_index_from_ring() local
58 for (i = 0; i < adev->sdma.num_instances; i++) { in amdgpu_sdma_get_index_from_ring()
59 if (ring == &adev->sdma.instance[i].ring || in amdgpu_sdma_get_index_from_ring()
60 ring == &adev->sdma.instance[i].page) { in amdgpu_sdma_get_index_from_ring()
72 struct amdgpu_device *adev = ring->adev; in amdgpu_sdma_get_csa_mc_addr() local
78 if (amdgpu_sriov_vf(adev) || vmid == 0 || !adev->gfx.mcbp) in amdgpu_sdma_get_csa_mc_addr()
86 csa_mc_addr = amdgpu_csa_vaddr(adev) + in amdgpu_sdma_get_csa_mc_addr()
93 int amdgpu_sdma_ras_late_init(struct amdgpu_device *adev, in amdgpu_sdma_ras_late_init() argument
98 r = amdgpu_ras_block_late_init(adev, ras_block); in amdgpu_sdma_ras_late_init()
102 if (amdgpu_ras_is_supported(adev, ras_block->block)) { in amdgpu_sdma_ras_late_init()
103 for (i = 0; i < adev->sdma.num_instances; i++) { in amdgpu_sdma_ras_late_init()
104 r = amdgpu_irq_get(adev, &adev->sdma.ecc_irq, in amdgpu_sdma_ras_late_init()
114 amdgpu_ras_block_late_fini(adev, ras_block); in amdgpu_sdma_ras_late_init()
118 int amdgpu_sdma_process_ras_data_cb(struct amdgpu_device *adev, in amdgpu_sdma_process_ras_data_cb() argument
122 kgd2kfd_set_sram_ecc_flag(adev->kfd.dev); in amdgpu_sdma_process_ras_data_cb()
124 if (amdgpu_sriov_vf(adev)) in amdgpu_sdma_process_ras_data_cb()
127 amdgpu_ras_reset_gpu(adev); in amdgpu_sdma_process_ras_data_cb()
132 int amdgpu_sdma_process_ecc_irq(struct amdgpu_device *adev, in amdgpu_sdma_process_ecc_irq() argument
136 struct ras_common_if *ras_if = adev->sdma.ras_if; in amdgpu_sdma_process_ecc_irq()
146 amdgpu_ras_interrupt_dispatch(adev, &ih_data); in amdgpu_sdma_process_ecc_irq()
188 void amdgpu_sdma_destroy_inst_ctx(struct amdgpu_device *adev, in amdgpu_sdma_destroy_inst_ctx() argument
193 for (i = 0; i < adev->sdma.num_instances; i++) { in amdgpu_sdma_destroy_inst_ctx()
194 amdgpu_ucode_release(&adev->sdma.instance[i].fw); in amdgpu_sdma_destroy_inst_ctx()
199 memset((void *)adev->sdma.instance, 0, in amdgpu_sdma_destroy_inst_ctx()
203 int amdgpu_sdma_init_microcode(struct amdgpu_device *adev, in amdgpu_sdma_init_microcode() argument
214 amdgpu_ucode_ip_version_decode(adev, SDMA0_HWIP, ucode_prefix, sizeof(ucode_prefix)); in amdgpu_sdma_init_microcode()
216 err = amdgpu_ucode_request(adev, &adev->sdma.instance[instance].fw, in amdgpu_sdma_init_microcode()
220 err = amdgpu_ucode_request(adev, &adev->sdma.instance[instance].fw, in amdgpu_sdma_init_microcode()
227 adev->sdma.instance[instance].fw->data; in amdgpu_sdma_init_microcode()
235 err = amdgpu_sdma_init_inst_ctx(&adev->sdma.instance[instance]); in amdgpu_sdma_init_microcode()
240 for (i = 1; i < adev->sdma.num_instances; i++) in amdgpu_sdma_init_microcode()
241 memcpy((void *)&adev->sdma.instance[i], in amdgpu_sdma_init_microcode()
242 (void *)&adev->sdma.instance[0], in amdgpu_sdma_init_microcode()
247 adev->firmware.load_type == AMDGPU_FW_LOAD_PSP ? "true" : "false"); in amdgpu_sdma_init_microcode()
249 if (adev->firmware.load_type == AMDGPU_FW_LOAD_PSP) { in amdgpu_sdma_init_microcode()
252 for (i = 0; i < adev->sdma.num_instances; i++) { in amdgpu_sdma_init_microcode()
258 if ((amdgpu_ip_version(adev, SDMA0_HWIP, 0) == in amdgpu_sdma_init_microcode()
260 amdgpu_ip_version(adev, SDMA0_HWIP, 0) == in amdgpu_sdma_init_microcode()
262 amdgpu_ip_version(adev, SDMA0_HWIP, 0) == in amdgpu_sdma_init_microcode()
264 adev->firmware.load_type == in amdgpu_sdma_init_microcode()
266 adev->sdma.num_inst_per_aid == i) { in amdgpu_sdma_init_microcode()
269 info = &adev->firmware.ucode[AMDGPU_UCODE_ID_SDMA0 + i]; in amdgpu_sdma_init_microcode()
271 info->fw = adev->sdma.instance[i].fw; in amdgpu_sdma_init_microcode()
272 adev->firmware.fw_size += in amdgpu_sdma_init_microcode()
279 adev->sdma.instance[0].fw->data; in amdgpu_sdma_init_microcode()
280 info = &adev->firmware.ucode[AMDGPU_UCODE_ID_SDMA_UCODE_TH0]; in amdgpu_sdma_init_microcode()
282 info->fw = adev->sdma.instance[0].fw; in amdgpu_sdma_init_microcode()
283 adev->firmware.fw_size += in amdgpu_sdma_init_microcode()
285 info = &adev->firmware.ucode[AMDGPU_UCODE_ID_SDMA_UCODE_TH1]; in amdgpu_sdma_init_microcode()
287 info->fw = adev->sdma.instance[0].fw; in amdgpu_sdma_init_microcode()
288 adev->firmware.fw_size += in amdgpu_sdma_init_microcode()
293 adev->sdma.instance[0].fw->data; in amdgpu_sdma_init_microcode()
294 info = &adev->firmware.ucode[AMDGPU_UCODE_ID_SDMA_RS64]; in amdgpu_sdma_init_microcode()
296 info->fw = adev->sdma.instance[0].fw; in amdgpu_sdma_init_microcode()
297 adev->firmware.fw_size += in amdgpu_sdma_init_microcode()
307 amdgpu_sdma_destroy_inst_ctx(adev, duplicate); in amdgpu_sdma_init_microcode()
311 int amdgpu_sdma_ras_sw_init(struct amdgpu_device *adev) in amdgpu_sdma_ras_sw_init() argument
319 if (!adev->sdma.ras) in amdgpu_sdma_ras_sw_init()
322 ras = adev->sdma.ras; in amdgpu_sdma_ras_sw_init()
324 err = amdgpu_ras_register_ras_block(adev, &ras->ras_block); in amdgpu_sdma_ras_sw_init()
326 dev_err(adev->dev, "Failed to register sdma ras block!\n"); in amdgpu_sdma_ras_sw_init()
333 adev->sdma.ras_if = &ras->ras_block.ras_comm; in amdgpu_sdma_ras_sw_init()
352 struct amdgpu_device *adev = (struct amdgpu_device *)data; in amdgpu_debugfs_sdma_sched_mask_set() local
357 if (!adev) in amdgpu_debugfs_sdma_sched_mask_set()
363 if (adev->sdma.has_page_queue) in amdgpu_debugfs_sdma_sched_mask_set()
371 mask = BIT_ULL(adev->sdma.num_instances * num_ring) - 1; in amdgpu_debugfs_sdma_sched_mask_set()
376 for (i = 0; i < adev->sdma.num_instances; ++i) { in amdgpu_debugfs_sdma_sched_mask_set()
377 ring = &adev->sdma.instance[i].ring; in amdgpu_debugfs_sdma_sched_mask_set()
378 if (adev->sdma.has_page_queue) in amdgpu_debugfs_sdma_sched_mask_set()
379 page = &adev->sdma.instance[i].page; in amdgpu_debugfs_sdma_sched_mask_set()
399 struct amdgpu_device *adev = (struct amdgpu_device *)data; in amdgpu_debugfs_sdma_sched_mask_get() local
404 if (!adev) in amdgpu_debugfs_sdma_sched_mask_get()
410 if (adev->sdma.has_page_queue) in amdgpu_debugfs_sdma_sched_mask_get()
415 for (i = 0; i < adev->sdma.num_instances; ++i) { in amdgpu_debugfs_sdma_sched_mask_get()
416 ring = &adev->sdma.instance[i].ring; in amdgpu_debugfs_sdma_sched_mask_get()
417 if (adev->sdma.has_page_queue) in amdgpu_debugfs_sdma_sched_mask_get()
418 page = &adev->sdma.instance[i].page; in amdgpu_debugfs_sdma_sched_mask_get()
443 void amdgpu_debugfs_sdma_sched_mask_init(struct amdgpu_device *adev) in amdgpu_debugfs_sdma_sched_mask_init() argument
446 struct drm_minor *minor = adev_to_drm(adev)->primary; in amdgpu_debugfs_sdma_sched_mask_init()
450 if (!(adev->sdma.num_instances > 1)) in amdgpu_debugfs_sdma_sched_mask_init()
453 debugfs_create_file(name, 0600, root, adev, in amdgpu_debugfs_sdma_sched_mask_init()
463 struct amdgpu_device *adev = drm_to_adev(ddev); in amdgpu_get_sdma_reset_mask() local
465 if (!adev) in amdgpu_get_sdma_reset_mask()
468 return amdgpu_show_reset_mask(buf, adev->sdma.supported_reset); in amdgpu_get_sdma_reset_mask()
474 int amdgpu_sdma_sysfs_reset_mask_init(struct amdgpu_device *adev) in amdgpu_sdma_sysfs_reset_mask_init() argument
481 if (adev->sdma.num_instances) { in amdgpu_sdma_sysfs_reset_mask_init()
482 r = device_create_file(adev->dev, &dev_attr_sdma_reset_mask); in amdgpu_sdma_sysfs_reset_mask_init()
490 void amdgpu_sdma_sysfs_reset_mask_fini(struct amdgpu_device *adev) in amdgpu_sdma_sysfs_reset_mask_fini() argument
495 if (adev->dev->kobj.sd) { in amdgpu_sdma_sysfs_reset_mask_fini()
496 if (adev->sdma.num_instances) in amdgpu_sdma_sysfs_reset_mask_fini()
497 device_remove_file(adev->dev, &dev_attr_sdma_reset_mask); in amdgpu_sdma_sysfs_reset_mask_fini()
501 struct amdgpu_ring *amdgpu_sdma_get_shared_ring(struct amdgpu_device *adev, struct amdgpu_ring *rin… in amdgpu_sdma_get_shared_ring() argument
503 if (adev->sdma.has_page_queue && in amdgpu_sdma_get_shared_ring()
504 (ring->me < adev->sdma.num_instances) && in amdgpu_sdma_get_shared_ring()
505 (ring == &adev->sdma.instance[ring->me].ring)) in amdgpu_sdma_get_shared_ring()
506 return &adev->sdma.instance[ring->me].page; in amdgpu_sdma_get_shared_ring()
519 bool amdgpu_sdma_is_shared_inv_eng(struct amdgpu_device *adev, struct amdgpu_ring *ring) in amdgpu_sdma_is_shared_inv_eng() argument
523 if (!adev->sdma.has_page_queue || i >= adev->sdma.num_instances) in amdgpu_sdma_is_shared_inv_eng()
526 if (amdgpu_ip_version(adev, GC_HWIP, 0) == IP_VERSION(9, 4, 3) || in amdgpu_sdma_is_shared_inv_eng()
527 amdgpu_ip_version(adev, GC_HWIP, 0) == IP_VERSION(9, 4, 4) || in amdgpu_sdma_is_shared_inv_eng()
528 amdgpu_ip_version(adev, GC_HWIP, 0) == IP_VERSION(9, 5, 0)) in amdgpu_sdma_is_shared_inv_eng()
529 return (ring == &adev->sdma.instance[i].page); in amdgpu_sdma_is_shared_inv_eng()
534 static int amdgpu_sdma_soft_reset(struct amdgpu_device *adev, u32 instance_id) in amdgpu_sdma_soft_reset() argument
536 struct amdgpu_sdma_instance *sdma_instance = &adev->sdma.instance[instance_id]; in amdgpu_sdma_soft_reset()
539 return sdma_instance->funcs->soft_reset_kernel_queue(adev, instance_id); in amdgpu_sdma_soft_reset()
553 int amdgpu_sdma_reset_engine(struct amdgpu_device *adev, uint32_t instance_id, in amdgpu_sdma_reset_engine() argument
557 struct amdgpu_sdma_instance *sdma_instance = &adev->sdma.instance[instance_id]; in amdgpu_sdma_reset_engine()
570 if (adev->sdma.has_page_queue) in amdgpu_sdma_reset_engine()
576 if (adev->sdma.has_page_queue) in amdgpu_sdma_reset_engine()
581 ret = amdgpu_sdma_soft_reset(adev, instance_id); in amdgpu_sdma_reset_engine()
583 dev_err(adev->dev, "Failed to reset SDMA logical instance %u\n", instance_id); in amdgpu_sdma_reset_engine()
589 if (adev->sdma.has_page_queue) in amdgpu_sdma_reset_engine()
602 if (adev->sdma.has_page_queue) { in amdgpu_sdma_reset_engine()