History

Merge tag 'perf-tools-fixes-for-v6.7-1-2023-11-29' of git://git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools

Pull perf tools fixes from Namhyung Kim: "Assorted build fixes including: - fix compile errors in printf() with u64 on 32-bit systesm - sync kernel headers to the tool copies - update arm64 sysreg generation for tarballs - disable compile warnings on __packed attribute" * tag 'perf-tools-fixes-for-v6.7-1-2023-11-29' of git://git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools: tools: Disable __packed attribute compiler warning due to -Werror=attributes perf build: Ensure sysreg-defs Makefile respects output dir tools perf: Add arm64 sysreg files to MANIFEST tools/perf: Update tools's copy of mips syscall table tools/perf: Update tools's copy of s390 syscall table tools/perf: Update tools's copy of powerpc syscall table tools/perf: Update tools's copy of x86 syscall table tools headers: Update tools's copy of s390/asm headers tools headers: Update tools's copy of arm64/asm headers tools headers: Update tools's copy of x86/asm headers tools headers: Update tools's copy of socket.h header tools headers UAPI: Update tools's copy of unistd.h header tools headers UAPI: Update tools's copy of vhost.h header tools headers UAPI: Update tools's copy of mount.h header tools headers UAPI: Update tools's copy of kvm.h header tools headers UAPI: Update tools's copy of fscrypt.h header tools headers UAPI: Update tools's copy of drm headers perf lock contention: Fix a build error on 32-bit perf kwork: Fix a build error on 32-bit

Linus Torvalds committed 2 years ago

Commit 2594faa2 parents 6172a51 57686a728 files · +226 −39Browse files

Unified · Split

28 files
  1. tools/arch/arm64/include/asm/cputype.h +4 −1
  2. tools/arch/arm64/include/uapi/asm/kvm.h +32 −0
  3. tools/arch/arm64/include/uapi/asm/perf_regs.h +6 −4
  4. tools/arch/arm64/tools/Makefile +1 −1
  5. tools/arch/s390/include/uapi/asm/kvm.h +16 −0
  6. tools/arch/x86/include/asm/cpufeatures.h +15 −1
  7. tools/arch/x86/include/asm/disabled-features.h +14 −2
  8. tools/arch/x86/include/asm/msr-index.h +19 −4
  9. tools/arch/x86/include/uapi/asm/prctl.h +12 −0
  10. tools/include/asm-generic/unaligned.h +1 −0
  11. tools/include/uapi/asm-generic/unistd.h +9 −3
  12. tools/include/uapi/drm/drm.h +20 −0
  13. tools/include/uapi/drm/i915_drm.h +4 −4
  14. tools/include/uapi/linux/fscrypt.h +2 −1
  15. tools/include/uapi/linux/kvm.h +21 −3
  16. tools/include/uapi/linux/mount.h +2 −1
  17. tools/include/uapi/linux/vhost.h +8 −0
  18. tools/perf/MANIFEST +2 −0
  19. tools/perf/Makefile.perf +15 −9
  20. tools/perf/arch/mips/entry/syscalls/syscall_n64.tbl +4 −0
  21. tools/perf/arch/powerpc/entry/syscalls/syscall.tbl +4 −0
  22. tools/perf/arch/s390/entry/syscalls/syscall.tbl +4 −0
  23. tools/perf/arch/x86/entry/syscalls/syscall_64.tbl +3 −0
  24. tools/perf/builtin-kwork.c +1 −1
  25. tools/perf/trace/beauty/include/linux/socket.h +1 −0
  26. tools/perf/util/Build +1 −1
  27. tools/perf/util/bpf_lock_contention.c +2 −1
  28. tools/testing/selftests/kvm/Makefile +3 −2
