mirror of https://github.com/torvalds/linux.git
perf tools fixes for v6.18:
- Add James Clark as a perf tools reviewer.
- Handle '1' type symbols in /proc/kallsyms, related to anonymous Rust closures
in the DRM panic QR encoder, caught by 'perf test'.
- Sync kernel header copies: MSRs, uprobe syscall, DRM_IOCTL_GEM_CHANGE_HANDLE,
KVM exit reasons, etc.
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
-----BEGIN PGP SIGNATURE-----
iHUEABYKAB0WIQR2GiIUctdOfX2qHhGyPKLppCJ+JwUCaQ0FawAKCRCyPKLppCJ+
J+QLAP9NMeWfs1/7Wyt5P028Ul5pB55hLc3MUv33ul94CV9sPAD+K57sXYgesAz9
serupEojk9NKbJdt6Bx0WYBGh/XivgI=
=J28f
-----END PGP SIGNATURE-----
Merge tag 'perf-tools-fixes-for-v6.18-1-2025-11-06' of git://git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools
Pull perf tools fixes from Arnaldo Carvalho de Melo:
- Add James Clark as a perf tools reviewer
- Handle '1' type symbols in /proc/kallsyms, related to anonymous
Rust closures in the DRM panic QR encoder, caught by 'perf test'
- Sync kernel header copies: MSRs, uprobe syscall,
DRM_IOCTL_GEM_CHANGE_HANDLE, KVM exit reasons, etc
* tag 'perf-tools-fixes-for-v6.18-1-2025-11-06' of git://git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools:
perf symbols: Handle '1' symbols in /proc/kallsyms
tools headers asm: Sync fls headers header with the kernel sources
tools headers UAPI: Sync KVM's vmx.h header with the kernel sources to handle new exit reasons
tools headers svm: Sync svm headers with the kernel sources
tools headers UAPI: Sync x86's asm/kvm.h with the kernel sources
MAINTAINERS: Add James Clark as a perf tools reviewer
tools headers UAPI: Sync linux/kvm.h with the kernel sources
tools headers UAPI: Update tools's copy of drm.h to pick DRM_IOCTL_GEM_CHANGE_HANDLE
tools headers x86 cpufeatures: Sync with the kernel sources
tools headers x86: Sync table due to introducion of uprobe syscall
tools headers: Sync uapi/linux/fcntl.h with the kernel sources
tools headers: Sync uapi/linux/prctl.h with the kernel source
tools headers uapi: Update fs.h with the kernel sources
tools arch x86: Sync msr-index.h to pick AMD64_{PERF_CNTR_GLOBAL_STATUS_SET,SAVIC_CONTROL}, IA32_L3_QOS_{ABMC,EXT}_CFG
This commit is contained in:
commit
f5f2e20b1c
|
|
@ -20163,6 +20163,7 @@ R: Alexander Shishkin <alexander.shishkin@linux.intel.com>
|
||||||
R: Jiri Olsa <jolsa@kernel.org>
|
R: Jiri Olsa <jolsa@kernel.org>
|
||||||
R: Ian Rogers <irogers@google.com>
|
R: Ian Rogers <irogers@google.com>
|
||||||
R: Adrian Hunter <adrian.hunter@intel.com>
|
R: Adrian Hunter <adrian.hunter@intel.com>
|
||||||
|
R: James Clark <james.clark@linaro.org>
|
||||||
L: linux-perf-users@vger.kernel.org
|
L: linux-perf-users@vger.kernel.org
|
||||||
L: linux-kernel@vger.kernel.org
|
L: linux-kernel@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
|
|
|
||||||
|
|
@ -444,6 +444,7 @@
|
||||||
#define X86_FEATURE_VM_PAGE_FLUSH (19*32+ 2) /* VM Page Flush MSR is supported */
|
#define X86_FEATURE_VM_PAGE_FLUSH (19*32+ 2) /* VM Page Flush MSR is supported */
|
||||||
#define X86_FEATURE_SEV_ES (19*32+ 3) /* "sev_es" Secure Encrypted Virtualization - Encrypted State */
|
#define X86_FEATURE_SEV_ES (19*32+ 3) /* "sev_es" Secure Encrypted Virtualization - Encrypted State */
|
||||||
#define X86_FEATURE_SEV_SNP (19*32+ 4) /* "sev_snp" Secure Encrypted Virtualization - Secure Nested Paging */
|
#define X86_FEATURE_SEV_SNP (19*32+ 4) /* "sev_snp" Secure Encrypted Virtualization - Secure Nested Paging */
|
||||||
|
#define X86_FEATURE_SNP_SECURE_TSC (19*32+ 8) /* SEV-SNP Secure TSC */
|
||||||
#define X86_FEATURE_V_TSC_AUX (19*32+ 9) /* Virtual TSC_AUX */
|
#define X86_FEATURE_V_TSC_AUX (19*32+ 9) /* Virtual TSC_AUX */
|
||||||
#define X86_FEATURE_SME_COHERENT (19*32+10) /* hardware-enforced cache coherency */
|
#define X86_FEATURE_SME_COHERENT (19*32+10) /* hardware-enforced cache coherency */
|
||||||
#define X86_FEATURE_DEBUG_SWAP (19*32+14) /* "debug_swap" SEV-ES full debug state swap support */
|
#define X86_FEATURE_DEBUG_SWAP (19*32+14) /* "debug_swap" SEV-ES full debug state swap support */
|
||||||
|
|
@ -495,6 +496,9 @@
|
||||||
#define X86_FEATURE_TSA_SQ_NO (21*32+11) /* AMD CPU not vulnerable to TSA-SQ */
|
#define X86_FEATURE_TSA_SQ_NO (21*32+11) /* AMD CPU not vulnerable to TSA-SQ */
|
||||||
#define X86_FEATURE_TSA_L1_NO (21*32+12) /* AMD CPU not vulnerable to TSA-L1 */
|
#define X86_FEATURE_TSA_L1_NO (21*32+12) /* AMD CPU not vulnerable to TSA-L1 */
|
||||||
#define X86_FEATURE_CLEAR_CPU_BUF_VM (21*32+13) /* Clear CPU buffers using VERW before VMRUN */
|
#define X86_FEATURE_CLEAR_CPU_BUF_VM (21*32+13) /* Clear CPU buffers using VERW before VMRUN */
|
||||||
|
#define X86_FEATURE_IBPB_EXIT_TO_USER (21*32+14) /* Use IBPB on exit-to-userspace, see VMSCAPE bug */
|
||||||
|
#define X86_FEATURE_ABMC (21*32+15) /* Assignable Bandwidth Monitoring Counters */
|
||||||
|
#define X86_FEATURE_MSR_IMM (21*32+16) /* MSR immediate form instructions */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* BUG word(s)
|
* BUG word(s)
|
||||||
|
|
@ -551,4 +555,5 @@
|
||||||
#define X86_BUG_ITS X86_BUG( 1*32+ 7) /* "its" CPU is affected by Indirect Target Selection */
|
#define X86_BUG_ITS X86_BUG( 1*32+ 7) /* "its" CPU is affected by Indirect Target Selection */
|
||||||
#define X86_BUG_ITS_NATIVE_ONLY X86_BUG( 1*32+ 8) /* "its_native_only" CPU is affected by ITS, VMX is not affected */
|
#define X86_BUG_ITS_NATIVE_ONLY X86_BUG( 1*32+ 8) /* "its_native_only" CPU is affected by ITS, VMX is not affected */
|
||||||
#define X86_BUG_TSA X86_BUG( 1*32+ 9) /* "tsa" CPU is affected by Transient Scheduler Attacks */
|
#define X86_BUG_TSA X86_BUG( 1*32+ 9) /* "tsa" CPU is affected by Transient Scheduler Attacks */
|
||||||
|
#define X86_BUG_VMSCAPE X86_BUG( 1*32+10) /* "vmscape" CPU is affected by VMSCAPE attacks from guests */
|
||||||
#endif /* _ASM_X86_CPUFEATURES_H */
|
#endif /* _ASM_X86_CPUFEATURES_H */
|
||||||
|
|
|
||||||
|
|
@ -315,9 +315,12 @@
|
||||||
#define PERF_CAP_PT_IDX 16
|
#define PERF_CAP_PT_IDX 16
|
||||||
|
|
||||||
#define MSR_PEBS_LD_LAT_THRESHOLD 0x000003f6
|
#define MSR_PEBS_LD_LAT_THRESHOLD 0x000003f6
|
||||||
|
|
||||||
|
#define PERF_CAP_LBR_FMT 0x3f
|
||||||
#define PERF_CAP_PEBS_TRAP BIT_ULL(6)
|
#define PERF_CAP_PEBS_TRAP BIT_ULL(6)
|
||||||
#define PERF_CAP_ARCH_REG BIT_ULL(7)
|
#define PERF_CAP_ARCH_REG BIT_ULL(7)
|
||||||
#define PERF_CAP_PEBS_FORMAT 0xf00
|
#define PERF_CAP_PEBS_FORMAT 0xf00
|
||||||
|
#define PERF_CAP_FW_WRITES BIT_ULL(13)
|
||||||
#define PERF_CAP_PEBS_BASELINE BIT_ULL(14)
|
#define PERF_CAP_PEBS_BASELINE BIT_ULL(14)
|
||||||
#define PERF_CAP_PEBS_TIMING_INFO BIT_ULL(17)
|
#define PERF_CAP_PEBS_TIMING_INFO BIT_ULL(17)
|
||||||
#define PERF_CAP_PEBS_MASK (PERF_CAP_PEBS_TRAP | PERF_CAP_ARCH_REG | \
|
#define PERF_CAP_PEBS_MASK (PERF_CAP_PEBS_TRAP | PERF_CAP_ARCH_REG | \
|
||||||
|
|
@ -633,6 +636,11 @@
|
||||||
#define MSR_AMD_PPIN 0xc00102f1
|
#define MSR_AMD_PPIN 0xc00102f1
|
||||||
#define MSR_AMD64_CPUID_FN_7 0xc0011002
|
#define MSR_AMD64_CPUID_FN_7 0xc0011002
|
||||||
#define MSR_AMD64_CPUID_FN_1 0xc0011004
|
#define MSR_AMD64_CPUID_FN_1 0xc0011004
|
||||||
|
|
||||||
|
#define MSR_AMD64_CPUID_EXT_FEAT 0xc0011005
|
||||||
|
#define MSR_AMD64_CPUID_EXT_FEAT_TOPOEXT_BIT 54
|
||||||
|
#define MSR_AMD64_CPUID_EXT_FEAT_TOPOEXT BIT_ULL(MSR_AMD64_CPUID_EXT_FEAT_TOPOEXT_BIT)
|
||||||
|
|
||||||
#define MSR_AMD64_LS_CFG 0xc0011020
|
#define MSR_AMD64_LS_CFG 0xc0011020
|
||||||
#define MSR_AMD64_DC_CFG 0xc0011022
|
#define MSR_AMD64_DC_CFG 0xc0011022
|
||||||
#define MSR_AMD64_TW_CFG 0xc0011023
|
#define MSR_AMD64_TW_CFG 0xc0011023
|
||||||
|
|
@ -701,8 +709,15 @@
|
||||||
#define MSR_AMD64_SNP_VMSA_REG_PROT BIT_ULL(MSR_AMD64_SNP_VMSA_REG_PROT_BIT)
|
#define MSR_AMD64_SNP_VMSA_REG_PROT BIT_ULL(MSR_AMD64_SNP_VMSA_REG_PROT_BIT)
|
||||||
#define MSR_AMD64_SNP_SMT_PROT_BIT 17
|
#define MSR_AMD64_SNP_SMT_PROT_BIT 17
|
||||||
#define MSR_AMD64_SNP_SMT_PROT BIT_ULL(MSR_AMD64_SNP_SMT_PROT_BIT)
|
#define MSR_AMD64_SNP_SMT_PROT BIT_ULL(MSR_AMD64_SNP_SMT_PROT_BIT)
|
||||||
#define MSR_AMD64_SNP_RESV_BIT 18
|
#define MSR_AMD64_SNP_SECURE_AVIC_BIT 18
|
||||||
|
#define MSR_AMD64_SNP_SECURE_AVIC BIT_ULL(MSR_AMD64_SNP_SECURE_AVIC_BIT)
|
||||||
|
#define MSR_AMD64_SNP_RESV_BIT 19
|
||||||
#define MSR_AMD64_SNP_RESERVED_MASK GENMASK_ULL(63, MSR_AMD64_SNP_RESV_BIT)
|
#define MSR_AMD64_SNP_RESERVED_MASK GENMASK_ULL(63, MSR_AMD64_SNP_RESV_BIT)
|
||||||
|
#define MSR_AMD64_SAVIC_CONTROL 0xc0010138
|
||||||
|
#define MSR_AMD64_SAVIC_EN_BIT 0
|
||||||
|
#define MSR_AMD64_SAVIC_EN BIT_ULL(MSR_AMD64_SAVIC_EN_BIT)
|
||||||
|
#define MSR_AMD64_SAVIC_ALLOWEDNMI_BIT 1
|
||||||
|
#define MSR_AMD64_SAVIC_ALLOWEDNMI BIT_ULL(MSR_AMD64_SAVIC_ALLOWEDNMI_BIT)
|
||||||
#define MSR_AMD64_RMP_BASE 0xc0010132
|
#define MSR_AMD64_RMP_BASE 0xc0010132
|
||||||
#define MSR_AMD64_RMP_END 0xc0010133
|
#define MSR_AMD64_RMP_END 0xc0010133
|
||||||
#define MSR_AMD64_RMP_CFG 0xc0010136
|
#define MSR_AMD64_RMP_CFG 0xc0010136
|
||||||
|
|
@ -735,6 +750,7 @@
|
||||||
#define MSR_AMD64_PERF_CNTR_GLOBAL_STATUS 0xc0000300
|
#define MSR_AMD64_PERF_CNTR_GLOBAL_STATUS 0xc0000300
|
||||||
#define MSR_AMD64_PERF_CNTR_GLOBAL_CTL 0xc0000301
|
#define MSR_AMD64_PERF_CNTR_GLOBAL_CTL 0xc0000301
|
||||||
#define MSR_AMD64_PERF_CNTR_GLOBAL_STATUS_CLR 0xc0000302
|
#define MSR_AMD64_PERF_CNTR_GLOBAL_STATUS_CLR 0xc0000302
|
||||||
|
#define MSR_AMD64_PERF_CNTR_GLOBAL_STATUS_SET 0xc0000303
|
||||||
|
|
||||||
/* AMD Hardware Feedback Support MSRs */
|
/* AMD Hardware Feedback Support MSRs */
|
||||||
#define MSR_AMD_WORKLOAD_CLASS_CONFIG 0xc0000500
|
#define MSR_AMD_WORKLOAD_CLASS_CONFIG 0xc0000500
|
||||||
|
|
@ -1225,6 +1241,8 @@
|
||||||
/* - AMD: */
|
/* - AMD: */
|
||||||
#define MSR_IA32_MBA_BW_BASE 0xc0000200
|
#define MSR_IA32_MBA_BW_BASE 0xc0000200
|
||||||
#define MSR_IA32_SMBA_BW_BASE 0xc0000280
|
#define MSR_IA32_SMBA_BW_BASE 0xc0000280
|
||||||
|
#define MSR_IA32_L3_QOS_ABMC_CFG 0xc00003fd
|
||||||
|
#define MSR_IA32_L3_QOS_EXT_CFG 0xc00003ff
|
||||||
#define MSR_IA32_EVT_CFG_BASE 0xc0000400
|
#define MSR_IA32_EVT_CFG_BASE 0xc0000400
|
||||||
|
|
||||||
/* AMD-V MSRs */
|
/* AMD-V MSRs */
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,11 @@
|
||||||
#define MC_VECTOR 18
|
#define MC_VECTOR 18
|
||||||
#define XM_VECTOR 19
|
#define XM_VECTOR 19
|
||||||
#define VE_VECTOR 20
|
#define VE_VECTOR 20
|
||||||
|
#define CP_VECTOR 21
|
||||||
|
|
||||||
|
#define HV_VECTOR 28
|
||||||
|
#define VC_VECTOR 29
|
||||||
|
#define SX_VECTOR 30
|
||||||
|
|
||||||
/* Select x86 specific features in <linux/kvm.h> */
|
/* Select x86 specific features in <linux/kvm.h> */
|
||||||
#define __KVM_HAVE_PIT
|
#define __KVM_HAVE_PIT
|
||||||
|
|
@ -411,6 +416,35 @@ struct kvm_xcrs {
|
||||||
__u64 padding[16];
|
__u64 padding[16];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define KVM_X86_REG_TYPE_MSR 2
|
||||||
|
#define KVM_X86_REG_TYPE_KVM 3
|
||||||
|
|
||||||
|
#define KVM_X86_KVM_REG_SIZE(reg) \
|
||||||
|
({ \
|
||||||
|
reg == KVM_REG_GUEST_SSP ? KVM_REG_SIZE_U64 : 0; \
|
||||||
|
})
|
||||||
|
|
||||||
|
#define KVM_X86_REG_TYPE_SIZE(type, reg) \
|
||||||
|
({ \
|
||||||
|
__u64 type_size = (__u64)type << 32; \
|
||||||
|
\
|
||||||
|
type_size |= type == KVM_X86_REG_TYPE_MSR ? KVM_REG_SIZE_U64 : \
|
||||||
|
type == KVM_X86_REG_TYPE_KVM ? KVM_X86_KVM_REG_SIZE(reg) : \
|
||||||
|
0; \
|
||||||
|
type_size; \
|
||||||
|
})
|
||||||
|
|
||||||
|
#define KVM_X86_REG_ID(type, index) \
|
||||||
|
(KVM_REG_X86 | KVM_X86_REG_TYPE_SIZE(type, index) | index)
|
||||||
|
|
||||||
|
#define KVM_X86_REG_MSR(index) \
|
||||||
|
KVM_X86_REG_ID(KVM_X86_REG_TYPE_MSR, index)
|
||||||
|
#define KVM_X86_REG_KVM(index) \
|
||||||
|
KVM_X86_REG_ID(KVM_X86_REG_TYPE_KVM, index)
|
||||||
|
|
||||||
|
/* KVM-defined registers starting from 0 */
|
||||||
|
#define KVM_REG_GUEST_SSP 0
|
||||||
|
|
||||||
#define KVM_SYNC_X86_REGS (1UL << 0)
|
#define KVM_SYNC_X86_REGS (1UL << 0)
|
||||||
#define KVM_SYNC_X86_SREGS (1UL << 1)
|
#define KVM_SYNC_X86_SREGS (1UL << 1)
|
||||||
#define KVM_SYNC_X86_EVENTS (1UL << 2)
|
#define KVM_SYNC_X86_EVENTS (1UL << 2)
|
||||||
|
|
|
||||||
|
|
@ -118,6 +118,10 @@
|
||||||
#define SVM_VMGEXIT_AP_CREATE 1
|
#define SVM_VMGEXIT_AP_CREATE 1
|
||||||
#define SVM_VMGEXIT_AP_DESTROY 2
|
#define SVM_VMGEXIT_AP_DESTROY 2
|
||||||
#define SVM_VMGEXIT_SNP_RUN_VMPL 0x80000018
|
#define SVM_VMGEXIT_SNP_RUN_VMPL 0x80000018
|
||||||
|
#define SVM_VMGEXIT_SAVIC 0x8000001a
|
||||||
|
#define SVM_VMGEXIT_SAVIC_REGISTER_GPA 0
|
||||||
|
#define SVM_VMGEXIT_SAVIC_UNREGISTER_GPA 1
|
||||||
|
#define SVM_VMGEXIT_SAVIC_SELF_GPA ~0ULL
|
||||||
#define SVM_VMGEXIT_HV_FEATURES 0x8000fffd
|
#define SVM_VMGEXIT_HV_FEATURES 0x8000fffd
|
||||||
#define SVM_VMGEXIT_TERM_REQUEST 0x8000fffe
|
#define SVM_VMGEXIT_TERM_REQUEST 0x8000fffe
|
||||||
#define SVM_VMGEXIT_TERM_REASON(reason_set, reason_code) \
|
#define SVM_VMGEXIT_TERM_REASON(reason_set, reason_code) \
|
||||||
|
|
|
||||||
|
|
@ -94,6 +94,8 @@
|
||||||
#define EXIT_REASON_BUS_LOCK 74
|
#define EXIT_REASON_BUS_LOCK 74
|
||||||
#define EXIT_REASON_NOTIFY 75
|
#define EXIT_REASON_NOTIFY 75
|
||||||
#define EXIT_REASON_TDCALL 77
|
#define EXIT_REASON_TDCALL 77
|
||||||
|
#define EXIT_REASON_MSR_READ_IMM 84
|
||||||
|
#define EXIT_REASON_MSR_WRITE_IMM 85
|
||||||
|
|
||||||
#define VMX_EXIT_REASONS \
|
#define VMX_EXIT_REASONS \
|
||||||
{ EXIT_REASON_EXCEPTION_NMI, "EXCEPTION_NMI" }, \
|
{ EXIT_REASON_EXCEPTION_NMI, "EXCEPTION_NMI" }, \
|
||||||
|
|
@ -158,7 +160,9 @@
|
||||||
{ EXIT_REASON_TPAUSE, "TPAUSE" }, \
|
{ EXIT_REASON_TPAUSE, "TPAUSE" }, \
|
||||||
{ EXIT_REASON_BUS_LOCK, "BUS_LOCK" }, \
|
{ EXIT_REASON_BUS_LOCK, "BUS_LOCK" }, \
|
||||||
{ EXIT_REASON_NOTIFY, "NOTIFY" }, \
|
{ EXIT_REASON_NOTIFY, "NOTIFY" }, \
|
||||||
{ EXIT_REASON_TDCALL, "TDCALL" }
|
{ EXIT_REASON_TDCALL, "TDCALL" }, \
|
||||||
|
{ EXIT_REASON_MSR_READ_IMM, "MSR_READ_IMM" }, \
|
||||||
|
{ EXIT_REASON_MSR_WRITE_IMM, "MSR_WRITE_IMM" }
|
||||||
|
|
||||||
#define VMX_EXIT_REASON_FLAGS \
|
#define VMX_EXIT_REASON_FLAGS \
|
||||||
{ VMX_EXIT_REASONS_FAILED_VMENTRY, "FAILED_VMENTRY" }
|
{ VMX_EXIT_REASONS_FAILED_VMENTRY, "FAILED_VMENTRY" }
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@
|
||||||
*
|
*
|
||||||
* Undefined if no set bit exists, so code should check against 0 first.
|
* Undefined if no set bit exists, so code should check against 0 first.
|
||||||
*/
|
*/
|
||||||
static __always_inline unsigned int generic___fls(unsigned long word)
|
static __always_inline __attribute_const__ unsigned int generic___fls(unsigned long word)
|
||||||
{
|
{
|
||||||
unsigned int num = BITS_PER_LONG - 1;
|
unsigned int num = BITS_PER_LONG - 1;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@
|
||||||
* Note fls(0) = 0, fls(1) = 1, fls(0x80000000) = 32.
|
* Note fls(0) = 0, fls(1) = 1, fls(0x80000000) = 32.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static __always_inline int generic_fls(unsigned int x)
|
static __always_inline __attribute_const__ int generic_fls(unsigned int x)
|
||||||
{
|
{
|
||||||
int r = 32;
|
int r = 32;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
* at position 64.
|
* at position 64.
|
||||||
*/
|
*/
|
||||||
#if BITS_PER_LONG == 32
|
#if BITS_PER_LONG == 32
|
||||||
static __always_inline int fls64(__u64 x)
|
static __always_inline __attribute_const__ int fls64(__u64 x)
|
||||||
{
|
{
|
||||||
__u32 h = x >> 32;
|
__u32 h = x >> 32;
|
||||||
if (h)
|
if (h)
|
||||||
|
|
@ -24,7 +24,7 @@ static __always_inline int fls64(__u64 x)
|
||||||
return fls(x);
|
return fls(x);
|
||||||
}
|
}
|
||||||
#elif BITS_PER_LONG == 64
|
#elif BITS_PER_LONG == 64
|
||||||
static __always_inline int fls64(__u64 x)
|
static __always_inline __attribute_const__ int fls64(__u64 x)
|
||||||
{
|
{
|
||||||
if (x == 0)
|
if (x == 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
||||||
|
|
@ -597,34 +597,65 @@ struct drm_set_version {
|
||||||
int drm_dd_minor;
|
int drm_dd_minor;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* DRM_IOCTL_GEM_CLOSE ioctl argument type */
|
/**
|
||||||
|
* struct drm_gem_close - Argument for &DRM_IOCTL_GEM_CLOSE ioctl.
|
||||||
|
* @handle: Handle of the object to be closed.
|
||||||
|
* @pad: Padding.
|
||||||
|
*
|
||||||
|
* Releases the handle to an mm object.
|
||||||
|
*/
|
||||||
struct drm_gem_close {
|
struct drm_gem_close {
|
||||||
/** Handle of the object to be closed. */
|
|
||||||
__u32 handle;
|
__u32 handle;
|
||||||
__u32 pad;
|
__u32 pad;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* DRM_IOCTL_GEM_FLINK ioctl argument type */
|
/**
|
||||||
|
* struct drm_gem_flink - Argument for &DRM_IOCTL_GEM_FLINK ioctl.
|
||||||
|
* @handle: Handle for the object being named.
|
||||||
|
* @name: Returned global name.
|
||||||
|
*
|
||||||
|
* Create a global name for an object, returning the name.
|
||||||
|
*
|
||||||
|
* Note that the name does not hold a reference; when the object
|
||||||
|
* is freed, the name goes away.
|
||||||
|
*/
|
||||||
struct drm_gem_flink {
|
struct drm_gem_flink {
|
||||||
/** Handle for the object being named */
|
|
||||||
__u32 handle;
|
__u32 handle;
|
||||||
|
|
||||||
/** Returned global name */
|
|
||||||
__u32 name;
|
__u32 name;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* DRM_IOCTL_GEM_OPEN ioctl argument type */
|
/**
|
||||||
|
* struct drm_gem_open - Argument for &DRM_IOCTL_GEM_OPEN ioctl.
|
||||||
|
* @name: Name of object being opened.
|
||||||
|
* @handle: Returned handle for the object.
|
||||||
|
* @size: Returned size of the object
|
||||||
|
*
|
||||||
|
* Open an object using the global name, returning a handle and the size.
|
||||||
|
*
|
||||||
|
* This handle (of course) holds a reference to the object, so the object
|
||||||
|
* will not go away until the handle is deleted.
|
||||||
|
*/
|
||||||
struct drm_gem_open {
|
struct drm_gem_open {
|
||||||
/** Name of object being opened */
|
|
||||||
__u32 name;
|
__u32 name;
|
||||||
|
|
||||||
/** Returned handle for the object */
|
|
||||||
__u32 handle;
|
__u32 handle;
|
||||||
|
|
||||||
/** Returned size of the object */
|
|
||||||
__u64 size;
|
__u64 size;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct drm_gem_change_handle - Argument for &DRM_IOCTL_GEM_CHANGE_HANDLE ioctl.
|
||||||
|
* @handle: The handle of a gem object.
|
||||||
|
* @new_handle: An available gem handle.
|
||||||
|
*
|
||||||
|
* This ioctl changes the handle of a GEM object to the specified one.
|
||||||
|
* The new handle must be unused. On success the old handle is closed
|
||||||
|
* and all further IOCTL should refer to the new handle only.
|
||||||
|
* Calls to DRM_IOCTL_PRIME_FD_TO_HANDLE will return the new handle.
|
||||||
|
*/
|
||||||
|
struct drm_gem_change_handle {
|
||||||
|
__u32 handle;
|
||||||
|
__u32 new_handle;
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* DRM_CAP_DUMB_BUFFER
|
* DRM_CAP_DUMB_BUFFER
|
||||||
*
|
*
|
||||||
|
|
@ -1309,6 +1340,14 @@ extern "C" {
|
||||||
*/
|
*/
|
||||||
#define DRM_IOCTL_SET_CLIENT_NAME DRM_IOWR(0xD1, struct drm_set_client_name)
|
#define DRM_IOCTL_SET_CLIENT_NAME DRM_IOWR(0xD1, struct drm_set_client_name)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DRM_IOCTL_GEM_CHANGE_HANDLE - Move an object to a different handle
|
||||||
|
*
|
||||||
|
* Some applications (notably CRIU) need objects to have specific gem handles.
|
||||||
|
* This ioctl changes the object at one gem handle to use a new gem handle.
|
||||||
|
*/
|
||||||
|
#define DRM_IOCTL_GEM_CHANGE_HANDLE DRM_IOWR(0xD2, struct drm_gem_change_handle)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Device specific ioctls should only be in their respective headers
|
* Device specific ioctls should only be in their respective headers
|
||||||
* The device specific ioctl range is from 0x40 to 0x9f.
|
* The device specific ioctl range is from 0x40 to 0x9f.
|
||||||
|
|
|
||||||
|
|
@ -962,6 +962,7 @@ struct kvm_enable_cap {
|
||||||
#define KVM_CAP_ARM_EL2_E2H0 241
|
#define KVM_CAP_ARM_EL2_E2H0 241
|
||||||
#define KVM_CAP_RISCV_MP_STATE_RESET 242
|
#define KVM_CAP_RISCV_MP_STATE_RESET 242
|
||||||
#define KVM_CAP_ARM_CACHEABLE_PFNMAP_SUPPORTED 243
|
#define KVM_CAP_ARM_CACHEABLE_PFNMAP_SUPPORTED 243
|
||||||
|
#define KVM_CAP_GUEST_MEMFD_FLAGS 244
|
||||||
|
|
||||||
struct kvm_irq_routing_irqchip {
|
struct kvm_irq_routing_irqchip {
|
||||||
__u32 irqchip;
|
__u32 irqchip;
|
||||||
|
|
@ -1598,6 +1599,8 @@ struct kvm_memory_attributes {
|
||||||
#define KVM_MEMORY_ATTRIBUTE_PRIVATE (1ULL << 3)
|
#define KVM_MEMORY_ATTRIBUTE_PRIVATE (1ULL << 3)
|
||||||
|
|
||||||
#define KVM_CREATE_GUEST_MEMFD _IOWR(KVMIO, 0xd4, struct kvm_create_guest_memfd)
|
#define KVM_CREATE_GUEST_MEMFD _IOWR(KVMIO, 0xd4, struct kvm_create_guest_memfd)
|
||||||
|
#define GUEST_MEMFD_FLAG_MMAP (1ULL << 0)
|
||||||
|
#define GUEST_MEMFD_FLAG_INIT_SHARED (1ULL << 1)
|
||||||
|
|
||||||
struct kvm_create_guest_memfd {
|
struct kvm_create_guest_memfd {
|
||||||
__u64 size;
|
__u64 size;
|
||||||
|
|
|
||||||
|
|
@ -345,6 +345,7 @@
|
||||||
333 common io_pgetevents sys_io_pgetevents
|
333 common io_pgetevents sys_io_pgetevents
|
||||||
334 common rseq sys_rseq
|
334 common rseq sys_rseq
|
||||||
335 common uretprobe sys_uretprobe
|
335 common uretprobe sys_uretprobe
|
||||||
|
336 common uprobe sys_uprobe
|
||||||
# don't use numbers 387 through 423, add new calls after the last
|
# don't use numbers 387 through 423, add new calls after the last
|
||||||
# 'common' entry
|
# 'common' entry
|
||||||
424 common pidfd_send_signal sys_pidfd_send_signal
|
424 common pidfd_send_signal sys_pidfd_send_signal
|
||||||
|
|
|
||||||
|
|
@ -111,6 +111,7 @@
|
||||||
#define PIDFD_SELF_THREAD_GROUP -10001 /* Current thread group leader. */
|
#define PIDFD_SELF_THREAD_GROUP -10001 /* Current thread group leader. */
|
||||||
|
|
||||||
#define FD_PIDFS_ROOT -10002 /* Root of the pidfs filesystem */
|
#define FD_PIDFS_ROOT -10002 /* Root of the pidfs filesystem */
|
||||||
|
#define FD_NSFS_ROOT -10003 /* Root of the nsfs filesystem */
|
||||||
#define FD_INVALID -10009 /* Invalid file descriptor: -10000 - EBADF = -10009 */
|
#define FD_INVALID -10009 /* Invalid file descriptor: -10000 - EBADF = -10009 */
|
||||||
|
|
||||||
/* Generic flags for the *at(2) family of syscalls. */
|
/* Generic flags for the *at(2) family of syscalls. */
|
||||||
|
|
|
||||||
|
|
@ -430,10 +430,13 @@ typedef int __bitwise __kernel_rwf_t;
|
||||||
/* buffered IO that drops the cache after reading or writing data */
|
/* buffered IO that drops the cache after reading or writing data */
|
||||||
#define RWF_DONTCACHE ((__force __kernel_rwf_t)0x00000080)
|
#define RWF_DONTCACHE ((__force __kernel_rwf_t)0x00000080)
|
||||||
|
|
||||||
|
/* prevent pipe and socket writes from raising SIGPIPE */
|
||||||
|
#define RWF_NOSIGNAL ((__force __kernel_rwf_t)0x00000100)
|
||||||
|
|
||||||
/* mask of flags supported by the kernel */
|
/* mask of flags supported by the kernel */
|
||||||
#define RWF_SUPPORTED (RWF_HIPRI | RWF_DSYNC | RWF_SYNC | RWF_NOWAIT |\
|
#define RWF_SUPPORTED (RWF_HIPRI | RWF_DSYNC | RWF_SYNC | RWF_NOWAIT |\
|
||||||
RWF_APPEND | RWF_NOAPPEND | RWF_ATOMIC |\
|
RWF_APPEND | RWF_NOAPPEND | RWF_ATOMIC |\
|
||||||
RWF_DONTCACHE)
|
RWF_DONTCACHE | RWF_NOSIGNAL)
|
||||||
|
|
||||||
#define PROCFS_IOCTL_MAGIC 'f'
|
#define PROCFS_IOCTL_MAGIC 'f'
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -177,7 +177,17 @@ struct prctl_mm_map {
|
||||||
|
|
||||||
#define PR_GET_TID_ADDRESS 40
|
#define PR_GET_TID_ADDRESS 40
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Flags for PR_SET_THP_DISABLE are only applicable when disabling. Bit 0
|
||||||
|
* is reserved, so PR_GET_THP_DISABLE can return "1 | flags", to effectively
|
||||||
|
* return "1" when no flags were specified for PR_SET_THP_DISABLE.
|
||||||
|
*/
|
||||||
#define PR_SET_THP_DISABLE 41
|
#define PR_SET_THP_DISABLE 41
|
||||||
|
/*
|
||||||
|
* Don't disable THPs when explicitly advised (e.g., MADV_HUGEPAGE /
|
||||||
|
* VM_HUGEPAGE, MADV_COLLAPSE).
|
||||||
|
*/
|
||||||
|
# define PR_THP_DISABLE_EXCEPT_ADVISED (1 << 1)
|
||||||
#define PR_GET_THP_DISABLE 42
|
#define PR_GET_THP_DISABLE 42
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
||||||
|
|
@ -112,9 +112,13 @@ static bool symbol_type__filter(char __symbol_type)
|
||||||
// 'N' first seen in:
|
// 'N' first seen in:
|
||||||
// ffffffff9b35d130 N __pfx__RNCINvNtNtNtCsbDUBuN8AbD4_4core4iter8adapters3map12map_try_foldjNtCs6vVzKs5jPr6_12drm_panic_qr7VersionuINtNtNtBa_3ops12control_flow11ControlFlowB10_ENcB10_0NCINvNvNtNtNtB8_6traits8iterator8Iterator4find5checkB10_NCNvMB12_B10_13from_segments0E0E0B12_
|
// ffffffff9b35d130 N __pfx__RNCINvNtNtNtCsbDUBuN8AbD4_4core4iter8adapters3map12map_try_foldjNtCs6vVzKs5jPr6_12drm_panic_qr7VersionuINtNtNtBa_3ops12control_flow11ControlFlowB10_ENcB10_0NCINvNvNtNtNtB8_6traits8iterator8Iterator4find5checkB10_NCNvMB12_B10_13from_segments0E0E0B12_
|
||||||
// a seemingly Rust mangled name
|
// a seemingly Rust mangled name
|
||||||
|
// Ditto for '1':
|
||||||
|
// root@x1:~# grep ' 1 ' /proc/kallsyms
|
||||||
|
// ffffffffb098bc00 1 __pfx__RNCINvNtNtNtCsfwaGRd4cjqE_4core4iter8adapters3map12map_try_foldjNtCskFudTml27HW_12drm_panic_qr7VersionuINtNtNtBa_3ops12control_flow11ControlFlowB10_ENcB10_0NCINvNvNtNtNtB8_6traits8iterator8Iterator4find5checkB10_NCNvMB12_B10_13from_segments0E0E0B12_
|
||||||
|
// ffffffffb098bc10 1 _RNCINvNtNtNtCsfwaGRd4cjqE_4core4iter8adapters3map12map_try_foldjNtCskFudTml27HW_12drm_panic_qr7VersionuINtNtNtBa_3ops12control_flow11ControlFlowB10_ENcB10_0NCINvNvNtNtNtB8_6traits8iterator8Iterator4find5checkB10_NCNvMB12_B10_13from_segments0E0E0B12_
|
||||||
char symbol_type = toupper(__symbol_type);
|
char symbol_type = toupper(__symbol_type);
|
||||||
return symbol_type == 'T' || symbol_type == 'W' || symbol_type == 'D' || symbol_type == 'B' ||
|
return symbol_type == 'T' || symbol_type == 'W' || symbol_type == 'D' || symbol_type == 'B' ||
|
||||||
__symbol_type == 'u' || __symbol_type == 'l' || __symbol_type == 'N';
|
__symbol_type == 'u' || __symbol_type == 'l' || __symbol_type == 'N' || __symbol_type == '1';
|
||||||
}
|
}
|
||||||
|
|
||||||
static int prefix_underscores_count(const char *str)
|
static int prefix_underscores_count(const char *str)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue