Re: perf: PERF_EVENT_IOC_PERIOD on ARM vs everywhere else

From: Vince Weaver
Date: Wed Oct 30 2013 - 10:05:24 EST


On Wed, 30 Oct 2013, Peter Zijlstra wrote:

> Right, it was one of those interfaces that people claimed were
> absolutely required so I implemented them but then nobody actually tried
> using them for a long while :-(

Well, the initial perf_event code drop was a big huge new interface
without much documentation and it took a while for people to come up to
speed on it.

People have tried to use PERF_EVENT_IOC_PERIOD but stopped because it was
buggy. It is still used, as someone complaining to me about the manpage
description not matching reality is what started this whole thread.

There was a push for getting this issue fixed back in 2010 but it never
went anywhere.

The userspace users will report bugs, but they are usually intimidated by
the linux-kernel list and won't push along changes themselves. Usually
it's up to someone like me or Stephane to do that, and we miss things
sometimes.

The users will just find a workaround and drop the issue, especially if
it's going to take years before the fix shows up in RHEL or whatever
ancient vendor kernel they are using.

> The below code should deal with both cases I think -- completely
> untested.

Uncompiled too I guess?

kernel/events/core.c: In function ʽperf_event_periodʼ:
kernel/events/core.c:3531: error: invalid type argument of ʽ->ʼ (have ʽlocal64_tʼ)
make[3]: *** [kernel/events/core.o] Error 1

I also won't be able to test the ARM change, as my pandaboard won't boot
with recent kernels (can't find the MMC root filesystem) and I haven't had
time to track down why. Also even on a simple period changing test it
often fails due to lost interrupts (the Cortex-A9 lost interrupt errata?).

Vince