From: Daniel R. Carvalho Date: Fri, 26 Oct 2018 14:40:51 +0000 (+0200) Subject: mem-cache: Fix double block invalidation X-Git-Tag: v19.0.0.0~1443 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=49798e0eface6ad81f6227ea54980268656819c0;p=gem5.git mem-cache: Fix double block invalidation Block was being invalidated twice when not a tempBlock. Make explicit that the else case is only to be applied when handling the tempBlock, as otherwise the Tags should be taking care of the invalidation. Change-Id: Ie7603fdbe156c54e94bbdc83541b55e66f8d250f Signed-off-by: Daniel R. Carvalho Reviewed-on: https://gem5-review.googlesource.com/c/13895 Reviewed-by: Nikos Nikoleris Maintainer: Nikos Nikoleris --- diff --git a/src/mem/cache/base.cc b/src/mem/cache/base.cc index 7bb0e0fdb..6f3914ccd 100644 --- a/src/mem/cache/base.cc +++ b/src/mem/cache/base.cc @@ -1305,9 +1305,13 @@ BaseCache::allocateBlock(const PacketPtr pkt, PacketList &writebacks) void BaseCache::invalidateBlock(CacheBlk *blk) { - if (blk != tempBlock) + // If handling a block present in the Tags, let it do its invalidation + // process, which will update stats and invalidate the block itself + if (blk != tempBlock) { tags->invalidate(blk); - blk->invalidate(); + } else { + tempBlock->invalidate(); + } } void