diff --git a/src/cache_subsystem/wt_icache.sv b/src/cache_subsystem/wt_icache.sv
index 0b3cd9db77074fcb6f5ccd69abf6a46c53e2472c..60b4afc9c527975802634d6b84114320534a4874 100644
--- a/src/cache_subsystem/wt_icache.sv
+++ b/src/cache_subsystem/wt_icache.sv
@@ -197,7 +197,7 @@ end else begin : gen_piton_offset
           // wait for incoming requests
           end else begin
             // mem requests are for sure invals here
-            if (!mem_rtrn_vld_i) begin
+            if (!mem_rtrn_vld_i && !stall_req_i) begin
               dreq_o.ready = 1'b1;
               // we have a new request
               if (dreq_i.req) begin
@@ -250,7 +250,7 @@ end else begin : gen_piton_offset
             // we have a miss / NC transaction
             end else if (dreq_i.kill_s2) begin
               state_d = IDLE;
-            end else begin
+            end else if (!stall_req_i) begin
               cmp_en_d = 1'b0;
               // only count this as a miss if the cache is enabled, and
               // the address is cacheable