diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2017-10-01 15:06:31 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2017-10-01 15:06:31 -0400 |
| commit | 1c6f705ba236678278e47a4c4542c799ad0e5add (patch) | |
| tree | 857071c8cf85202656e8ad948453d0fb3c7f65e6 | |
| parent | 1de47f3cb705e8c19fdd432eb704f5a588ccec48 (diff) | |
| parent | 1addcd55bc54d669000221b41e379458ff3e6747 (diff) | |
Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull perf fixes from Thomas Gleixner:
- Prevent a division by zero in the perf aux buffer handling
- Sync kernel headers with perf tool headers
- Fix a build failure in the syscalltbl code
- Make the debug messages of perf report --call-graph work correctly
- Make sure that all required perf files are in the MANIFEST for
container builds
- Fix the atrr.exclude kernel handling so it respects the
perf_event_paranoid and the user permissions
- Make perf test on s390x work correctly
* 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
perf/aux: Only update ->aux_wakeup in non-overwrite mode
perf test: Fix vmlinux failure on s390x part 2
perf test: Fix vmlinux failure on s390x
perf tools: Fix syscalltbl build failure
perf report: Fix debug messages with --call-graph option
perf evsel: Fix attr.exclude_kernel setting for default cycles:p
tools include: Sync kernel ABI headers with tooling headers
perf tools: Get all of tools/{arch,include}/ in the MANIFEST
| -rw-r--r-- | kernel/events/ring_buffer.c | 20 | ||||
| -rw-r--r-- | tools/arch/s390/include/uapi/asm/kvm.h | 6 | ||||
| -rw-r--r-- | tools/arch/x86/include/asm/cpufeatures.h | 2 | ||||
| -rw-r--r-- | tools/arch/x86/include/asm/disabled-features.h | 4 | ||||
| -rw-r--r-- | tools/include/asm-generic/hugetlb_encode.h | 34 | ||||
| -rw-r--r-- | tools/include/uapi/asm-generic/mman-common.h | 14 | ||||
| -rw-r--r-- | tools/include/uapi/drm/drm.h | 22 | ||||
| -rw-r--r-- | tools/include/uapi/drm/i915_drm.h | 51 | ||||
| -rw-r--r-- | tools/include/uapi/linux/bpf.h | 32 | ||||
| -rw-r--r-- | tools/include/uapi/linux/kvm.h | 3 | ||||
| -rw-r--r-- | tools/include/uapi/linux/mman.h | 24 | ||||
| -rw-r--r-- | tools/perf/MANIFEST | 87 | ||||
| -rw-r--r-- | tools/perf/arch/s390/util/Build | 1 | ||||
| -rw-r--r-- | tools/perf/arch/s390/util/sym-handling.c | 29 | ||||
| -rw-r--r-- | tools/perf/util/callchain.c | 35 | ||||
| -rw-r--r-- | tools/perf/util/evsel.c | 7 | ||||
| -rw-r--r-- | tools/perf/util/symbol-elf.c | 8 | ||||
| -rw-r--r-- | tools/perf/util/symbol.h | 3 | ||||
| -rw-r--r-- | tools/perf/util/syscalltbl.c | 2 |
19 files changed, 210 insertions, 174 deletions
diff --git a/kernel/events/ring_buffer.c b/kernel/events/ring_buffer.c index af71a84e12ee..f684d8e5fa2b 100644 --- a/kernel/events/ring_buffer.c +++ b/kernel/events/ring_buffer.c | |||
| @@ -412,6 +412,19 @@ err: | |||
| 412 | return NULL; | 412 | return NULL; |
| 413 | } | 413 | } |
| 414 | 414 | ||
| 415 | static bool __always_inline rb_need_aux_wakeup(struct ring_buffer *rb) | ||
| 416 | { | ||
| 417 | if (rb->aux_overwrite) | ||
| 418 | return false; | ||
| 419 | |||
| 420 | if (rb->aux_head - rb->aux_wakeup >= rb->aux_watermark) { | ||
| 421 | rb->aux_wakeup = rounddown(rb->aux_head, rb->aux_watermark); | ||
| 422 | return true; | ||
| 423 | } | ||
| 424 | |||
| 425 | return false; | ||
| 426 | } | ||
| 427 | |||
| 415 | /* | 428 | /* |
| 416 | * Commit the data written by hardware into the ring buffer by adjusting | 429 | * Commit the data written by hardware into the ring buffer by adjusting |
| 417 | * aux_head and posting a PERF_RECORD_AUX into the perf buffer. It is the | 430 | * aux_head and posting a PERF_RECORD_AUX into the perf buffer. It is the |
| @@ -451,10 +464,8 @@ void perf_aux_output_end(struct perf_output_handle *handle, unsigned long size) | |||
| 451 | } | 464 | } |
| 452 | 465 | ||
| 453 | rb->user_page->aux_head = rb->aux_head; | 466 | rb->user_page->aux_head = rb->aux_head; |
| 454 | if (rb->aux_head - rb->aux_wakeup >= rb->aux_watermark) { | 467 | if (rb_need_aux_wakeup(rb)) |
| 455 | wakeup = true; | 468 | wakeup = true; |
| 456 | rb->aux_wakeup = rounddown(rb->aux_head, rb->aux_watermark); | ||
| 457 | } | ||
| 458 | 469 | ||
| 459 | if (wakeup) { | 470 | if (wakeup) { |
| 460 | if (handle->aux_flags & PERF_AUX_FLAG_TRUNCATED) | 471 | if (handle->aux_flags & PERF_AUX_FLAG_TRUNCATED) |
| @@ -484,9 +495,8 @@ int perf_aux_output_skip(struct perf_output_handle *handle, unsigned long size) | |||
| 484 | rb->aux_head += size; | 495 | rb->aux_head += size; |
| 485 | 496 | ||
| 486 | rb->user_page->aux_head = rb->aux_head; | 497 | rb->user_page->aux_head = rb->aux_head; |
| 487 | if (rb->aux_head - rb->aux_wakeup >= rb->aux_watermark) { | 498 | if (rb_need_aux_wakeup(rb)) { |
| 488 | perf_output_wakeup(handle); | 499 | perf_output_wakeup(handle); |
| 489 | rb->aux_wakeup = rounddown(rb->aux_head, rb->aux_watermark); | ||
| 490 | handle->wakeup = rb->aux_wakeup + rb->aux_watermark; | 500 | handle->wakeup = rb->aux_wakeup + rb->aux_watermark; |
| 491 | } | 501 | } |
| 492 | 502 | ||
diff --git a/tools/arch/s390/include/uapi/asm/kvm.h b/tools/arch/s390/include/uapi/asm/kvm.h index 69d09c39bbcd..cd7359e23d86 100644 --- a/tools/arch/s390/include/uapi/asm/kvm.h +++ b/tools/arch/s390/include/uapi/asm/kvm.h | |||
| @@ -88,6 +88,12 @@ struct kvm_s390_io_adapter_req { | |||
| 88 | /* kvm attributes for KVM_S390_VM_TOD */ | 88 | /* kvm attributes for KVM_S390_VM_TOD */ |
| 89 | #define KVM_S390_VM_TOD_LOW 0 | 89 | #define KVM_S390_VM_TOD_LOW 0 |
| 90 | #define KVM_S390_VM_TOD_HIGH 1 | 90 | #define KVM_S390_VM_TOD_HIGH 1 |
| 91 | #define KVM_S390_VM_TOD_EXT 2 | ||
| 92 | |||
| 93 | struct kvm_s390_vm_tod_clock { | ||
| 94 | __u8 epoch_idx; | ||
| 95 | __u64 tod; | ||
| 96 | }; | ||
| 91 | 97 | ||
| 92 | /* kvm attributes for KVM_S390_VM_CPU_MODEL */ | 98 | /* kvm attributes for KVM_S390_VM_CPU_MODEL */ |
| 93 | /* processor related attributes are r/w */ | 99 | /* processor related attributes are r/w */ |
diff --git a/tools/arch/x86/include/asm/cpufeatures.h b/tools/arch/x86/include/asm/cpufeatures.h index 8ea315a11fe0..2519c6c801c9 100644 --- a/tools/arch/x86/include/asm/cpufeatures.h +++ b/tools/arch/x86/include/asm/cpufeatures.h | |||
| @@ -196,6 +196,7 @@ | |||
| 196 | 196 | ||
| 197 | #define X86_FEATURE_HW_PSTATE ( 7*32+ 8) /* AMD HW-PState */ | 197 | #define X86_FEATURE_HW_PSTATE ( 7*32+ 8) /* AMD HW-PState */ |
| 198 | #define X86_FEATURE_PROC_FEEDBACK ( 7*32+ 9) /* AMD ProcFeedbackInterface */ | 198 | #define X86_FEATURE_PROC_FEEDBACK ( 7*32+ 9) /* AMD ProcFeedbackInterface */ |
| 199 | #define X86_FEATURE_SME ( 7*32+10) /* AMD Secure Memory Encryption */ | ||
| 199 | 200 | ||
| 200 | #define X86_FEATURE_INTEL_PPIN ( 7*32+14) /* Intel Processor Inventory Number */ | 201 | #define X86_FEATURE_INTEL_PPIN ( 7*32+14) /* Intel Processor Inventory Number */ |
| 201 | #define X86_FEATURE_INTEL_PT ( 7*32+15) /* Intel Processor Trace */ | 202 | #define X86_FEATURE_INTEL_PT ( 7*32+15) /* Intel Processor Trace */ |
| @@ -287,6 +288,7 @@ | |||
| 287 | #define X86_FEATURE_PFTHRESHOLD (15*32+12) /* pause filter threshold */ | 288 | #define X86_FEATURE_PFTHRESHOLD (15*32+12) /* pause filter threshold */ |
| 288 | #define X86_FEATURE_AVIC (15*32+13) /* Virtual Interrupt Controller */ | 289 | #define X86_FEATURE_AVIC (15*32+13) /* Virtual Interrupt Controller */ |
| 289 | #define X86_FEATURE_V_VMSAVE_VMLOAD (15*32+15) /* Virtual VMSAVE VMLOAD */ | 290 | #define X86_FEATURE_V_VMSAVE_VMLOAD (15*32+15) /* Virtual VMSAVE VMLOAD */ |
| 291 | #define X86_FEATURE_VGIF (15*32+16) /* Virtual GIF */ | ||
| 290 | 292 | ||
| 291 | /* Intel-defined CPU features, CPUID level 0x00000007:0 (ecx), word 16 */ | 293 | /* Intel-defined CPU features, CPUID level 0x00000007:0 (ecx), word 16 */ |
| 292 | #define X86_FEATURE_AVX512VBMI (16*32+ 1) /* AVX512 Vector Bit Manipulation instructions*/ | 294 | #define X86_FEATURE_AVX512VBMI (16*32+ 1) /* AVX512 Vector Bit Manipulation instructions*/ |
diff --git a/tools/arch/x86/include/asm/disabled-features.h b/tools/arch/x86/include/asm/disabled-features.h index 5dff775af7cd..c10c9128f54e 100644 --- a/tools/arch/x86/include/asm/disabled-features.h +++ b/tools/arch/x86/include/asm/disabled-features.h | |||
| @@ -21,11 +21,13 @@ | |||
| 21 | # define DISABLE_K6_MTRR (1<<(X86_FEATURE_K6_MTRR & 31)) | 21 | # define DISABLE_K6_MTRR (1<<(X86_FEATURE_K6_MTRR & 31)) |
| 22 | # define DISABLE_CYRIX_ARR (1<<(X86_FEATURE_CYRIX_ARR & 31)) | 22 | # define DISABLE_CYRIX_ARR (1<<(X86_FEATURE_CYRIX_ARR & 31)) |
| 23 | # define DISABLE_CENTAUR_MCR (1<<(X86_FEATURE_CENTAUR_MCR & 31)) | 23 | # define DISABLE_CENTAUR_MCR (1<<(X86_FEATURE_CENTAUR_MCR & 31)) |
| 24 | # define DISABLE_PCID 0 | ||
| 24 | #else | 25 | #else |
| 25 | # define DISABLE_VME 0 | 26 | # define DISABLE_VME 0 |
| 26 | # define DISABLE_K6_MTRR 0 | 27 | # define DISABLE_K6_MTRR 0 |
| 27 | # define DISABLE_CYRIX_ARR 0 | 28 | # define DISABLE_CYRIX_ARR 0 |
| 28 | # define DISABLE_CENTAUR_MCR 0 | 29 | # define DISABLE_CENTAUR_MCR 0 |
| 30 | # define DISABLE_PCID (1<<(X86_FEATURE_PCID & 31)) | ||
| 29 | #endif /* CONFIG_X86_64 */ | 31 | #endif /* CONFIG_X86_64 */ |
| 30 | 32 | ||
| 31 | #ifdef CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS | 33 | #ifdef CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS |
| @@ -49,7 +51,7 @@ | |||
| 49 | #define DISABLED_MASK1 0 | 51 | #define DISABLED_MASK1 0 |
| 50 | #define DISABLED_MASK2 0 | 52 | #define DISABLED_MASK2 0 |
| 51 | #define DISABLED_MASK3 (DISABLE_CYRIX_ARR|DISABLE_CENTAUR_MCR|DISABLE_K6_MTRR) | 53 | #define DISABLED_MASK3 (DISABLE_CYRIX_ARR|DISABLE_CENTAUR_MCR|DISABLE_K6_MTRR) |
| 52 | #define DISABLED_MASK4 0 | 54 | #define DISABLED_MASK4 (DISABLE_PCID) |
| 53 | #define DISABLED_MASK5 0 | 55 | #define DISABLED_MASK5 0 |
| 54 | #define DISABLED_MASK6 0 | 56 | #define DISABLED_MASK6 0 |
| 55 | #define DISABLED_MASK7 0 | 57 | #define DISABLED_MASK7 0 |
diff --git a/tools/include/asm-generic/hugetlb_encode.h b/tools/include/asm-generic/hugetlb_encode.h new file mode 100644 index 000000000000..e4732d3c2998 --- /dev/null +++ b/tools/include/asm-generic/hugetlb_encode.h | |||
| @@ -0,0 +1,34 @@ | |||
| 1 | #ifndef _ASM_GENERIC_HUGETLB_ENCODE_H_ | ||
| 2 | #define _ASM_GENERIC_HUGETLB_ENCODE_H_ | ||
| 3 | |||
| 4 | /* | ||
| 5 | * Several system calls take a flag to request "hugetlb" huge pages. | ||
| 6 | * Without further specification, these system calls will use the | ||
| 7 | * system's default huge page size. If a system supports multiple | ||
| 8 | * huge page sizes, the desired huge page size can be specified in | ||
| 9 | * bits [26:31] of the flag arguments. The value in these 6 bits | ||
| 10 | * will encode the log2 of the huge page size. | ||
| 11 | * | ||
| 12 | * The following definitions are associated with this huge page size | ||
| 13 | * encoding in flag arguments. System call specific header files | ||
| 14 | * that use this encoding should include this file. They can then | ||
| 15 | * provide definitions based on these with their own specific prefix. | ||
| 16 | * for example: | ||
| 17 | * #define MAP_HUGE_SHIFT HUGETLB_FLAG_ENCODE_SHIFT | ||
| 18 | */ | ||
| 19 | |||
| 20 | #define HUGETLB_FLAG_ENCODE_SHIFT 26 | ||
| 21 | #define HUGETLB_FLAG_ENCODE_MASK 0x3f | ||
| 22 | |||
| 23 | #define HUGETLB_FLAG_ENCODE_64KB (16 << HUGETLB_FLAG_ENCODE_SHIFT) | ||
| 24 | #define HUGETLB_FLAG_ENCODE_512KB (19 << HUGETLB_FLAG_ENCODE_SHIFT) | ||
| 25 | #define HUGETLB_FLAG_ENCODE_1MB (20 << HUGETLB_FLAG_ENCODE_SHIFT) | ||
| 26 | #define HUGETLB_FLAG_ENCODE_2MB (21 << HUGETLB_FLAG_ENCODE_SHIFT) | ||
| 27 | #define HUGETLB_FLAG_ENCODE_8MB (23 << HUGETLB_FLAG_ENCODE_SHIFT) | ||
| 28 | #define HUGETLB_FLAG_ENCODE_16MB (24 << HUGETLB_FLAG_ENCODE_SHIFT) | ||
| 29 | #define HUGETLB_FLAG_ENCODE_256MB (28 << HUGETLB_FLAG_ENCODE_SHIFT) | ||
| 30 | #define HUGETLB_FLAG_ENCODE_1GB (30 << HUGETLB_FLAG_ENCODE_SHIFT) | ||
| 31 | #define HUGETLB_FLAG_ENCODE_2GB (31 << HUGETLB_FLAG_ENCODE_SHIFT) | ||
| 32 | #define HUGETLB_FLAG_ENCODE_16GB (34 << HUGETLB_FLAG_ENCODE_SHIFT) | ||
| 33 | |||
| 34 | #endif /* _ASM_GENERIC_HUGETLB_ENCODE_H_ */ | ||
diff --git a/tools/include/uapi/asm-generic/mman-common.h b/tools/include/uapi/asm-generic/mman-common.h index 8c27db0c5c08..203268f9231e 100644 --- a/tools/include/uapi/asm-generic/mman-common.h +++ b/tools/include/uapi/asm-generic/mman-common.h | |||
| @@ -58,20 +58,12 @@ | |||
| 58 | overrides the coredump filter bits */ | 58 | overrides the coredump filter bits */ |
| 59 | #define MADV_DODUMP 17 /* Clear the MADV_DONTDUMP flag */ | 59 | #define MADV_DODUMP 17 /* Clear the MADV_DONTDUMP flag */ |
| 60 | 60 | ||
| 61 | #define MADV_WIPEONFORK 18 /* Zero memory on fork, child only */ | ||
| 62 | #define MADV_KEEPONFORK 19 /* Undo MADV_WIPEONFORK */ | ||
| 63 | |||
| 61 | /* compatibility flags */ | 64 | /* compatibility flags */ |
| 62 | #define MAP_FILE 0 | 65 | #define MAP_FILE 0 |
| 63 | 66 | ||
| 64 | /* | ||
| 65 | * When MAP_HUGETLB is set bits [26:31] encode the log2 of the huge page size. | ||
| 66 | * This gives us 6 bits, which is enough until someone invents 128 bit address | ||
| 67 | * spaces. | ||
| 68 | * | ||
| 69 | * Assume these are all power of twos. | ||
| 70 | * When 0 use the default page size. | ||
| 71 | */ | ||
| 72 | #define MAP_HUGE_SHIFT 26 | ||
| 73 | #define MAP_HUGE_MASK 0x3f | ||
| 74 | |||
| 75 | #define PKEY_DISABLE_ACCESS 0x1 | 67 | #define PKEY_DISABLE_ACCESS 0x1 |
| 76 | #define PKEY_DISABLE_WRITE 0x2 | 68 | #define PKEY_DISABLE_WRITE 0x2 |
| 77 | #define PKEY_ACCESS_MASK (PKEY_DISABLE_ACCESS |\ | 69 | #define PKEY_ACCESS_MASK (PKEY_DISABLE_ACCESS |\ |
diff --git a/tools/include/uapi/drm/drm.h b/tools/include/uapi/drm/drm.h index 101593ab10ac..97677cd6964d 100644 --- a/tools/include/uapi/drm/drm.h +++ b/tools/include/uapi/drm/drm.h | |||
| @@ -700,6 +700,7 @@ struct drm_prime_handle { | |||
| 700 | 700 | ||
| 701 | struct drm_syncobj_create { | 701 | struct drm_syncobj_create { |
| 702 | __u32 handle; | 702 | __u32 handle; |
| 703 | #define DRM_SYNCOBJ_CREATE_SIGNALED (1 << 0) | ||
| 703 | __u32 flags; | 704 | __u32 flags; |
| 704 | }; | 705 | }; |
| 705 | 706 | ||
| @@ -718,6 +719,24 @@ struct drm_syncobj_handle { | |||
| 718 | __u32 pad; | 719 | __u32 pad; |
| 719 | }; | 720 | }; |
| 720 | 721 | ||
| 722 | #define DRM_SYNCOBJ_WAIT_FLAGS_WAIT_ALL (1 << 0) | ||
| 723 | #define DRM_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT (1 << 1) | ||
| 724 | struct drm_syncobj_wait { | ||
| 725 | __u64 handles; | ||
| 726 | /* absolute timeout */ | ||
| 727 | __s64 timeout_nsec; | ||
| 728 | __u32 count_handles; | ||
| 729 | __u32 flags; | ||
| 730 | __u32 first_signaled; /* only valid when not waiting all */ | ||
| 731 | __u32 pad; | ||
| 732 | }; | ||
| 733 | |||
| 734 | struct drm_syncobj_array { | ||
| 735 | __u64 handles; | ||
| 736 | __u32 count_handles; | ||
| 737 | __u32 pad; | ||
| 738 | }; | ||
| 739 | |||
| 721 | #if defined(__cplusplus) | 740 | #if defined(__cplusplus) |
| 722 | } | 741 | } |
| 723 | #endif | 742 | #endif |
| @@ -840,6 +859,9 @@ extern "C" { | |||
| 840 | #define DRM_IOCTL_SYNCOBJ_DESTROY DRM_IOWR(0xC0, struct drm_syncobj_destroy) | 859 | #define DRM_IOCTL_SYNCOBJ_DESTROY DRM_IOWR(0xC0, struct drm_syncobj_destroy) |
| 841 | #define DRM_IOCTL_SYNCOBJ_HANDLE_TO_FD DRM_IOWR(0xC1, struct drm_syncobj_handle) | 860 | #define DRM_IOCTL_SYNCOBJ_HANDLE_TO_FD DRM_IOWR(0xC1, struct drm_syncobj_handle) |
| 842 | #define DRM_IOCTL_SYNCOBJ_FD_TO_HANDLE DRM_IOWR(0xC2, struct drm_syncobj_handle) | 861 | #define DRM_IOCTL_SYNCOBJ_FD_TO_HANDLE DRM_IOWR(0xC2, struct drm_syncobj_handle) |
| 862 | #define DRM_IOCTL_SYNCOBJ_WAIT DRM_IOWR(0xC3, struct drm_syncobj_wait) | ||
| 863 | #define DRM_IOCTL_SYNCOBJ_RESET DRM_IOWR(0xC4, struct drm_syncobj_array) | ||
| 864 | #define DRM_IOCTL_SYNCOBJ_SIGNAL DRM_IOWR(0xC5, struct drm_syncobj_array) | ||
| 843 | 865 | ||
| 844 | /** | 866 | /** |
| 845 | * Device specific ioctls should only be in their respective headers | 867 | * Device specific ioctls should only be in their respective headers |
diff --git a/tools/include/uapi/drm/i915_drm.h b/tools/include/uapi/drm/i915_drm.h index 7ccbd6a2bbe0..6598fb76d2c2 100644 --- a/tools/include/uapi/drm/i915_drm.h +++ b/tools/include/uapi/drm/i915_drm.h | |||
| @@ -260,6 +260,8 @@ typedef struct _drm_i915_sarea { | |||
| 260 | #define DRM_I915_GEM_CONTEXT_GETPARAM 0x34 | 260 | #define DRM_I915_GEM_CONTEXT_GETPARAM 0x34 |
| 261 | #define DRM_I915_GEM_CONTEXT_SETPARAM 0x35 | 261 | #define DRM_I915_GEM_CONTEXT_SETPARAM 0x35 |
| 262 | #define DRM_I915_PERF_OPEN 0x36 | 262 | #define DRM_I915_PERF_OPEN 0x36 |
| 263 | #define DRM_I915_PERF_ADD_CONFIG 0x37 | ||
| 264 | #define DRM_I915_PERF_REMOVE_CONFIG 0x38 | ||
| 263 | 265 | ||
| 264 | #define DRM_IOCTL_I915_INIT DRM_IOW( DRM_COMMAND_BASE + DRM_I915_INIT, drm_i915_init_t) | 266 | #define DRM_IOCTL_I915_INIT DRM_IOW( DRM_COMMAND_BASE + DRM_I915_INIT, drm_i915_init_t) |
| 265 | #define DRM_IOCTL_I915_FLUSH DRM_IO ( DRM_COMMAND_BASE + DRM_I915_FLUSH) | 267 | #define DRM_IOCTL_I915_FLUSH DRM_IO ( DRM_COMMAND_BASE + DRM_I915_FLUSH) |
| @@ -315,6 +317,8 @@ typedef struct _drm_i915_sarea { | |||
| 315 | #define DRM_IOCTL_I915_GEM_CONTEXT_GETPARAM DRM_IOWR (DRM_COMMAND_BASE + DRM_I915_GEM_CONTEXT_GETPARAM, struct drm_i915_gem_context_param) | 317 | #define DRM_IOCTL_I915_GEM_CONTEXT_GETPARAM DRM_IOWR (DRM_COMMAND_BASE + DRM_I915_GEM_CONTEXT_GETPARAM, struct drm_i915_gem_context_param) |
| 316 | #define DRM_IOCTL_I915_GEM_CONTEXT_SETPARAM DRM_IOWR (DRM_COMMAND_BASE + DRM_I915_GEM_CONTEXT_SETPARAM, struct drm_i915_gem_context_param) | 318 | #define DRM_IOCTL_I915_GEM_CONTEXT_SETPARAM DRM_IOWR (DRM_COMMAND_BASE + DRM_I915_GEM_CONTEXT_SETPARAM, struct drm_i915_gem_context_param) |
| 317 | #define DRM_IOCTL_I915_PERF_OPEN DRM_IOW(DRM_COMMAND_BASE + DRM_I915_PERF_OPEN, struct drm_i915_perf_open_param) | 319 | #define DRM_IOCTL_I915_PERF_OPEN DRM_IOW(DRM_COMMAND_BASE + DRM_I915_PERF_OPEN, struct drm_i915_perf_open_param) |
| 320 | #define DRM_IOCTL_I915_PERF_ADD_CONFIG DRM_IOW(DRM_COMMAND_BASE + DRM_I915_PERF_ADD_CONFIG, struct drm_i915_perf_oa_config) | ||
| 321 | #define DRM_IOCTL_I915_PERF_REMOVE_CONFIG DRM_IOW(DRM_COMMAND_BASE + DRM_I915_PERF_REMOVE_CONFIG, __u64) | ||
| 318 | 322 | ||
| 319 | /* Allow drivers to submit batchbuffers directly to hardware, relying | 323 | /* Allow drivers to submit batchbuffers directly to hardware, relying |
| 320 | * on the security mechanisms provided by hardware. | 324 | * on the security mechanisms provided by hardware. |
| @@ -431,6 +435,11 @@ typedef struct drm_i915_irq_wait { | |||
| 431 | */ | 435 | */ |
| 432 | #define I915_PARAM_HAS_EXEC_BATCH_FIRST 48 | 436 | #define I915_PARAM_HAS_EXEC_BATCH_FIRST 48 |
| 433 | 437 | ||
| 438 | /* Query whether DRM_I915_GEM_EXECBUFFER2 supports supplying an array of | ||
| 439 | * drm_i915_gem_exec_fence structures. See I915_EXEC_FENCE_ARRAY. | ||
| 440 | */ | ||
| 441 | #define I915_PARAM_HAS_EXEC_FENCE_ARRAY 49 | ||
| 442 | |||
| 434 | typedef struct drm_i915_getparam { | 443 | typedef struct drm_i915_getparam { |
| 435 | __s32 param; | 444 | __s32 param; |
| 436 | /* | 445 | /* |
| @@ -812,6 +821,17 @@ struct drm_i915_gem_exec_object2 { | |||
| 812 | __u64 rsvd2; | 821 | __u64 rsvd2; |
| 813 | }; | 822 | }; |
| 814 | 823 | ||
| 824 | struct drm_i915_gem_exec_fence { | ||
| 825 | /** | ||
| 826 | * User's handle for a drm_syncobj to wait on or signal. | ||
| 827 | */ | ||
| 828 | __u32 handle; | ||
| 829 | |||
| 830 | #define I915_EXEC_FENCE_WAIT (1<<0) | ||
| 831 | #define I915_EXEC_FENCE_SIGNAL (1<<1) | ||
| 832 | __u32 flags; | ||
| 833 | }; | ||
| 834 | |||
| 815 | struct drm_i915_gem_execbuffer2 { | 835 | struct drm_i915_gem_execbuffer2 { |
| 816 | /** | 836 | /** |
| 817 | * List of gem_exec_object2 structs | 837 | * List of gem_exec_object2 structs |
| @@ -826,7 +846,11 @@ struct drm_i915_gem_execbuffer2 { | |||
| 826 | __u32 DR1; | 846 | __u32 DR1; |
| 827 | __u32 DR4; | 847 | __u32 DR4; |
| 828 | __u32 num_cliprects; | 848 | __u32 num_cliprects; |
| 829 | /** This is a struct drm_clip_rect *cliprects */ | 849 | /** |
| 850 | * This is a struct drm_clip_rect *cliprects if I915_EXEC_FENCE_ARRAY | ||
| 851 | * is not set. If I915_EXEC_FENCE_ARRAY is set, then this is a | ||
| 852 | * struct drm_i915_gem_exec_fence *fences. | ||
| 853 | */ | ||
| 830 | __u64 cliprects_ptr; | 854 | __u64 cliprects_ptr; |
| 831 | #define I915_EXEC_RING_MASK (7<<0) | 855 | #define I915_EXEC_RING_MASK (7<<0) |
| 832 | #define I915_EXEC_DEFAULT (0<<0) | 856 | #define I915_EXEC_DEFAULT (0<<0) |
| @@ -927,7 +951,14 @@ struct drm_i915_gem_execbuffer2 { | |||
| 927 | * element). | 951 | * element). |
| 928 | */ | 952 | */ |
| 929 | #define I915_EXEC_BATCH_FIRST (1<<18) | 953 | #define I915_EXEC_BATCH_FIRST (1<<18) |
| 930 | #define __I915_EXEC_UNKNOWN_FLAGS (-(I915_EXEC_BATCH_FIRST<<1)) | 954 | |
| 955 | /* Setting I915_FENCE_ARRAY implies that num_cliprects and cliprects_ptr | ||
| 956 | * define an array of i915_gem_exec_fence structures which specify a set of | ||
| 957 | * dma fences to wait upon or signal. | ||
| 958 | */ | ||
| 959 | #define I915_EXEC_FENCE_ARRAY (1<<19) | ||
| 960 | |||
| 961 | #define __I915_EXEC_UNKNOWN_FLAGS (-(I915_EXEC_FENCE_ARRAY<<1)) | ||
| 931 | 962 | ||
| 932 | #define I915_EXEC_CONTEXT_ID_MASK (0xffffffff) | 963 | #define I915_EXEC_CONTEXT_ID_MASK (0xffffffff) |
| 933 | #define i915_execbuffer2_set_context_id(eb2, context) \ | 964 | #define i915_execbuffer2_set_context_id(eb2, context) \ |
| @@ -1467,6 +1498,22 @@ enum drm_i915_perf_record_type { | |||
| 1467 | DRM_I915_PERF_RECORD_MAX /* non-ABI */ | 1498 | DRM_I915_PERF_RECORD_MAX /* non-ABI */ |
| 1468 | }; | 1499 | }; |
| 1469 | 1500 | ||
| 1501 | /** | ||
| 1502 | * Structure to upload perf dynamic configuration into the kernel. | ||
| 1503 | */ | ||
| 1504 | struct drm_i915_perf_oa_config { | ||
| 1505 | /** String formatted like "%08x-%04x-%04x-%04x-%012x" */ | ||
| 1506 | char uuid[36]; | ||
| 1507 | |||
| 1508 | __u32 n_mux_regs; | ||
| 1509 | __u32 n_boolean_regs; | ||
| 1510 | __u32 n_flex_regs; | ||
| 1511 | |||
| 1512 | __u64 __user mux_regs_ptr; | ||
| 1513 | __u64 __user boolean_regs_ptr; | ||
| 1514 | __u64 __user flex_regs_ptr; | ||
| 1515 | }; | ||
| 1516 | |||
| 1470 | #if defined(__cplusplus) | 1517 | #if defined(__cplusplus) |
| 1471 | } | 1518 | } |
| 1472 | #endif | 1519 | #endif |
diff --git a/tools/include/uapi/linux/bpf.h b/tools/include/uapi/linux/bpf.h index 461811e57140..43ab5c402f98 100644 --- a/tools/include/uapi/linux/bpf.h +++ b/tools/include/uapi/linux/bpf.h | |||
| @@ -143,12 +143,6 @@ enum bpf_attach_type { | |||
| 143 | 143 | ||
| 144 | #define MAX_BPF_ATTACH_TYPE __MAX_BPF_ATTACH_TYPE | 144 | #define MAX_BPF_ATTACH_TYPE __MAX_BPF_ATTACH_TYPE |
| 145 | 145 | ||
| 146 | enum bpf_sockmap_flags { | ||
| 147 | BPF_SOCKMAP_UNSPEC, | ||
| 148 | BPF_SOCKMAP_STRPARSER, | ||
| 149 | __MAX_BPF_SOCKMAP_FLAG | ||
| 150 | }; | ||
| 151 | |||
| 152 | /* If BPF_F_ALLOW_OVERRIDE flag is used in BPF_PROG_ATTACH command | 146 | /* If BPF_F_ALLOW_OVERRIDE flag is used in BPF_PROG_ATTACH command |
| 153 | * to the given target_fd cgroup the descendent cgroup will be able to | 147 | * to the given target_fd cgroup the descendent cgroup will be able to |
| 154 | * override effective bpf program that was inherited from this cgroup | 148 | * override effective bpf program that was inherited from this cgroup |
| @@ -368,9 +362,20 @@ union bpf_attr { | |||
| 368 | * int bpf_redirect(ifindex, flags) | 362 | * int bpf_redirect(ifindex, flags) |
| 369 | * redirect to another netdev | 363 | * redirect to another netdev |
| 370 | * @ifindex: ifindex of the net device | 364 | * @ifindex: ifindex of the net device |
| 371 | * @flags: bit 0 - if set, redirect to ingress instead of egress | 365 | * @flags: |
| 372 | * other bits - reserved | 366 | * cls_bpf: |
| 373 | * Return: TC_ACT_REDIRECT | 367 | * bit 0 - if set, redirect to ingress instead of egress |
| 368 | * other bits - reserved | ||
| 369 | * xdp_bpf: | ||
| 370 | * all bits - reserved | ||
| 371 | * Return: cls_bpf: TC_ACT_REDIRECT on success or TC_ACT_SHOT on error | ||
| 372 | * xdp_bfp: XDP_REDIRECT on success or XDP_ABORT on error | ||
| 373 | * int bpf_redirect_map(map, key, flags) | ||
| 374 | * redirect to endpoint in map | ||
| 375 | * @map: pointer to dev map | ||
| 376 | * @key: index in map to lookup | ||
| 377 | * @flags: -- | ||
| 378 | * Return: XDP_REDIRECT on success or XDP_ABORT on error | ||
| 374 | * | 379 | * |
| 375 | * u32 bpf_get_route_realm(skb) | 380 | * u32 bpf_get_route_realm(skb) |
| 376 | * retrieve a dst's tclassid | 381 | * retrieve a dst's tclassid |
| @@ -632,7 +637,7 @@ union bpf_attr { | |||
| 632 | FN(skb_adjust_room), \ | 637 | FN(skb_adjust_room), \ |
| 633 | FN(redirect_map), \ | 638 | FN(redirect_map), \ |
| 634 | FN(sk_redirect_map), \ | 639 | FN(sk_redirect_map), \ |
| 635 | FN(sock_map_update), | 640 | FN(sock_map_update), \ |
| 636 | 641 | ||
| 637 | /* integer value in 'imm' field of BPF_CALL instruction selects which helper | 642 | /* integer value in 'imm' field of BPF_CALL instruction selects which helper |
| 638 | * function eBPF program intends to call | 643 | * function eBPF program intends to call |
| @@ -753,20 +758,23 @@ struct bpf_sock { | |||
| 753 | __u32 family; | 758 | __u32 family; |
| 754 | __u32 type; | 759 | __u32 type; |
| 755 | __u32 protocol; | 760 | __u32 protocol; |
| 761 | __u32 mark; | ||
| 762 | __u32 priority; | ||
| 756 | }; | 763 | }; |
| 757 | 764 | ||
| 758 | #define XDP_PACKET_HEADROOM 256 | 765 | #define XDP_PACKET_HEADROOM 256 |
| 759 | 766 | ||
| 760 | /* User return codes for XDP prog type. | 767 | /* User return codes for XDP prog type. |
| 761 | * A valid XDP program must return one of these defined values. All other | 768 | * A valid XDP program must return one of these defined values. All other |
| 762 | * return codes are reserved for future use. Unknown return codes will result | 769 | * return codes are reserved for future use. Unknown return codes will |
| 763 | * in packet drop. | 770 | * result in packet drops and a warning via bpf_warn_invalid_xdp_action(). |
| 764 | */ | 771 | */ |
| 765 | enum xdp_action { | 772 | enum xdp_action { |
| 766 | XDP_ABORTED = 0, | 773 | XDP_ABORTED = 0, |
| 767 | XDP_DROP, | 774 | XDP_DROP, |
| 768 | XDP_PASS, | 775 | XDP_PASS, |
| 769 | XDP_TX, | 776 | XDP_TX, |
| 777 | XDP_REDIRECT, | ||
| 770 | }; | 778 | }; |
| 771 | 779 | ||
| 772 | /* user accessible metadata for XDP packet hook | 780 | /* user accessible metadata for XDP packet hook |
diff --git a/tools/include/uapi/linux/kvm.h b/tools/include/uapi/linux/kvm.h index 6cd63c18708a..838887587411 100644 --- a/tools/include/uapi/linux/kvm.h +++ b/tools/include/uapi/linux/kvm.h | |||
| @@ -711,7 +711,8 @@ struct kvm_ppc_one_seg_page_size { | |||
| 711 | struct kvm_ppc_smmu_info { | 711 | struct kvm_ppc_smmu_info { |
| 712 | __u64 flags; | 712 | __u64 flags; |
| 713 | __u32 slb_size; | 713 | __u32 slb_size; |
| 714 | __u32 pad; | 714 | __u16 data_keys; /* # storage keys supported for data */ |
| 715 | __u16 instr_keys; /* # storage keys supported for instructions */ | ||
| 715 | struct kvm_ppc_one_seg_page_size sps[KVM_PPC_PAGE_SIZES_MAX_SZ]; | 716 | struct kvm_ppc_one_seg_page_size sps[KVM_PPC_PAGE_SIZES_MAX_SZ]; |
| 716 | }; | 717 | }; |
| 717 | 718 | ||
diff --git a/tools/include/uapi/linux/mman.h b/tools/include/uapi/linux/mman.h index 81d8edf11789..a937480d7cd3 100644 --- a/tools/include/uapi/linux/mman.h +++ b/tools/include/uapi/linux/mman.h | |||
| @@ -1,7 +1,8 @@ | |||
| 1 | #ifndef _UAPI_LINUX_MMAN_H | 1 | #ifndef _UAPI_LINUX_MMAN_H |
| 2 | #define _UAPI_LINUX_MMAN_H | 2 | #define _UAPI_LINUX_MMAN_H |
| 3 | 3 | ||
| 4 | #include <uapi/asm/mman.h> | 4 | #include <asm/mman.h> |
| 5 | #include <asm-generic/hugetlb_encode.h> | ||
| 5 | 6 | ||
| 6 | #define MREMAP_MAYMOVE 1 | 7 | #define MREMAP_MAYMOVE 1 |
| 7 | #define MREMAP_FIXED 2 | 8 | #define MREMAP_FIXED 2 |
| @@ -10,4 +11,25 @@ | |||
| 10 | #define OVERCOMMIT_ALWAYS 1 | 11 | #define OVERCOMMIT_ALWAYS 1 |
| 11 | #define OVERCOMMIT_NEVER 2 | 12 | #define OVERCOMMIT_NEVER 2 |
| 12 | 13 | ||
| 14 | /* | ||
| 15 | * Huge page size encoding when MAP_HUGETLB is specified, and a huge page | ||
| 16 | * size other than the default is desired. See hugetlb_encode.h. | ||
| 17 | * All known huge page size encodings are provided here. It is the | ||
| 18 | * responsibility of the application to know which sizes are supported on | ||
| 19 | * the running system. See mmap(2) man page for details. | ||
| 20 | */ | ||
| 21 | #define MAP_HUGE_SHIFT HUGETLB_FLAG_ENCODE_SHIFT | ||
| 22 | #define MAP_HUGE_MASK HUGETLB_FLAG_ENCODE_MASK | ||
| 23 | |||
| 24 | #define MAP_HUGE_64KB HUGETLB_FLAG_ENCODE_64KB | ||
| 25 | #define MAP_HUGE_512KB HUGETLB_FLAG_ENCODE_512KB | ||
| 26 | #define MAP_HUGE_1MB HUGETLB_FLAG_ENCODE_1MB | ||
| 27 | #define MAP_HUGE_2MB HUGETLB_FLAG_ENCODE_2MB | ||
| 28 | #define MAP_HUGE_8MB HUGETLB_FLAG_ENCODE_8MB | ||
| 29 | #define MAP_HUGE_16MB HUGETLB_FLAG_ENCODE_16MB | ||
| 30 | #define MAP_HUGE_256MB HUGETLB_FLAG_ENCODE_256MB | ||
| 31 | #define MAP_HUGE_1GB HUGETLB_FLAG_ENCODE_1GB | ||
| 32 | #define MAP_HUGE_2GB HUGETLB_FLAG_ENCODE_2GB | ||
| 33 | #define MAP_HUGE_16GB HUGETLB_FLAG_ENCODE_16GB | ||
| 34 | |||
| 13 | #endif /* _UAPI_LINUX_MMAN_H */ | 35 | #endif /* _UAPI_LINUX_MMAN_H */ |
diff --git a/tools/perf/MANIFEST b/tools/perf/MANIFEST index 62072822dc85..627b7cada144 100644 --- a/tools/perf/MANIFEST +++ b/tools/perf/MANIFEST | |||
| @@ -1,34 +1,8 @@ | |||
| 1 | tools/perf | 1 | tools/perf |
| 2 | tools/arch/alpha/include/asm/barrier.h | 2 | tools/arch |
| 3 | tools/arch/arm/include/asm/barrier.h | ||
| 4 | tools/arch/arm64/include/asm/barrier.h | ||
| 5 | tools/arch/ia64/include/asm/barrier.h | ||
| 6 | tools/arch/mips/include/asm/barrier.h | ||
| 7 | tools/arch/powerpc/include/asm/barrier.h | ||
| 8 | tools/arch/s390/include/asm/barrier.h | ||
| 9 | tools/arch/sh/include/asm/barrier.h | ||
| 10 | tools/arch/sparc/include/asm/barrier.h | ||
| 11 | tools/arch/sparc/include/asm/barrier_32.h | ||
| 12 | tools/arch/sparc/include/asm/barrier_64.h | ||
| 13 | tools/arch/tile/include/asm/barrier.h | ||
| 14 | tools/arch/x86/include/asm/barrier.h | ||
| 15 | tools/arch/x86/include/asm/cmpxchg.h | ||
| 16 | tools/arch/x86/include/asm/cpufeatures.h | ||
| 17 | tools/arch/x86/include/asm/disabled-features.h | ||
| 18 | tools/arch/x86/include/asm/required-features.h | ||
| 19 | tools/arch/x86/include/uapi/asm/svm.h | ||
| 20 | tools/arch/x86/include/uapi/asm/vmx.h | ||
| 21 | tools/arch/x86/include/uapi/asm/kvm.h | ||
| 22 | tools/arch/x86/include/uapi/asm/kvm_perf.h | ||
| 23 | tools/arch/x86/lib/memcpy_64.S | ||
| 24 | tools/arch/x86/lib/memset_64.S | ||
| 25 | tools/arch/s390/include/uapi/asm/kvm_perf.h | ||
| 26 | tools/arch/s390/include/uapi/asm/sie.h | ||
| 27 | tools/arch/xtensa/include/asm/barrier.h | ||
| 28 | tools/scripts | 3 | tools/scripts |
| 29 | tools/build | 4 | tools/build |
| 30 | tools/arch/x86/include/asm/atomic.h | 5 | tools/include |
| 31 | tools/arch/x86/include/asm/rmwcc.h | ||
| 32 | tools/lib/traceevent | 6 | tools/lib/traceevent |
| 33 | tools/lib/api | 7 | tools/lib/api |
| 34 | tools/lib/bpf | 8 | tools/lib/bpf |
| @@ -42,60 +16,3 @@ tools/lib/find_bit.c | |||
| 42 | tools/lib/bitmap.c | 16 | tools/lib/bitmap.c |
| 43 | tools/lib/str_error_r.c | 17 | tools/lib/str_error_r.c |
| 44 | tools/lib/vsprintf.c | 18 | tools/lib/vsprintf.c |
| 45 | tools/include/asm/alternative-asm.h | ||
| 46 | tools/include/asm/atomic.h | ||
| 47 | tools/include/asm/barrier.h | ||
| 48 | tools/include/asm/bug.h | ||
| 49 | tools/include/asm-generic/atomic-gcc.h | ||
| 50 | tools/include/asm-generic/barrier.h | ||
| 51 | tools/include/asm-generic/bitops/arch_hweight.h | ||
| 52 | tools/include/asm-generic/bitops/atomic.h | ||
| 53 | tools/include/asm-generic/bitops/const_hweight.h | ||
| 54 | tools/include/asm-generic/bitops/__ffs.h | ||
| 55 | tools/include/asm-generic/bitops/__ffz.h | ||
| 56 | tools/include/asm-generic/bitops/__fls.h | ||
| 57 | tools/include/asm-generic/bitops/find.h | ||
| 58 | tools/include/asm-generic/bitops/fls64.h | ||
| 59 | tools/include/asm-generic/bitops/fls.h | ||
| 60 | tools/include/asm-generic/bitops/hweight.h | ||
| 61 | tools/include/asm-generic/bitops.h | ||
| 62 | tools/include/linux/atomic.h | ||
| 63 | tools/include/linux/bitops.h | ||
| 64 | tools/include/linux/compiler.h | ||
| 65 | tools/include/linux/compiler-gcc.h | ||
| 66 | tools/include/linux/coresight-pmu.h | ||
| 67 | tools/include/linux/bug.h | ||
| 68 | tools/include/linux/filter.h | ||
| 69 | tools/include/linux/hash.h | ||
| 70 | tools/include/linux/kernel.h | ||
| 71 | tools/include/linux/list.h | ||
| 72 | tools/include/linux/log2.h | ||
| 73 | tools/include/uapi/asm-generic/fcntl.h | ||
| 74 | tools/include/uapi/asm-generic/ioctls.h | ||
| 75 | tools/include/uapi/asm-generic/mman-common.h | ||
| 76 | tools/include/uapi/asm-generic/mman.h | ||
| 77 | tools/include/uapi/drm/drm.h | ||
| 78 | tools/include/uapi/drm/i915_drm.h | ||
| 79 | tools/include/uapi/linux/bpf.h | ||
| 80 | tools/include/uapi/linux/bpf_common.h | ||
| 81 | tools/include/uapi/linux/fcntl.h | ||
| 82 | tools/include/uapi/linux/hw_breakpoint.h | ||
| 83 | tools/include/uapi/linux/kvm.h | ||
| 84 | tools/include/uapi/linux/mman.h | ||
| 85 | tools/include/uapi/linux/perf_event.h | ||
| 86 | tools/include/uapi/linux/sched.h | ||
| 87 | tools/include/uapi/linux/stat.h | ||
| 88 | tools/include/uapi/linux/vhost.h | ||
| 89 | tools/include/uapi/sound/asound.h | ||
| 90 | tools/include/linux/poison.h | ||
| 91 | tools/include/linux/rbtree.h | ||
| 92 | tools/include/linux/rbtree_augmented.h | ||
| 93 | tools/include/linux/refcount.h | ||
| 94 | tools/include/linux/string.h | ||
| 95 | tools/include/linux/stringify.h | ||
| 96 | tools/include/linux/types.h | ||
| 97 | tools/include/linux/err.h | ||
| 98 | tools/include/linux/bitmap.h | ||
| 99 | tools/include/linux/time64.h | ||
| 100 | tools/arch/*/include/uapi/asm/mman.h | ||
| 101 | tools/arch/*/include/uapi/asm/perf_regs.h | ||
diff --git a/tools/perf/arch/s390/util/Build b/tools/perf/arch/s390/util/Build index bd518b623d7a..5bd7b9260cc0 100644 --- a/tools/perf/arch/s390/util/Build +++ b/tools/perf/arch/s390/util/Build | |||
| @@ -1,5 +1,4 @@ | |||
| 1 | libperf-y += header.o | 1 | libperf-y += header.o |
| 2 | libperf-y += sym-handling.o | ||
| 3 | libperf-y += kvm-stat.o | 2 | libperf-y += kvm-stat.o |
| 4 | 3 | ||
| 5 | libperf-$(CONFIG_DWARF) += dwarf-regs.o | 4 | libperf-$(CONFIG_DWARF) += dwarf-regs.o |
diff --git a/tools/perf/arch/s390/util/sym-handling.c b/tools/perf/arch/s390/util/sym-handling.c deleted file mode 100644 index e103f6e46afe..000000000000 --- a/tools/perf/arch/s390/util/sym-handling.c +++ /dev/null | |||
| @@ -1,29 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * Architecture specific ELF symbol handling and relocation mapping. | ||
| 3 | * | ||
| 4 | * Copyright 2017 IBM Corp. | ||
| 5 | * Author(s): Thomas Richter <tmricht@linux.vnet.ibm.com> | ||
| 6 | * | ||
| 7 | * This program is free software; you can redistribute it and/or modify | ||
| 8 | * it under the terms of the GNU General Public License (version 2 only) | ||
| 9 | * as published by the Free Software Foundation. | ||
| 10 | */ | ||
| 11 | |||
| 12 | #include "symbol.h" | ||
| 13 | |||
| 14 | #ifdef HAVE_LIBELF_SUPPORT | ||
| 15 | bool elf__needs_adjust_symbols(GElf_Ehdr ehdr) | ||
| 16 | { | ||
| 17 | if (ehdr.e_type == ET_EXEC) | ||
| 18 | return false; | ||
| 19 | return ehdr.e_type == ET_REL || ehdr.e_type == ET_DYN; | ||
| 20 | } | ||
| 21 | |||
| 22 | void arch__adjust_sym_map_offset(GElf_Sym *sym, | ||
| 23 | GElf_Shdr *shdr __maybe_unused, | ||
| 24 | struct map *map) | ||
| 25 | { | ||
| 26 | if (map->type == MAP__FUNCTION) | ||
| 27 | sym->st_value += map->start; | ||
| 28 | } | ||
| 29 | #endif | ||
diff --git a/tools/perf/util/callchain.c b/tools/perf/util/callchain.c index 510b513e0f01..be09d77cade0 100644 --- a/tools/perf/util/callchain.c +++ b/tools/perf/util/callchain.c | |||
| @@ -65,8 +65,6 @@ static int parse_callchain_mode(const char *value) | |||
| 65 | callchain_param.mode = CHAIN_FOLDED; | 65 | callchain_param.mode = CHAIN_FOLDED; |
| 66 | return 0; | 66 | return 0; |
| 67 | } | 67 | } |
| 68 | |||
| 69 | pr_err("Invalid callchain mode: %s\n", value); | ||
| 70 | return -1; | 68 | return -1; |
| 71 | } | 69 | } |
| 72 | 70 | ||
| @@ -82,8 +80,6 @@ static int parse_callchain_order(const char *value) | |||
| 82 | callchain_param.order_set = true; | 80 | callchain_param.order_set = true; |
| 83 | return 0; | 81 | return 0; |
| 84 | } | 82 | } |
| 85 | |||
| 86 | pr_err("Invalid callchain order: %s\n", value); | ||
| 87 | return -1; | 83 | return -1; |
| 88 | } | 84 | } |
| 89 | 85 | ||
| @@ -105,8 +101,6 @@ static int parse_callchain_sort_key(const char *value) | |||
| 105 | callchain_param.branch_callstack = 1; | 101 | callchain_param.branch_callstack = 1; |
| 106 | return 0; | 102 | return 0; |
| 107 | } | 103 | } |
| 108 | |||
| 109 | pr_err("Invalid callchain sort key: %s\n", value); | ||
| 110 | return -1; | 104 | return -1; |
| 111 | } | 105 | } |
| 112 | 106 | ||
| @@ -124,8 +118,6 @@ static int parse_callchain_value(const char *value) | |||
| 124 | callchain_param.value = CCVAL_COUNT; | 118 | callchain_param.value = CCVAL_COUNT; |
| 125 | return 0; | 119 | return 0; |
| 126 | } | 120 | } |
| 127 | |||
| 128 | pr_err("Invalid callchain config key: %s\n", value); | ||
| 129 | return -1; | 121 | return -1; |
| 130 | } | 122 | } |
| 131 | 123 | ||
| @@ -319,12 +311,27 @@ int perf_callchain_config(const char *var, const char *value) | |||
| 319 | 311 | ||
| 320 | return ret; | 312 | return ret; |
| 321 | } | 313 | } |
| 322 | if (!strcmp(var, "print-type")) | 314 | if (!strcmp(var, "print-type")){ |
| 323 | return parse_callchain_mode(value); | 315 | int ret; |
| 324 | if (!strcmp(var, "order")) | 316 | ret = parse_callchain_mode(value); |
| 325 | return parse_callchain_order(value); | 317 | if (ret == -1) |
| 326 | if (!strcmp(var, "sort-key")) | 318 | pr_err("Invalid callchain mode: %s\n", value); |
| 327 | return parse_callchain_sort_key(value); | 319 | return ret; |
| 320 | } | ||
| 321 | if (!strcmp(var, "order")){ | ||
| 322 | int ret; | ||
| 323 | ret = parse_callchain_order(value); | ||
| 324 | if (ret == -1) | ||
| 325 | pr_err("Invalid callchain order: %s\n", value); | ||
| 326 | return ret; | ||
| 327 | } | ||
| 328 | if (!strcmp(var, "sort-key")){ | ||
| 329 | int ret; | ||
| 330 | ret = parse_callchain_sort_key(value); | ||
| 331 | if (ret == -1) | ||
| 332 | pr_err("Invalid callchain sort key: %s\n", value); | ||
| 333 | return ret; | ||
| 334 | } | ||
| 328 | if (!strcmp(var, "threshold")) { | 335 | if (!strcmp(var, "threshold")) { |
| 329 | callchain_param.min_percent = strtod(value, &endptr); | 336 | callchain_param.min_percent = strtod(value, &endptr); |
| 330 | if (value == endptr) { | 337 | if (value == endptr) { |
diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c index 4bb89373eb52..0dccdb89572c 100644 --- a/tools/perf/util/evsel.c +++ b/tools/perf/util/evsel.c | |||
| @@ -271,12 +271,17 @@ struct perf_evsel *perf_evsel__new_idx(struct perf_event_attr *attr, int idx) | |||
| 271 | return evsel; | 271 | return evsel; |
| 272 | } | 272 | } |
| 273 | 273 | ||
| 274 | static bool perf_event_can_profile_kernel(void) | ||
| 275 | { | ||
| 276 | return geteuid() == 0 || perf_event_paranoid() == -1; | ||
| 277 | } | ||
| 278 | |||
| 274 | struct perf_evsel *perf_evsel__new_cycles(bool precise) | 279 | struct perf_evsel *perf_evsel__new_cycles(bool precise) |
| 275 | { | 280 | { |
| 276 | struct perf_event_attr attr = { | 281 | struct perf_event_attr attr = { |
| 277 | .type = PERF_TYPE_HARDWARE, | 282 | .type = PERF_TYPE_HARDWARE, |
| 278 | .config = PERF_COUNT_HW_CPU_CYCLES, | 283 | .config = PERF_COUNT_HW_CPU_CYCLES, |
| 279 | .exclude_kernel = geteuid() != 0, | 284 | .exclude_kernel = !perf_event_can_profile_kernel(), |
| 280 | }; | 285 | }; |
| 281 | struct perf_evsel *evsel; | 286 | struct perf_evsel *evsel; |
| 282 | 287 | ||
diff --git a/tools/perf/util/symbol-elf.c b/tools/perf/util/symbol-elf.c index 5c39f420111e..9cf781f0d8a2 100644 --- a/tools/perf/util/symbol-elf.c +++ b/tools/perf/util/symbol-elf.c | |||
| @@ -810,12 +810,6 @@ static u64 ref_reloc(struct kmap *kmap) | |||
| 810 | void __weak arch__sym_update(struct symbol *s __maybe_unused, | 810 | void __weak arch__sym_update(struct symbol *s __maybe_unused, |
| 811 | GElf_Sym *sym __maybe_unused) { } | 811 | GElf_Sym *sym __maybe_unused) { } |
| 812 | 812 | ||
| 813 | void __weak arch__adjust_sym_map_offset(GElf_Sym *sym, GElf_Shdr *shdr, | ||
| 814 | struct map *map __maybe_unused) | ||
| 815 | { | ||
| 816 | sym->st_value -= shdr->sh_addr - shdr->sh_offset; | ||
| 817 | } | ||
| 818 | |||
| 819 | int dso__load_sym(struct dso *dso, struct map *map, struct symsrc *syms_ss, | 813 | int dso__load_sym(struct dso *dso, struct map *map, struct symsrc *syms_ss, |
| 820 | struct symsrc *runtime_ss, int kmodule) | 814 | struct symsrc *runtime_ss, int kmodule) |
| 821 | { | 815 | { |
| @@ -996,7 +990,7 @@ int dso__load_sym(struct dso *dso, struct map *map, struct symsrc *syms_ss, | |||
| 996 | 990 | ||
| 997 | /* Adjust symbol to map to file offset */ | 991 | /* Adjust symbol to map to file offset */ |
| 998 | if (adjust_kernel_syms) | 992 | if (adjust_kernel_syms) |
| 999 | arch__adjust_sym_map_offset(&sym, &shdr, map); | 993 | sym.st_value -= shdr.sh_addr - shdr.sh_offset; |
| 1000 | 994 | ||
| 1001 | if (strcmp(section_name, | 995 | if (strcmp(section_name, |
| 1002 | (curr_dso->short_name + | 996 | (curr_dso->short_name + |
diff --git a/tools/perf/util/symbol.h b/tools/perf/util/symbol.h index 2bd6a1f01a1c..aad99e7e179b 100644 --- a/tools/perf/util/symbol.h +++ b/tools/perf/util/symbol.h | |||
| @@ -344,9 +344,6 @@ int setup_intlist(struct intlist **list, const char *list_str, | |||
| 344 | #ifdef HAVE_LIBELF_SUPPORT | 344 | #ifdef HAVE_LIBELF_SUPPORT |
| 345 | bool elf__needs_adjust_symbols(GElf_Ehdr ehdr); | 345 | bool elf__needs_adjust_symbols(GElf_Ehdr ehdr); |
| 346 | void arch__sym_update(struct symbol *s, GElf_Sym *sym); | 346 | void arch__sym_update(struct symbol *s, GElf_Sym *sym); |
| 347 | void arch__adjust_sym_map_offset(GElf_Sym *sym, | ||
| 348 | GElf_Shdr *shdr __maybe_unused, | ||
| 349 | struct map *map __maybe_unused); | ||
| 350 | #endif | 347 | #endif |
| 351 | 348 | ||
| 352 | #define SYMBOL_A 0 | 349 | #define SYMBOL_A 0 |
diff --git a/tools/perf/util/syscalltbl.c b/tools/perf/util/syscalltbl.c index 19e5db90394c..6eea7cff3d4e 100644 --- a/tools/perf/util/syscalltbl.c +++ b/tools/perf/util/syscalltbl.c | |||
| @@ -15,9 +15,9 @@ | |||
| 15 | 15 | ||
| 16 | #include "syscalltbl.h" | 16 | #include "syscalltbl.h" |
| 17 | #include <stdlib.h> | 17 | #include <stdlib.h> |
| 18 | #include <linux/compiler.h> | ||
| 18 | 19 | ||
| 19 | #ifdef HAVE_SYSCALL_TABLE | 20 | #ifdef HAVE_SYSCALL_TABLE |
| 20 | #include <linux/compiler.h> | ||
| 21 | #include <string.h> | 21 | #include <string.h> |
| 22 | #include "string2.h" | 22 | #include "string2.h" |
| 23 | #include "util.h" | 23 | #include "util.h" |
