Fix several bugs pertaining to upgrades/mem leaks.
src/mem/cache/base_cache.cc:
Fix a bug about not having a request to send
src/mem/cache/base_cache.hh:
Fix a bug with the blocking code
src/mem/cache/cache.hh:
AFix a bug with snoop hits in WB buffer
src/mem/cache/cache_impl.hh:
Fix a bug with snoop hits in WB buffer
Also, add better DPRINTF's
src/mem/cache/miss/miss_queue.cc:
Fix a bug with upgrades (Need to clean it up later)
src/mem/cache/miss/mshr.cc:
Fix a memory leak bug, still some outstanding with writebacks not being deleted
src/mem/cache/miss/mshr_queue.cc:
Fix a bug about upgrades (need to clean up later)
src/mem/packet.hh:
Fix for newly added cmd attribute for upgrades
tests/configs/memtest.py:
More interesting testcase
--HG--
extra : convert_revision : fcb4f17dd58b537bb4f67a8c835f50e455e8c688
This commit is contained in:
10
src/mem/cache/base_cache.hh
vendored
10
src/mem/cache/base_cache.hh
vendored
@@ -392,11 +392,13 @@ class BaseCache : public MemObject
|
||||
blocked_causes[cause]++;
|
||||
blockedCycle = curTick;
|
||||
}
|
||||
int old_state = blocked;
|
||||
if (!(blocked & flag)) {
|
||||
//Wasn't already blocked for this cause
|
||||
blocked |= flag;
|
||||
DPRINTF(Cache,"Blocking for cause %s\n", cause);
|
||||
cpuSidePort->setBlocked();
|
||||
if (!old_state)
|
||||
cpuSidePort->setBlocked();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -408,10 +410,12 @@ class BaseCache : public MemObject
|
||||
void setBlockedForSnoop(BlockedCause cause)
|
||||
{
|
||||
uint8_t flag = 1 << cause;
|
||||
if (!(blocked & flag)) {
|
||||
uint8_t old_state = blockedSnoop;
|
||||
if (!(blockedSnoop & flag)) {
|
||||
//Wasn't already blocked for this cause
|
||||
blockedSnoop |= flag;
|
||||
memSidePort->setBlocked();
|
||||
if (!old_state)
|
||||
memSidePort->setBlocked();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user