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()
207 struct kfd_process_device *pdd = NULL; in kfd_set_dbg_ev_from_interrupt() local
210 p = kfd_lookup_process_by_pasid(pasid, &pdd); in kfd_set_dbg_ev_from_interrupt()
212 if (!pdd) in kfd_set_dbg_ev_from_interrupt()
242 kfd_evict_process_device(pdd); in kfd_set_dbg_ev_from_interrupt()
243 kfd_signal_vm_fault_event(pdd, NULL, exception_data); in kfd_set_dbg_ev_from_interrupt()
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_evict_process_device(pdd); in kfd_dbg_send_exception_to_runtime()
280 kfd_signal_vm_fault_event(pdd, 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()
353 struct amdgpu_device *adev = pdd->dev->adev; in kfd_dbg_set_mes_debug_mode()
356 if (!kfd_dbg_is_per_vmid_supported(pdd->dev)) in kfd_dbg_set_mes_debug_mode()
359 if (!pdd->proc_ctx_cpu_ptr) { in kfd_dbg_set_mes_debug_mode()
362 &pdd->proc_ctx_bo, in kfd_dbg_set_mes_debug_mode()
363 &pdd->proc_ctx_gpu_addr, in kfd_dbg_set_mes_debug_mode()
364 &pdd->proc_ctx_cpu_ptr, in kfd_dbg_set_mes_debug_mode()
371 memset(pdd->proc_ctx_cpu_ptr, 0, AMDGPU_MES_PROC_CTX_SIZE); in kfd_dbg_set_mes_debug_mode()
374 return amdgpu_mes_set_shader_debugger(pdd->dev->adev, pdd->proc_ctx_gpu_addr, spi_dbg_cntl, in kfd_dbg_set_mes_debug_mode()
375 pdd->watch_points, flags, sq_trap_en); in kfd_dbg_set_mes_debug_mode()
379 static int kfd_dbg_get_dev_watch_id(struct kfd_process_device *pdd, int *watch_id) in kfd_dbg_get_dev_watch_id() argument
385 spin_lock(&pdd->dev->watch_points_lock); in kfd_dbg_get_dev_watch_id()
389 if ((pdd->dev->alloc_watch_ids >> i) & 0x1) in kfd_dbg_get_dev_watch_id()
392 pdd->alloc_watch_ids |= 0x1 << i; in kfd_dbg_get_dev_watch_id()
393 pdd->dev->alloc_watch_ids |= 0x1 << i; in kfd_dbg_get_dev_watch_id()
395 spin_unlock(&pdd->dev->watch_points_lock); in kfd_dbg_get_dev_watch_id()
399 spin_unlock(&pdd->dev->watch_points_lock); in kfd_dbg_get_dev_watch_id()
404 static void kfd_dbg_clear_dev_watch_id(struct kfd_process_device *pdd, int watch_id) in kfd_dbg_clear_dev_watch_id() argument
406 spin_lock(&pdd->dev->watch_points_lock); in kfd_dbg_clear_dev_watch_id()
409 if ((pdd->alloc_watch_ids >> watch_id) & 0x1) { in kfd_dbg_clear_dev_watch_id()
410 pdd->alloc_watch_ids &= ~(0x1 << watch_id); in kfd_dbg_clear_dev_watch_id()
411 pdd->dev->alloc_watch_ids &= ~(0x1 << watch_id); in kfd_dbg_clear_dev_watch_id()
414 spin_unlock(&pdd->dev->watch_points_lock); in kfd_dbg_clear_dev_watch_id()
417 static bool kfd_dbg_owns_dev_watch_id(struct kfd_process_device *pdd, int watch_id) in kfd_dbg_owns_dev_watch_id() argument
421 spin_lock(&pdd->dev->watch_points_lock); in kfd_dbg_owns_dev_watch_id()
423 ((pdd->alloc_watch_ids >> watch_id) & 0x1); in kfd_dbg_owns_dev_watch_id()
425 spin_unlock(&pdd->dev->watch_points_lock); in kfd_dbg_owns_dev_watch_id()
430 int kfd_dbg_trap_clear_dev_address_watch(struct kfd_process_device *pdd, in kfd_dbg_trap_clear_dev_address_watch() argument
435 if (!kfd_dbg_owns_dev_watch_id(pdd, watch_id)) in kfd_dbg_trap_clear_dev_address_watch()
438 if (!pdd->dev->kfd->shared_resources.enable_mes) { in kfd_dbg_trap_clear_dev_address_watch()
439 r = debug_lock_and_unmap(pdd->dev->dqm); in kfd_dbg_trap_clear_dev_address_watch()
444 amdgpu_gfx_off_ctrl(pdd->dev->adev, false); in kfd_dbg_trap_clear_dev_address_watch()
445 pdd->watch_points[watch_id] = pdd->dev->kfd2kgd->clear_address_watch( in kfd_dbg_trap_clear_dev_address_watch()
446 pdd->dev->adev, in kfd_dbg_trap_clear_dev_address_watch()
448 amdgpu_gfx_off_ctrl(pdd->dev->adev, true); in kfd_dbg_trap_clear_dev_address_watch()
450 if (!pdd->dev->kfd->shared_resources.enable_mes) in kfd_dbg_trap_clear_dev_address_watch()
451 r = debug_map_and_unlock(pdd->dev->dqm); in kfd_dbg_trap_clear_dev_address_watch()
453 r = kfd_dbg_set_mes_debug_mode(pdd, true); in kfd_dbg_trap_clear_dev_address_watch()
455 kfd_dbg_clear_dev_watch_id(pdd, watch_id); in kfd_dbg_trap_clear_dev_address_watch()
460 int kfd_dbg_trap_set_dev_address_watch(struct kfd_process_device *pdd, in kfd_dbg_trap_set_dev_address_watch() argument
466 int xcc_id, r = kfd_dbg_get_dev_watch_id(pdd, watch_id); in kfd_dbg_trap_set_dev_address_watch()
467 uint32_t xcc_mask = pdd->dev->xcc_mask; in kfd_dbg_trap_set_dev_address_watch()
472 if (!pdd->dev->kfd->shared_resources.enable_mes) { in kfd_dbg_trap_set_dev_address_watch()
473 r = debug_lock_and_unmap(pdd->dev->dqm); in kfd_dbg_trap_set_dev_address_watch()
475 kfd_dbg_clear_dev_watch_id(pdd, *watch_id); in kfd_dbg_trap_set_dev_address_watch()
480 amdgpu_gfx_off_ctrl(pdd->dev->adev, false); in kfd_dbg_trap_set_dev_address_watch()
482 pdd->watch_points[*watch_id] = pdd->dev->kfd2kgd->set_address_watch( in kfd_dbg_trap_set_dev_address_watch()
483 pdd->dev->adev, in kfd_dbg_trap_set_dev_address_watch()
488 pdd->dev->vm_info.last_vmid_kfd, in kfd_dbg_trap_set_dev_address_watch()
490 amdgpu_gfx_off_ctrl(pdd->dev->adev, true); in kfd_dbg_trap_set_dev_address_watch()
492 if (!pdd->dev->kfd->shared_resources.enable_mes) in kfd_dbg_trap_set_dev_address_watch()
493 r = debug_map_and_unlock(pdd->dev->dqm); in kfd_dbg_trap_set_dev_address_watch()
495 r = kfd_dbg_set_mes_debug_mode(pdd, true); in kfd_dbg_trap_set_dev_address_watch()
499 kfd_dbg_clear_dev_watch_id(pdd, *watch_id); in kfd_dbg_trap_set_dev_address_watch()
539 struct kfd_process_device *pdd = target->pdds[i]; in kfd_dbg_trap_set_flags() local
541 if (!kfd_dbg_is_per_vmid_supported(pdd->dev)) in kfd_dbg_trap_set_flags()
544 if (!pdd->dev->kfd->shared_resources.enable_mes) in kfd_dbg_trap_set_flags()
545 r = debug_refresh_runlist(pdd->dev->dqm); in kfd_dbg_trap_set_flags()
547 r = kfd_dbg_set_mes_debug_mode(pdd, true); in kfd_dbg_trap_set_flags()
562 struct kfd_process_device *pdd = target->pdds[i]; in kfd_dbg_trap_set_flags() local
564 if (!kfd_dbg_is_per_vmid_supported(pdd->dev)) in kfd_dbg_trap_set_flags()
567 if (!pdd->dev->kfd->shared_resources.enable_mes) in kfd_dbg_trap_set_flags()
568 debug_refresh_runlist(pdd->dev->dqm); in kfd_dbg_trap_set_flags()
570 kfd_dbg_set_mes_debug_mode(pdd, true); in kfd_dbg_trap_set_flags()
604 struct kfd_process_device *pdd = target->pdds[i]; in kfd_dbg_trap_deactivate() local
613 kfd_process_set_trap_debug_flag(&pdd->qpd, false); in kfd_dbg_trap_deactivate()
616 if (kfd_dbg_is_rlc_restore_supported(pdd->dev)) in kfd_dbg_trap_deactivate()
617 amdgpu_gfx_off_ctrl(pdd->dev->adev, false); in kfd_dbg_trap_deactivate()
618 pdd->spi_dbg_override = in kfd_dbg_trap_deactivate()
619 pdd->dev->kfd2kgd->disable_debug_trap( in kfd_dbg_trap_deactivate()
620 pdd->dev->adev, in kfd_dbg_trap_deactivate()
622 pdd->dev->vm_info.last_vmid_kfd); in kfd_dbg_trap_deactivate()
623 amdgpu_gfx_off_ctrl(pdd->dev->adev, true); in kfd_dbg_trap_deactivate()
625 if (!kfd_dbg_is_per_vmid_supported(pdd->dev) && in kfd_dbg_trap_deactivate()
626 release_debug_trap_vmid(pdd->dev->dqm, &pdd->qpd)) in kfd_dbg_trap_deactivate()
627 pr_err("Failed to release debug vmid on [%i]\n", pdd->dev->id); in kfd_dbg_trap_deactivate()
629 if (!pdd->dev->kfd->shared_resources.enable_mes) in kfd_dbg_trap_deactivate()
630 debug_refresh_runlist(pdd->dev->dqm); in kfd_dbg_trap_deactivate()
632 kfd_dbg_set_mes_debug_mode(pdd, !kfd_dbg_has_cwsr_workaround(pdd->dev)); in kfd_dbg_trap_deactivate()
645 struct kfd_process_device *pdd = target->pdds[i]; in kfd_dbg_clean_exception_status() local
647 kfd_process_drain_interrupts(pdd); in kfd_dbg_clean_exception_status()
649 pdd->exception_status = 0; in kfd_dbg_clean_exception_status()
702 struct kfd_process_device *pdd = target->pdds[i]; in kfd_dbg_trap_activate() local
704 if (!kfd_dbg_is_per_vmid_supported(pdd->dev)) { in kfd_dbg_trap_activate()
705 r = reserve_debug_trap_vmid(pdd->dev->dqm, &pdd->qpd); in kfd_dbg_trap_activate()
723 amdgpu_gfx_off_ctrl(pdd->dev->adev, false); in kfd_dbg_trap_activate()
724 if (!(kfd_dbg_is_rlc_restore_supported(pdd->dev) || in kfd_dbg_trap_activate()
726 pdd->dev->kfd2kgd->enable_debug_trap(pdd->dev->adev, true, in kfd_dbg_trap_activate()
727 pdd->dev->vm_info.last_vmid_kfd); in kfd_dbg_trap_activate()
729 pdd->spi_dbg_override = pdd->dev->kfd2kgd->enable_debug_trap( in kfd_dbg_trap_activate()
730 pdd->dev->adev, in kfd_dbg_trap_activate()
732 pdd->dev->vm_info.last_vmid_kfd); in kfd_dbg_trap_activate()
734 if (kfd_dbg_is_rlc_restore_supported(pdd->dev)) in kfd_dbg_trap_activate()
735 amdgpu_gfx_off_ctrl(pdd->dev->adev, true); in kfd_dbg_trap_activate()
744 kfd_process_set_trap_debug_flag(&pdd->qpd, true); in kfd_dbg_trap_activate()
746 if (!pdd->dev->kfd->shared_resources.enable_mes) in kfd_dbg_trap_activate()
747 r = debug_refresh_runlist(pdd->dev->dqm); in kfd_dbg_trap_activate()
749 r = kfd_dbg_set_mes_debug_mode(pdd, true); in kfd_dbg_trap_activate()
780 struct kfd_process_device *pdd = target->pdds[i]; in kfd_dbg_trap_enable() local
782 if (!KFD_IS_SOC15(pdd->dev)) in kfd_dbg_trap_enable()
785 if (pdd->qpd.num_gws && (!kfd_dbg_has_gws_support(pdd->dev) || in kfd_dbg_trap_enable()
786 kfd_dbg_has_cwsr_workaround(pdd->dev))) in kfd_dbg_trap_enable()
833 struct kfd_process_device *pdd = p->pdds[i]; in kfd_dbg_validate_trap_override_request() local
834 int err = pdd->dev->kfd2kgd->validate_trap_override_request( in kfd_dbg_validate_trap_override_request()
835 pdd->dev->adev, in kfd_dbg_validate_trap_override_request()
867 struct kfd_process_device *pdd = target->pdds[i]; in kfd_dbg_trap_set_wave_launch_override() local
869 amdgpu_gfx_off_ctrl(pdd->dev->adev, false); in kfd_dbg_trap_set_wave_launch_override()
870 pdd->spi_dbg_override = pdd->dev->kfd2kgd->set_wave_launch_trap_override( in kfd_dbg_trap_set_wave_launch_override()
871 pdd->dev->adev, in kfd_dbg_trap_set_wave_launch_override()
872 pdd->dev->vm_info.last_vmid_kfd, in kfd_dbg_trap_set_wave_launch_override()
877 pdd->spi_dbg_override); in kfd_dbg_trap_set_wave_launch_override()
878 amdgpu_gfx_off_ctrl(pdd->dev->adev, true); in kfd_dbg_trap_set_wave_launch_override()
880 if (!pdd->dev->kfd->shared_resources.enable_mes) in kfd_dbg_trap_set_wave_launch_override()
881 r = debug_refresh_runlist(pdd->dev->dqm); in kfd_dbg_trap_set_wave_launch_override()
883 r = kfd_dbg_set_mes_debug_mode(pdd, true); in kfd_dbg_trap_set_wave_launch_override()
903 struct kfd_process_device *pdd = target->pdds[i]; in kfd_dbg_trap_set_wave_launch_mode() local
905 amdgpu_gfx_off_ctrl(pdd->dev->adev, false); in kfd_dbg_trap_set_wave_launch_mode()
906 pdd->spi_dbg_launch_mode = pdd->dev->kfd2kgd->set_wave_launch_mode( in kfd_dbg_trap_set_wave_launch_mode()
907 pdd->dev->adev, in kfd_dbg_trap_set_wave_launch_mode()
909 pdd->dev->vm_info.last_vmid_kfd); in kfd_dbg_trap_set_wave_launch_mode()
910 amdgpu_gfx_off_ctrl(pdd->dev->adev, true); in kfd_dbg_trap_set_wave_launch_mode()
912 if (!pdd->dev->kfd->shared_resources.enable_mes) in kfd_dbg_trap_set_wave_launch_mode()
913 r = debug_refresh_runlist(pdd->dev->dqm); in kfd_dbg_trap_set_wave_launch_mode()
915 r = kfd_dbg_set_mes_debug_mode(pdd, true); in kfd_dbg_trap_set_wave_launch_mode()
950 struct kfd_process_device *pdd = target->pdds[i]; in kfd_dbg_trap_query_exception_info() local
951 struct qcm_process_device *qpd = &pdd->qpd; in kfd_dbg_trap_query_exception_info()
975 struct kfd_process_device *pdd = NULL; in kfd_dbg_trap_query_exception_info() local
979 pdd = target->pdds[i]; in kfd_dbg_trap_query_exception_info()
980 if (pdd->dev->id == source_id) { in kfd_dbg_trap_query_exception_info()
991 if (!(pdd->exception_status & KFD_EC_MASK(exception_code))) { in kfd_dbg_trap_query_exception_info()
997 copy_size = min((size_t)(*info_size), pdd->vm_fault_exc_data_size); in kfd_dbg_trap_query_exception_info()
999 if (copy_to_user(info, pdd->vm_fault_exc_data, copy_size)) { in kfd_dbg_trap_query_exception_info()
1003 actual_info_size = pdd->vm_fault_exc_data_size; in kfd_dbg_trap_query_exception_info()
1005 kfree(pdd->vm_fault_exc_data); in kfd_dbg_trap_query_exception_info()
1006 pdd->vm_fault_exc_data = NULL; in kfd_dbg_trap_query_exception_info()
1007 pdd->vm_fault_exc_data_size = 0; in kfd_dbg_trap_query_exception_info()
1010 exception_status_ptr = &pdd->exception_status; in kfd_dbg_trap_query_exception_info()
1072 struct kfd_process_device *pdd = target->pdds[i]; in kfd_dbg_trap_device_snapshot() local
1073 struct kfd_topology_device *topo_dev = kfd_topology_device_by_id(pdd->dev->id); in kfd_dbg_trap_device_snapshot()
1075 device_info.gpu_id = pdd->dev->id; in kfd_dbg_trap_device_snapshot()
1076 device_info.exception_status = pdd->exception_status; in kfd_dbg_trap_device_snapshot()
1077 device_info.lds_base = pdd->lds_base; in kfd_dbg_trap_device_snapshot()
1078 device_info.lds_limit = pdd->lds_limit; in kfd_dbg_trap_device_snapshot()
1079 device_info.scratch_base = pdd->scratch_base; in kfd_dbg_trap_device_snapshot()
1080 device_info.scratch_limit = pdd->scratch_limit; in kfd_dbg_trap_device_snapshot()
1081 device_info.gpuvm_base = pdd->gpuvm_base; in kfd_dbg_trap_device_snapshot()
1082 device_info.gpuvm_limit = pdd->gpuvm_limit; in kfd_dbg_trap_device_snapshot()
1086 device_info.revision_id = pdd->dev->adev->pdev->revision; in kfd_dbg_trap_device_snapshot()
1087 device_info.subsystem_vendor_id = pdd->dev->adev->pdev->subsystem_vendor; in kfd_dbg_trap_device_snapshot()
1088 device_info.subsystem_device_id = pdd->dev->adev->pdev->subsystem_device; in kfd_dbg_trap_device_snapshot()
1089 device_info.fw_version = pdd->dev->kfd->mec_fw_version; in kfd_dbg_trap_device_snapshot()
1098 device_info.num_xcc = NUM_XCC(pdd->dev->xcc_mask); in kfd_dbg_trap_device_snapshot()
1103 pdd->exception_status &= ~exception_clear_mask; in kfd_dbg_trap_device_snapshot()
1141 struct kfd_process_device *pdd = target->pdds[i]; in kfd_dbg_set_enabled_debug_exception_mask() local
1143 found_mask |= pdd->exception_status; in kfd_dbg_set_enabled_debug_exception_mask()