Richard Cooper has uploaded this change for review. ( https://gem5-review.googlesource.com/c/public/gem5/+/69959?usp=email )

Change subject: configs: Add baremetal.py option to dump stats on PMU interrupt.
......................................................................

configs: Add baremetal.py option to dump stats on PMU interrupt.

Add an option to baremetal.py to optionally enable the PMU
`dumpStatsOnInterrupt` feature.

Change-Id: Ie2ffe11c6aa1f3a57a58425ccec3681c780065c8
---
M configs/example/arm/baremetal.py
M configs/example/arm/devices.py
2 files changed, 15 insertions(+), 2 deletions(-)



diff --git a/configs/example/arm/baremetal.py b/configs/example/arm/baremetal.py
index be72ebe..c45b416 100644
--- a/configs/example/arm/baremetal.py
+++ b/configs/example/arm/baremetal.py
@@ -160,7 +160,10 @@
     if args.with_pmu:
         for cluster in system.cpu_cluster:
             interrupt_numbers = [args.pmu_ppi_number] * len(cluster)
-            cluster.addPMUs(interrupt_numbers)
+            cluster.addPMUs(
+                interrupt_numbers,
+                dump_stats_on_interrupt=args.pmu_dump_stats_on_interrupt,
+            )

     if args.exit_on_uart_eot:
         for uart in system.realview.uart:
@@ -284,6 +287,11 @@
         "Must be an integer and a valid PPI number (16 <= int_num <= 31).",
     )
     parser.add_argument(
+        "--pmu-dump-stats-on-interrupt",
+        action="store_true",
+        help="Dump and reset gem5 stats on PMU interrupt.",
+    )
+    parser.add_argument(
         "--exit-on-uart-eot",
         action="store_true",
         help="Exit simulation if any of the UARTs receive an EOT. Many "
diff --git a/configs/example/arm/devices.py b/configs/example/arm/devices.py
index 02574d2..c444a1d 100644
--- a/configs/example/arm/devices.py
+++ b/configs/example/arm/devices.py
@@ -147,7 +147,7 @@
             cpu.connectCachedPorts(self.toL2Bus.cpu_side_ports)
         self.toL2Bus.mem_side_ports = self.l2.cpu_side

-    def addPMUs(self, ints, events=[]):
+    def addPMUs(self, ints, events=[], dump_stats_on_interrupt=False):
         """
         Instantiates 1 ArmPMU per PE. The method is accepting a list of
         interrupt numbers (ints) used by the PMU and a list of events to
@@ -159,12 +159,17 @@
         :type ints: List[int]
         :param events: Additional events to be measured by the PMUs
         :type events: List[Union[ProbeEvent, SoftwareIncrement]]
+ :param dump_stats_on_interrupt: If true, then dump the gem5 statistics
+            when a PMU interrupt is triggered.
+        :type dump_stats_on_interrupt: bool
+
         """
         assert len(ints) == len(self.cpus)
         for cpu, pint in zip(self.cpus, ints):
             int_cls = ArmPPI if pint < 32 else ArmSPI
             for isa in cpu.isa:
                 isa.pmu = ArmPMU(interrupt=int_cls(num=pint))
+                isa.pmu.dumpStatsOnInterrupt = dump_stats_on_interrupt
                 isa.pmu.addArchEvents(
                     cpu=cpu,
                     itb=cpu.mmu.itb,

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/69959?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings

Gerrit-MessageType: newchange
Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: Ie2ffe11c6aa1f3a57a58425ccec3681c780065c8
Gerrit-Change-Number: 69959
Gerrit-PatchSet: 1
Gerrit-Owner: Richard Cooper <richard.coo...@arm.com>
_______________________________________________
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org

Reply via email to