diff --git a/[refs] b/[refs] index 88a3411dc090..3882ea7c09e7 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e30e08f65c7ef6c230424264f09c3d53f117f58b +refs/heads/master: 6fab01927e8bdbbc77bafba2abb4810c5591ad52 diff --git a/trunk/include/linux/perf_counter.h b/trunk/include/linux/perf_counter.h index 7f5d353d78ac..5bd8817b12d4 100644 --- a/trunk/include/linux/perf_counter.h +++ b/trunk/include/linux/perf_counter.h @@ -201,9 +201,13 @@ struct perf_counter_mmap_page { __u32 data_head; /* head in the data section */ }; +#define PERF_EVENT_MISC_KERNEL (1 << 0) +#define PERF_EVENT_MISC_USER (1 << 1) + struct perf_event_header { __u32 type; - __u32 size; + __u16 misc; + __u16 size; }; enum perf_event_type { diff --git a/trunk/kernel/perf_counter.c b/trunk/kernel/perf_counter.c index 84a39081344c..4af98f943d3b 100644 --- a/trunk/kernel/perf_counter.c +++ b/trunk/kernel/perf_counter.c @@ -1831,6 +1831,9 @@ static void perf_counter_output(struct perf_counter *counter, header.type = PERF_EVENT_COUNTER_OVERFLOW; header.size = sizeof(header); + header.misc = user_mode(regs) ? + PERF_EVENT_MISC_USER : PERF_EVENT_MISC_KERNEL; + if (record_type & PERF_RECORD_IP) { ip = instruction_pointer(regs); header.type |= __PERF_EVENT_IP;