diff --git a/sw/device/cheriot/soundstream/ml_top.cc b/sw/device/cheriot/soundstream/ml_top.cc
index dc931ce..a7b04c8 100644
--- a/sw/device/cheriot/soundstream/ml_top.cc
+++ b/sw/device/cheriot/soundstream/ml_top.cc
@@ -55,6 +55,8 @@
   CHECK_DIF_OK(dif_ml_top_init(mmio_region_from_addr((uintptr_t)MMIO_CAPABILITY(
                                    ml_top_mmio_t, ml_top_core)),
                                &ml_top));
+  ml_top_irq_set_enabled(kMlTopIrqFinish, /*enabled=*/true);
+  ml_top_irq_set_enabled(kMlTopIrqFault, /*enabled=*/true);
   semaphore_put(&startup);
 }
 
@@ -83,15 +85,20 @@
 
   for (;;) {
     Debug::Assert(multiwaiter_wait(&unlimited, mw, events, 2) == 0, "multiwaiter_wait");
-    Debug::log("ml_top_isr: Finish:{} Fault:{}", events[0].value, events[1].value);
     if (events[1].value == 1) {  // Fault signaled
-      LOG_FATAL("ML_TOP fault!");
+      Debug::log("ml_top_isr: Fault, Finish:{}", events[0].value);
       abort();
+
+      events[1].value = *mlTopFaultFutex;
     }
     if (events[0].value == 1) {  // Finish signaled
+      Debug::log("ml_top_isr: Finish");
       finish_done = true;
-      interrupt_complete(STATIC_SEALED_VALUE(mlTopFinishInterruptCapability));
       CHECK_DIF_OK(dif_ml_top_reset_ctrl_en(&ml_top));
+      CHECK_DIF_OK(dif_ml_top_irq_acknowledge(&ml_top, kMlTopIrqFinish));
+      interrupt_complete(STATIC_SEALED_VALUE(mlTopFinishInterruptCapability));
+
+      events[0].value = *mlTopFinishFutex;
     }
   }
 }
@@ -104,11 +111,6 @@
   return was_done;
 }
 
-void ml_top_irq_acknowledge(ml_top_irq_t irq_id) {
-  CHECK_INIT();
-  CHECK_DIF_OK(dif_ml_top_irq_acknowledge(&ml_top, irq_id));
-}
-
 void ml_top_irq_acknowledge_all() {
   CHECK_INIT();
   CHECK_DIF_OK(dif_ml_top_irq_acknowledge_all(&ml_top));
@@ -126,14 +128,14 @@
 }
 
 void ml_top_set_input(void* const data, size_t data_len_bytes) {
-  void* input_ptr = (void*)(MMIO_CAPABILITY(ml_top_dmem_t, ml_top_dmem) +
-                            TOP_MATCHA_RAM_ML_DMEM_SIZE_BYTES - 4096);
+  uint8_t* ml_top_dmem_base = (uint8_t*) MMIO_CAPABILITY(ml_top_dmem_t, ml_top_dmem);
+  void* input_ptr = ml_top_dmem_base + (TOP_MATCHA_RAM_ML_DMEM_SIZE_BYTES - 4096);
   memcpy(input_ptr, data, data_len_bytes);
 }
 
 void ml_top_get_output_header(struct output_header* header) {
-  uint8_t* ml_top_dmem_base = (uint8_t*) MMIO_CAPABILITY(ml_top_dmem_t, ml_top_dmem);
-  struct output_header* output_header_ptr = (struct output_header*)
+  const uint8_t* ml_top_dmem_base = (uint8_t*) MMIO_CAPABILITY(ml_top_dmem_t, ml_top_dmem);
+  const struct output_header* output_header_ptr = (const struct output_header*)
       (ml_top_dmem_base + (TOP_MATCHA_RAM_ML_DMEM_SIZE_BYTES - 0x40));
   header->return_code = output_header_ptr->return_code;
   header->output_ptr = output_header_ptr->output_ptr;
@@ -148,7 +150,6 @@
 }
 
 void ml_top_get_output_data(struct output_header* const header, void* buffer) {
-  const void* src = (const void*)(MMIO_CAPABILITY(ml_top_dmem_t, ml_top_dmem) +
-                                  header->output_ptr);
-  memcpy(buffer, src, header->length);
+  const uint8_t* ml_top_dmem_base = (const uint8_t*) MMIO_CAPABILITY(ml_top_dmem_t, ml_top_dmem);
+  memcpy(buffer, ml_top_dmem_base + header->output_ptr, header->length);
 }
diff --git a/sw/device/cheriot/soundstream/ml_top.h b/sw/device/cheriot/soundstream/ml_top.h
index 5555576..b860d5f 100644
--- a/sw/device/cheriot/soundstream/ml_top.h
+++ b/sw/device/cheriot/soundstream/ml_top.h
@@ -22,7 +22,8 @@
 #include "sw/device/lib/dif/dif_ml_top.h"
 
 typedef dif_ml_top_irq_t ml_top_irq_t;
-const uint32_t kMlTopIrqFinish = kDifMlTopIrqFinish;
+const ml_top_irq_t kMlTopIrqFinish = kDifMlTopIrqFinish;
+const ml_top_irq_t kMlTopIrqFault = kDifMlTopIrqFault;
 
 struct output_header {
   uint32_t return_code;  // Populated in kelvin_start
