summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
diff options
context:
space:
mode:
authorFelix Kuehling2017-10-28 01:35:27 +0200
committerOded Gabbay2017-10-28 01:35:27 +0200
commit482f07775cf559c82cb3d086e3c4fad91582e4cb (patch)
tree3102aa334ea6bfb9d70594984eb0cd5210161aa8 /drivers/gpu/drm/amd/amdkfd/kfd_priv.h
parentdrm/amdkfd: Simplify events page allocator (diff)
downloadkernel-qcow2-linux-482f07775cf559c82cb3d086e3c4fad91582e4cb.tar.gz
kernel-qcow2-linux-482f07775cf559c82cb3d086e3c4fad91582e4cb.tar.xz
kernel-qcow2-linux-482f07775cf559c82cb3d086e3c4fad91582e4cb.zip
drm/amdkfd: Simplify event ID and signal slot management
Signal slots are identical to event IDs. Replace the used_slot_bitmap and events hash table with an IDR to allocate and lookup event IDs and signal slots more efficiently. Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com> Acked-by: Oded Gabbay <oded.gabbay@gmail.com> Signed-off-by: Oded Gabbay <oded.gabbay@gmail.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdkfd/kfd_priv.h')
-rw-r--r--drivers/gpu/drm/amd/amdkfd/kfd_priv.h6
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
index c1b3ee22faed..ebae8e1891d2 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
@@ -31,6 +31,7 @@
#include <linux/workqueue.h>
#include <linux/spinlock.h>
#include <linux/kfd_ioctl.h>
+#include <linux/idr.h>
#include <kgd_kfd_interface.h>
#include "amd_shared.h"
@@ -538,11 +539,10 @@ struct kfd_process {
/* Event-related data */
struct mutex event_mutex;
- /* All events in process hashed by ID, linked on kfd_event.events. */
- DECLARE_HASHTABLE(events, 4);
+ /* Event ID allocator and lookup */
+ struct idr event_idr;
/* Event page */
struct kfd_signal_page *signal_page;
- u32 next_nonsignal_event_id;
size_t signal_event_count;
bool signal_event_limit_reached;
};