Merge "test_rom: correct the CHERIoT ROM size to really be 48K"
diff --git a/WORKSPACE b/WORKSPACE
index 756c1f7..bda0921 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -158,8 +158,8 @@
 
 http_file(
     name = "hyperdebug_firmware",
-    sha256 = "e9c93d2935b9b6a571b547f20fe6177c48a909535d87533b7a0c64fb049bd643",
-    urls = ["https://storage.googleapis.com/aoa-recovery-test-images/hyperdebug_v2.0.20491-956ccf530.bin"],
+    urls = ["https://github.com/lowRISC/hyperdebug-firmware/releases/download/20240621_01/hyperdebug-firmware.tar.gz"],
+    sha256 = "649a8cd6d183bc3fb286ea5895c752cfec3aa29b9990f44bb9e7621c0414c7de",
 )
 
 # kelvin verilog dependencies
diff --git a/sw/device/tests/kelvin/fpga_tests/kelvin_test_smc.c b/sw/device/tests/kelvin/fpga_tests/kelvin_test_smc.c
index 197f259..2c8cf63 100644
--- a/sw/device/tests/kelvin/fpga_tests/kelvin_test_smc.c
+++ b/sw/device/tests/kelvin/fpga_tests/kelvin_test_smc.c
@@ -68,6 +68,11 @@
       mmio_region_t base_addr =
           mmio_region_from_addr(TOP_MATCHA_ML_TOP_CORE_BASE_ADDR);
       // Reset and halt Kelvin
+      // NB: Kelvin needs a few cycles in reset with a clock,
+      // so set the reset bit and the gate in two transactions.
+      mmio_region_write32(
+          base_addr, ML_TOP_CTRL_REG_OFFSET,
+          ML_TOP_CTRL_REG_RESVAL);
       mmio_region_write32(
           base_addr, ML_TOP_CTRL_REG_OFFSET,
           ML_TOP_CTRL_REG_RESVAL | (1 << ML_TOP_CTRL_FREEZE_BIT));