aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/linux/perf_counter.h6
-rw-r--r--kernel/perf_counter.c3
2 files changed, 8 insertions, 1 deletions
diff --git a/include/linux/perf_counter.h b/include/linux/perf_counter.h
index 7f5d353d78ac..5bd8817b12d4 100644
--- a/include/linux/perf_counter.h
+++ b/include/linux/perf_counter.h
@@ -201,9 +201,13 @@ struct perf_counter_mmap_page {
201 __u32 data_head; /* head in the data section */ 201 __u32 data_head; /* head in the data section */
202}; 202};
203 203
204#define PERF_EVENT_MISC_KERNEL (1 << 0)
205#define PERF_EVENT_MISC_USER (1 << 1)
206
204struct perf_event_header { 207struct perf_event_header {
205 __u32 type; 208 __u32 type;
206 __u32 size; 209 __u16 misc;
210 __u16 size;
207}; 211};
208 212
209enum perf_event_type { 213enum perf_event_type {
diff --git a/kernel/perf_counter.c b/kernel/perf_counter.c
index 84a39081344c..4af98f943d3b 100644
--- a/kernel/perf_counter.c
+++ b/kernel/perf_counter.c
@@ -1831,6 +1831,9 @@ static void perf_counter_output(struct perf_counter *counter,
1831 header.type = PERF_EVENT_COUNTER_OVERFLOW; 1831 header.type = PERF_EVENT_COUNTER_OVERFLOW;
1832 header.size = sizeof(header); 1832 header.size = sizeof(header);
1833 1833
1834 header.misc = user_mode(regs) ?
1835 PERF_EVENT_MISC_USER : PERF_EVENT_MISC_KERNEL;
1836
1834 if (record_type & PERF_RECORD_IP) { 1837 if (record_type & PERF_RECORD_IP) {
1835 ip = instruction_pointer(regs); 1838 ip = instruction_pointer(regs);
1836 header.type |= __PERF_EVENT_IP; 1839 header.type |= __PERF_EVENT_IP;