Lines Matching refs:pdd
72 struct kfd_process_device *pdd = process->pdds[i]; in kfd_dbg_ev_query_debug_event() local
74 & pdd->exception_status; in kfd_dbg_ev_query_debug_event()
79 *event_status = pdd->exception_status; in kfd_dbg_ev_query_debug_event()
80 *gpu_id = pdd->dev->id; in kfd_dbg_ev_query_debug_event()
81 pdd->exception_status &= ~exception_clear_mask; in kfd_dbg_ev_query_debug_event()
133 struct kfd_process_device *pdd = process->pdds[i]; in kfd_dbg_ev_raise() local
135 if (pdd->dev != dev) in kfd_dbg_ev_raise()
138 pdd->exception_status |= event_mask & KFD_EC_MASK_DEVICE; in kfd_dbg_ev_raise()
141 if (!pdd->vm_fault_exc_data) { in kfd_dbg_ev_raise()
142 pdd->vm_fault_exc_data = kmemdup( in kfd_dbg_ev_raise()
146 if (!pdd->vm_fault_exc_data) in kfd_dbg_ev_raise()
262 struct kfd_process_device *pdd = NULL; in kfd_dbg_send_exception_to_runtime() local
268 pdd = p->pdds[i]; in kfd_dbg_send_exception_to_runtime()
273 if (!pdd) in kfd_dbg_send_exception_to_runtime()
277 pdd->vm_fault_exc_data; in kfd_dbg_send_exception_to_runtime()
279 kfd_dqm_evict_pasid(pdd->dev->dqm, p->pasid); in kfd_dbg_send_exception_to_runtime()
280 kfd_signal_vm_fault_event(pdd->dev, p->pasid, NULL, data); in kfd_dbg_send_exception_to_runtime()
349 int kfd_dbg_set_mes_debug_mode(struct kfd_process_device *pdd, bool sq_trap_en) in kfd_dbg_set_mes_debug_mode() argument
351 uint32_t spi_dbg_cntl = pdd->spi_dbg_override | pdd->spi_dbg_launch_mode; in kfd_dbg_set_mes_debug_mode()
352 uint32_t flags = pdd->process->dbg_flags; in kfd_dbg_set_mes_debug_mode()
354 if (!kfd_dbg_is_per_vmid_supported(pdd->dev)) in kfd_dbg_set_mes_debug_mode()
357 return amdgpu_mes_set_shader_debugger(pdd->dev->adev, pdd->proc_ctx_gpu_addr, spi_dbg_cntl, in kfd_dbg_set_mes_debug_mode()
358 pdd->watch_points, flags, sq_trap_en); in kfd_dbg_set_mes_debug_mode()
362 static int kfd_dbg_get_dev_watch_id(struct kfd_process_device *pdd, int *watch_id) in kfd_dbg_get_dev_watch_id() argument
368 spin_lock(&pdd->dev->watch_points_lock); in kfd_dbg_get_dev_watch_id()
372 if ((pdd->dev->alloc_watch_ids >> i) & 0x1) in kfd_dbg_get_dev_watch_id()
375 pdd->alloc_watch_ids |= 0x1 << i; in kfd_dbg_get_dev_watch_id()
376 pdd->dev->alloc_watch_ids |= 0x1 << i; in kfd_dbg_get_dev_watch_id()
378 spin_unlock(&pdd->dev->watch_points_lock); in kfd_dbg_get_dev_watch_id()
382 spin_unlock(&pdd->dev->watch_points_lock); in kfd_dbg_get_dev_watch_id()
387 static void kfd_dbg_clear_dev_watch_id(struct kfd_process_device *pdd, int watch_id) in kfd_dbg_clear_dev_watch_id() argument
389 spin_lock(&pdd->dev->watch_points_lock); in kfd_dbg_clear_dev_watch_id()
392 if ((pdd->alloc_watch_ids >> watch_id) & 0x1) { in kfd_dbg_clear_dev_watch_id()
393 pdd->alloc_watch_ids &= ~(0x1 << watch_id); in kfd_dbg_clear_dev_watch_id()
394 pdd->dev->alloc_watch_ids &= ~(0x1 << watch_id); in kfd_dbg_clear_dev_watch_id()
397 spin_unlock(&pdd->dev->watch_points_lock); in kfd_dbg_clear_dev_watch_id()
400 static bool kfd_dbg_owns_dev_watch_id(struct kfd_process_device *pdd, int watch_id) in kfd_dbg_owns_dev_watch_id() argument
404 spin_lock(&pdd->dev->watch_points_lock); in kfd_dbg_owns_dev_watch_id()
406 ((pdd->alloc_watch_ids >> watch_id) & 0x1); in kfd_dbg_owns_dev_watch_id()
408 spin_unlock(&pdd->dev->watch_points_lock); in kfd_dbg_owns_dev_watch_id()
413 int kfd_dbg_trap_clear_dev_address_watch(struct kfd_process_device *pdd, in kfd_dbg_trap_clear_dev_address_watch() argument
418 if (!kfd_dbg_owns_dev_watch_id(pdd, watch_id)) in kfd_dbg_trap_clear_dev_address_watch()
421 if (!pdd->dev->kfd->shared_resources.enable_mes) { in kfd_dbg_trap_clear_dev_address_watch()
422 r = debug_lock_and_unmap(pdd->dev->dqm); in kfd_dbg_trap_clear_dev_address_watch()
427 amdgpu_gfx_off_ctrl(pdd->dev->adev, false); in kfd_dbg_trap_clear_dev_address_watch()
428 pdd->watch_points[watch_id] = pdd->dev->kfd2kgd->clear_address_watch( in kfd_dbg_trap_clear_dev_address_watch()
429 pdd->dev->adev, in kfd_dbg_trap_clear_dev_address_watch()
431 amdgpu_gfx_off_ctrl(pdd->dev->adev, true); in kfd_dbg_trap_clear_dev_address_watch()
433 if (!pdd->dev->kfd->shared_resources.enable_mes) in kfd_dbg_trap_clear_dev_address_watch()
434 r = debug_map_and_unlock(pdd->dev->dqm); in kfd_dbg_trap_clear_dev_address_watch()
436 r = kfd_dbg_set_mes_debug_mode(pdd, true); in kfd_dbg_trap_clear_dev_address_watch()
438 kfd_dbg_clear_dev_watch_id(pdd, watch_id); in kfd_dbg_trap_clear_dev_address_watch()
443 int kfd_dbg_trap_set_dev_address_watch(struct kfd_process_device *pdd, in kfd_dbg_trap_set_dev_address_watch() argument
449 int xcc_id, r = kfd_dbg_get_dev_watch_id(pdd, watch_id); in kfd_dbg_trap_set_dev_address_watch()
450 uint32_t xcc_mask = pdd->dev->xcc_mask; in kfd_dbg_trap_set_dev_address_watch()
455 if (!pdd->dev->kfd->shared_resources.enable_mes) { in kfd_dbg_trap_set_dev_address_watch()
456 r = debug_lock_and_unmap(pdd->dev->dqm); in kfd_dbg_trap_set_dev_address_watch()
458 kfd_dbg_clear_dev_watch_id(pdd, *watch_id); in kfd_dbg_trap_set_dev_address_watch()
463 amdgpu_gfx_off_ctrl(pdd->dev->adev, false); in kfd_dbg_trap_set_dev_address_watch()
465 pdd->watch_points[*watch_id] = pdd->dev->kfd2kgd->set_address_watch( in kfd_dbg_trap_set_dev_address_watch()
466 pdd->dev->adev, in kfd_dbg_trap_set_dev_address_watch()
471 pdd->dev->vm_info.last_vmid_kfd, in kfd_dbg_trap_set_dev_address_watch()
473 amdgpu_gfx_off_ctrl(pdd->dev->adev, true); in kfd_dbg_trap_set_dev_address_watch()
475 if (!pdd->dev->kfd->shared_resources.enable_mes) in kfd_dbg_trap_set_dev_address_watch()
476 r = debug_map_and_unlock(pdd->dev->dqm); in kfd_dbg_trap_set_dev_address_watch()
478 r = kfd_dbg_set_mes_debug_mode(pdd, true); in kfd_dbg_trap_set_dev_address_watch()
482 kfd_dbg_clear_dev_watch_id(pdd, *watch_id); in kfd_dbg_trap_set_dev_address_watch()
522 struct kfd_process_device *pdd = target->pdds[i]; in kfd_dbg_trap_set_flags() local
524 if (!kfd_dbg_is_per_vmid_supported(pdd->dev)) in kfd_dbg_trap_set_flags()
527 if (!pdd->dev->kfd->shared_resources.enable_mes) in kfd_dbg_trap_set_flags()
528 r = debug_refresh_runlist(pdd->dev->dqm); in kfd_dbg_trap_set_flags()
530 r = kfd_dbg_set_mes_debug_mode(pdd, true); in kfd_dbg_trap_set_flags()
545 struct kfd_process_device *pdd = target->pdds[i]; in kfd_dbg_trap_set_flags() local
547 if (!kfd_dbg_is_per_vmid_supported(pdd->dev)) in kfd_dbg_trap_set_flags()
550 if (!pdd->dev->kfd->shared_resources.enable_mes) in kfd_dbg_trap_set_flags()
551 debug_refresh_runlist(pdd->dev->dqm); in kfd_dbg_trap_set_flags()
553 kfd_dbg_set_mes_debug_mode(pdd, true); in kfd_dbg_trap_set_flags()
587 struct kfd_process_device *pdd = target->pdds[i]; in kfd_dbg_trap_deactivate() local
596 kfd_process_set_trap_debug_flag(&pdd->qpd, false); in kfd_dbg_trap_deactivate()
599 if (kfd_dbg_is_rlc_restore_supported(pdd->dev)) in kfd_dbg_trap_deactivate()
600 amdgpu_gfx_off_ctrl(pdd->dev->adev, false); in kfd_dbg_trap_deactivate()
601 pdd->spi_dbg_override = in kfd_dbg_trap_deactivate()
602 pdd->dev->kfd2kgd->disable_debug_trap( in kfd_dbg_trap_deactivate()
603 pdd->dev->adev, in kfd_dbg_trap_deactivate()
605 pdd->dev->vm_info.last_vmid_kfd); in kfd_dbg_trap_deactivate()
606 amdgpu_gfx_off_ctrl(pdd->dev->adev, true); in kfd_dbg_trap_deactivate()
608 if (!kfd_dbg_is_per_vmid_supported(pdd->dev) && in kfd_dbg_trap_deactivate()
609 release_debug_trap_vmid(pdd->dev->dqm, &pdd->qpd)) in kfd_dbg_trap_deactivate()
610 pr_err("Failed to release debug vmid on [%i]\n", pdd->dev->id); in kfd_dbg_trap_deactivate()
612 if (!pdd->dev->kfd->shared_resources.enable_mes) in kfd_dbg_trap_deactivate()
613 debug_refresh_runlist(pdd->dev->dqm); in kfd_dbg_trap_deactivate()
615 kfd_dbg_set_mes_debug_mode(pdd, !kfd_dbg_has_cwsr_workaround(pdd->dev)); in kfd_dbg_trap_deactivate()
628 struct kfd_process_device *pdd = target->pdds[i]; in kfd_dbg_clean_exception_status() local
630 kfd_process_drain_interrupts(pdd); in kfd_dbg_clean_exception_status()
632 pdd->exception_status = 0; in kfd_dbg_clean_exception_status()
685 struct kfd_process_device *pdd = target->pdds[i]; in kfd_dbg_trap_activate() local
687 if (!kfd_dbg_is_per_vmid_supported(pdd->dev)) { in kfd_dbg_trap_activate()
688 r = reserve_debug_trap_vmid(pdd->dev->dqm, &pdd->qpd); in kfd_dbg_trap_activate()
706 amdgpu_gfx_off_ctrl(pdd->dev->adev, false); in kfd_dbg_trap_activate()
707 if (!(kfd_dbg_is_rlc_restore_supported(pdd->dev) || in kfd_dbg_trap_activate()
709 pdd->dev->kfd2kgd->enable_debug_trap(pdd->dev->adev, true, in kfd_dbg_trap_activate()
710 pdd->dev->vm_info.last_vmid_kfd); in kfd_dbg_trap_activate()
712 pdd->spi_dbg_override = pdd->dev->kfd2kgd->enable_debug_trap( in kfd_dbg_trap_activate()
713 pdd->dev->adev, in kfd_dbg_trap_activate()
715 pdd->dev->vm_info.last_vmid_kfd); in kfd_dbg_trap_activate()
717 if (kfd_dbg_is_rlc_restore_supported(pdd->dev)) in kfd_dbg_trap_activate()
718 amdgpu_gfx_off_ctrl(pdd->dev->adev, true); in kfd_dbg_trap_activate()
727 kfd_process_set_trap_debug_flag(&pdd->qpd, true); in kfd_dbg_trap_activate()
729 if (!pdd->dev->kfd->shared_resources.enable_mes) in kfd_dbg_trap_activate()
730 r = debug_refresh_runlist(pdd->dev->dqm); in kfd_dbg_trap_activate()
732 r = kfd_dbg_set_mes_debug_mode(pdd, true); in kfd_dbg_trap_activate()
763 struct kfd_process_device *pdd = target->pdds[i]; in kfd_dbg_trap_enable() local
765 if (!KFD_IS_SOC15(pdd->dev)) in kfd_dbg_trap_enable()
768 if (pdd->qpd.num_gws && (!kfd_dbg_has_gws_support(pdd->dev) || in kfd_dbg_trap_enable()
769 kfd_dbg_has_cwsr_workaround(pdd->dev))) in kfd_dbg_trap_enable()
816 struct kfd_process_device *pdd = p->pdds[i]; in kfd_dbg_validate_trap_override_request() local
817 int err = pdd->dev->kfd2kgd->validate_trap_override_request( in kfd_dbg_validate_trap_override_request()
818 pdd->dev->adev, in kfd_dbg_validate_trap_override_request()
850 struct kfd_process_device *pdd = target->pdds[i]; in kfd_dbg_trap_set_wave_launch_override() local
852 amdgpu_gfx_off_ctrl(pdd->dev->adev, false); in kfd_dbg_trap_set_wave_launch_override()
853 pdd->spi_dbg_override = pdd->dev->kfd2kgd->set_wave_launch_trap_override( in kfd_dbg_trap_set_wave_launch_override()
854 pdd->dev->adev, in kfd_dbg_trap_set_wave_launch_override()
855 pdd->dev->vm_info.last_vmid_kfd, in kfd_dbg_trap_set_wave_launch_override()
860 pdd->spi_dbg_override); in kfd_dbg_trap_set_wave_launch_override()
861 amdgpu_gfx_off_ctrl(pdd->dev->adev, true); in kfd_dbg_trap_set_wave_launch_override()
863 if (!pdd->dev->kfd->shared_resources.enable_mes) in kfd_dbg_trap_set_wave_launch_override()
864 r = debug_refresh_runlist(pdd->dev->dqm); in kfd_dbg_trap_set_wave_launch_override()
866 r = kfd_dbg_set_mes_debug_mode(pdd, true); in kfd_dbg_trap_set_wave_launch_override()
886 struct kfd_process_device *pdd = target->pdds[i]; in kfd_dbg_trap_set_wave_launch_mode() local
888 amdgpu_gfx_off_ctrl(pdd->dev->adev, false); in kfd_dbg_trap_set_wave_launch_mode()
889 pdd->spi_dbg_launch_mode = pdd->dev->kfd2kgd->set_wave_launch_mode( in kfd_dbg_trap_set_wave_launch_mode()
890 pdd->dev->adev, in kfd_dbg_trap_set_wave_launch_mode()
892 pdd->dev->vm_info.last_vmid_kfd); in kfd_dbg_trap_set_wave_launch_mode()
893 amdgpu_gfx_off_ctrl(pdd->dev->adev, true); in kfd_dbg_trap_set_wave_launch_mode()
895 if (!pdd->dev->kfd->shared_resources.enable_mes) in kfd_dbg_trap_set_wave_launch_mode()
896 r = debug_refresh_runlist(pdd->dev->dqm); in kfd_dbg_trap_set_wave_launch_mode()
898 r = kfd_dbg_set_mes_debug_mode(pdd, true); in kfd_dbg_trap_set_wave_launch_mode()
933 struct kfd_process_device *pdd = target->pdds[i]; in kfd_dbg_trap_query_exception_info() local
934 struct qcm_process_device *qpd = &pdd->qpd; in kfd_dbg_trap_query_exception_info()
958 struct kfd_process_device *pdd = NULL; in kfd_dbg_trap_query_exception_info() local
962 pdd = target->pdds[i]; in kfd_dbg_trap_query_exception_info()
963 if (pdd->dev->id == source_id) { in kfd_dbg_trap_query_exception_info()
974 if (!(pdd->exception_status & KFD_EC_MASK(exception_code))) { in kfd_dbg_trap_query_exception_info()
980 copy_size = min((size_t)(*info_size), pdd->vm_fault_exc_data_size); in kfd_dbg_trap_query_exception_info()
982 if (copy_to_user(info, pdd->vm_fault_exc_data, copy_size)) { in kfd_dbg_trap_query_exception_info()
986 actual_info_size = pdd->vm_fault_exc_data_size; in kfd_dbg_trap_query_exception_info()
988 kfree(pdd->vm_fault_exc_data); in kfd_dbg_trap_query_exception_info()
989 pdd->vm_fault_exc_data = NULL; in kfd_dbg_trap_query_exception_info()
990 pdd->vm_fault_exc_data_size = 0; in kfd_dbg_trap_query_exception_info()
993 exception_status_ptr = &pdd->exception_status; in kfd_dbg_trap_query_exception_info()
1055 struct kfd_process_device *pdd = target->pdds[i]; in kfd_dbg_trap_device_snapshot() local
1056 struct kfd_topology_device *topo_dev = kfd_topology_device_by_id(pdd->dev->id); in kfd_dbg_trap_device_snapshot()
1058 device_info.gpu_id = pdd->dev->id; in kfd_dbg_trap_device_snapshot()
1059 device_info.exception_status = pdd->exception_status; in kfd_dbg_trap_device_snapshot()
1060 device_info.lds_base = pdd->lds_base; in kfd_dbg_trap_device_snapshot()
1061 device_info.lds_limit = pdd->lds_limit; in kfd_dbg_trap_device_snapshot()
1062 device_info.scratch_base = pdd->scratch_base; in kfd_dbg_trap_device_snapshot()
1063 device_info.scratch_limit = pdd->scratch_limit; in kfd_dbg_trap_device_snapshot()
1064 device_info.gpuvm_base = pdd->gpuvm_base; in kfd_dbg_trap_device_snapshot()
1065 device_info.gpuvm_limit = pdd->gpuvm_limit; in kfd_dbg_trap_device_snapshot()
1069 device_info.revision_id = pdd->dev->adev->pdev->revision; in kfd_dbg_trap_device_snapshot()
1070 device_info.subsystem_vendor_id = pdd->dev->adev->pdev->subsystem_vendor; in kfd_dbg_trap_device_snapshot()
1071 device_info.subsystem_device_id = pdd->dev->adev->pdev->subsystem_device; in kfd_dbg_trap_device_snapshot()
1072 device_info.fw_version = pdd->dev->kfd->mec_fw_version; in kfd_dbg_trap_device_snapshot()
1081 device_info.num_xcc = NUM_XCC(pdd->dev->xcc_mask); in kfd_dbg_trap_device_snapshot()
1086 pdd->exception_status &= ~exception_clear_mask; in kfd_dbg_trap_device_snapshot()
1124 struct kfd_process_device *pdd = target->pdds[i]; in kfd_dbg_set_enabled_debug_exception_mask() local
1126 found_mask |= pdd->exception_status; in kfd_dbg_set_enabled_debug_exception_mask()