summaryrefslogtreecommitdiffstats
path: root/include/linux/perf_event.h
diff options
context:
space:
mode:
authorStephane Eranian <eranian@google.com>2011-06-06 16:57:03 +0200
committerIngo Molnar <mingo@elte.hu>2011-07-01 11:06:36 +0200
commitefc9f05df2dd171280dcb736a4d973ffefd5508e (patch)
treeccc1cee8f1cc0ad5391732eb3637b685b4b155a0 /include/linux/perf_event.h
parenta7ac67ea021b4603095d2aa458bc41641238f22c (diff)
downloadlinux-stable-efc9f05df2dd171280dcb736a4d973ffefd5508e.tar.gz
linux-stable-efc9f05df2dd171280dcb736a4d973ffefd5508e.tar.bz2
linux-stable-efc9f05df2dd171280dcb736a4d973ffefd5508e.zip
perf_events: Update Intel extra regs shared constraints management
This patch improves the code managing the extra shared registers used for offcore_response events on Intel Nehalem/Westmere. The idea is to use static allocation instead of dynamic allocation. This simplifies greatly the get and put constraint routines for those events. The patch also renames per_core to shared_regs because the same data structure gets used whether or not HT is on. When HT is off, those events still need to coordination because they use a extra MSR that has to be shared within an event group. Signed-off-by: Stephane Eranian <eranian@google.com> Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Link: http://lkml.kernel.org/r/20110606145703.GA7258@quad Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'include/linux/perf_event.h')
-rw-r--r--include/linux/perf_event.h14
1 files changed, 11 insertions, 3 deletions
diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h
index 771b0b2845e4..069315eefb22 100644
--- a/include/linux/perf_event.h
+++ b/include/linux/perf_event.h
@@ -536,6 +536,16 @@ struct perf_branch_stack {
struct task_struct;
+/*
+ * extra PMU register associated with an event
+ */
+struct hw_perf_event_extra {
+ u64 config; /* register value */
+ unsigned int reg; /* register address or index */
+ int alloc; /* extra register already allocated */
+ int idx; /* index in shared_regs->regs[] */
+};
+
/**
* struct hw_perf_event - performance event hardware details:
*/
@@ -549,9 +559,7 @@ struct hw_perf_event {
unsigned long event_base;
int idx;
int last_cpu;
- unsigned int extra_reg;
- u64 extra_config;
- int extra_alloc;
+ struct hw_perf_event_extra extra_reg;
};
struct { /* software */
struct hrtimer hrtimer;