• Felix Kuehling's avatar
    drm/amdkfd: Improve concurrency of event handling · 5273e82c
    Felix Kuehling authored
    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: default avatarFelix Kuehling <Felix.Kuehling@amd.com>
    Reviewed-by: Sean Keely <Sean.Keely@amd.com> # v1
    Tested-by: default avatarSanjay Tripathi <sanjay.tripathi@amd.com>
    Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
    5273e82c
kfd_events.h 2.75 KB