From f8f66fa3df3ef5b4e30ee86d33a4e95476ba425a Mon Sep 17 00:00:00 2001 From: Andreas Sandberg Date: Mon, 22 Apr 2013 13:20:32 -0400 Subject: 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/perfevent.hh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/cpu/kvm/perfevent.hh') diff --git a/src/cpu/kvm/perfevent.hh b/src/cpu/kvm/perfevent.hh index 8242cc071..eed900994 100644 --- a/src/cpu/kvm/perfevent.hh +++ b/src/cpu/kvm/perfevent.hh @@ -217,7 +217,8 @@ public: * like the new period isn't effective until after the next * counter overflow. If you use this method to change the sample * period, you will see one sample with the old period and then - * start sampling with the new period. + * start sampling with the new period. This problem was fixed for + * ARM in version 3.7 of the kernel. * * @warning This method doesn't work at all on some 2.6.3x kernels * since it has inverted check for the return value when copying -- cgit v1.2.3