arch-arm: Fix initialization of PMU counters
authorRuben Ayrapetyan <ruben.ayrapetyan@arm.com>
Tue, 29 Jan 2019 19:19:51 +0000 (19:19 +0000)
committerGiacomo Travaglini <giacomo.travaglini@arm.com>
Fri, 8 Feb 2019 09:41:25 +0000 (09:41 +0000)
A version of Linux kernel initializes counters before enabling them.
Without this change, gem5 overwrites the value of counter, which causes
incorrect counter values derived by kernel.

Change-Id: If0c515111103018d5f65f74434d7711a67aeaee4
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/16203
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

src/arch/arm/pmu.cc

index f6cf87294a7949b868175baef666da0014922aad..30425153f5ca1c94490a669ab91c82c58e8a9c17 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011-2014, 2017-2018 ARM Limited
+ * Copyright (c) 2011-2014, 2017-2019 ARM Limited
  * All rights reserved
  *
  * The license below extends only to copyright in the software and shall
@@ -532,7 +532,10 @@ PMU::CounterState::detach()
 void
 PMU::CounterState::attach(PMUEvent* event)
 {
-    value = 0;
+    if (!resetValue) {
+      value = 0;
+      resetValue = true;
+    }
     sourceEvent = event;
     sourceEvent->attachEvent(this);
 }