diff options
| author | Mauro Carvalho Chehab <mchehab@osg.samsung.com> | 2015-04-21 05:33:03 -0400 |
|---|---|---|
| committer | Mauro Carvalho Chehab <mchehab@osg.samsung.com> | 2015-04-21 08:44:55 -0400 |
| commit | 64131a87f2aae2ed9e05d8227c5b009ca6c50d98 (patch) | |
| tree | fdea23fd59216120bf54a48c60ca24489a733f14 /include/uapi/linux/perf_event.h | |
| parent | 676ee36be04985062522804c2de04f0764212be6 (diff) | |
| parent | 2c33ce009ca2389dbf0535d0672214d09738e35e (diff) | |
Merge branch 'drm-next-merged' of git://people.freedesktop.org/~airlied/linux into v4l_for_linus
* 'drm-next-merged' of git://people.freedesktop.org/~airlied/linux: (9717 commits)
media-bus: Fixup RGB444_1X12, RGB565_1X16, and YUV8_1X24 media bus format
hexdump: avoid warning in test function
fs: take i_mutex during prepare_binprm for set[ug]id executables
smp: Fix error case handling in smp_call_function_*()
iommu-common: Fix PARISC compile-time warnings
sparc: Make LDC use common iommu poll management functions
sparc: Make sparc64 use scalable lib/iommu-common.c functions
Break up monolithic iommu table/lock into finer graularity pools and lock
sparc: Revert generic IOMMU allocator.
tools/power turbostat: correct dumped pkg-cstate-limit value
tools/power turbostat: calculate TSC frequency from CPUID(0x15) on SKL
tools/power turbostat: correct DRAM RAPL units on recent Xeon processors
tools/power turbostat: Initial Skylake support
tools/power turbostat: Use $(CURDIR) instead of $(PWD) and add support for O= option in Makefile
tools/power turbostat: modprobe msr, if needed
tools/power turbostat: dump MSR_TURBO_RATIO_LIMIT2
tools/power turbostat: use new MSR_TURBO_RATIO_LIMIT names
Bluetooth: hidp: Fix regression with older userspace and flags validation
config: Enable NEED_DMA_MAP_STATE by default when SWIOTLB is selected
perf/x86/intel/pt: Fix and clean up error handling in pt_event_add()
...
That solves several merge conflicts:
Documentation/DocBook/media/v4l/subdev-formats.xml
Documentation/devicetree/bindings/vendor-prefixes.txt
drivers/staging/media/mn88473/mn88473.c
include/linux/kconfig.h
include/uapi/linux/media-bus-format.h
The ones at subdev-formats.xml and media-bus-format.h are not trivial.
That's why we opted to merge from DRM.
Diffstat (limited to 'include/uapi/linux/perf_event.h')
| -rw-r--r-- | include/uapi/linux/perf_event.h | 115 |
1 files changed, 98 insertions, 17 deletions
diff --git a/include/uapi/linux/perf_event.h b/include/uapi/linux/perf_event.h index 9b79abbd1ab8..309211b3eb67 100644 --- a/include/uapi/linux/perf_event.h +++ b/include/uapi/linux/perf_event.h | |||
| @@ -152,21 +152,42 @@ enum perf_event_sample_format { | |||
| 152 | * The branch types can be combined, however BRANCH_ANY covers all types | 152 | * The branch types can be combined, however BRANCH_ANY covers all types |
| 153 | * of branches and therefore it supersedes all the other types. | 153 | * of branches and therefore it supersedes all the other types. |
| 154 | */ | 154 | */ |
| 155 | enum perf_branch_sample_type_shift { | ||
| 156 | PERF_SAMPLE_BRANCH_USER_SHIFT = 0, /* user branches */ | ||
| 157 | PERF_SAMPLE_BRANCH_KERNEL_SHIFT = 1, /* kernel branches */ | ||
| 158 | PERF_SAMPLE_BRANCH_HV_SHIFT = 2, /* hypervisor branches */ | ||
| 159 | |||
| 160 | PERF_SAMPLE_BRANCH_ANY_SHIFT = 3, /* any branch types */ | ||
| 161 | PERF_SAMPLE_BRANCH_ANY_CALL_SHIFT = 4, /* any call branch */ | ||
| 162 | PERF_SAMPLE_BRANCH_ANY_RETURN_SHIFT = 5, /* any return branch */ | ||
| 163 | PERF_SAMPLE_BRANCH_IND_CALL_SHIFT = 6, /* indirect calls */ | ||
| 164 | PERF_SAMPLE_BRANCH_ABORT_TX_SHIFT = 7, /* transaction aborts */ | ||
| 165 | PERF_SAMPLE_BRANCH_IN_TX_SHIFT = 8, /* in transaction */ | ||
| 166 | PERF_SAMPLE_BRANCH_NO_TX_SHIFT = 9, /* not in transaction */ | ||
| 167 | PERF_SAMPLE_BRANCH_COND_SHIFT = 10, /* conditional branches */ | ||
| 168 | |||
| 169 | PERF_SAMPLE_BRANCH_CALL_STACK_SHIFT = 11, /* call/ret stack */ | ||
| 170 | |||
| 171 | PERF_SAMPLE_BRANCH_MAX_SHIFT /* non-ABI */ | ||
| 172 | }; | ||
| 173 | |||
| 155 | enum perf_branch_sample_type { | 174 | enum perf_branch_sample_type { |
| 156 | PERF_SAMPLE_BRANCH_USER = 1U << 0, /* user branches */ | 175 | PERF_SAMPLE_BRANCH_USER = 1U << PERF_SAMPLE_BRANCH_USER_SHIFT, |
| 157 | PERF_SAMPLE_BRANCH_KERNEL = 1U << 1, /* kernel branches */ | 176 | PERF_SAMPLE_BRANCH_KERNEL = 1U << PERF_SAMPLE_BRANCH_KERNEL_SHIFT, |
| 158 | PERF_SAMPLE_BRANCH_HV = 1U << 2, /* hypervisor branches */ | 177 | PERF_SAMPLE_BRANCH_HV = 1U << PERF_SAMPLE_BRANCH_HV_SHIFT, |
| 159 | 178 | ||
| 160 | PERF_SAMPLE_BRANCH_ANY = 1U << 3, /* any branch types */ | 179 | PERF_SAMPLE_BRANCH_ANY = 1U << PERF_SAMPLE_BRANCH_ANY_SHIFT, |
| 161 | PERF_SAMPLE_BRANCH_ANY_CALL = 1U << 4, /* any call branch */ | 180 | PERF_SAMPLE_BRANCH_ANY_CALL = 1U << PERF_SAMPLE_BRANCH_ANY_CALL_SHIFT, |
| 162 | PERF_SAMPLE_BRANCH_ANY_RETURN = 1U << 5, /* any return branch */ | 181 | PERF_SAMPLE_BRANCH_ANY_RETURN = 1U << PERF_SAMPLE_BRANCH_ANY_RETURN_SHIFT, |
| 163 | PERF_SAMPLE_BRANCH_IND_CALL = 1U << 6, /* indirect calls */ | 182 | PERF_SAMPLE_BRANCH_IND_CALL = 1U << PERF_SAMPLE_BRANCH_IND_CALL_SHIFT, |
| 164 | PERF_SAMPLE_BRANCH_ABORT_TX = 1U << 7, /* transaction aborts */ | 183 | PERF_SAMPLE_BRANCH_ABORT_TX = 1U << PERF_SAMPLE_BRANCH_ABORT_TX_SHIFT, |
| 165 | PERF_SAMPLE_BRANCH_IN_TX = 1U << 8, /* in transaction */ | 184 | PERF_SAMPLE_BRANCH_IN_TX = 1U << PERF_SAMPLE_BRANCH_IN_TX_SHIFT, |
| 166 | PERF_SAMPLE_BRANCH_NO_TX = 1U << 9, /* not in transaction */ | 185 | PERF_SAMPLE_BRANCH_NO_TX = 1U << PERF_SAMPLE_BRANCH_NO_TX_SHIFT, |
| 167 | PERF_SAMPLE_BRANCH_COND = 1U << 10, /* conditional branches */ | 186 | PERF_SAMPLE_BRANCH_COND = 1U << PERF_SAMPLE_BRANCH_COND_SHIFT, |
| 168 | 187 | ||
| 169 | PERF_SAMPLE_BRANCH_MAX = 1U << 11, /* non-ABI */ | 188 | PERF_SAMPLE_BRANCH_CALL_STACK = 1U << PERF_SAMPLE_BRANCH_CALL_STACK_SHIFT, |
| 189 | |||
| 190 | PERF_SAMPLE_BRANCH_MAX = 1U << PERF_SAMPLE_BRANCH_MAX_SHIFT, | ||
| 170 | }; | 191 | }; |
| 171 | 192 | ||
| 172 | #define PERF_SAMPLE_BRANCH_PLM_ALL \ | 193 | #define PERF_SAMPLE_BRANCH_PLM_ALL \ |
| @@ -240,6 +261,7 @@ enum perf_event_read_format { | |||
| 240 | #define PERF_ATTR_SIZE_VER3 96 /* add: sample_regs_user */ | 261 | #define PERF_ATTR_SIZE_VER3 96 /* add: sample_regs_user */ |
| 241 | /* add: sample_stack_user */ | 262 | /* add: sample_stack_user */ |
| 242 | #define PERF_ATTR_SIZE_VER4 104 /* add: sample_regs_intr */ | 263 | #define PERF_ATTR_SIZE_VER4 104 /* add: sample_regs_intr */ |
| 264 | #define PERF_ATTR_SIZE_VER5 112 /* add: aux_watermark */ | ||
| 243 | 265 | ||
| 244 | /* | 266 | /* |
| 245 | * Hardware event_id to monitor via a performance monitoring event: | 267 | * Hardware event_id to monitor via a performance monitoring event: |
| @@ -305,7 +327,8 @@ struct perf_event_attr { | |||
| 305 | exclude_callchain_user : 1, /* exclude user callchains */ | 327 | exclude_callchain_user : 1, /* exclude user callchains */ |
| 306 | mmap2 : 1, /* include mmap with inode data */ | 328 | mmap2 : 1, /* include mmap with inode data */ |
| 307 | comm_exec : 1, /* flag comm events that are due to an exec */ | 329 | comm_exec : 1, /* flag comm events that are due to an exec */ |
| 308 | __reserved_1 : 39; | 330 | use_clockid : 1, /* use @clockid for time fields */ |
| 331 | __reserved_1 : 38; | ||
| 309 | 332 | ||
| 310 | union { | 333 | union { |
| 311 | __u32 wakeup_events; /* wakeup every n events */ | 334 | __u32 wakeup_events; /* wakeup every n events */ |
| @@ -334,8 +357,7 @@ struct perf_event_attr { | |||
| 334 | */ | 357 | */ |
| 335 | __u32 sample_stack_user; | 358 | __u32 sample_stack_user; |
| 336 | 359 | ||
| 337 | /* Align to u64. */ | 360 | __s32 clockid; |
| 338 | __u32 __reserved_2; | ||
| 339 | /* | 361 | /* |
| 340 | * Defines set of regs to dump for each sample | 362 | * Defines set of regs to dump for each sample |
| 341 | * state captured on: | 363 | * state captured on: |
| @@ -345,6 +367,12 @@ struct perf_event_attr { | |||
| 345 | * See asm/perf_regs.h for details. | 367 | * See asm/perf_regs.h for details. |
| 346 | */ | 368 | */ |
| 347 | __u64 sample_regs_intr; | 369 | __u64 sample_regs_intr; |
| 370 | |||
| 371 | /* | ||
| 372 | * Wakeup watermark for AUX area | ||
| 373 | */ | ||
| 374 | __u32 aux_watermark; | ||
| 375 | __u32 __reserved_2; /* align to __u64 */ | ||
| 348 | }; | 376 | }; |
| 349 | 377 | ||
| 350 | #define perf_flags(attr) (*(&(attr)->read_format + 1)) | 378 | #define perf_flags(attr) (*(&(attr)->read_format + 1)) |
| @@ -360,6 +388,7 @@ struct perf_event_attr { | |||
| 360 | #define PERF_EVENT_IOC_SET_OUTPUT _IO ('$', 5) | 388 | #define PERF_EVENT_IOC_SET_OUTPUT _IO ('$', 5) |
| 361 | #define PERF_EVENT_IOC_SET_FILTER _IOW('$', 6, char *) | 389 | #define PERF_EVENT_IOC_SET_FILTER _IOW('$', 6, char *) |
| 362 | #define PERF_EVENT_IOC_ID _IOR('$', 7, __u64 *) | 390 | #define PERF_EVENT_IOC_ID _IOR('$', 7, __u64 *) |
| 391 | #define PERF_EVENT_IOC_SET_BPF _IOW('$', 8, __u32) | ||
| 363 | 392 | ||
| 364 | enum perf_event_ioc_flags { | 393 | enum perf_event_ioc_flags { |
| 365 | PERF_IOC_FLAG_GROUP = 1U << 0, | 394 | PERF_IOC_FLAG_GROUP = 1U << 0, |
| @@ -500,9 +529,30 @@ struct perf_event_mmap_page { | |||
| 500 | * In this case the kernel will not over-write unread data. | 529 | * In this case the kernel will not over-write unread data. |
| 501 | * | 530 | * |
| 502 | * See perf_output_put_handle() for the data ordering. | 531 | * See perf_output_put_handle() for the data ordering. |
| 532 | * | ||
| 533 | * data_{offset,size} indicate the location and size of the perf record | ||
| 534 | * buffer within the mmapped area. | ||
| 503 | */ | 535 | */ |
| 504 | __u64 data_head; /* head in the data section */ | 536 | __u64 data_head; /* head in the data section */ |
| 505 | __u64 data_tail; /* user-space written tail */ | 537 | __u64 data_tail; /* user-space written tail */ |
| 538 | __u64 data_offset; /* where the buffer starts */ | ||
| 539 | __u64 data_size; /* data buffer size */ | ||
| 540 | |||
| 541 | /* | ||
| 542 | * AUX area is defined by aux_{offset,size} fields that should be set | ||
| 543 | * by the userspace, so that | ||
| 544 | * | ||
| 545 | * aux_offset >= data_offset + data_size | ||
| 546 | * | ||
| 547 | * prior to mmap()ing it. Size of the mmap()ed area should be aux_size. | ||
| 548 | * | ||
| 549 | * Ring buffer pointers aux_{head,tail} have the same semantics as | ||
| 550 | * data_{head,tail} and same ordering rules apply. | ||
| 551 | */ | ||
| 552 | __u64 aux_head; | ||
| 553 | __u64 aux_tail; | ||
| 554 | __u64 aux_offset; | ||
| 555 | __u64 aux_size; | ||
| 506 | }; | 556 | }; |
| 507 | 557 | ||
| 508 | #define PERF_RECORD_MISC_CPUMODE_MASK (7 << 0) | 558 | #define PERF_RECORD_MISC_CPUMODE_MASK (7 << 0) |
| @@ -725,6 +775,31 @@ enum perf_event_type { | |||
| 725 | */ | 775 | */ |
| 726 | PERF_RECORD_MMAP2 = 10, | 776 | PERF_RECORD_MMAP2 = 10, |
| 727 | 777 | ||
| 778 | /* | ||
| 779 | * Records that new data landed in the AUX buffer part. | ||
| 780 | * | ||
| 781 | * struct { | ||
| 782 | * struct perf_event_header header; | ||
| 783 | * | ||
| 784 | * u64 aux_offset; | ||
| 785 | * u64 aux_size; | ||
| 786 | * u64 flags; | ||
| 787 | * struct sample_id sample_id; | ||
| 788 | * }; | ||
| 789 | */ | ||
| 790 | PERF_RECORD_AUX = 11, | ||
| 791 | |||
| 792 | /* | ||
| 793 | * Indicates that instruction trace has started | ||
| 794 | * | ||
| 795 | * struct { | ||
| 796 | * struct perf_event_header header; | ||
| 797 | * u32 pid; | ||
| 798 | * u32 tid; | ||
| 799 | * }; | ||
| 800 | */ | ||
| 801 | PERF_RECORD_ITRACE_START = 12, | ||
| 802 | |||
| 728 | PERF_RECORD_MAX, /* non-ABI */ | 803 | PERF_RECORD_MAX, /* non-ABI */ |
| 729 | }; | 804 | }; |
| 730 | 805 | ||
| @@ -742,6 +817,12 @@ enum perf_callchain_context { | |||
| 742 | PERF_CONTEXT_MAX = (__u64)-4095, | 817 | PERF_CONTEXT_MAX = (__u64)-4095, |
| 743 | }; | 818 | }; |
| 744 | 819 | ||
| 820 | /** | ||
| 821 | * PERF_RECORD_AUX::flags bits | ||
| 822 | */ | ||
| 823 | #define PERF_AUX_FLAG_TRUNCATED 0x01 /* record was truncated to fit */ | ||
| 824 | #define PERF_AUX_FLAG_OVERWRITE 0x02 /* snapshot from overwrite mode */ | ||
| 825 | |||
| 745 | #define PERF_FLAG_FD_NO_GROUP (1UL << 0) | 826 | #define PERF_FLAG_FD_NO_GROUP (1UL << 0) |
| 746 | #define PERF_FLAG_FD_OUTPUT (1UL << 1) | 827 | #define PERF_FLAG_FD_OUTPUT (1UL << 1) |
| 747 | #define PERF_FLAG_PID_CGROUP (1UL << 2) /* pid=cgroup id, per-cpu mode only */ | 828 | #define PERF_FLAG_PID_CGROUP (1UL << 2) /* pid=cgroup id, per-cpu mode only */ |
