diff --git a/sw/device/cheriot/soundstream/compat.h b/sw/device/cheriot/soundstream/compat.h
index 70b1193..5d28227 100644
--- a/sw/device/cheriot/soundstream/compat.h
+++ b/sw/device/cheriot/soundstream/compat.h
@@ -83,7 +83,4 @@
     }                                                                \
   } while (false)
 
-// TODO(sleffler): need a scheduler yield kinda call
-inline void wait_for_interrupt(void) { asm volatile("wfi"); }
-
 #endif  // EXAMPLES_SOUNDSTREAM_COMPAT_H_
diff --git a/sw/device/cheriot/soundstream/i2s.cc b/sw/device/cheriot/soundstream/i2s.cc
index e5a5efb..e20358f 100644
--- a/sw/device/cheriot/soundstream/i2s.cc
+++ b/sw/device/cheriot/soundstream/i2s.cc
@@ -87,6 +87,16 @@
   return was_seen;
 }
 
+void i2s_wait_for_rx_watermark(void) {
+  const uint32_t *rxWatermarkFutex = interrupt_futex_get(
+      STATIC_SEALED_VALUE(i2sRxWatermarkInterruptCapability));
+  uint32_t last = *rxWatermarkFutex;
+  while (!i2s_rx_watermark_seen()) {
+    Debug::Assert(futex_wait(rxWatermarkFutex, last) == 0, "futex_wait");
+    last = *rxWatermarkFutex;
+  }
+}
+
 static void i2s_irq_acknowledge(i2s_irq_t irq_id) {
   CHECK_INIT();
   CHECK_DIF_OK(dif_i2s_irq_acknowledge(&i2s, irq_id));
diff --git a/sw/device/cheriot/soundstream/i2s.h b/sw/device/cheriot/soundstream/i2s.h
index 08f6565..a920ad1 100644
--- a/sw/device/cheriot/soundstream/i2s.h
+++ b/sw/device/cheriot/soundstream/i2s.h
@@ -32,6 +32,7 @@
 void __cheri_compartment("i2s")
     i2s_irq_set_enabled(i2s_irq_t irq_id, bool enabled);
 bool __cheri_compartment("i2s") i2s_rx_watermark_seen(void);
+void __cheri_compartment("i2s") i2s_wait_for_rx_watermark(void);
 void __cheri_compartment("i2s") i2s_rxfifo_clear(void);
 bool __cheri_compartment("i2s") i2s_rxfifo_is_empty(void);
 void __cheri_compartment("i2s") i2s_record_begin(void);
diff --git a/sw/device/cheriot/soundstream/mailbox.cc b/sw/device/cheriot/soundstream/mailbox.cc
index 8861bbc..5f15111 100644
--- a/sw/device/cheriot/soundstream/mailbox.cc
+++ b/sw/device/cheriot/soundstream/mailbox.cc
@@ -93,6 +93,17 @@
 // XXX temp until gpio's on the SEC can be used (either in simulation or for real)
 void mailbox_set_button_pressed(bool pressed) { button_pressed = pressed; }
 
+// Wait until the record switch is pushed
+void mailbox_wait_for_button_pressed(void) {
+  const uint32_t *mailboxRtFutex =
+      interrupt_futex_get(STATIC_SEALED_VALUE(mailboxRtInterruptCapability));
+  uint32_t last = *mailboxRtFutex;
+  while (!mailbox_button_pressed()) {
+    Debug::Assert(futex_wait(mailboxRtFutex, last) == 0, "futex_wait");
+    last = *mailboxRtFutex;
+  }
+}
+
 void mailbox_set_led(bool enabled) {
   CHECK_INIT();
   // NB: this is not the TockOS mailbox protocol.
diff --git a/sw/device/cheriot/soundstream/mailbox.h b/sw/device/cheriot/soundstream/mailbox.h
index 6663fca..3220187 100644
--- a/sw/device/cheriot/soundstream/mailbox.h
+++ b/sw/device/cheriot/soundstream/mailbox.h
@@ -27,6 +27,7 @@
 void __cheri_compartment("mailbox") mailbox_init(void);
 void __cheri_compartment("mailbox") mailbox_isr(void);
 bool __cheri_compartment("mailbox") mailbox_button_pressed(void);
+void __cheri_compartment("mailbox") mailbox_wait_for_button_pressed(void);
 // XXX temp
 void __cheri_compartment("mailbox") mailbox_set_button_pressed(bool);
 void __cheri_compartment("mailbox") mailbox_set_led(bool enabled);
diff --git a/sw/device/cheriot/soundstream/ml_top.cc b/sw/device/cheriot/soundstream/ml_top.cc
index 38d51bf..bd30f55 100644
--- a/sw/device/cheriot/soundstream/ml_top.cc
+++ b/sw/device/cheriot/soundstream/ml_top.cc
@@ -111,6 +111,16 @@
   return was_done;
 }
 
+void ml_top_wait_for_finish(void) {
+  const uint32_t* mlTopFinishFutex =
+      interrupt_futex_get(STATIC_SEALED_VALUE(mlTopFinishInterruptCapability));
+  uint32_t last = *mlTopFinishFutex;
+  while (!ml_top_finish_done()) {
+    Debug::Assert(futex_wait(mlTopFinishFutex, last) == 0, "futex_wait");
+    last = *mlTopFinishFutex;
+  }
+}
+
 void ml_top_irq_acknowledge_all() {
   CHECK_INIT();
   CHECK_DIF_OK(dif_ml_top_irq_acknowledge_all(&ml_top));
diff --git a/sw/device/cheriot/soundstream/ml_top.h b/sw/device/cheriot/soundstream/ml_top.h
index b860d5f..be93516 100644
--- a/sw/device/cheriot/soundstream/ml_top.h
+++ b/sw/device/cheriot/soundstream/ml_top.h
@@ -38,6 +38,7 @@
 void __cheri_compartment("ml_top")
     ml_top_irq_set_enabled(ml_top_irq_t irq_id, bool enabled);
 bool __cheri_compartment("ml_top") ml_top_finish_done(void);
+void __cheri_compartment("ml_top") ml_top_wait_for_finish(void);
 void __cheri_compartment("ml_top") ml_top_resume_ctrl_en(uint32_t resume_pc);
 void __cheri_compartment("ml_top")
     ml_top_set_input(void* const data, size_t data_len_bytes);
diff --git a/sw/device/cheriot/soundstream/soundstream.cc b/sw/device/cheriot/soundstream/soundstream.cc
index 897a921..45dd2a9 100644
--- a/sw/device/cheriot/soundstream/soundstream.cc
+++ b/sw/device/cheriot/soundstream/soundstream.cc
@@ -89,9 +89,7 @@
 
     // Wait until the record switch is pushed
     Debug::log("Wait for button press...");
-    while (!mailbox_button_pressed()) {
-      wait_for_interrupt();
-    }
+    mailbox_wait_for_button_pressed();
 
     mailbox_set_led(/*enabled=*/true);
     Debug::log("Start recording (max {} samples)...", kSamples);
@@ -101,9 +99,8 @@
     int sample = 0;
     while (sample < kSamples && mailbox_button_pressed()) {
       i2s_irq_set_enabled(kI2sIrqRxWatermark, /*enabled=*/true);
-      while (!i2s_rx_watermark_seen()) {
-        wait_for_interrupt();
-      }
+
+      i2s_wait_for_rx_watermark();
 
       while (!i2s_rxfifo_is_empty()) {
         uint32_t reg_val = i2s_get_rdata();
@@ -190,10 +187,7 @@
       (void) ml_top_finish_done();  // NB: reset state
       ml_top_resume_ctrl_en(header.resume_pc);
 
-      // wfi
-      while (!ml_top_finish_done()) {
-        wait_for_interrupt();
-      }
+      ml_top_wait_for_finish();
 
       ml_top_get_output_header(&header);
       CHECK(header.length == sizeof(result_buffer), "Unexpected ML result size");
diff --git a/sw/device/cheriot/soundstream/xmake.lua b/sw/device/cheriot/soundstream/xmake.lua
index 3d2d1da..5ab5325 100644
--- a/sw/device/cheriot/soundstream/xmake.lua
+++ b/sw/device/cheriot/soundstream/xmake.lua
@@ -88,21 +88,21 @@
             -- NB: stack sizes bumped for logging
             {
                 compartment = "i2s",
-                priority = 1,
+                priority = 10,
                 entry_point = "i2s_isr",
                 stack_size = 0x400, -- 512B
                 trusted_stack_frames = 3
             },
             {
                 compartment = "ml_top",
-                priority = 1,
+                priority = 10,
                 entry_point = "ml_top_isr",
                 stack_size = 0x400, -- 512B
                 trusted_stack_frames = 3
             },
             {
                 compartment = "mailbox",
-                priority = 1,
+                priority = 10,
                 entry_point = "mailbox_isr",
                 stack_size = 0x400, -- 512B
                 trusted_stack_frames = 3
