cpu: get rid of uncached access "events"
These recordEvent() calls could cause crashes since they access the req pointer after it's potentially been deleted during a failed translation call. (Similar problem to the traceData bug fixed in the previous cset.) Moving them above the translation call (as was done recentlyi in cset 8b2b8e5e7d35) avoids the crash but doesn't work, since at that point we don't know if the access is uncached or not. It's not clear why these calls are there, and no one seems to use them, so we'll just delete them. If they are needed, they should be moved to somewhere that's guaranteed to be after the translation completes but before the request is possibly deleted, e.g., in finishTranslation().
This commit is contained in:
parent
4d77ea7a57
commit
f066bfc2f5
2 changed files with 0 additions and 16 deletions
|
@ -351,10 +351,6 @@ AtomicSimpleCPU::read(Addr addr, T &data, unsigned flags)
|
|||
}
|
||||
}
|
||||
|
||||
// This will need a new way to tell if it has a dcache attached.
|
||||
if (req->isUncacheable())
|
||||
recordEvent("Uncached Read");
|
||||
|
||||
//If there's a fault, return it
|
||||
if (fault != NoFault) {
|
||||
if (req->isPrefetch()) {
|
||||
|
@ -523,10 +519,6 @@ AtomicSimpleCPU::write(T data, Addr addr, unsigned flags, uint64_t *res)
|
|||
}
|
||||
}
|
||||
|
||||
// This will need a new way to tell if it's hooked up to a cache or not.
|
||||
if (req->isUncacheable())
|
||||
recordEvent("Uncached Write");
|
||||
|
||||
//If there's a fault or we don't need to access a second cache line,
|
||||
//stop now.
|
||||
if (fault != NoFault || secondAddr <= addr)
|
||||
|
|
|
@ -436,10 +436,6 @@ TimingSimpleCPU::read(Addr addr, T &data, unsigned flags)
|
|||
Addr split_addr = roundDown(addr + data_size - 1, block_size);
|
||||
assert(split_addr <= addr || split_addr - addr < block_size);
|
||||
|
||||
// This will need a new way to tell if it's hooked up to a cache or not.
|
||||
if (req->isUncacheable())
|
||||
recordEvent("Uncached Write");
|
||||
|
||||
_status = DTBWaitResponse;
|
||||
if (split_addr > addr) {
|
||||
RequestPtr req1, req2;
|
||||
|
@ -558,10 +554,6 @@ TimingSimpleCPU::write(T data, Addr addr, unsigned flags, uint64_t *res)
|
|||
Addr split_addr = roundDown(addr + data_size - 1, block_size);
|
||||
assert(split_addr <= addr || split_addr - addr < block_size);
|
||||
|
||||
// This will need a new way to tell if it's hooked up to a cache or not.
|
||||
if (req->isUncacheable())
|
||||
recordEvent("Uncached Write");
|
||||
|
||||
T *dataP = new T;
|
||||
*dataP = TheISA::htog(data);
|
||||
_status = DTBWaitResponse;
|
||||
|
|
Loading…
Reference in a new issue