diff --git a/src/ariane.sv b/src/ariane.sv
index b745effe2783f4038de78508c895ba9a417d9dee..eaefd7797b96de47690514129cfca140b61bf9ce 100644
--- a/src/ariane.sv
+++ b/src/ariane.sv
@@ -240,6 +240,7 @@ module ariane import ariane_pkg::*; #(
   icache_areq_o_t           icache_areq_cache_ex;
   icache_dreq_i_t           icache_dreq_if_cache;
   icache_dreq_o_t           icache_dreq_cache_if;
+  logic                     icache_stall_ctrl;
 
   amo_req_t                 amo_req;
   amo_resp_t                amo_resp;
@@ -652,7 +653,9 @@ module ariane import ariane_pkg::*; #(
 
     // CO
     .commit_instr_i (commit_instr_id_commit),
-    .commit_ack_i (commit_ack)
+    .commit_ack_i (commit_ack),
+
+    .should_lock_icache_o (icache_stall_ctrl)
   );
 
   // -------------------
@@ -675,6 +678,7 @@ module ariane import ariane_pkg::*; #(
     .icache_areq_o         ( icache_areq_cache_ex        ),
     .icache_dreq_i         ( icache_dreq_if_cache        ),
     .icache_dreq_o         ( icache_dreq_cache_if        ),
+    .icache_stall_i        ( icache_stall_ctrl           ),
     // D$
     .dcache_enable_i       ( dcache_en_csr_nbdcache      ),
     .dcache_flush_i        ( dcache_flush_ctrl_cache     ),
diff --git a/src/cache_subsystem/wt_cache_subsystem.sv b/src/cache_subsystem/wt_cache_subsystem.sv
index 5a0662dc4c2efa9bcc4fc34ebc15c0b6b2cc000c..3dc470d6b956d1dae85e1eaf171e7ece09bf3be3 100644
--- a/src/cache_subsystem/wt_cache_subsystem.sv
+++ b/src/cache_subsystem/wt_cache_subsystem.sv
@@ -34,6 +34,7 @@ module wt_cache_subsystem import ariane_pkg::*; import wt_cache_pkg::*; #(
   // data requests
   input  icache_dreq_i_t                 icache_dreq_i,          // to/from frontend
   output icache_dreq_o_t                 icache_dreq_o,
+  input logic                            icache_stall_i,
   // D$
   // Cache management
   input  logic                           dcache_enable_i,        // from CSR
@@ -88,7 +89,8 @@ module wt_cache_subsystem import ariane_pkg::*; import wt_cache_pkg::*; #(
     .mem_rtrn_i         ( adapter_icache          ),
     .mem_data_req_o     ( icache_adapter_data_req ),
     .mem_data_ack_i     ( adapter_icache_data_ack ),
-    .mem_data_o         ( icache_adapter          )
+    .mem_data_o         ( icache_adapter          ),
+    .stall_req_i        ( icache_stall_i          )
   );
 
 
diff --git a/src/cache_subsystem/wt_icache.sv b/src/cache_subsystem/wt_icache.sv
index b127eb6a132c8ed46cf7d9039e0052f62a07310b..0b3cd9db77074fcb6f5ccd69abf6a46c53e2472c 100644
--- a/src/cache_subsystem/wt_icache.sv
+++ b/src/cache_subsystem/wt_icache.sv
@@ -46,7 +46,8 @@ module wt_icache import ariane_pkg::*; import wt_cache_pkg::*; #(
   input  icache_rtrn_t              mem_rtrn_i,
   output logic                      mem_data_req_o,
   input  logic                      mem_data_ack_i,
-  output icache_req_t               mem_data_o
+  output icache_req_t               mem_data_o,
+  input  logic                      stall_req_i
 );
 
   // signals
diff --git a/src/verifier.sv b/src/verifier.sv
index f0875db2dd2ab28ccf8eaedefff74f9c4b4eaf40..80d2059119f0cb9053a1d8adc3b7dcae6938ced9 100644
--- a/src/verifier.sv
+++ b/src/verifier.sv
@@ -33,7 +33,8 @@ module verifier #(
   // Bus accesses (I$ misses and memory instructions in the pipeline)
   logic                             has_mem_access;
   assign has_mem_access = if_has_mem_access_i | id_has_mem_access_i | is_has_mem_access_i | (~no_st_pending_commit_i);
-  assign should_lock_icache_o = has_mem_access & icache_miss_i;
+  // assign should_lock_icache_o = has_mem_access & icache_miss_i;
+  assign should_lock_icache_o = has_mem_access;
 
   // CO
   logic [NR_COMMIT_PORTS-1:0][BITS_ENTRIES-1:0]          commit_id_n, commit_id_q;