diff options
author | Andreas Sandberg <andreas@sandberg.pp.se> | 2013-06-11 09:24:40 +0200 |
---|---|---|
committer | Andreas Sandberg <andreas@sandberg.pp.se> | 2013-06-11 09:24:40 +0200 |
commit | df059f45a0cbd230ad00f6da24cfc5d228430e16 (patch) | |
tree | 38af3de7250ce34e7d9ed39eb07cddabb9bbc0c4 | |
parent | 0b4a8b40866a1ed44bacbccc788ce3001eab8b20 (diff) | |
download | gem5-df059f45a0cbd230ad00f6da24cfc5d228430e16.tar.xz |
kvm: Maintain a local instruction counter and update totalNumInsts
Update the system's totalNumInst counter when exiting from KVM and
maintain an internal absolute instruction count instead of relying on
the one from perf.
-rw-r--r-- | src/cpu/kvm/base.cc | 9 | ||||
-rw-r--r-- | src/cpu/kvm/base.hh | 3 |
2 files changed, 9 insertions, 3 deletions
diff --git a/src/cpu/kvm/base.cc b/src/cpu/kvm/base.cc index a0aa511ea..6ffad82d7 100644 --- a/src/cpu/kvm/base.cc +++ b/src/cpu/kvm/base.cc @@ -80,7 +80,8 @@ BaseKvmCPU::BaseKvmCPU(BaseKvmCPUParams *params) pageSize(sysconf(_SC_PAGE_SIZE)), tickEvent(*this), perfControlledByTimer(params->usePerfOverflow), - hostFactor(params->hostFactor) + hostFactor(params->hostFactor), + ctrInsts(0) { if (pageSize == -1) panic("KVM: Failed to determine host page size (%i)\n", @@ -416,14 +417,14 @@ BaseKvmCPU::getContext(int tn) Counter BaseKvmCPU::totalInsts() const { - return hwInstructions.read(); + return ctrInsts; } Counter BaseKvmCPU::totalOps() const { hack_once("Pretending totalOps is equivalent to totalInsts()\n"); - return hwInstructions.read(); + return ctrInsts; } void @@ -522,6 +523,8 @@ BaseKvmCPU::kvmRun(Tick ticks) numCycles += simCyclesExecuted;; ++numVMExits; numInsts += instsExecuted; + ctrInsts += instsExecuted; + system->totalNumInsts += instsExecuted; DPRINTF(KvmRun, "KVM: Executed %i instructions in %i cycles (%i ticks, sim cycles: %i).\n", instsExecuted, hostCyclesExecuted, ticksExecuted, simCyclesExecuted); diff --git a/src/cpu/kvm/base.hh b/src/cpu/kvm/base.hh index c53f715e3..81b24a378 100644 --- a/src/cpu/kvm/base.hh +++ b/src/cpu/kvm/base.hh @@ -561,6 +561,9 @@ class BaseKvmCPU : public BaseCPU Stats::Scalar numInterrupts; Stats::Scalar numHypercalls; /* @} */ + + /** Number of instructions executed by the CPU */ + Counter ctrInsts; }; #endif |