diff options
Diffstat (limited to 'src/cpu/simple/timing.cc')
-rw-r--r-- | src/cpu/simple/timing.cc | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/cpu/simple/timing.cc b/src/cpu/simple/timing.cc index da6427306..43f4eb9f4 100644 --- a/src/cpu/simple/timing.cc +++ b/src/cpu/simple/timing.cc @@ -876,8 +876,14 @@ TimingSimpleCPU::DcachePort::recvTimingSnoopReq(PacketPtr pkt) } } - for (auto &t_info : cpu->threadInfo) { - TheISA::handleLockedSnoop(t_info->thread, pkt, cacheBlockMask); + // Making it uniform across all CPUs: + // The CPUs need to be woken up only on an invalidation packet (when using caches) + // or on an incoming write packet (when not using caches) + // It is not necessary to wake up the processor on all incoming packets + if (pkt->isInvalidate() || pkt->isWrite()) { + for (auto &t_info : cpu->threadInfo) { + TheISA::handleLockedSnoop(t_info->thread, pkt, cacheBlockMask); + } } } |