Fix infinite writebacks bug in cache.
src/mem/cache/cache_impl.hh:
Make sure to pop the list. Fixes infinite writeback bug.
src/mem/cache/miss/mshr_queue.cc:
Add an assert as sanity check in case .full() stops working again.
--HG--
extra : convert_revision : d847e49a397eeb0b7c5ac060fcfc3eaeac921311
This commit is contained in:
1
src/mem/cache/cache_impl.hh
vendored
1
src/mem/cache/cache_impl.hh
vendored
@@ -326,6 +326,7 @@ Cache<TagStore,Buffering,Coherence>::handleResponse(Packet * &pkt)
|
||||
writebacks, pkt);
|
||||
while (!writebacks.empty()) {
|
||||
missQueue->doWriteback(writebacks.front());
|
||||
writebacks.pop_front();
|
||||
}
|
||||
}
|
||||
missQueue->handleResponse(pkt, curTick + hitLatency);
|
||||
|
||||
1
src/mem/cache/miss/mshr_queue.cc
vendored
1
src/mem/cache/miss/mshr_queue.cc
vendored
@@ -128,6 +128,7 @@ MSHR*
|
||||
MSHRQueue::allocate(Packet * &pkt, int size)
|
||||
{
|
||||
Addr aligned_addr = pkt->getAddr() & ~((Addr)size - 1);
|
||||
assert(!freeList.empty());
|
||||
MSHR *mshr = freeList.front();
|
||||
assert(mshr->getNumTargets() == 0);
|
||||
freeList.pop_front();
|
||||
|
||||
Reference in New Issue
Block a user