diff --git a/src/mem/cache/cache_impl.hh b/src/mem/cache/cache_impl.hh --- a/src/mem/cache/cache_impl.hh +++ b/src/mem/cache/cache_impl.hh @@ -172,7 +172,7 @@ // on ReadExReq we give up our copy unconditionally tags->invalidateBlk(blk); } else if (blk->isWritable() && !pending_downgrade - && !pkt->sharedAsserted()) { + && !pkt->sharedAsserted() && !pkt->req->isInstFetch()) { // we can give the requester an exclusive copy (by not // asserting shared line) on a read request if: // - we have an exclusive copy at this level (& below)