tools/arch/arm64/include/asm/cputype.h+4−1
@@ -79,13 +79,15 @@ · 78 unmodified lines
7979 #define ARM_CPU_PART_CORTEX_A78AE 0xD42
8080 #define ARM_CPU_PART_CORTEX_X1 0xD44
8181 #define ARM_CPU_PART_CORTEX_A510 0xD46
82+#define ARM_CPU_PART_CORTEX_A520 0xD80
8283 #define ARM_CPU_PART_CORTEX_A710 0xD47
8384 #define ARM_CPU_PART_CORTEX_A715 0xD4D
8485 #define ARM_CPU_PART_CORTEX_X2 0xD48
8586 #define ARM_CPU_PART_NEOVERSE_N2 0xD49
8687 #define ARM_CPU_PART_CORTEX_A78C 0xD4B
8788
88−#define APM_CPU_PART_POTENZA 0x000
89+#define APM_CPU_PART_XGENE 0x000
90+#define APM_CPU_VAR_POTENZA 0x00
8991
9092 #define CAVIUM_CPU_PART_THUNDERX 0x0A1
9193 #define CAVIUM_CPU_PART_THUNDERX_81XX 0x0A2
@@ -148,6 +150,7 @@ · 56 unmodified lines
148150 #define MIDR_CORTEX_A78AE MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A78AE)
149151 #define MIDR_CORTEX_X1 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_X1)
150152 #define MIDR_CORTEX_A510 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A510)
153+#define MIDR_CORTEX_A520 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A520)
151154 #define MIDR_CORTEX_A710 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A710)
152155 #define MIDR_CORTEX_A715 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A715)
153156 #define MIDR_CORTEX_X2 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_X2)
tools/arch/arm64/include/uapi/asm/kvm.h+32−0
@@ -505,6 +505,38 @@ struct kvm_smccc_filter { · 504 unmodified lines
505505 #define KVM_HYPERCALL_EXIT_SMC (1U << 0)
506506 #define KVM_HYPERCALL_EXIT_16BIT (1U << 1)
507507
508+/*
509+ * Get feature ID registers userspace writable mask.
510+ *
511+ * From DDI0487J.a, D19.2.66 ("ID_AA64MMFR2_EL1, AArch64 Memory Model
512+ * Feature Register 2"):
513+ *
514+ * "The Feature ID space is defined as the System register space in
515+ * AArch64 with op0==3, op1=={0, 1, 3}, CRn==0, CRm=={0-7},
516+ * op2=={0-7}."
517+ *
518+ * This covers all currently known R/O registers that indicate
519+ * anything useful feature wise, including the ID registers.
520+ *
521+ * If we ever need to introduce a new range, it will be described as
522+ * such in the range field.
523+ */
524+#define KVM_ARM_FEATURE_ID_RANGE_IDX(op0, op1, crn, crm, op2) \
525+ ({ \
526+ __u64 __op1 = (op1) & 3; \
527+ __op1 -= (__op1 == 3); \
528+ (__op1 << 6 | ((crm) & 7) << 3 | (op2)); \
529+ })
530+
531+#define KVM_ARM_FEATURE_ID_RANGE 0
532+#define KVM_ARM_FEATURE_ID_RANGE_SIZE (3 * 8 * 8)
533+
534+struct reg_mask_range {
535+ __u64 addr; /* Pointer to mask array */
536+ __u32 range; /* Requested range */
537+ __u32 reserved[13];
538+};
539+
508540 #endif
509541
510542 #endif /* __ARM_KVM_H__ */
tools/arch/arm64/include/uapi/asm/perf_regs.h+6−4
@@ -36,11 +36,13 @@ enum perf_event_arm_regs { · 35 unmodified lines
3636 PERF_REG_ARM64_LR,
3737 PERF_REG_ARM64_SP,
3838 PERF_REG_ARM64_PC,
39+ PERF_REG_ARM64_MAX,
3940
4041 /* Extended/pseudo registers */
41− PERF_REG_ARM64_VG = 46, // SVE Vector Granule
42−
43− PERF_REG_ARM64_MAX = PERF_REG_ARM64_PC + 1,
44− PERF_REG_ARM64_EXTENDED_MAX = PERF_REG_ARM64_VG + 1
42+ PERF_REG_ARM64_VG = 46, /* SVE Vector Granule */
43+ PERF_REG_ARM64_EXTENDED_MAX
4544 };
45+
46+#define PERF_REG_EXTENDED_MASK (1ULL << PERF_REG_ARM64_VG)
47+
4648 #endif /* _ASM_ARM64_PERF_REGS_H */
tools/arch/arm64/tools/Makefile+1−1
@@ -22,7 +22,7 @@ endif · 21 unmodified lines
2222 arm64_tools_dir = $(top_srcdir)/arch/arm64/tools
2323 arm64_sysreg_tbl = $(arm64_tools_dir)/sysreg
2424 arm64_gen_sysreg = $(arm64_tools_dir)/gen-sysreg.awk
25−arm64_generated_dir = $(top_srcdir)/tools/arch/arm64/include/generated
25+arm64_generated_dir = $(OUTPUT)arch/arm64/include/generated
2626 arm64_sysreg_defs = $(arm64_generated_dir)/asm/sysreg-defs.h
2727
2828 all: $(arm64_sysreg_defs)
tools/arch/s390/include/uapi/asm/kvm.h+16−0
@@ -159,6 +159,22 @@ struct kvm_s390_vm_cpu_subfunc { · 158 unmodified lines
159159 __u8 reserved[1728];
160160 };
161161
162+#define KVM_S390_VM_CPU_PROCESSOR_UV_FEAT_GUEST 6
163+#define KVM_S390_VM_CPU_MACHINE_UV_FEAT_GUEST 7
164+
165+#define KVM_S390_VM_CPU_UV_FEAT_NR_BITS 64
166+struct kvm_s390_vm_cpu_uv_feat {
167+ union {
168+ struct {
169+ __u64 : 4;
170+ __u64 ap : 1; /* bit 4 */
171+ __u64 ap_intr : 1; /* bit 5 */
172+ __u64 : 58;
173+ };
174+ __u64 feat;
175+ };
176+};
177+
162178 /* kvm attributes for crypto */
163179 #define KVM_S390_VM_CRYPTO_ENABLE_AES_KW 0
164180 #define KVM_S390_VM_CRYPTO_ENABLE_DEA_KW 1
tools/arch/x86/include/asm/cpufeatures.h+15−1
@@ -198,7 +198,6 @@ · 197 unmodified lines
198198 #define X86_FEATURE_CAT_L3 ( 7*32+ 4) /* Cache Allocation Technology L3 */
199199 #define X86_FEATURE_CAT_L2 ( 7*32+ 5) /* Cache Allocation Technology L2 */
200200 #define X86_FEATURE_CDP_L3 ( 7*32+ 6) /* Code and Data Prioritization L3 */
201−#define X86_FEATURE_INVPCID_SINGLE ( 7*32+ 7) /* Effectively INVPCID && CR4.PCIDE=1 */
202201 #define X86_FEATURE_HW_PSTATE ( 7*32+ 8) /* AMD HW-PState */
203202 #define X86_FEATURE_PROC_FEEDBACK ( 7*32+ 9) /* AMD ProcFeedbackInterface */
204203 #define X86_FEATURE_XCOMPACTED ( 7*32+10) /* "" Use compacted XSTATE (XSAVES or XSAVEC) */
@@ -308,6 +307,11 @@ · 103 unmodified lines
308307 #define X86_FEATURE_MSR_TSX_CTRL (11*32+20) /* "" MSR IA32_TSX_CTRL (Intel) implemented */
309308 #define X86_FEATURE_SMBA (11*32+21) /* "" Slow Memory Bandwidth Allocation */
310309 #define X86_FEATURE_BMEC (11*32+22) /* "" Bandwidth Monitoring Event Configuration */
310+#define X86_FEATURE_USER_SHSTK (11*32+23) /* Shadow stack support for user mode applications */
311+
312+#define X86_FEATURE_SRSO (11*32+24) /* "" AMD BTB untrain RETs */
313+#define X86_FEATURE_SRSO_ALIAS (11*32+25) /* "" AMD BTB untrain RETs through aliasing */
314+#define X86_FEATURE_IBPB_ON_VMEXIT (11*32+26) /* "" Issue an IBPB only on VMEXIT */
311315
312316 /* Intel-defined CPU features, CPUID level 0x00000007:1 (EAX), word 12 */
313317 #define X86_FEATURE_AVX_VNNI (12*32+ 4) /* AVX VNNI instructions */
@@ -380,6 +384,7 @@ · 66 unmodified lines
380384 #define X86_FEATURE_OSPKE (16*32+ 4) /* OS Protection Keys Enable */
381385 #define X86_FEATURE_WAITPKG (16*32+ 5) /* UMONITOR/UMWAIT/TPAUSE Instructions */
382386 #define X86_FEATURE_AVX512_VBMI2 (16*32+ 6) /* Additional AVX512 Vector Bit Manipulation Instructions */
387+#define X86_FEATURE_SHSTK (16*32+ 7) /* "" Shadow stack */
383388 #define X86_FEATURE_GFNI (16*32+ 8) /* Galois Field New Instructions */
384389 #define X86_FEATURE_VAES (16*32+ 9) /* Vector AES */
385390 #define X86_FEATURE_VPCLMULQDQ (16*32+10) /* Carry-Less Multiplication Double Quadword */
@@ -438,11 +443,16 @@ · 52 unmodified lines
438443
439444 /* AMD-defined Extended Feature 2 EAX, CPUID level 0x80000021 (EAX), word 20 */
440445 #define X86_FEATURE_NO_NESTED_DATA_BP (20*32+ 0) /* "" No Nested Data Breakpoints */
446+#define X86_FEATURE_WRMSR_XX_BASE_NS (20*32+ 1) /* "" WRMSR to {FS,GS,KERNEL_GS}_BASE is non-serializing */
441447 #define X86_FEATURE_LFENCE_RDTSC (20*32+ 2) /* "" LFENCE always serializing / synchronizes RDTSC */
442448 #define X86_FEATURE_NULL_SEL_CLR_BASE (20*32+ 6) /* "" Null Selector Clears Base */
443449 #define X86_FEATURE_AUTOIBRS (20*32+ 8) /* "" Automatic IBRS */
444450 #define X86_FEATURE_NO_SMM_CTL_MSR (20*32+ 9) /* "" SMM_CTL MSR is not present */
445451
452+#define X86_FEATURE_SBPB (20*32+27) /* "" Selective Branch Prediction Barrier */
453+#define X86_FEATURE_IBPB_BRTYPE (20*32+28) /* "" MSR_PRED_CMD[IBPB] flushes all branch type predictions */
454+#define X86_FEATURE_SRSO_NO (20*32+29) /* "" CPU is not affected by SRSO */
455+
446456 /*
447457 * BUG word(s)
448458 */
@@ -484,5 +494,9 @@ · 35 unmodified lines
484494 #define X86_BUG_RETBLEED X86_BUG(27) /* CPU is affected by RETBleed */
485495 #define X86_BUG_EIBRS_PBRSB X86_BUG(28) /* EIBRS is vulnerable to Post Barrier RSB Predictions */
486496 #define X86_BUG_SMT_RSB X86_BUG(29) /* CPU is vulnerable to Cross-Thread Return Address Predictions */
497+#define X86_BUG_GDS X86_BUG(30) /* CPU is affected by Gather Data Sampling */
487498
499+/* BUG word 2 */
500+#define X86_BUG_SRSO X86_BUG(1*32 + 0) /* AMD SRSO bug */
501+#define X86_BUG_DIV0 X86_BUG(1*32 + 1) /* AMD DIV0 speculation bug */
488502 #endif /* _ASM_X86_CPUFEATURES_H */
tools/arch/x86/include/asm/disabled-features.h+14−2
@@ -105,6 +105,18 @@ · 104 unmodified lines
105105 # define DISABLE_TDX_GUEST (1 << (X86_FEATURE_TDX_GUEST & 31))
106106 #endif
107107
108+#ifdef CONFIG_X86_USER_SHADOW_STACK
109+#define DISABLE_USER_SHSTK 0
110+#else
111+#define DISABLE_USER_SHSTK (1 << (X86_FEATURE_USER_SHSTK & 31))
112+#endif
113+
114+#ifdef CONFIG_X86_KERNEL_IBT
115+#define DISABLE_IBT 0
116+#else
117+#define DISABLE_IBT (1 << (X86_FEATURE_IBT & 31))
118+#endif
119+
108120 /*
109121 * Make sure to add features to the correct mask
110122 */
@@ -120,7 +132,7 @@ · 9 unmodified lines
120132 #define DISABLED_MASK9 (DISABLE_SGX)
121133 #define DISABLED_MASK10 0
122134 #define DISABLED_MASK11 (DISABLE_RETPOLINE|DISABLE_RETHUNK|DISABLE_UNRET| \
123− DISABLE_CALL_DEPTH_TRACKING)
135+ DISABLE_CALL_DEPTH_TRACKING|DISABLE_USER_SHSTK)
124136 #define DISABLED_MASK12 (DISABLE_LAM)
125137 #define DISABLED_MASK13 0
126138 #define DISABLED_MASK14 0
@@ -128,7 +140,7 @@ · 1 unmodified line
128140 #define DISABLED_MASK16 (DISABLE_PKU|DISABLE_OSPKE|DISABLE_LA57|DISABLE_UMIP| \
129141 DISABLE_ENQCMD)
130142 #define DISABLED_MASK17 0
131−#define DISABLED_MASK18 0
143+#define DISABLED_MASK18 (DISABLE_IBT)
132144 #define DISABLED_MASK19 0
133145 #define DISABLED_MASK20 0
134146 #define DISABLED_MASK_CHECK BUILD_BUG_ON_ZERO(NCAPINTS != 21)
tools/arch/x86/include/asm/msr-index.h+19−4
@@ -222,6 +222,7 @@ · 221 unmodified lines
222222 #define MSR_INTEGRITY_CAPS_ARRAY_BIST BIT(MSR_INTEGRITY_CAPS_ARRAY_BIST_BIT)
223223 #define MSR_INTEGRITY_CAPS_PERIODIC_BIST_BIT 4
224224 #define MSR_INTEGRITY_CAPS_PERIODIC_BIST BIT(MSR_INTEGRITY_CAPS_PERIODIC_BIST_BIT)
225+#define MSR_INTEGRITY_CAPS_SAF_GEN_MASK GENMASK_ULL(10, 9)
225226
226227 #define MSR_LBR_NHM_FROM 0x00000680
227228 #define MSR_LBR_NHM_TO 0x000006c0
@@ -553,6 +554,7 @@ · 325 unmodified lines
553554 #define MSR_AMD64_CPUID_FN_1 0xc0011004
554555 #define MSR_AMD64_LS_CFG 0xc0011020
555556 #define MSR_AMD64_DC_CFG 0xc0011022
557+#define MSR_AMD64_TW_CFG 0xc0011023
556558
557559 #define MSR_AMD64_DE_CFG 0xc0011029
558560 #define MSR_AMD64_DE_CFG_LFENCE_SERIALIZE_BIT 1
@@ -637,12 +639,21 @@ · 78 unmodified lines
637639 /* AMD Last Branch Record MSRs */
638640 #define MSR_AMD64_LBR_SELECT 0xc000010e
639641
642+/* Zen4 */
643+#define MSR_ZEN4_BP_CFG 0xc001102e
644+#define MSR_ZEN4_BP_CFG_SHARED_BTB_FIX_BIT 5
645+
646+/* Fam 19h MSRs */
647+#define MSR_F19H_UMC_PERF_CTL 0xc0010800
648+#define MSR_F19H_UMC_PERF_CTR 0xc0010801
649+
650+/* Zen 2 */
651+#define MSR_ZEN2_SPECTRAL_CHICKEN 0xc00110e3
652+#define MSR_ZEN2_SPECTRAL_CHICKEN_BIT BIT_ULL(1)
653+
640654 /* Fam 17h MSRs */
641655 #define MSR_F17H_IRPERF 0xc00000e9
642656
643−#define MSR_ZEN2_SPECTRAL_CHICKEN 0xc00110e3
644−#define MSR_ZEN2_SPECTRAL_CHICKEN_BIT BIT_ULL(1)
645−
646657 /* Fam 16h MSRs */
647658 #define MSR_F16H_L2I_PERF_CTL 0xc0010230
648659 #define MSR_F16H_L2I_PERF_CTR 0xc0010231
@@ -1112,12 +1123,16 @@ · 463 unmodified lines
11121123 #define MSR_IA32_VMX_MISC_INTEL_PT (1ULL << 14)
11131124 #define MSR_IA32_VMX_MISC_VMWRITE_SHADOW_RO_FIELDS (1ULL << 29)
11141125 #define MSR_IA32_VMX_MISC_PREEMPTION_TIMER_SCALE 0x1F
1115−/* AMD-V MSRs */
11161126
1127+/* AMD-V MSRs */
11171128 #define MSR_VM_CR 0xc0010114
11181129 #define MSR_VM_IGNNE 0xc0010115
11191130 #define MSR_VM_HSAVE_PA 0xc0010117
11201131
1132+#define SVM_VM_CR_VALID_MASK 0x001fULL
1133+#define SVM_VM_CR_SVM_LOCK_MASK 0x0008ULL
1134+#define SVM_VM_CR_SVM_DIS_MASK 0x0010ULL
1135+
11211136 /* Hardware Feedback Interface */
11221137 #define MSR_IA32_HW_FEEDBACK_PTR 0x17d0
11231138 #define MSR_IA32_HW_FEEDBACK_CONFIG 0x17d1
tools/arch/x86/include/uapi/asm/prctl.h+12−0
@@ -23,9 +23,21 @@ · 22 unmodified lines
2323 #define ARCH_MAP_VDSO_32 0x2002
2424 #define ARCH_MAP_VDSO_64 0x2003
2525
26+/* Don't use 0x3001-0x3004 because of old glibcs */
27+
2628 #define ARCH_GET_UNTAG_MASK 0x4001
2729 #define ARCH_ENABLE_TAGGED_ADDR 0x4002
2830 #define ARCH_GET_MAX_TAG_BITS 0x4003
2931 #define ARCH_FORCE_TAGGED_SVA 0x4004
3032
33+#define ARCH_SHSTK_ENABLE 0x5001
34+#define ARCH_SHSTK_DISABLE 0x5002
35+#define ARCH_SHSTK_LOCK 0x5003
36+#define ARCH_SHSTK_UNLOCK 0x5004
37+#define ARCH_SHSTK_STATUS 0x5005
38+
39+/* ARCH_SHSTK_ features bits */
40+#define ARCH_SHSTK_SHSTK (1ULL << 0)
41+#define ARCH_SHSTK_WRSS (1ULL << 1)
42+
3143 #endif /* _ASM_X86_PRCTL_H */
tools/include/asm-generic/unaligned.h+1−0
@@ -8,6 +8,7 @@ · 7 unmodified lines
88 */
99 #pragma GCC diagnostic push
1010 #pragma GCC diagnostic ignored "-Wpacked"
11+#pragma GCC diagnostic ignored "-Wattributes"
1112
1213 #define __get_unaligned_t(type, ptr) ({ \
1314 const struct { type x; } __packed *__pptr = (typeof(__pptr))(ptr); \
tools/include/uapi/asm-generic/unistd.h+9−3
@@ -816,15 +816,21 @@ __SYSCALL(__NR_process_mrelease, sys_process_mrelease) · 815 unmodified lines
816816 __SYSCALL(__NR_futex_waitv, sys_futex_waitv)
817817 #define __NR_set_mempolicy_home_node 450
818818 __SYSCALL(__NR_set_mempolicy_home_node, sys_set_mempolicy_home_node)
819−
820819 #define __NR_cachestat 451
821820 __SYSCALL(__NR_cachestat, sys_cachestat)
822−
823821 #define __NR_fchmodat2 452
824822 __SYSCALL(__NR_fchmodat2, sys_fchmodat2)
823+#define __NR_map_shadow_stack 453
824+__SYSCALL(__NR_map_shadow_stack, sys_map_shadow_stack)
825+#define __NR_futex_wake 454
826+__SYSCALL(__NR_futex_wake, sys_futex_wake)
827+#define __NR_futex_wait 455
828+__SYSCALL(__NR_futex_wait, sys_futex_wait)
829+#define __NR_futex_requeue 456
830+__SYSCALL(__NR_futex_requeue, sys_futex_requeue)
825831
826832 #undef __NR_syscalls
827−#define __NR_syscalls 453
833+#define __NR_syscalls 457
828834
829835 /*
830836 * 32 bit systems traditionally used different
tools/include/uapi/drm/drm.h+20−0
@@ -1134,6 +1134,26 @@ extern "C" { · 1133 unmodified lines
11341134 #define DRM_IOCTL_MODE_PAGE_FLIP DRM_IOWR(0xB0, struct drm_mode_crtc_page_flip)
11351135 #define DRM_IOCTL_MODE_DIRTYFB DRM_IOWR(0xB1, struct drm_mode_fb_dirty_cmd)
11361136
1137+/**
1138+ * DRM_IOCTL_MODE_CREATE_DUMB - Create a new dumb buffer object.
1139+ *
1140+ * KMS dumb buffers provide a very primitive way to allocate a buffer object
1141+ * suitable for scanout and map it for software rendering. KMS dumb buffers are
1142+ * not suitable for hardware-accelerated rendering nor video decoding. KMS dumb
1143+ * buffers are not suitable to be displayed on any other device than the KMS
1144+ * device where they were allocated from. Also see
1145+ * :ref:`kms_dumb_buffer_objects`.
1146+ *
1147+ * The IOCTL argument is a struct drm_mode_create_dumb.
1148+ *
1149+ * User-space is expected to create a KMS dumb buffer via this IOCTL, then add
1150+ * it as a KMS framebuffer via &DRM_IOCTL_MODE_ADDFB and map it via
1151+ * &DRM_IOCTL_MODE_MAP_DUMB.
1152+ *
1153+ * &DRM_CAP_DUMB_BUFFER indicates whether this IOCTL is supported.
1154+ * &DRM_CAP_DUMB_PREFERRED_DEPTH and &DRM_CAP_DUMB_PREFER_SHADOW indicate
1155+ * driver preferences for dumb buffers.
1156+ */
11371157 #define DRM_IOCTL_MODE_CREATE_DUMB DRM_IOWR(0xB2, struct drm_mode_create_dumb)
11381158 #define DRM_IOCTL_MODE_MAP_DUMB DRM_IOWR(0xB3, struct drm_mode_map_dumb)
11391159 #define DRM_IOCTL_MODE_DESTROY_DUMB DRM_IOWR(0xB4, struct drm_mode_destroy_dumb)
tools/include/uapi/drm/i915_drm.h+4−4
@@ -38,13 +38,13 @@ extern "C" { · 37 unmodified lines
3838 */
3939
4040 /**
41− * DOC: uevents generated by i915 on it's device node
41+ * DOC: uevents generated by i915 on its device node
4242 *
4343 * I915_L3_PARITY_UEVENT - Generated when the driver receives a parity mismatch
44− * event from the gpu l3 cache. Additional information supplied is ROW,
44+ * event from the GPU L3 cache. Additional information supplied is ROW,
4545 * BANK, SUBBANK, SLICE of the affected cacheline. Userspace should keep
46− * track of these events and if a specific cache-line seems to have a
47− * persistent error remap it with the l3 remapping tool supplied in
46+ * track of these events, and if a specific cache-line seems to have a
47+ * persistent error, remap it with the L3 remapping tool supplied in
4848 * intel-gpu-tools. The value supplied with the event is always 1.
4949 *
5050 * I915_ERROR_UEVENT - Generated upon error detection, currently only via
tools/include/uapi/linux/fscrypt.h+2−1
@@ -71,7 +71,8 @@ struct fscrypt_policy_v2 { · 70 unmodified lines
7171 __u8 contents_encryption_mode;
7272 __u8 filenames_encryption_mode;
7373 __u8 flags;
74− __u8 __reserved[4];
74+ __u8 log2_data_unit_size;
75+ __u8 __reserved[3];
7576 __u8 master_key_identifier[FSCRYPT_KEY_IDENTIFIER_SIZE];
7677 };
7778
tools/include/uapi/linux/kvm.h+21−3
@@ -264,6 +264,7 @@ struct kvm_xen_exit { · 263 unmodified lines
264264 #define KVM_EXIT_RISCV_SBI 35
265265 #define KVM_EXIT_RISCV_CSR 36
266266 #define KVM_EXIT_NOTIFY 37
267+#define KVM_EXIT_LOONGARCH_IOCSR 38
267268
268269 /* For KVM_EXIT_INTERNAL_ERROR */
269270 /* Emulate instruction failed. */
@@ -336,6 +337,13 @@ struct kvm_run { · 66 unmodified lines
336337 __u32 len;
337338 __u8 is_write;
338339 } mmio;
340+ /* KVM_EXIT_LOONGARCH_IOCSR */
341+ struct {
342+ __u64 phys_addr;
343+ __u8 data[8];
344+ __u32 len;
345+ __u8 is_write;
346+ } iocsr_io;
339347 /* KVM_EXIT_HYPERCALL */
340348 struct {
341349 __u64 nr;
@@ -1192,6 +1200,7 @@ struct kvm_ppc_resize_hpt { · 850 unmodified lines
11921200 #define KVM_CAP_COUNTER_OFFSET 227
11931201 #define KVM_CAP_ARM_EAGER_SPLIT_CHUNK_SIZE 228
11941202 #define KVM_CAP_ARM_SUPPORTED_BLOCK_SIZES 229
1203+#define KVM_CAP_ARM_SUPPORTED_REG_MASK_RANGES 230
11951204
11961205 #ifdef KVM_CAP_IRQ_ROUTING
11971206
@@ -1362,6 +1371,7 @@ struct kvm_dirty_tlb { · 164 unmodified lines
13621371 #define KVM_REG_ARM64 0x6000000000000000ULL
13631372 #define KVM_REG_MIPS 0x7000000000000000ULL
13641373 #define KVM_REG_RISCV 0x8000000000000000ULL
1374+#define KVM_REG_LOONGARCH 0x9000000000000000ULL
13651375
13661376 #define KVM_REG_SIZE_SHIFT 52
13671377 #define KVM_REG_SIZE_MASK 0x00f0000000000000ULL
@@ -1418,9 +1428,16 @@ struct kvm_device_attr { · 50 unmodified lines
14181428 __u64 addr; /* userspace address of attr data */
14191429 };
14201430
1421−#define KVM_DEV_VFIO_GROUP 1
1422−#define KVM_DEV_VFIO_GROUP_ADD 1
1423−#define KVM_DEV_VFIO_GROUP_DEL 2
1431+#define KVM_DEV_VFIO_FILE 1
1432+
1433+#define KVM_DEV_VFIO_FILE_ADD 1
1434+#define KVM_DEV_VFIO_FILE_DEL 2
1435+
1436+/* KVM_DEV_VFIO_GROUP aliases are for compile time uapi compatibility */
1437+#define KVM_DEV_VFIO_GROUP KVM_DEV_VFIO_FILE
1438+
1439+#define KVM_DEV_VFIO_GROUP_ADD KVM_DEV_VFIO_FILE_ADD
1440+#define KVM_DEV_VFIO_GROUP_DEL KVM_DEV_VFIO_FILE_DEL
14241441 #define KVM_DEV_VFIO_GROUP_SET_SPAPR_TCE 3
14251442
14261443 enum kvm_device_type {
@@ -1555,6 +1572,7 @@ struct kvm_s390_ucas_mapping { · 128 unmodified lines
15551572 #define KVM_ARM_MTE_COPY_TAGS _IOR(KVMIO, 0xb4, struct kvm_arm_copy_mte_tags)
15561573 /* Available with KVM_CAP_COUNTER_OFFSET */
15571574 #define KVM_ARM_SET_COUNTER_OFFSET _IOW(KVMIO, 0xb5, struct kvm_arm_counter_offset)
1575+#define KVM_ARM_GET_REG_WRITABLE_MASKS _IOR(KVMIO, 0xb6, struct reg_mask_range)
15581576
15591577 /* ioctl for vm fd */
15601578 #define KVM_CREATE_DEVICE _IOWR(KVMIO, 0xe0, struct kvm_create_device)
tools/include/uapi/linux/mount.h+2−1
@@ -100,8 +100,9 @@ enum fsconfig_command { · 99 unmodified lines
100100 FSCONFIG_SET_PATH = 3, /* Set parameter, supplying an object by path */
101101 FSCONFIG_SET_PATH_EMPTY = 4, /* Set parameter, supplying an object by (empty) path */
102102 FSCONFIG_SET_FD = 5, /* Set parameter, supplying an object by fd */
103− FSCONFIG_CMD_CREATE = 6, /* Invoke superblock creation */
103+ FSCONFIG_CMD_CREATE = 6, /* Create new or reuse existing superblock */
104104 FSCONFIG_CMD_RECONFIGURE = 7, /* Invoke superblock reconfiguration */
105+ FSCONFIG_CMD_CREATE_EXCL = 8, /* Create new superblock, fail if reusing existing superblock */
105106 };
106107
107108 /*
tools/include/uapi/linux/vhost.h+8−0
@@ -219,4 +219,12 @@ · 218 unmodified lines
219219 */
220220 #define VHOST_VDPA_RESUME _IO(VHOST_VIRTIO, 0x7E)
221221
222+/* Get the group for the descriptor table including driver & device areas
223+ * of a virtqueue: read index, write group in num.
224+ * The virtqueue index is stored in the index field of vhost_vring_state.
225+ * The group ID of the descriptor table for this specific virtqueue
226+ * is returned via num field of vhost_vring_state.
227+ */
228+#define VHOST_VDPA_GET_VRING_DESC_GROUP _IOWR(VHOST_VIRTIO, 0x7F, \
229+ struct vhost_vring_state)
222230 #endif
tools/perf/MANIFEST+2−0
@@ -1,3 +1,5 @@
1+arch/arm64/tools/gen-sysreg.awk
2+arch/arm64/tools/sysreg
13 tools/perf
24 tools/arch
35 tools/scripts
tools/perf/Makefile.perf+15−9
@@ -434,6 +434,21 @@ export INSTALL SHELL_PATH · 433 unmodified lines
434434
435435 SHELL = $(SHELL_PATH)
436436
437+arm64_gen_sysreg_dir := $(srctree)/tools/arch/arm64/tools
438+ifneq ($(OUTPUT),)
439+ arm64_gen_sysreg_outdir := $(OUTPUT)
440+else
441+ arm64_gen_sysreg_outdir := $(CURDIR)
442+endif
443+
444+arm64-sysreg-defs: FORCE
445+ $(Q)$(MAKE) -C $(arm64_gen_sysreg_dir) O=$(arm64_gen_sysreg_outdir)
446+
447+arm64-sysreg-defs-clean:
448+ $(call QUIET_CLEAN,arm64-sysreg-defs)
449+ $(Q)$(MAKE) -C $(arm64_gen_sysreg_dir) O=$(arm64_gen_sysreg_outdir) \
450+ clean > /dev/null
451+
437452 beauty_linux_dir := $(srctree)/tools/perf/trace/beauty/include/linux/
438453 linux_uapi_dir := $(srctree)/tools/include/uapi/linux
439454 asm_generic_uapi_dir := $(srctree)/tools/include/uapi/asm-generic
@@ -450,15 +465,6 @@ drm_ioctl_tbl := $(srctree)/tools/perf/trace/beauty/drm_ioctl.sh · 10 unmodified lines
450465 # Create output directory if not already present
451466 _dummy := $(shell [ -d '$(beauty_ioctl_outdir)' ] || mkdir -p '$(beauty_ioctl_outdir)')
452467
453−arm64_gen_sysreg_dir := $(srctree)/tools/arch/arm64/tools
454−
455−arm64-sysreg-defs: FORCE
456− $(Q)$(MAKE) -C $(arm64_gen_sysreg_dir)
457−
458−arm64-sysreg-defs-clean:
459− $(call QUIET_CLEAN,arm64-sysreg-defs)
460− $(Q)$(MAKE) -C $(arm64_gen_sysreg_dir) clean > /dev/null
461−
462468 $(drm_ioctl_array): $(drm_hdr_dir)/drm.h $(drm_hdr_dir)/i915_drm.h $(drm_ioctl_tbl)
463469 $(Q)$(SHELL) '$(drm_ioctl_tbl)' $(drm_hdr_dir) > $@
464470
tools/perf/arch/mips/entry/syscalls/syscall_n64.tbl+4−0
@@ -367,3 +367,7 @@ · 366 unmodified lines
367367 450 common set_mempolicy_home_node sys_set_mempolicy_home_node
368368 451 n64 cachestat sys_cachestat
369369 452 n64 fchmodat2 sys_fchmodat2
370+453 n64 map_shadow_stack sys_map_shadow_stack
371+454 n64 futex_wake sys_futex_wake
372+455 n64 futex_wait sys_futex_wait
373+456 n64 futex_requeue sys_futex_requeue
tools/perf/arch/powerpc/entry/syscalls/syscall.tbl+4−0
@@ -539,3 +539,7 @@ · 538 unmodified lines
539539 450 nospu set_mempolicy_home_node sys_set_mempolicy_home_node
540540 451 common cachestat sys_cachestat
541541 452 common fchmodat2 sys_fchmodat2
542+453 common map_shadow_stack sys_ni_syscall
543+454 common futex_wake sys_futex_wake
544+455 common futex_wait sys_futex_wait
545+456 common futex_requeue sys_futex_requeue
tools/perf/arch/s390/entry/syscalls/syscall.tbl+4−0
@@ -455,3 +455,7 @@ · 454 unmodified lines
455455 450 common set_mempolicy_home_node sys_set_mempolicy_home_node sys_set_mempolicy_home_node
456456 451 common cachestat sys_cachestat sys_cachestat
457457 452 common fchmodat2 sys_fchmodat2 sys_fchmodat2
458+453 common map_shadow_stack sys_map_shadow_stack sys_map_shadow_stack
459+454 common futex_wake sys_futex_wake sys_futex_wake
460+455 common futex_wait sys_futex_wait sys_futex_wait
461+456 common futex_requeue sys_futex_requeue sys_futex_requeue
tools/perf/arch/x86/entry/syscalls/syscall_64.tbl+3−0
@@ -375,6 +375,9 @@ · 374 unmodified lines
375375 451 common cachestat sys_cachestat
376376 452 common fchmodat2 sys_fchmodat2
377377 453 64 map_shadow_stack sys_map_shadow_stack
378+454 common futex_wake sys_futex_wake
379+455 common futex_wait sys_futex_wait
380+456 common futex_requeue sys_futex_requeue
378381
379382 #
380383 # Due to a historical design error, certain syscalls are numbered differently
tools/perf/builtin-kwork.c+1−1
@@ -1643,7 +1643,7 @@ static int top_print_work(struct perf_kwork *kwork __maybe_unused, struct kwork_ · 1642 unmodified lines
16431643 /*
16441644 * pid
16451645 */
1646− ret += printf(" %*ld ", PRINT_PID_WIDTH, work->id);
1646+ ret += printf(" %*" PRIu64 " ", PRINT_PID_WIDTH, work->id);
16471647
16481648 /*
16491649 * tgid
tools/perf/trace/beauty/include/linux/socket.h+1−0
@@ -383,6 +383,7 @@ struct ucred { · 382 unmodified lines
383383 #define SOL_MPTCP 284
384384 #define SOL_MCTP 285
385385 #define SOL_SMC 286
386+#define SOL_VSOCK 287
386387
387388 /* IPX options */
388389 #define IPX_TYPE 1
tools/perf/util/Build+1−1
@@ -347,7 +347,7 @@ CFLAGS_rbtree.o += -Wno-unused-parameter -DETC_PERFCONFIG="BUILD_STR($(ET · 346 unmodified lines
347347 CFLAGS_libstring.o += -Wno-unused-parameter -DETC_PERFCONFIG="BUILD_STR($(ETC_PERFCONFIG_SQ))"
348348 CFLAGS_hweight.o += -Wno-unused-parameter -DETC_PERFCONFIG="BUILD_STR($(ETC_PERFCONFIG_SQ))"
349349 CFLAGS_header.o += -include $(OUTPUT)PERF-VERSION-FILE
350−CFLAGS_arm-spe.o += -I$(srctree)/tools/arch/arm64/include/ -I$(srctree)/tools/arch/arm64/include/generated/
350+CFLAGS_arm-spe.o += -I$(srctree)/tools/arch/arm64/include/ -I$(OUTPUT)arch/arm64/include/generated/
351351
352352 $(OUTPUT)util/argv_split.o: ../lib/argv_split.c FORCE
353353 $(call rule_mkdir)
tools/perf/util/bpf_lock_contention.c+2−1
@@ -12,6 +12,7 @@ · 11 unmodified lines
1212 #include <linux/zalloc.h>
1313 #include <linux/string.h>
1414 #include <bpf/bpf.h>
15+#include <inttypes.h>
1516
1617 #include "bpf_skel/lock_contention.skel.h"
1718 #include "bpf_skel/lock_data.h"
@@ -250,7 +251,7 @@ static const char *lock_contention_get_name(struct lock_contention *con, · 232 unmodified lines
250251 if (cgrp)
251252 return cgrp->name;
252253
253− snprintf(name_buf, sizeof(name_buf), "cgroup:%lu", cgrp_id);
254+ snprintf(name_buf, sizeof(name_buf), "cgroup:%" PRIu64 "", cgrp_id);
254255 return name_buf;
255256 }
256257
tools/testing/selftests/kvm/Makefile+3−2
@@ -18,12 +18,13 @@ else · 17 unmodified lines
1818 endif
1919
2020 ifeq ($(ARCH),arm64)
21−arm64_tools_dir := $(top_srcdir)/tools/arch/arm64/tools/
21+tools_dir := $(top_srcdir)/tools
22+arm64_tools_dir := $(tools_dir)/arch/arm64/tools/
2223 GEN_HDRS := $(top_srcdir)/tools/arch/arm64/include/generated/
2324 CFLAGS += -I$(GEN_HDRS)
2425
2526 $(GEN_HDRS): $(wildcard $(arm64_tools_dir)/*)
26− $(MAKE) -C $(arm64_tools_dir)
27+ $(MAKE) -C $(arm64_tools_dir) O=$(tools_dir)
2728 endif
2829
2930 LIBKVM += lib/assert.c