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 /src/cpu/kvm/base.cc | |
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.
Diffstat (limited to 'src/cpu/kvm/base.cc')
-rw-r--r-- | src/cpu/kvm/base.cc | 9 |
1 files changed, 6 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); |