1
0
Fork 0
mirror of synced 2025-03-06 20:59:54 +01:00
linux/drivers/gpu/drm/amd/amdkfd
Felix Kuehling 5273e82c5f drm/amdkfd: Improve concurrency of event handling
Use rcu_read_lock to read p->event_idr concurrently with other readers
and writers. Use p->event_mutex only for creating and destroying events
and in kfd_wait_on_events.

Protect the contents of the kfd_event structure with a per-event
spinlock that can be taken inside the rcu_read_lock critical section.

This eliminates contention of p->event_mutex in set_event, which tends
to be on the critical path for dispatch latency even when busy waiting
is used. It also eliminates lock contention in event interrupt handlers.
Since the p->event_mutex is now used much less, the impact of requiring
it in kfd_wait_on_events should also be much smaller.

This should improve event handling latency for processes using multiple
GPUs concurrently.

v2: Reschedule the worker periodically to avoid soft lockup warnings

Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com>
Reviewed-by: Sean Keely <Sean.Keely@amd.com> # v1
Tested-by: Sanjay Tripathi <sanjay.tripathi@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2022-04-07 16:34:24 -04:00
..
cik_event_interrupt.c drm/amdkfd: rename kfd_process_vm_fault to kfd_dqm_evict_pasid 2022-02-09 14:14:53 -05:00
cik_int.h drm/amdkfd: Clean up reference of radeon 2018-07-11 22:33:08 -04:00
cik_regs.h drm/amdkfd: Delete a duplicate statement in set_pasid_vmid_mapping() 2018-11-05 14:21:13 -05:00
cwsr_trap_handler.h drm/amdkfd: Fix saving the ACC vgprs for Aldebaran 2021-03-23 22:56:55 -04:00
cwsr_trap_handler_gfx8.asm drm/amdkfd: Add aldebaran trap handler support 2021-03-10 00:02:24 -05:00
cwsr_trap_handler_gfx9.asm drm/amdkfd: Fix saving the ACC vgprs for Aldebaran 2021-03-23 22:56:55 -04:00
cwsr_trap_handler_gfx10.asm drm/amdkfd: Fix spurious debug exception on gfx10 2020-08-10 17:26:51 -04:00
Kconfig drm/amdkfd: Add CONFIG_HSA_AMD_SVM 2021-04-20 21:50:35 -04:00
kfd_chardev.c drm/amdkfd: use tlb_seq from the VM subsystem for SVM as well v2 2022-03-25 12:40:52 -04:00
kfd_crat.c drm/amdkfd: make CRAT table missing message informational only 2022-02-22 14:52:39 -05:00
kfd_crat.h drm/amdkfd: Fix leftover errors and warnings 2022-02-14 15:08:40 -05:00
kfd_debugfs.c drm/amdkfd: Fix leftover errors and warnings 2022-02-14 15:08:40 -05:00
kfd_device.c drm/amdkfd: Check use_xgmi_p2p before reporting hive_id 2022-03-25 12:40:25 -04:00
kfd_device_queue_manager.c drm/amdkfd: bail out early if no get_atc_vmid_pasid_mapping_info 2022-03-09 17:27:50 -05:00
kfd_device_queue_manager.h drm/amdkfd: Fix leftover errors and warnings 2022-02-14 15:08:40 -05:00
kfd_device_queue_manager_cik.c drm/amdkfd: update SPDX license header 2022-02-14 15:08:40 -05:00
kfd_device_queue_manager_v9.c drm/amdkfd: update SPDX license header 2022-02-14 15:08:40 -05:00
kfd_device_queue_manager_v10.c drm/amdkfd: Fix leftover errors and warnings 2022-02-14 15:08:40 -05:00
kfd_device_queue_manager_vi.c drm/amdkfd: update SPDX license header 2022-02-14 15:08:40 -05:00
kfd_doorbell.c drm/amdkfd: update SPDX license header 2022-02-14 15:08:40 -05:00
kfd_events.c drm/amdkfd: Improve concurrency of event handling 2022-04-07 16:34:24 -04:00
kfd_events.h drm/amdkfd: Improve concurrency of event handling 2022-04-07 16:34:24 -04:00
kfd_flat_memory.c drm/amdkfd: Fix leftover errors and warnings 2022-02-14 15:08:40 -05:00
kfd_int_process_v9.c drm/amdkfd: print unmap queue status for RAS poison consumption (v3) 2022-03-25 12:40:26 -04:00
kfd_interrupt.c drm/amdkfd: Improve concurrency of event handling 2022-04-07 16:34:24 -04:00
kfd_iommu.c drm/amdkfd: update SPDX license header 2022-02-14 15:08:40 -05:00
kfd_iommu.h drm/amdkfd: update SPDX license header 2022-02-14 15:08:40 -05:00
kfd_kernel_queue.c drm/amdkfd: update SPDX license header 2022-02-14 15:08:40 -05:00
kfd_kernel_queue.h drm/amdkfd: update SPDX license header 2022-02-14 15:08:40 -05:00
kfd_migrate.c drm/amdkfd: evict svm bo worker handle error 2022-03-15 15:01:12 -04:00
kfd_migrate.h drm/amdkfd: fix svm_migrate_fini warning 2021-09-23 16:34:57 -04:00
kfd_module.c drm/amdkfd: update SPDX license header 2022-02-14 15:08:40 -05:00
kfd_mqd_manager.c drm/amdkfd: Fix leftover errors and warnings 2022-02-14 15:08:40 -05:00
kfd_mqd_manager.h drm/amdkfd: update SPDX license header 2022-02-14 15:08:40 -05:00
kfd_mqd_manager_cik.c drm/amdkfd: update SPDX license header 2022-02-14 15:08:40 -05:00
kfd_mqd_manager_v9.c drm/amdkfd: update SPDX license header 2022-02-14 15:08:40 -05:00
kfd_mqd_manager_v10.c drm/amdkfd: Fix leftover errors and warnings 2022-02-14 15:08:40 -05:00
kfd_mqd_manager_vi.c drm/amdkfd: Fix leftover errors and warnings 2022-02-14 15:08:40 -05:00
kfd_packet_manager.c drm/amdkfd: remove unneeded unmap single queue option 2022-02-14 15:08:41 -05:00
kfd_packet_manager_v9.c drm/amdkfd: Use proper enum in pm_unmap_queues_v9() 2022-02-17 15:59:06 -05:00
kfd_packet_manager_vi.c drm/amdkfd: remove unneeded unmap single queue option 2022-02-14 15:08:41 -05:00
kfd_pasid.c drm/amdkfd: update SPDX license header 2022-02-14 15:08:40 -05:00
kfd_pm4_headers.h drm/amdkfd: update SPDX license header 2022-02-14 15:08:40 -05:00
kfd_pm4_headers_ai.h drm/amdkfd: update SPDX license header 2022-02-14 15:08:40 -05:00
kfd_pm4_headers_aldebaran.h drm/amdkfd: update SPDX license header 2022-02-14 15:08:40 -05:00
kfd_pm4_headers_diq.h drm/amdkfd: update SPDX license header 2022-02-14 15:08:40 -05:00
kfd_pm4_headers_vi.h drm/amdkfd: Fix leftover errors and warnings 2022-02-14 15:08:40 -05:00
kfd_pm4_opcodes.h drm/amdkfd: update SPDX license header 2022-02-14 15:08:40 -05:00
kfd_priv.h drm/amdkfd: Use atomic64_t type for pdd->tlb_seq 2022-03-31 23:05:54 -04:00
kfd_process.c drm/amdkfd: Use atomic64_t type for pdd->tlb_seq 2022-03-31 23:05:54 -04:00
kfd_process_queue_manager.c drm/amdkfd: Fix for possible integer overflow 2022-02-23 14:02:50 -05:00
kfd_queue.c drm/amdkfd: update SPDX license header 2022-02-14 15:08:40 -05:00
kfd_smi_events.c drm/amdkfd: Create file descriptor after client is added to smi_clients list 2022-03-31 23:05:55 -04:00
kfd_smi_events.h drm/amdkfd: update SPDX license header 2022-02-14 15:08:40 -05:00
kfd_svm.c drm/amdkfd: Add missing NULL check in svm_range_map_to_gpu 2022-04-06 10:14:46 -04:00
kfd_svm.h drm/amdkfd: CRIU resume shared virtual memory ranges 2022-02-07 17:59:53 -05:00
kfd_topology.c drm/amdkfd: Fix leftover errors and warnings 2022-02-14 15:08:40 -05:00
kfd_topology.h drm/amdkfd: update SPDX license header 2022-02-14 15:08:40 -05:00
Makefile drm/amdkfd: Remove unused old debugger implementation 2022-02-09 16:57:51 -05:00
soc15_int.h drm/amdkfd: add sdma poison consumption handling 2021-06-07 14:57:24 -04:00