perf: rdpmc mmap page time_enabled issue

From: Vince Weaver
Date: Tue Mar 14 2017 - 23:42:12 EST



So another obscure rdpmc problem, turned up by the PAPI regression tests.

If you use rdpmc, and your event is attached measuring another process,
and then you ENABLE/DISABLE/ENABLE/rdpmc the event

somehow the userpg->time_enabled field gets a weird value and that
completely confuses code expecting enabled!=running to mean multiplexing
is happening.

Example:

Trying attach:
* RDPMC 1 Event 0 -- count: 1058381 enabled ffe6935332c70240 running: 9d14f
* RDPMC 1 Event 1 -- count: 623980 enabled ffe6935332c829b3 running: 9d350

the rdpmc count and running values are expected, but the enabled value is way
off, it should match the running value.

If you want to test this out, I have a test case in perf_event_tests,
(github.com/deater/perf_event_tests.git)
tests/rdpmc/rdpmc_multiattach_papi

Vince