diff -r d21b7c379d30 -r 4f2355e395a3 src/mem/cache/cache.cc --- a/src/mem/cache/cache.cc Fri Nov 18 16:41:48 2016 +0000 +++ b/src/mem/cache/cache.cc Fri Nov 18 16:43:09 2016 +0000 @@ -909,7 +909,8 @@ bool blkValid = blk && blk->isValid(); if (cpu_pkt->req->isUncacheable() || - (!blkValid && cpu_pkt->isUpgrade())) { + (!blkValid && cpu_pkt->isUpgrade()) || + cpu_pkt->cmd == MemCmd::InvalidateReq) { // uncacheable requests and upgrades from upper-level caches // that missed completely just go through as is return nullptr; @@ -936,8 +937,7 @@ // where the determination the StoreCond fails is delayed due to // all caches not being on the same local bus. cmd = MemCmd::SCUpgradeFailReq; - } else if (cpu_pkt->cmd == MemCmd::WriteLineReq || - cpu_pkt->cmd == MemCmd::InvalidateReq) { + } else if (cpu_pkt->cmd == MemCmd::WriteLineReq) { // forward as invalidate to all other caches, this gives us // the line in Exclusive state, and invalidates all other // copies