Zhantong Qiu has submitted this change. (
https://gem5-review.googlesource.com/c/public/gem5/+/67194?usp=email )
(
13 is the latest approved patch-set.
No files were changed between the latest approved patch-set and the
submitted one.
)Change subject: sim: Added PcCountTracker and PcCountTrackerManager
......................................................................
sim: Added PcCountTracker and PcCountTrackerManager
PcCountTracker is a probelistener that connects to one core and listens
for a list of Program Counter addresses(PCs). It notifys the
PcCountTrackerManager every time it encounters a Program Counter
address in the list.
PcCountTrackerManager is a SimObject that is responsible for keeping
track of a list of PC-count pairs and the number of time a particular
PC has been executed globally.
This patch adds a way to track the number of times a set of specific
PCs have been executed.
Change-Id: I8f47bfa7e29aa2bb6ab817417266033439b85d51
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/67194
Maintainer: Bobby Bruce <bbr...@ucdavis.edu>
Reviewed-by: Bobby Bruce <bbr...@ucdavis.edu>
Tested-by: kokoro <noreply+kok...@google.com>
---
A src/cpu/probes/PcCountTracker.py
A src/cpu/probes/SConscript
A src/cpu/probes/pc_count_tracker.cc
A src/cpu/probes/pc_count_tracker.hh
A src/cpu/probes/pc_count_tracker_manager.cc
A src/cpu/probes/pc_count_tracker_manager.hh
6 files changed, 479 insertions(+), 0 deletions(-)
Approvals:
Bobby Bruce: Looks good to me, approved; Looks good to me, approved
kokoro: Regressions pass
diff --git a/src/cpu/probes/PcCountTracker.py
b/src/cpu/probes/PcCountTracker.py
new file mode 100644
index 0000000..259ec68
--- /dev/null
+++ b/src/cpu/probes/PcCountTracker.py
@@ -0,0 +1,64 @@
+# Copyright (c) 2023 The Regents of the University of California
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met: redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer;
+# redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution;
+# neither the name of the copyright holders nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+from m5.params import *
+from m5.util.pybind import *
+from m5.objects.Probe import ProbeListenerObject
+from m5.objects import SimObject
+
+
+class PcCountTrackerManager(SimObject):
+ """This class manages global PC-count pair tracking.
+ It keeps the global counters for all target PC-count pairs and raises
exit
+ events when a PC executed a target number of times.
+ It gets called every time a PcCountTracker encounters a target PC.
+ """
+
+ type = "PcCountTrackerManager"
+ cxx_header = "cpu/probes/pc_count_tracker_manager.hh"
+ cxx_class = "gem5::PcCountTrackerManager"
+
+ cxx_exports = [
+ PyBindMethod("getPcCount"),
+ PyBindMethod("getCurrentPcCountPair"),
+ ]
+
+ targets = VectorParam.PcCountPair("the target PC Count pairs")
+
+
+class PcCountTracker(ProbeListenerObject):
+ """This probe listener tracks the number of times a particular pc has
been
+ executed. It needs to be connected to a manager to track the global
+ information.
+ """
+
+ type = "PcCountTracker"
+ cxx_header = "cpu/probes/pc_count_tracker.hh"
+ cxx_class = "gem5::PcCountTracker"
+
+ targets = VectorParam.PcCountPair("the target PC Count pairs")
+ core = Param.BaseCPU("the connected cpu")
+ ptmanager = Param.PcCountTrackerManager("the PcCountTracker manager")
diff --git a/src/cpu/probes/SConscript b/src/cpu/probes/SConscript
new file mode 100644
index 0000000..c96ca78
--- /dev/null
+++ b/src/cpu/probes/SConscript
@@ -0,0 +1,37 @@
+# Copyright (c) 2022 The Regents of the University of California
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met: redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer;
+# redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution;
+# neither the name of the copyright holders nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Import("*")
+
+if not env["CONF"]["USE_NULL_ISA"]:
+ SimObject(
+ "PcCountTracker.py",
+ sim_objects=["PcCountTracker", "PcCountTrackerManager"],
+ )
+ Source("pc_count_tracker.cc")
+ Source("pc_count_tracker_manager.cc")
+
+ DebugFlag("PcCountTracker")
diff --git a/src/cpu/probes/pc_count_tracker.cc
b/src/cpu/probes/pc_count_tracker.cc
new file mode 100644
index 0000000..184db9a
--- /dev/null
+++ b/src/cpu/probes/pc_count_tracker.cc
@@ -0,0 +1,70 @@
+/*
+ * Copyright (c) 2022 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met: redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer;
+ * redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution;
+ * neither the name of the copyright holders nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "cpu/probes/pc_count_tracker.hh"
+
+
+namespace gem5
+{
+
+PcCountTracker::PcCountTracker(const PcCountTrackerParams &p)
+ : ProbeListenerObject(p),
+ cpuptr(p.core),
+ manager(p.ptmanager)
+{
+ if (!cpuptr || !manager) {
+ fatal("%s is NULL", !cpuptr ? "CPU": "PcCountTrackerManager");
+ }
+ for (int i = 0; i < p.targets.size(); i++) {
+ // initialize the set of targeting Program Counter addresses
+ targetPC.insert(p.targets[i].getPC());
+ }
+}
+
+void
+PcCountTracker::regProbeListeners()
+{
+ // connect the probe listener with the probe "RetriedInstsPC" in the
+ // corresponding core.
+ // when "RetiredInstsPC" notifies the probe listener, then the function
+ // 'check_pc' is automatically called
+ typedef ProbeListenerArg<PcCountTracker, Addr> PcCountTrackerListener;
+ listeners.push_back(new PcCountTrackerListener(this, "RetiredInstsPC",
+ &PcCountTracker::checkPc));
+}
+
+void
+PcCountTracker::checkPc(const Addr& pc) {
+ if (targetPC.find(pc) != targetPC.end()) {
+ // if the PC is one of the target PCs, then notify the
+ // PcCounterTrackerManager by calling its `check_count` function
+ manager->checkCount(pc);
+ }
+}
+
+} // namespace gem5
diff --git a/src/cpu/probes/pc_count_tracker.hh
b/src/cpu/probes/pc_count_tracker.hh
new file mode 100644
index 0000000..8f54e1a
--- /dev/null
+++ b/src/cpu/probes/pc_count_tracker.hh
@@ -0,0 +1,72 @@
+/*
+ * Copyright (c) 2022 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met: redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer;
+ * redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution;
+ * neither the name of the copyright holders nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef __CPU_PROBES_PC_COUNT_TRACKER_HH__
+#define __CPU_PROBES_PC_COUNT_TRACKER_HH__
+
+#include <unordered_set>
+
+#include "cpu/probes/pc_count_tracker_manager.hh"
+#include "params/PcCountTracker.hh"
+#include "sim/probe/probe.hh"
+
+namespace gem5
+{
+
+class PcCountTracker : public ProbeListenerObject
+{
+ public:
+ PcCountTracker(const PcCountTrackerParams ¶ms);
+
+ /** setup the probelistener */
+ virtual void regProbeListeners();
+
+ /**
+ * this function is called when the probelistener receives signal from
the
+ * probe
+ *
+ * @param pc the targeting Program Counter address
+ */
+ void checkPc(const Addr& pc);
+
+ private:
+ /**
+ * a set of Program Counter addresses that should notify the
+ * PcCounterTrackerManager for
+ */
+ std::unordered_set<Addr> targetPC;
+
+ /** the core this PcCountTracker is tracking at */
+ BaseCPU *cpuptr;
+
+ /** the PcCounterTrackerManager */
+ PcCountTrackerManager *manager;
+};
+}
+
+#endif // __CPU_PROBES_PC_COUNT_TRACKER_HH__
diff --git a/src/cpu/probes/pc_count_tracker_manager.cc
b/src/cpu/probes/pc_count_tracker_manager.cc
new file mode 100644
index 0000000..88d7dda
--- /dev/null
+++ b/src/cpu/probes/pc_count_tracker_manager.cc
@@ -0,0 +1,88 @@
+/*
+ * Copyright (c) 2022 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met: redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer;
+ * redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution;
+ * neither the name of the copyright holders nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "cpu/probes/pc_count_tracker_manager.hh"
+
+namespace gem5
+{
+
+PcCountTrackerManager::PcCountTrackerManager(
+ const PcCountTrackerManagerParams &p)
+ : SimObject(p)
+{
+ currentPair = PcCountPair(0,0);
+ ifListNotEmpty = true;
+
+ for (int i = 0 ; i < p.targets.size() ; i++) {
+ // initialize the counter for the inputted PC Count pair
+ // unordered_map does not allow duplicate, so counter won't
+ // have duplicates
+ counter.insert(std::make_pair(p.targets[i].getPC(),0));
+ // store all the PC Count pair into the targetPair set
+ targetPair.insert(p.targets[i]);
+ }
+ DPRINTF(PcCountTracker,
+ "total %i PCs in counter\n", counter.size());
+ DPRINTF(PcCountTracker,
+ "all targets: \n%s", printAllTargets());
+}
+
+void
+PcCountTrackerManager::checkCount(Addr pc)
+{
+
+ if(ifListNotEmpty) {
+ int count = ++counter.find(pc)->second;
+ // increment the counter of the encountered PC address by 1
+
+ currentPair = PcCountPair(pc,count);
+ // update the current PC Count pair
+ if(targetPair.find(currentPair) != targetPair.end()) {
+ // if the current PC Count pair is one of the target pairs
+ DPRINTF(PcCountTracker,
+ "pc:%s encountered\n", currentPair.to_string());
+
+ exitSimLoopNow("simpoint starting point found");
+ // raise the SIMPOINT_BEGIN exit event
+
+ targetPair.erase(currentPair);
+ // erase the encountered PC Count pair from the target pairs
+ DPRINTF(PcCountTracker,
+ "There are %i targets remained\n", targetPair.size());
+ }
+
+ if(targetPair.empty()) {
+ // if all target PC Count pairs are encountered
+ DPRINTF(PcCountTracker,
+ "all targets are encountered.\n");
+ ifListNotEmpty = false;
+ }
+ }
+}
+
+}
diff --git a/src/cpu/probes/pc_count_tracker_manager.hh
b/src/cpu/probes/pc_count_tracker_manager.hh
new file mode 100644
index 0000000..00742ff
--- /dev/null
+++ b/src/cpu/probes/pc_count_tracker_manager.hh
@@ -0,0 +1,124 @@
+/*
+ * Copyright (c) 2022 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met: redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer;
+ * redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution;
+ * neither the name of the copyright holders nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef __CPU_PROBES_PC_COUNT_TRACKER_MANAGER_HH__
+#define __CPU_PROBES_PC_COUNT_TRACKER_MANAGER_HH__
+
+#include <unordered_map>
+#include <unordered_set>
+
+#include "cpu/base.hh"
+#include "params/PcCountTrackerManager.hh"
+#include "sim/sim_exit.hh"
+#include "debug/PcCountTracker.hh"
+
+namespace gem5
+{
+
+
+class PcCountTrackerManager : public SimObject {
+ public:
+ PcCountTrackerManager(const PcCountTrackerManagerParams ¶ms);
+
+ /** this function is called when PcCountTrackerProbeListener finds a
target
+ * PC
+ */
+ void checkCount(Addr pc);
+
+ private:
+ /** a counter that stores all the target PC addresses and the number
+ * of times the target PC has been executed
+ */
+ std::unordered_map<Addr, int> counter;
+
+ /** a set that stores all the PC Count pairs that should raise an
+ * exit event at
+ */
+ std::unordered_set<PcCountPair,
+ PcCountPair::HashFunction> targetPair;
+
+ /** the current PC Count pair */
+ PcCountPair currentPair;
+
+ /** when all the PC Count pairs in the `targetPair` are encountered,
+ * and the PCCOUNTTRACK_END exit event is raised, this boolean
+ * variable becomes false and is used to stop the `check_count`
+ * from functioning. This is default as true.
+ */
+ bool ifListNotEmpty;
+
+ public:
+
+ /** this function returns the corresponding value of count for the
+ * inputted Program Counter address. If the PC address does not
+ * exist in the counter, then it returns a -1.
+ *
+ * @param pc the targeting Program Counter address
+ * @return the corresponding value of count for the inputted Program
+ * Counter address
+ */
+ int
+ getPcCount(Addr pc) const
+ {
+ if (counter.find(pc) != counter.end()) {
+ return counter.find(pc)->second;
+ }
+ return -1;
+ }
+
+ /** this function returns the current PC Count pair
+ *
+ * @return current PC Count pair
+ */
+ PcCountPair
+ getCurrentPcCountPair() const
+ {
+ return currentPair;
+ }
+
+ /** this function print all targets
+ *
+ * @return formatted string that contains all targets
+ */
+ std::string
+ printAllTargets() const
+ {
+ std::string s;
+ for(auto itr = targetPair.begin();
+ itr != targetPair.end();
+ ++itr) {
+ s += itr->to_string();
+ s += "\n";
+ }
+ return s;
+ }
+};
+
+}
+
+#endif // __CPU_PROBES_PC_COUNT_TRACKER_MANAGER_HH__
--
To view, visit
https://gem5-review.googlesource.com/c/public/gem5/+/67194?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gem5-review.googlesource.com/settings
Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I8f47bfa7e29aa2bb6ab817417266033439b85d51
Gerrit-Change-Number: 67194
Gerrit-PatchSet: 16
Gerrit-Owner: Zhantong Qiu <zt...@ucdavis.edu>
Gerrit-Reviewer: Bobby Bruce <bbr...@ucdavis.edu>
Gerrit-Reviewer: Jason Lowe-Power <ja...@lowepower.com>
Gerrit-Reviewer: Zhantong Qiu <zt...@ucdavis.edu>
Gerrit-Reviewer: kokoro <noreply+kok...@google.com>
Gerrit-MessageType: merged
_______________________________________________
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org