changeset d21d575a6f99 in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=d21d575a6f99
description:
        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().

diffstat:

2 files changed, 16 deletions(-)
src/cpu/simple/atomic.cc |    8 --------
src/cpu/simple/timing.cc |    8 --------

diffs (50 lines):

diff -r e21fe6a62b1c -r d21d575a6f99 src/cpu/simple/atomic.cc
--- a/src/cpu/simple/atomic.cc  Tue Mar 23 08:50:57 2010 -0700
+++ b/src/cpu/simple/atomic.cc  Tue Mar 23 08:50:59 2010 -0700
@@ -351,10 +351,6 @@
             }
         }
 
-        // 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 @@
             }
         }
 
-        // 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)
diff -r e21fe6a62b1c -r d21d575a6f99 src/cpu/simple/timing.cc
--- a/src/cpu/simple/timing.cc  Tue Mar 23 08:50:57 2010 -0700
+++ b/src/cpu/simple/timing.cc  Tue Mar 23 08:50:59 2010 -0700
@@ -436,10 +436,6 @@
     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 @@
     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;
_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to