kvm: Add experimental support for a perf-based execution timer
authorAndreas Sandberg <Andreas.Sandberg@ARM.com>
Mon, 22 Apr 2013 17:20:32 +0000 (13:20 -0400)
committerAndreas Sandberg <Andreas.Sandberg@ARM.com>
Mon, 22 Apr 2013 17:20:32 +0000 (13:20 -0400)
commitf8f66fa3df3ef5b4e30ee86d33a4e95476ba425a
treed3880f7bfda96783c2535d3e690026b6d6478efb
parentdc83d234254861f142854bdf523581101c3d5c8d
kvm: Add experimental support for a perf-based execution timer

Add support for using the CPU cycle counter instead of a normal POSIX
timer to generate timed exits to gem5. This should, in theory, provide
better resolution when requesting timer signals.

The perf-based timer requires a fairly recent kernel since it requires
a working PERF_EVENT_IOC_PERIOD ioctl. This ioctl has existed in the
kernel for a long time, but it used to be completely broken due to an
inverted match when the kernel copied things from user
space. Additionally, the ioctl does not change the sample period
correctly on all kernel versions which implement it. It is currently
only known to work reliably on kernel version 3.7 and above on ARM.
src/cpu/kvm/BaseKvmCPU.py
src/cpu/kvm/base.cc
src/cpu/kvm/base.hh
src/cpu/kvm/perfevent.hh
src/cpu/kvm/timer.cc
src/cpu/kvm/timer.hh