Index: kernel/generic/src/lib/ra.c
===================================================================
--- kernel/generic/src/lib/ra.c	(revision b4e59b35396fd1c4445d74278acf9652804a140c)
+++ kernel/generic/src/lib/ra.c	(revision 12cb03dd6e73558b6ca75313281ad3e66041b239)
@@ -54,7 +54,22 @@
 #include <macros.h>
 
+#define USED_BUCKETS	1024
+
+static size_t used_hash(sysarg_t *key)
+{
+	return ((*key >> 2) & (USED_BUCKETS - 1));
+}
+
+static bool used_compare(sysarg_t *key, size_t keys, link_t *item)
+{
+	ra_segment_t *seg;
+
+	seg = hash_table_get_instance(item, ra_segment_t, fu_link);
+	return seg->base == *key;
+}
+
 static hash_table_operations_t used_ops = {
-	.hash = NULL,
-	.compare = NULL,
+	.hash = used_hash,
+	.compare = used_compare,
 	.remove_callback = NULL,
 };
@@ -142,5 +157,5 @@
 	list_initialize(&span->segments);
 
-	hash_table_create(&span->used, span->max_order + 1, 1, &used_ops);
+	hash_table_create(&span->used, USED_BUCKETS, 1, &used_ops);
 
 	for (i = 0; i < span->max_order; i++)
