Add comments in code to describe bug conditions.
authorKorey Sewell <ksewell@umich.edu>
Wed, 27 Feb 2008 22:50:29 +0000 (17:50 -0500)
committerKorey Sewell <ksewell@umich.edu>
Wed, 27 Feb 2008 22:50:29 +0000 (17:50 -0500)
This should help if somebody gets to the bug
fix before me (or someone else)...

--HG--
extra : convert_revision : 0ae64c58ef4f7b02996f31e9e9e6bfad344719e2

src/cpu/o3/cpu.cc
src/cpu/o3/free_list.hh

index 84aea0479d7a08f139f29c340090743b4ab6c4aa..c75a08213cbc4f65572f9ec84cdb0fa964c0885b 100644 (file)
@@ -671,7 +671,12 @@ FullO3CPU<Impl>::removeThread(unsigned tid)
 
     // Copy Thread Data From RegFile
     // If thread is suspended, it might be re-allocated
-    //this->copyToTC(tid);
+    // this->copyToTC(tid);
+
+
+    // @todo: 2-27-2008: Fix how we free up rename mappings
+    // here to alleviate the case for double-freeing registers
+    // in SMT workloads.
 
     // Unbind Int Regs from Rename Map
     for (int ireg = 0; ireg < TheISA::NumIntRegs; ireg++) {
index d05068800a76fb34b92cda0b2543cccf38a2f53a..97b56909e0d7e9a2cd0c91801b758559628b94e4 100644 (file)
@@ -174,7 +174,17 @@ SimpleFreeList::addReg(PhysRegIndex freed_reg)
             freeFloatRegs.push(freed_reg);
     }
 
-    //assert(freeIntRegs.size() <= numPhysicalIntRegs);
+    // These assert conditions ensure that the number of free
+    // registers are not more than the # of total Physical  Registers.
+    // If this were false, it would mean that registers
+    // have been freed twice, overflowing the free register
+    // pool and potentially crashing SMT workloads.
+    // ----
+    // Comment out for now so as to not potentially break
+    // CMP and single-threaded workloads
+    // ----
+    // assert(freeIntRegs.size() <= numPhysicalIntRegs);
+    // assert(freeFloatRegs.size() <= numPhysicalFloatRegs);
 }
 
 inline void