diff --git a/kernel/include/kernel/mp.h b/kernel/include/kernel/mp.h
index b970b3e..c9afa12 100644
--- a/kernel/include/kernel/mp.h
+++ b/kernel/include/kernel/mp.h
@@ -18,7 +18,6 @@
 
 __BEGIN_CDECLS
 
-typedef void (*mp_ipi_task_func_t)(void* context);
 typedef void (*mp_sync_task_t)(void* context);
 
 // by default, mp_reschedule does not signal to cpus that are running realtime
@@ -73,14 +72,6 @@
 // called from arch code during interrupt irq
 void mp_mbx_interrupt_irq(void);
 
-// represents a pending task for some number of CPUs to execute
-struct mp_ipi_task {
-    struct list_node node;
-
-    mp_ipi_task_func_t func;
-    void* context;
-};
-
 // global mp state to track what the cpus are up to
 struct mp_state {
     // cpus that are currently online
diff --git a/kernel/kernel/mp.cpp b/kernel/kernel/mp.cpp
index 97a94f6..38323b7 100644
--- a/kernel/kernel/mp.cpp
+++ b/kernel/kernel/mp.cpp
@@ -14,6 +14,7 @@
 #include <err.h>
 #include <inttypes.h>
 #include <kernel/align.h>
+#include <kernel/auto_lock.h>
 #include <kernel/dpc.h>
 #include <kernel/event.h>
 #include <kernel/mp.h>
@@ -37,6 +38,15 @@
 struct mp_sync_context;
 static void mp_sync_task(void* context);
 
+// represents a pending task for some number of CPUs to execute
+typedef void (*mp_ipi_task_func_t)(void* context);
+struct mp_ipi_task {
+    struct list_node node;
+
+    mp_ipi_task_func_t func;
+    void* context;
+};
+
 void mp_init(void) {
     mutex_init(&mp.hotplug_lock);
     mp.ipi_task_lock = SPIN_LOCK_INITIAL_VALUE;
@@ -207,14 +217,15 @@
 
     // make sure the sync_tasks aren't in lists anymore, since they're
     // stack allocated
-    spin_lock_irqsave(&mp.ipi_task_lock, irqstate);
-    for (uint i = 0; i < num_cpus; ++i) {
-        // If a task is still around, it's because the CPU went offline.
-        if (list_in_list(&sync_tasks[i].node)) {
-            list_delete(&sync_tasks[i].node);
+    {
+        AutoSpinLock al(&mp.ipi_task_lock);
+        for (uint i = 0; i < num_cpus; ++i) {
+            // If a task is still around, it's because the CPU went offline.
+            if (list_in_list(&sync_tasks[i].node)) {
+                list_delete(&sync_tasks[i].node);
+            }
         }
     }
-    spin_unlock_irqrestore(&mp.ipi_task_lock, irqstate);
 }
 
 static void mp_unplug_trampoline(void) TA_REQ(thread_lock) __NO_RETURN;
