From b72d69c5caa382902fc200086e861e92ef883163 Mon Sep 17 00:00:00 2001 From: Nikos Nikoleris Date: Tue, 19 Dec 2017 14:44:11 +0000 Subject: mem-cache: Only pendingModified MSHRs can satisfy CMO snoops We set the satisfied flag when a cache clean request encounters: 1) a block with the dirty bit set, or 2) a pending modified MSHR which means that the cache will get copy of the block that will be soon modified. This changeset fixes a previous bug that set the satisfied flag on snooping MSHR hits even the pendingModified flags was not set. Change-Id: I4968c4820997be5cc1238148eea12a1ba39837d4 Reviewed-by: Andreas Sandberg Reviewed-by: Sudhanshu Jha Reviewed-on: https://gem5-review.googlesource.com/7822 Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power --- src/mem/cache/mshr.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mem/cache/mshr.cc b/src/mem/cache/mshr.cc index f1a9b985e..493b7f021 100644 --- a/src/mem/cache/mshr.cc +++ b/src/mem/cache/mshr.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013, 2015-2017 ARM Limited + * Copyright (c) 2012-2013, 2015-2018 ARM Limited * All rights reserved. * * The license below extends only to copyright in the software and shall @@ -452,7 +452,7 @@ MSHR::handleSnoop(PacketPtr pkt, Counter _order) postInvalidate = true; } - if (pkt->isClean()) { + if (isPendingModified() && pkt->isClean()) { pkt->setSatisfied(); } } -- cgit v1.2.3