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:
parent
c42a7bc4f6
commit
178d114fa5
2 changed files with 2 additions and 0 deletions
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();
|
||||
|
|
Loading…
Reference in a new issue