This patch series adds a new flag to the struct perf_event (and a flag field to store it) to allow a PMU to tag a CPU or cgroup event as readable from any CPU in the same package and not just the CPU where the is currently active.
This capability is used with uncore events to potentially avoid an unnecessary IPI when executing perf_event_read. A previous version of this change was introduced in the last Intel's CQM/CMT driver series (under review), but now we present it separately here since it is also useful for other uncore events. The next version of Intel CQM/CMT will add 3 new flags that use the pmu_event_flags field (added in patch 03 in this series). Patch 02 generalizes event->group_flags so that new flags can use it in a similar way that PERF_GROUP_SOFTWARE was used. Patches rebased at peterz/queue/perf/core Changes in v3: - Rebase to branch's tip. - Add warning to patch 01, in response to Ingo Molnar's comments. - Check for Active state in perf_event_read, as suggested by Nilay Vaish (already posted in v2's email thread). Changes in v2: - Change logic to use event->group_flags instead of individually testing sibling in perf_event_read. - Remove erroneous read of inactive events. David Carrillo-Cisneros (4): perf/core: check return value of perf_event_read IPI perf/core: generalize event->group_flags perf/core: introduce PMU_EV_CAP_READ_ACTIVE_PKG perf/x86: use PMUEF_READ_CPU_PKG in uncore events arch/x86/events/intel/rapl.c | 2 ++ arch/x86/events/intel/uncore.c | 2 ++ arch/x86/events/intel/uncore_snb.c | 2 ++ include/linux/perf_event.h | 21 +++++++++++++---- kernel/events/core.c | 47 ++++++++++++++++++++++++++++---------- 5 files changed, 57 insertions(+), 17 deletions(-) -- 2.8.0.rc3.226.g39d4020