diff options
author | Felix Kuehling <Felix.Kuehling@amd.com> | 2018-05-01 17:56:08 -0400 |
---|---|---|
committer | Oded Gabbay <oded.gabbay@gmail.com> | 2018-05-01 17:56:08 -0400 |
commit | eeb27b7eb3826c23cc5688c47845e7309f20fc32 (patch) | |
tree | e2bb326aa927e3d5f45622c5e373af2dfa180a36 | |
parent | f8ea72d097965617bba0d6773fd29d44070c5e1a (diff) |
drm/amdkfd: Fix signal handling performance again
It turns out that idr_for_each_entry is really slow compared to just
iterating over the slots. Based on measurements the difference is
estimated to be about a factor 64. That means using idr_for_each_entry
is only worth it with very few allocated events.
Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com>
Reviewed-by: Oded Gabbay <oded.gabbay@gmail.com>
Signed-off-by: Oded Gabbay <oded.gabbay@gmail.com>
-rw-r--r-- | drivers/gpu/drm/amd/amdkfd/kfd_events.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_events.c b/drivers/gpu/drm/amd/amdkfd/kfd_events.c index bccf2f761177..5562e94e786a 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_events.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_events.c | |||
@@ -496,7 +496,7 @@ void kfd_signal_event_interrupt(unsigned int pasid, uint32_t partial_id, | |||
496 | pr_debug_ratelimited("Partial ID invalid: %u (%u valid bits)\n", | 496 | pr_debug_ratelimited("Partial ID invalid: %u (%u valid bits)\n", |
497 | partial_id, valid_id_bits); | 497 | partial_id, valid_id_bits); |
498 | 498 | ||
499 | if (p->signal_event_count < KFD_SIGNAL_EVENT_LIMIT/2) { | 499 | if (p->signal_event_count < KFD_SIGNAL_EVENT_LIMIT / 64) { |
500 | /* With relatively few events, it's faster to | 500 | /* With relatively few events, it's faster to |
501 | * iterate over the event IDR | 501 | * iterate over the event IDR |
502 | */ | 502 | */ |