diff options
author | Ingo Molnar <mingo@kernel.org> | 2018-02-05 16:25:47 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2018-02-05 16:25:47 -0500 |
commit | 59410f5ac70a0949a6f06ba43eecb8f99be31291 (patch) | |
tree | 332d7f87f504741fbb3c6e06b7b2bfa820000aff | |
parent | 72906f38934a49faf4d2d38ea9ae32adcf7d5d0c (diff) | |
parent | 2fe2230d4183d2c311bbb7b426491ac486216a16 (diff) |
Merge tag 'perf-urgent-for-mingo-4.16-20180205' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/urgent
Pull perf/urgent fixes from Arnaldo Carvalho de Melo:
- Fix 'period' and 'freq' handling for 'perf record', also
related: add Add PERF_SAMPLE_PERIOD into PEBS_FREERUNNING_FLAGS
in the x86 perf kernel driver (Jiri Olsa)
- Fix 'perf trace -i perf.data' callgraph handling (Ravi Bangoria)
- Synchronize tooling headers for asound, s390 and powerpc KVM,
sched and x86 features (Arnaldo Carvalho de Melo)
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
-rw-r--r-- | arch/x86/events/perf_event.h | 3 | ||||
-rw-r--r-- | tools/arch/powerpc/include/uapi/asm/kvm.h | 25 | ||||
-rw-r--r-- | tools/arch/s390/include/uapi/asm/kvm.h | 5 | ||||
-rw-r--r-- | tools/arch/x86/include/asm/cpufeatures.h | 24 | ||||
-rw-r--r-- | tools/arch/x86/include/asm/disabled-features.h | 3 | ||||
-rw-r--r-- | tools/arch/x86/include/asm/required-features.h | 3 | ||||
-rw-r--r-- | tools/include/uapi/linux/kvm.h | 4 | ||||
-rw-r--r-- | tools/include/uapi/linux/sched.h | 5 | ||||
-rw-r--r-- | tools/include/uapi/sound/asound.h | 9 | ||||
-rw-r--r-- | tools/perf/.gitignore | 1 | ||||
-rw-r--r-- | tools/perf/builtin-record.c | 3 | ||||
-rw-r--r-- | tools/perf/builtin-trace.c | 5 | ||||
-rw-r--r-- | tools/perf/perf.h | 1 | ||||
-rw-r--r-- | tools/perf/util/evsel.c | 13 |
14 files changed, 91 insertions, 13 deletions
diff --git a/arch/x86/events/perf_event.h b/arch/x86/events/perf_event.h index 8e4ea143ed96..78f91ec1056e 100644 --- a/arch/x86/events/perf_event.h +++ b/arch/x86/events/perf_event.h | |||
@@ -93,7 +93,8 @@ struct amd_nb { | |||
93 | PERF_SAMPLE_ID | PERF_SAMPLE_CPU | PERF_SAMPLE_STREAM_ID | \ | 93 | PERF_SAMPLE_ID | PERF_SAMPLE_CPU | PERF_SAMPLE_STREAM_ID | \ |
94 | PERF_SAMPLE_DATA_SRC | PERF_SAMPLE_IDENTIFIER | \ | 94 | PERF_SAMPLE_DATA_SRC | PERF_SAMPLE_IDENTIFIER | \ |
95 | PERF_SAMPLE_TRANSACTION | PERF_SAMPLE_PHYS_ADDR | \ | 95 | PERF_SAMPLE_TRANSACTION | PERF_SAMPLE_PHYS_ADDR | \ |
96 | PERF_SAMPLE_REGS_INTR | PERF_SAMPLE_REGS_USER) | 96 | PERF_SAMPLE_REGS_INTR | PERF_SAMPLE_REGS_USER | \ |
97 | PERF_SAMPLE_PERIOD) | ||
97 | 98 | ||
98 | #define PEBS_REGS \ | 99 | #define PEBS_REGS \ |
99 | (PERF_REG_X86_AX | \ | 100 | (PERF_REG_X86_AX | \ |
diff --git a/tools/arch/powerpc/include/uapi/asm/kvm.h b/tools/arch/powerpc/include/uapi/asm/kvm.h index 61d6049f4c1e..637b7263cb86 100644 --- a/tools/arch/powerpc/include/uapi/asm/kvm.h +++ b/tools/arch/powerpc/include/uapi/asm/kvm.h | |||
@@ -443,6 +443,31 @@ struct kvm_ppc_rmmu_info { | |||
443 | __u32 ap_encodings[8]; | 443 | __u32 ap_encodings[8]; |
444 | }; | 444 | }; |
445 | 445 | ||
446 | /* For KVM_PPC_GET_CPU_CHAR */ | ||
447 | struct kvm_ppc_cpu_char { | ||
448 | __u64 character; /* characteristics of the CPU */ | ||
449 | __u64 behaviour; /* recommended software behaviour */ | ||
450 | __u64 character_mask; /* valid bits in character */ | ||
451 | __u64 behaviour_mask; /* valid bits in behaviour */ | ||
452 | }; | ||
453 | |||
454 | /* | ||
455 | * Values for character and character_mask. | ||
456 | * These are identical to the values used by H_GET_CPU_CHARACTERISTICS. | ||
457 | */ | ||
458 | #define KVM_PPC_CPU_CHAR_SPEC_BAR_ORI31 (1ULL << 63) | ||
459 | #define KVM_PPC_CPU_CHAR_BCCTRL_SERIALISED (1ULL << 62) | ||
460 | #define KVM_PPC_CPU_CHAR_L1D_FLUSH_ORI30 (1ULL << 61) | ||
461 | #define KVM_PPC_CPU_CHAR_L1D_FLUSH_TRIG2 (1ULL << 60) | ||
462 | #define KVM_PPC_CPU_CHAR_L1D_THREAD_PRIV (1ULL << 59) | ||
463 | #define KVM_PPC_CPU_CHAR_BR_HINT_HONOURED (1ULL << 58) | ||
464 | #define KVM_PPC_CPU_CHAR_MTTRIG_THR_RECONF (1ULL << 57) | ||
465 | #define KVM_PPC_CPU_CHAR_COUNT_CACHE_DIS (1ULL << 56) | ||
466 | |||
467 | #define KVM_PPC_CPU_BEHAV_FAVOUR_SECURITY (1ULL << 63) | ||
468 | #define KVM_PPC_CPU_BEHAV_L1D_FLUSH_PR (1ULL << 62) | ||
469 | #define KVM_PPC_CPU_BEHAV_BNDS_CHK_SPEC_BAR (1ULL << 61) | ||
470 | |||
446 | /* Per-vcpu XICS interrupt controller state */ | 471 | /* Per-vcpu XICS interrupt controller state */ |
447 | #define KVM_REG_PPC_ICP_STATE (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0x8c) | 472 | #define KVM_REG_PPC_ICP_STATE (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0x8c) |
448 | 473 | ||
diff --git a/tools/arch/s390/include/uapi/asm/kvm.h b/tools/arch/s390/include/uapi/asm/kvm.h index 38535a57fef8..4cdaa55fabfe 100644 --- a/tools/arch/s390/include/uapi/asm/kvm.h +++ b/tools/arch/s390/include/uapi/asm/kvm.h | |||
@@ -224,6 +224,7 @@ struct kvm_guest_debug_arch { | |||
224 | #define KVM_SYNC_RICCB (1UL << 7) | 224 | #define KVM_SYNC_RICCB (1UL << 7) |
225 | #define KVM_SYNC_FPRS (1UL << 8) | 225 | #define KVM_SYNC_FPRS (1UL << 8) |
226 | #define KVM_SYNC_GSCB (1UL << 9) | 226 | #define KVM_SYNC_GSCB (1UL << 9) |
227 | #define KVM_SYNC_BPBC (1UL << 10) | ||
227 | /* length and alignment of the sdnx as a power of two */ | 228 | /* length and alignment of the sdnx as a power of two */ |
228 | #define SDNXC 8 | 229 | #define SDNXC 8 |
229 | #define SDNXL (1UL << SDNXC) | 230 | #define SDNXL (1UL << SDNXC) |
@@ -247,7 +248,9 @@ struct kvm_sync_regs { | |||
247 | }; | 248 | }; |
248 | __u8 reserved[512]; /* for future vector expansion */ | 249 | __u8 reserved[512]; /* for future vector expansion */ |
249 | __u32 fpc; /* valid on KVM_SYNC_VRS or KVM_SYNC_FPRS */ | 250 | __u32 fpc; /* valid on KVM_SYNC_VRS or KVM_SYNC_FPRS */ |
250 | __u8 padding1[52]; /* riccb needs to be 64byte aligned */ | 251 | __u8 bpbc : 1; /* bp mode */ |
252 | __u8 reserved2 : 7; | ||
253 | __u8 padding1[51]; /* riccb needs to be 64byte aligned */ | ||
251 | __u8 riccb[64]; /* runtime instrumentation controls block */ | 254 | __u8 riccb[64]; /* runtime instrumentation controls block */ |
252 | __u8 padding2[192]; /* sdnx needs to be 256byte aligned */ | 255 | __u8 padding2[192]; /* sdnx needs to be 256byte aligned */ |
253 | union { | 256 | union { |
diff --git a/tools/arch/x86/include/asm/cpufeatures.h b/tools/arch/x86/include/asm/cpufeatures.h index 21ac898df2d8..1d9199e1c2ad 100644 --- a/tools/arch/x86/include/asm/cpufeatures.h +++ b/tools/arch/x86/include/asm/cpufeatures.h | |||
@@ -13,7 +13,7 @@ | |||
13 | /* | 13 | /* |
14 | * Defines x86 CPU feature bits | 14 | * Defines x86 CPU feature bits |
15 | */ | 15 | */ |
16 | #define NCAPINTS 18 /* N 32-bit words worth of info */ | 16 | #define NCAPINTS 19 /* N 32-bit words worth of info */ |
17 | #define NBUGINTS 1 /* N 32-bit bug flags */ | 17 | #define NBUGINTS 1 /* N 32-bit bug flags */ |
18 | 18 | ||
19 | /* | 19 | /* |
@@ -203,12 +203,15 @@ | |||
203 | #define X86_FEATURE_PROC_FEEDBACK ( 7*32+ 9) /* AMD ProcFeedbackInterface */ | 203 | #define X86_FEATURE_PROC_FEEDBACK ( 7*32+ 9) /* AMD ProcFeedbackInterface */ |
204 | #define X86_FEATURE_SME ( 7*32+10) /* AMD Secure Memory Encryption */ | 204 | #define X86_FEATURE_SME ( 7*32+10) /* AMD Secure Memory Encryption */ |
205 | #define X86_FEATURE_PTI ( 7*32+11) /* Kernel Page Table Isolation enabled */ | 205 | #define X86_FEATURE_PTI ( 7*32+11) /* Kernel Page Table Isolation enabled */ |
206 | #define X86_FEATURE_RETPOLINE ( 7*32+12) /* "" Generic Retpoline mitigation for Spectre variant 2 */ | ||
207 | #define X86_FEATURE_RETPOLINE_AMD ( 7*32+13) /* "" AMD Retpoline mitigation for Spectre variant 2 */ | ||
206 | #define X86_FEATURE_INTEL_PPIN ( 7*32+14) /* Intel Processor Inventory Number */ | 208 | #define X86_FEATURE_INTEL_PPIN ( 7*32+14) /* Intel Processor Inventory Number */ |
207 | #define X86_FEATURE_INTEL_PT ( 7*32+15) /* Intel Processor Trace */ | 209 | #define X86_FEATURE_CDP_L2 ( 7*32+15) /* Code and Data Prioritization L2 */ |
208 | #define X86_FEATURE_AVX512_4VNNIW ( 7*32+16) /* AVX-512 Neural Network Instructions */ | ||
209 | #define X86_FEATURE_AVX512_4FMAPS ( 7*32+17) /* AVX-512 Multiply Accumulation Single precision */ | ||
210 | 210 | ||
211 | #define X86_FEATURE_MBA ( 7*32+18) /* Memory Bandwidth Allocation */ | 211 | #define X86_FEATURE_MBA ( 7*32+18) /* Memory Bandwidth Allocation */ |
212 | #define X86_FEATURE_RSB_CTXSW ( 7*32+19) /* "" Fill RSB on context switches */ | ||
213 | |||
214 | #define X86_FEATURE_USE_IBPB ( 7*32+21) /* "" Indirect Branch Prediction Barrier enabled */ | ||
212 | 215 | ||
213 | /* Virtualization flags: Linux defined, word 8 */ | 216 | /* Virtualization flags: Linux defined, word 8 */ |
214 | #define X86_FEATURE_TPR_SHADOW ( 8*32+ 0) /* Intel TPR Shadow */ | 217 | #define X86_FEATURE_TPR_SHADOW ( 8*32+ 0) /* Intel TPR Shadow */ |
@@ -243,6 +246,7 @@ | |||
243 | #define X86_FEATURE_AVX512IFMA ( 9*32+21) /* AVX-512 Integer Fused Multiply-Add instructions */ | 246 | #define X86_FEATURE_AVX512IFMA ( 9*32+21) /* AVX-512 Integer Fused Multiply-Add instructions */ |
244 | #define X86_FEATURE_CLFLUSHOPT ( 9*32+23) /* CLFLUSHOPT instruction */ | 247 | #define X86_FEATURE_CLFLUSHOPT ( 9*32+23) /* CLFLUSHOPT instruction */ |
245 | #define X86_FEATURE_CLWB ( 9*32+24) /* CLWB instruction */ | 248 | #define X86_FEATURE_CLWB ( 9*32+24) /* CLWB instruction */ |
249 | #define X86_FEATURE_INTEL_PT ( 9*32+25) /* Intel Processor Trace */ | ||
246 | #define X86_FEATURE_AVX512PF ( 9*32+26) /* AVX-512 Prefetch */ | 250 | #define X86_FEATURE_AVX512PF ( 9*32+26) /* AVX-512 Prefetch */ |
247 | #define X86_FEATURE_AVX512ER ( 9*32+27) /* AVX-512 Exponential and Reciprocal */ | 251 | #define X86_FEATURE_AVX512ER ( 9*32+27) /* AVX-512 Exponential and Reciprocal */ |
248 | #define X86_FEATURE_AVX512CD ( 9*32+28) /* AVX-512 Conflict Detection */ | 252 | #define X86_FEATURE_AVX512CD ( 9*32+28) /* AVX-512 Conflict Detection */ |
@@ -268,6 +272,9 @@ | |||
268 | #define X86_FEATURE_CLZERO (13*32+ 0) /* CLZERO instruction */ | 272 | #define X86_FEATURE_CLZERO (13*32+ 0) /* CLZERO instruction */ |
269 | #define X86_FEATURE_IRPERF (13*32+ 1) /* Instructions Retired Count */ | 273 | #define X86_FEATURE_IRPERF (13*32+ 1) /* Instructions Retired Count */ |
270 | #define X86_FEATURE_XSAVEERPTR (13*32+ 2) /* Always save/restore FP error pointers */ | 274 | #define X86_FEATURE_XSAVEERPTR (13*32+ 2) /* Always save/restore FP error pointers */ |
275 | #define X86_FEATURE_IBPB (13*32+12) /* Indirect Branch Prediction Barrier */ | ||
276 | #define X86_FEATURE_IBRS (13*32+14) /* Indirect Branch Restricted Speculation */ | ||
277 | #define X86_FEATURE_STIBP (13*32+15) /* Single Thread Indirect Branch Predictors */ | ||
271 | 278 | ||
272 | /* Thermal and Power Management Leaf, CPUID level 0x00000006 (EAX), word 14 */ | 279 | /* Thermal and Power Management Leaf, CPUID level 0x00000006 (EAX), word 14 */ |
273 | #define X86_FEATURE_DTHERM (14*32+ 0) /* Digital Thermal Sensor */ | 280 | #define X86_FEATURE_DTHERM (14*32+ 0) /* Digital Thermal Sensor */ |
@@ -316,6 +323,13 @@ | |||
316 | #define X86_FEATURE_SUCCOR (17*32+ 1) /* Uncorrectable error containment and recovery */ | 323 | #define X86_FEATURE_SUCCOR (17*32+ 1) /* Uncorrectable error containment and recovery */ |
317 | #define X86_FEATURE_SMCA (17*32+ 3) /* Scalable MCA */ | 324 | #define X86_FEATURE_SMCA (17*32+ 3) /* Scalable MCA */ |
318 | 325 | ||
326 | /* Intel-defined CPU features, CPUID level 0x00000007:0 (EDX), word 18 */ | ||
327 | #define X86_FEATURE_AVX512_4VNNIW (18*32+ 2) /* AVX-512 Neural Network Instructions */ | ||
328 | #define X86_FEATURE_AVX512_4FMAPS (18*32+ 3) /* AVX-512 Multiply Accumulation Single precision */ | ||
329 | #define X86_FEATURE_SPEC_CTRL (18*32+26) /* "" Speculation Control (IBRS + IBPB) */ | ||
330 | #define X86_FEATURE_INTEL_STIBP (18*32+27) /* "" Single Thread Indirect Branch Predictors */ | ||
331 | #define X86_FEATURE_ARCH_CAPABILITIES (18*32+29) /* IA32_ARCH_CAPABILITIES MSR (Intel) */ | ||
332 | |||
319 | /* | 333 | /* |
320 | * BUG word(s) | 334 | * BUG word(s) |
321 | */ | 335 | */ |
@@ -342,5 +356,7 @@ | |||
342 | #define X86_BUG_MONITOR X86_BUG(12) /* IPI required to wake up remote CPU */ | 356 | #define X86_BUG_MONITOR X86_BUG(12) /* IPI required to wake up remote CPU */ |
343 | #define X86_BUG_AMD_E400 X86_BUG(13) /* CPU is among the affected by Erratum 400 */ | 357 | #define X86_BUG_AMD_E400 X86_BUG(13) /* CPU is among the affected by Erratum 400 */ |
344 | #define X86_BUG_CPU_MELTDOWN X86_BUG(14) /* CPU is affected by meltdown attack and needs kernel page table isolation */ | 358 | #define X86_BUG_CPU_MELTDOWN X86_BUG(14) /* CPU is affected by meltdown attack and needs kernel page table isolation */ |
359 | #define X86_BUG_SPECTRE_V1 X86_BUG(15) /* CPU is affected by Spectre variant 1 attack with conditional branches */ | ||
360 | #define X86_BUG_SPECTRE_V2 X86_BUG(16) /* CPU is affected by Spectre variant 2 attack with indirect branches */ | ||
345 | 361 | ||
346 | #endif /* _ASM_X86_CPUFEATURES_H */ | 362 | #endif /* _ASM_X86_CPUFEATURES_H */ |
diff --git a/tools/arch/x86/include/asm/disabled-features.h b/tools/arch/x86/include/asm/disabled-features.h index b027633e7300..33833d1909af 100644 --- a/tools/arch/x86/include/asm/disabled-features.h +++ b/tools/arch/x86/include/asm/disabled-features.h | |||
@@ -77,6 +77,7 @@ | |||
77 | #define DISABLED_MASK15 0 | 77 | #define DISABLED_MASK15 0 |
78 | #define DISABLED_MASK16 (DISABLE_PKU|DISABLE_OSPKE|DISABLE_LA57|DISABLE_UMIP) | 78 | #define DISABLED_MASK16 (DISABLE_PKU|DISABLE_OSPKE|DISABLE_LA57|DISABLE_UMIP) |
79 | #define DISABLED_MASK17 0 | 79 | #define DISABLED_MASK17 0 |
80 | #define DISABLED_MASK_CHECK BUILD_BUG_ON_ZERO(NCAPINTS != 18) | 80 | #define DISABLED_MASK18 0 |
81 | #define DISABLED_MASK_CHECK BUILD_BUG_ON_ZERO(NCAPINTS != 19) | ||
81 | 82 | ||
82 | #endif /* _ASM_X86_DISABLED_FEATURES_H */ | 83 | #endif /* _ASM_X86_DISABLED_FEATURES_H */ |
diff --git a/tools/arch/x86/include/asm/required-features.h b/tools/arch/x86/include/asm/required-features.h index d91ba04dd007..fb3a6de7440b 100644 --- a/tools/arch/x86/include/asm/required-features.h +++ b/tools/arch/x86/include/asm/required-features.h | |||
@@ -106,6 +106,7 @@ | |||
106 | #define REQUIRED_MASK15 0 | 106 | #define REQUIRED_MASK15 0 |
107 | #define REQUIRED_MASK16 (NEED_LA57) | 107 | #define REQUIRED_MASK16 (NEED_LA57) |
108 | #define REQUIRED_MASK17 0 | 108 | #define REQUIRED_MASK17 0 |
109 | #define REQUIRED_MASK_CHECK BUILD_BUG_ON_ZERO(NCAPINTS != 18) | 109 | #define REQUIRED_MASK18 0 |
110 | #define REQUIRED_MASK_CHECK BUILD_BUG_ON_ZERO(NCAPINTS != 19) | ||
110 | 111 | ||
111 | #endif /* _ASM_X86_REQUIRED_FEATURES_H */ | 112 | #endif /* _ASM_X86_REQUIRED_FEATURES_H */ |
diff --git a/tools/include/uapi/linux/kvm.h b/tools/include/uapi/linux/kvm.h index 496e59a2738b..8fb90a0819c3 100644 --- a/tools/include/uapi/linux/kvm.h +++ b/tools/include/uapi/linux/kvm.h | |||
@@ -932,6 +932,8 @@ struct kvm_ppc_resize_hpt { | |||
932 | #define KVM_CAP_HYPERV_SYNIC2 148 | 932 | #define KVM_CAP_HYPERV_SYNIC2 148 |
933 | #define KVM_CAP_HYPERV_VP_INDEX 149 | 933 | #define KVM_CAP_HYPERV_VP_INDEX 149 |
934 | #define KVM_CAP_S390_AIS_MIGRATION 150 | 934 | #define KVM_CAP_S390_AIS_MIGRATION 150 |
935 | #define KVM_CAP_PPC_GET_CPU_CHAR 151 | ||
936 | #define KVM_CAP_S390_BPB 152 | ||
935 | 937 | ||
936 | #ifdef KVM_CAP_IRQ_ROUTING | 938 | #ifdef KVM_CAP_IRQ_ROUTING |
937 | 939 | ||
@@ -1261,6 +1263,8 @@ struct kvm_s390_ucas_mapping { | |||
1261 | #define KVM_PPC_CONFIGURE_V3_MMU _IOW(KVMIO, 0xaf, struct kvm_ppc_mmuv3_cfg) | 1263 | #define KVM_PPC_CONFIGURE_V3_MMU _IOW(KVMIO, 0xaf, struct kvm_ppc_mmuv3_cfg) |
1262 | /* Available with KVM_CAP_PPC_RADIX_MMU */ | 1264 | /* Available with KVM_CAP_PPC_RADIX_MMU */ |
1263 | #define KVM_PPC_GET_RMMU_INFO _IOW(KVMIO, 0xb0, struct kvm_ppc_rmmu_info) | 1265 | #define KVM_PPC_GET_RMMU_INFO _IOW(KVMIO, 0xb0, struct kvm_ppc_rmmu_info) |
1266 | /* Available with KVM_CAP_PPC_GET_CPU_CHAR */ | ||
1267 | #define KVM_PPC_GET_CPU_CHAR _IOR(KVMIO, 0xb1, struct kvm_ppc_cpu_char) | ||
1264 | 1268 | ||
1265 | /* ioctl for vm fd */ | 1269 | /* ioctl for vm fd */ |
1266 | #define KVM_CREATE_DEVICE _IOWR(KVMIO, 0xe0, struct kvm_create_device) | 1270 | #define KVM_CREATE_DEVICE _IOWR(KVMIO, 0xe0, struct kvm_create_device) |
diff --git a/tools/include/uapi/linux/sched.h b/tools/include/uapi/linux/sched.h index 30a9e51bbb1e..22627f80063e 100644 --- a/tools/include/uapi/linux/sched.h +++ b/tools/include/uapi/linux/sched.h | |||
@@ -49,5 +49,10 @@ | |||
49 | */ | 49 | */ |
50 | #define SCHED_FLAG_RESET_ON_FORK 0x01 | 50 | #define SCHED_FLAG_RESET_ON_FORK 0x01 |
51 | #define SCHED_FLAG_RECLAIM 0x02 | 51 | #define SCHED_FLAG_RECLAIM 0x02 |
52 | #define SCHED_FLAG_DL_OVERRUN 0x04 | ||
53 | |||
54 | #define SCHED_FLAG_ALL (SCHED_FLAG_RESET_ON_FORK | \ | ||
55 | SCHED_FLAG_RECLAIM | \ | ||
56 | SCHED_FLAG_DL_OVERRUN) | ||
52 | 57 | ||
53 | #endif /* _UAPI_LINUX_SCHED_H */ | 58 | #endif /* _UAPI_LINUX_SCHED_H */ |
diff --git a/tools/include/uapi/sound/asound.h b/tools/include/uapi/sound/asound.h index c227ccba60ae..07d61583fd02 100644 --- a/tools/include/uapi/sound/asound.h +++ b/tools/include/uapi/sound/asound.h | |||
@@ -214,6 +214,11 @@ typedef int __bitwise snd_pcm_format_t; | |||
214 | #define SNDRV_PCM_FORMAT_IMA_ADPCM ((__force snd_pcm_format_t) 22) | 214 | #define SNDRV_PCM_FORMAT_IMA_ADPCM ((__force snd_pcm_format_t) 22) |
215 | #define SNDRV_PCM_FORMAT_MPEG ((__force snd_pcm_format_t) 23) | 215 | #define SNDRV_PCM_FORMAT_MPEG ((__force snd_pcm_format_t) 23) |
216 | #define SNDRV_PCM_FORMAT_GSM ((__force snd_pcm_format_t) 24) | 216 | #define SNDRV_PCM_FORMAT_GSM ((__force snd_pcm_format_t) 24) |
217 | #define SNDRV_PCM_FORMAT_S20_LE ((__force snd_pcm_format_t) 25) /* in four bytes, LSB justified */ | ||
218 | #define SNDRV_PCM_FORMAT_S20_BE ((__force snd_pcm_format_t) 26) /* in four bytes, LSB justified */ | ||
219 | #define SNDRV_PCM_FORMAT_U20_LE ((__force snd_pcm_format_t) 27) /* in four bytes, LSB justified */ | ||
220 | #define SNDRV_PCM_FORMAT_U20_BE ((__force snd_pcm_format_t) 28) /* in four bytes, LSB justified */ | ||
221 | /* gap in the numbering for a future standard linear format */ | ||
217 | #define SNDRV_PCM_FORMAT_SPECIAL ((__force snd_pcm_format_t) 31) | 222 | #define SNDRV_PCM_FORMAT_SPECIAL ((__force snd_pcm_format_t) 31) |
218 | #define SNDRV_PCM_FORMAT_S24_3LE ((__force snd_pcm_format_t) 32) /* in three bytes */ | 223 | #define SNDRV_PCM_FORMAT_S24_3LE ((__force snd_pcm_format_t) 32) /* in three bytes */ |
219 | #define SNDRV_PCM_FORMAT_S24_3BE ((__force snd_pcm_format_t) 33) /* in three bytes */ | 224 | #define SNDRV_PCM_FORMAT_S24_3BE ((__force snd_pcm_format_t) 33) /* in three bytes */ |
@@ -248,6 +253,8 @@ typedef int __bitwise snd_pcm_format_t; | |||
248 | #define SNDRV_PCM_FORMAT_FLOAT SNDRV_PCM_FORMAT_FLOAT_LE | 253 | #define SNDRV_PCM_FORMAT_FLOAT SNDRV_PCM_FORMAT_FLOAT_LE |
249 | #define SNDRV_PCM_FORMAT_FLOAT64 SNDRV_PCM_FORMAT_FLOAT64_LE | 254 | #define SNDRV_PCM_FORMAT_FLOAT64 SNDRV_PCM_FORMAT_FLOAT64_LE |
250 | #define SNDRV_PCM_FORMAT_IEC958_SUBFRAME SNDRV_PCM_FORMAT_IEC958_SUBFRAME_LE | 255 | #define SNDRV_PCM_FORMAT_IEC958_SUBFRAME SNDRV_PCM_FORMAT_IEC958_SUBFRAME_LE |
256 | #define SNDRV_PCM_FORMAT_S20 SNDRV_PCM_FORMAT_S20_LE | ||
257 | #define SNDRV_PCM_FORMAT_U20 SNDRV_PCM_FORMAT_U20_LE | ||
251 | #endif | 258 | #endif |
252 | #ifdef SNDRV_BIG_ENDIAN | 259 | #ifdef SNDRV_BIG_ENDIAN |
253 | #define SNDRV_PCM_FORMAT_S16 SNDRV_PCM_FORMAT_S16_BE | 260 | #define SNDRV_PCM_FORMAT_S16 SNDRV_PCM_FORMAT_S16_BE |
@@ -259,6 +266,8 @@ typedef int __bitwise snd_pcm_format_t; | |||
259 | #define SNDRV_PCM_FORMAT_FLOAT SNDRV_PCM_FORMAT_FLOAT_BE | 266 | #define SNDRV_PCM_FORMAT_FLOAT SNDRV_PCM_FORMAT_FLOAT_BE |
260 | #define SNDRV_PCM_FORMAT_FLOAT64 SNDRV_PCM_FORMAT_FLOAT64_BE | 267 | #define SNDRV_PCM_FORMAT_FLOAT64 SNDRV_PCM_FORMAT_FLOAT64_BE |
261 | #define SNDRV_PCM_FORMAT_IEC958_SUBFRAME SNDRV_PCM_FORMAT_IEC958_SUBFRAME_BE | 268 | #define SNDRV_PCM_FORMAT_IEC958_SUBFRAME SNDRV_PCM_FORMAT_IEC958_SUBFRAME_BE |
269 | #define SNDRV_PCM_FORMAT_S20 SNDRV_PCM_FORMAT_S20_BE | ||
270 | #define SNDRV_PCM_FORMAT_U20 SNDRV_PCM_FORMAT_U20_BE | ||
262 | #endif | 271 | #endif |
263 | 272 | ||
264 | typedef int __bitwise snd_pcm_subformat_t; | 273 | typedef int __bitwise snd_pcm_subformat_t; |
diff --git a/tools/perf/.gitignore b/tools/perf/.gitignore index 643cc4ba6872..3e5135dded16 100644 --- a/tools/perf/.gitignore +++ b/tools/perf/.gitignore | |||
@@ -31,5 +31,6 @@ config.mak.autogen | |||
31 | .config-detected | 31 | .config-detected |
32 | util/intel-pt-decoder/inat-tables.c | 32 | util/intel-pt-decoder/inat-tables.c |
33 | arch/*/include/generated/ | 33 | arch/*/include/generated/ |
34 | trace/beauty/generated/ | ||
34 | pmu-events/pmu-events.c | 35 | pmu-events/pmu-events.c |
35 | pmu-events/jevents | 36 | pmu-events/jevents |
diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c index 65681a1a292a..bf4ca749d1ac 100644 --- a/tools/perf/builtin-record.c +++ b/tools/perf/builtin-record.c | |||
@@ -1566,7 +1566,8 @@ static struct option __record_options[] = { | |||
1566 | OPT_BOOLEAN_SET('T', "timestamp", &record.opts.sample_time, | 1566 | OPT_BOOLEAN_SET('T', "timestamp", &record.opts.sample_time, |
1567 | &record.opts.sample_time_set, | 1567 | &record.opts.sample_time_set, |
1568 | "Record the sample timestamps"), | 1568 | "Record the sample timestamps"), |
1569 | OPT_BOOLEAN('P', "period", &record.opts.period, "Record the sample period"), | 1569 | OPT_BOOLEAN_SET('P', "period", &record.opts.period, &record.opts.period_set, |
1570 | "Record the sample period"), | ||
1570 | OPT_BOOLEAN('n', "no-samples", &record.opts.no_samples, | 1571 | OPT_BOOLEAN('n', "no-samples", &record.opts.no_samples, |
1571 | "don't sample"), | 1572 | "don't sample"), |
1572 | OPT_BOOLEAN_SET('N', "no-buildid-cache", &record.no_buildid_cache, | 1573 | OPT_BOOLEAN_SET('N', "no-buildid-cache", &record.no_buildid_cache, |
diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c index 17d11deeb88d..e7f1b182fc15 100644 --- a/tools/perf/builtin-trace.c +++ b/tools/perf/builtin-trace.c | |||
@@ -1661,9 +1661,12 @@ static int trace__resolve_callchain(struct trace *trace, struct perf_evsel *evse | |||
1661 | struct callchain_cursor *cursor) | 1661 | struct callchain_cursor *cursor) |
1662 | { | 1662 | { |
1663 | struct addr_location al; | 1663 | struct addr_location al; |
1664 | int max_stack = evsel->attr.sample_max_stack ? | ||
1665 | evsel->attr.sample_max_stack : | ||
1666 | trace->max_stack; | ||
1664 | 1667 | ||
1665 | if (machine__resolve(trace->host, &al, sample) < 0 || | 1668 | if (machine__resolve(trace->host, &al, sample) < 0 || |
1666 | thread__resolve_callchain(al.thread, cursor, evsel, sample, NULL, NULL, evsel->attr.sample_max_stack)) | 1669 | thread__resolve_callchain(al.thread, cursor, evsel, sample, NULL, NULL, max_stack)) |
1667 | return -1; | 1670 | return -1; |
1668 | 1671 | ||
1669 | return 0; | 1672 | return 0; |
diff --git a/tools/perf/perf.h b/tools/perf/perf.h index 2357f4ccc9c7..cfe46236a5e5 100644 --- a/tools/perf/perf.h +++ b/tools/perf/perf.h | |||
@@ -50,6 +50,7 @@ struct record_opts { | |||
50 | bool sample_time_set; | 50 | bool sample_time_set; |
51 | bool sample_cpu; | 51 | bool sample_cpu; |
52 | bool period; | 52 | bool period; |
53 | bool period_set; | ||
53 | bool running_time; | 54 | bool running_time; |
54 | bool full_auxtrace; | 55 | bool full_auxtrace; |
55 | bool auxtrace_snapshot_mode; | 56 | bool auxtrace_snapshot_mode; |
diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c index 66fa45198a11..ff359c9ece2e 100644 --- a/tools/perf/util/evsel.c +++ b/tools/perf/util/evsel.c | |||
@@ -745,12 +745,14 @@ static void apply_config_terms(struct perf_evsel *evsel, | |||
745 | if (!(term->weak && opts->user_interval != ULLONG_MAX)) { | 745 | if (!(term->weak && opts->user_interval != ULLONG_MAX)) { |
746 | attr->sample_period = term->val.period; | 746 | attr->sample_period = term->val.period; |
747 | attr->freq = 0; | 747 | attr->freq = 0; |
748 | perf_evsel__reset_sample_bit(evsel, PERIOD); | ||
748 | } | 749 | } |
749 | break; | 750 | break; |
750 | case PERF_EVSEL__CONFIG_TERM_FREQ: | 751 | case PERF_EVSEL__CONFIG_TERM_FREQ: |
751 | if (!(term->weak && opts->user_freq != UINT_MAX)) { | 752 | if (!(term->weak && opts->user_freq != UINT_MAX)) { |
752 | attr->sample_freq = term->val.freq; | 753 | attr->sample_freq = term->val.freq; |
753 | attr->freq = 1; | 754 | attr->freq = 1; |
755 | perf_evsel__set_sample_bit(evsel, PERIOD); | ||
754 | } | 756 | } |
755 | break; | 757 | break; |
756 | case PERF_EVSEL__CONFIG_TERM_TIME: | 758 | case PERF_EVSEL__CONFIG_TERM_TIME: |
@@ -969,9 +971,6 @@ void perf_evsel__config(struct perf_evsel *evsel, struct record_opts *opts, | |||
969 | if (target__has_cpu(&opts->target) || opts->sample_cpu) | 971 | if (target__has_cpu(&opts->target) || opts->sample_cpu) |
970 | perf_evsel__set_sample_bit(evsel, CPU); | 972 | perf_evsel__set_sample_bit(evsel, CPU); |
971 | 973 | ||
972 | if (opts->period) | ||
973 | perf_evsel__set_sample_bit(evsel, PERIOD); | ||
974 | |||
975 | /* | 974 | /* |
976 | * When the user explicitly disabled time don't force it here. | 975 | * When the user explicitly disabled time don't force it here. |
977 | */ | 976 | */ |
@@ -1073,6 +1072,14 @@ void perf_evsel__config(struct perf_evsel *evsel, struct record_opts *opts, | |||
1073 | apply_config_terms(evsel, opts, track); | 1072 | apply_config_terms(evsel, opts, track); |
1074 | 1073 | ||
1075 | evsel->ignore_missing_thread = opts->ignore_missing_thread; | 1074 | evsel->ignore_missing_thread = opts->ignore_missing_thread; |
1075 | |||
1076 | /* The --period option takes the precedence. */ | ||
1077 | if (opts->period_set) { | ||
1078 | if (opts->period) | ||
1079 | perf_evsel__set_sample_bit(evsel, PERIOD); | ||
1080 | else | ||
1081 | perf_evsel__reset_sample_bit(evsel, PERIOD); | ||
1082 | } | ||
1076 | } | 1083 | } |
1077 | 1084 | ||
1078 | static int perf_evsel__alloc_fd(struct perf_evsel *evsel, int ncpus, int nthreads) | 1085 | static int perf_evsel__alloc_fd(struct perf_evsel *evsel, int ncpus, int nthreads) |