Index: kernel/generic/src/lib/ra.c
===================================================================
--- kernel/generic/src/lib/ra.c	(revision 8e893aeb5653f1350d4daa8ac443ec24ef6449cd)
+++ kernel/generic/src/lib/ra.c	(revision 905721b9dfaa60ff0d48e25697a1979786d8b6c1)
@@ -185,5 +185,5 @@
 		return NULL;
 
-	spinlock_initialize(&arena->lock, "arena_lock");
+	irq_spinlock_initialize(&arena->lock, "arena_lock");
 	list_initialize(&arena->spans);
 
@@ -209,7 +209,7 @@
 
 	/* TODO: check for overlaps */
-	spinlock_lock(&arena->lock);
+	irq_spinlock_lock(&arena->lock, true);
 	list_append(&span->span_link, &arena->spans);
-	spinlock_unlock(&arena->lock);
+	irq_spinlock_unlock(&arena->lock, true);
 	return true;
 }
@@ -390,5 +390,5 @@
 	ASSERT(ispwr2(alignment));
 
-	spinlock_lock(&arena->lock);
+	irq_spinlock_lock(&arena->lock, true);
 	list_foreach(arena->spans, cur) {
 		ra_span_t *span = list_get_instance(cur, ra_span_t, span_link);
@@ -398,5 +398,5 @@
 			break;
 	}
-	spinlock_unlock(&arena->lock);
+	irq_spinlock_unlock(&arena->lock, true);
 
 	return base;
@@ -406,5 +406,5 @@
 void ra_free(ra_arena_t *arena, uintptr_t base, size_t size)
 {
-	spinlock_lock(&arena->lock);
+	irq_spinlock_lock(&arena->lock, true);
 	list_foreach(arena->spans, cur) {
 		ra_span_t *span = list_get_instance(cur, ra_span_t, span_link);
@@ -412,9 +412,9 @@
 		if (iswithin(span->base, span->size, base, size)) {
 			ra_span_free(span, base, size);
-			spinlock_unlock(&arena->lock);
+			irq_spinlock_unlock(&arena->lock, true);
 			return;
 		}
 	}
-	spinlock_unlock(&arena->lock);
+	irq_spinlock_unlock(&arena->lock, true);
 
 	panic("Freeing to wrong arena (base=%" PRIxn ", size=%" PRIdn ").",
