diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index 492bb962a2..71934a7328 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -1,3 +1,16 @@ +# Version 20.1.0.2 + +**[HOTFIX]** This hotfix release fixes known two bugs: + +* A "ValueError: invalid literal for int() with base..." error was being thrown in certain circumstances due to a non-integer being passed to "MemorySize" via a division operation. This has been rectified. +* An assertion in Stats could be triggered due to a name collision between two ThreadStateStats objects, due to both erroneously sharing the same ThreadID. This has been fixed. + +# Version 20.1.0.1 + +**[HOTFIX]** A patch was applied to fix the Garnet network interface stats. +Previously, the flit source delay was computed using both tick and cycles. +This bug affected the overall behavior of the Garnet Network Model. + # Version 20.1.0.0 Thank you to everyone that made this release possible! diff --git a/configs/topologies/MeshDirCorners_XY.py b/configs/topologies/MeshDirCorners_XY.py index 7d065de5b9..e0aea5212c 100644 --- a/configs/topologies/MeshDirCorners_XY.py +++ b/configs/topologies/MeshDirCorners_XY.py @@ -218,6 +218,6 @@ class MeshDirCorners_XY(SimpleTopology): for n in numa_nodes: if n: FileSystemConfig.register_node(n, - MemorySize(options.mem_size) / num_numa_nodes, i) + MemorySize(options.mem_size) // num_numa_nodes, i) i += 1 diff --git a/configs/topologies/Mesh_XY.py b/configs/topologies/Mesh_XY.py index 64a8506160..faec1e3c3b 100644 --- a/configs/topologies/Mesh_XY.py +++ b/configs/topologies/Mesh_XY.py @@ -178,4 +178,4 @@ class Mesh_XY(SimpleTopology): def registerTopology(self, options): for i in range(options.num_cpus): FileSystemConfig.register_node([i], - MemorySize(options.mem_size) / options.num_cpus, i) + MemorySize(options.mem_size) // options.num_cpus, i) diff --git a/src/cpu/thread_state.cc b/src/cpu/thread_state.cc index a142f5741c..5e59eb258a 100644 --- a/src/cpu/thread_state.cc +++ b/src/cpu/thread_state.cc @@ -39,7 +39,7 @@ #include "sim/system.hh" ThreadState::ThreadState(BaseCPU *cpu, ThreadID _tid, Process *_process) - : numInst(0), numOp(0), threadStats(cpu, this), + : numInst(0), numOp(0), threadStats(cpu, _tid), numLoad(0), startNumLoad(0), _status(ThreadContext::Halted), baseCpu(cpu), _contextId(0), _threadId(_tid), lastActivate(0), lastSuspend(0), @@ -119,8 +119,8 @@ ThreadState::getVirtProxy() } ThreadState::ThreadStateStats::ThreadStateStats(BaseCPU *cpu, - ThreadState *thread) - : Stats::Group(cpu, csprintf("thread%i", thread->threadId()).c_str()), + const ThreadID& tid) + : Stats::Group(cpu, csprintf("thread_%i", tid).c_str()), ADD_STAT(numInsts, "Number of Instructions committed"), ADD_STAT(numOps, "Number of Ops committed"), ADD_STAT(numMemRefs, "Number of Memory References") diff --git a/src/cpu/thread_state.hh b/src/cpu/thread_state.hh index 3ac473dce7..53817c8401 100644 --- a/src/cpu/thread_state.hh +++ b/src/cpu/thread_state.hh @@ -111,7 +111,7 @@ struct ThreadState : public Serializable { // Defining the stat group struct ThreadStateStats : public Stats::Group { - ThreadStateStats(BaseCPU *cpu, ThreadState *thread); + ThreadStateStats(BaseCPU *cpu, const ThreadID& thread); /** Stat for number instructions committed. */ Stats::Scalar numInsts; /** Stat for number ops (including micro ops) committed. */