Commit 09f73a1a authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'perf-tools-for-v5.19-2022-05-28' of...

Merge tag 'perf-tools-for-v5.19-2022-05-28' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux

Pull more perf tools updates from Arnaldo Carvalho de Melo:

 - Add BPF based off-CPU profiling

 - Improvements for system wide recording, specially for Intel PT

 - Improve DWARF unwinding on arm64

 - Support Arm CoreSight trace data disassembly in 'perf script' python

 - Fix build with new libbpf version, related to supporting older
   versions of distro released libbpf packages

 - Fix event syntax error caused by ExtSel in the JSON events infra

 - Use stdio interface if slang is not supported in 'perf c2c'

 - Add 'perf test' checking for perf stat CSV output

 - Sync the msr-index.h copy with the kernel sources

* tag 'perf-tools-for-v5.19-2022-05-28' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux: (38 commits)
  tools arch x86: Sync the msr-index.h copy with the kernel sources
  perf scripts python: Support Arm CoreSight trace data disassembly
  perf scripting python: Expose dso and map information
  perf jevents: Fix event syntax error caused by ExtSel
  perf tools arm64: Add support for VG register
  perf unwind arm64: Decouple Libunwind register names from Perf
  perf unwind: Use dynamic register set for DWARF unwind
  perf tools arm64: Copy perf_regs.h from the kernel
  perf unwind arm64: Use perf's copy of kernel headers
  perf c2c: Use stdio interface if slang is not supported
  perf test: Add a basic offcpu profiling test
  perf record: Add cgroup support for off-cpu profiling
  perf record: Handle argument change in sched_switch
  perf record: Implement basic filtering for off-cpu
  perf record: Enable off-cpu analysis with BPF
  perf report: Do not extend sample type of bpf-output event
  perf test: Add checking for perf stat CSV output.
  perf tools: Allow system-wide events to keep their own threads
  perf tools: Allow system-wide events to keep their own CPUs
  libperf evsel: Add comments for booleans
  ...
parents 664a393a 9dde6cad
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -36,6 +36,11 @@ enum perf_event_arm_regs {
	PERF_REG_ARM64_LR,
	PERF_REG_ARM64_SP,
	PERF_REG_ARM64_PC,
	PERF_REG_ARM64_MAX,

	/* Extended/pseudo registers */
	PERF_REG_ARM64_VG = 46, // SVE Vector Granule

	PERF_REG_ARM64_MAX = PERF_REG_ARM64_PC + 1,
	PERF_REG_ARM64_EXTENDED_MAX = PERF_REG_ARM64_VG + 1
};
#endif /* _ASM_ARM64_PERF_REGS_H */
+19 −0
Original line number Diff line number Diff line
@@ -76,6 +76,8 @@

/* Abbreviated from Intel SDM name IA32_CORE_CAPABILITIES */
#define MSR_IA32_CORE_CAPS			  0x000000cf
#define MSR_IA32_CORE_CAPS_INTEGRITY_CAPS_BIT	  2
#define MSR_IA32_CORE_CAPS_INTEGRITY_CAPS	  BIT(MSR_IA32_CORE_CAPS_INTEGRITY_CAPS_BIT)
#define MSR_IA32_CORE_CAPS_SPLIT_LOCK_DETECT_BIT  5
#define MSR_IA32_CORE_CAPS_SPLIT_LOCK_DETECT	  BIT(MSR_IA32_CORE_CAPS_SPLIT_LOCK_DETECT_BIT)

@@ -154,6 +156,11 @@
#define MSR_IA32_POWER_CTL		0x000001fc
#define MSR_IA32_POWER_CTL_BIT_EE	19

/* Abbreviated from Intel SDM name IA32_INTEGRITY_CAPABILITIES */
#define MSR_INTEGRITY_CAPS			0x000002d9
#define MSR_INTEGRITY_CAPS_PERIODIC_BIST_BIT	4
#define MSR_INTEGRITY_CAPS_PERIODIC_BIST	BIT(MSR_INTEGRITY_CAPS_PERIODIC_BIST_BIT)

#define MSR_LBR_NHM_FROM		0x00000680
#define MSR_LBR_NHM_TO			0x000006c0
#define MSR_LBR_CORE_FROM		0x00000040
@@ -312,6 +319,7 @@

/* Run Time Average Power Limiting (RAPL) Interface */

#define MSR_VR_CURRENT_CONFIG	0x00000601
#define MSR_RAPL_POWER_UNIT		0x00000606

#define MSR_PKG_POWER_LIMIT		0x00000610
@@ -502,8 +510,10 @@
#define MSR_AMD64_SEV			0xc0010131
#define MSR_AMD64_SEV_ENABLED_BIT	0
#define MSR_AMD64_SEV_ES_ENABLED_BIT	1
#define MSR_AMD64_SEV_SNP_ENABLED_BIT	2
#define MSR_AMD64_SEV_ENABLED		BIT_ULL(MSR_AMD64_SEV_ENABLED_BIT)
#define MSR_AMD64_SEV_ES_ENABLED	BIT_ULL(MSR_AMD64_SEV_ES_ENABLED_BIT)
#define MSR_AMD64_SEV_SNP_ENABLED	BIT_ULL(MSR_AMD64_SEV_SNP_ENABLED_BIT)

#define MSR_AMD64_VIRT_SPEC_CTRL	0xc001011f

@@ -524,6 +534,11 @@
#define AMD_CPPC_DES_PERF(x)		(((x) & 0xff) << 16)
#define AMD_CPPC_ENERGY_PERF_PREF(x)	(((x) & 0xff) << 24)

/* AMD Performance Counter Global Status and Control MSRs */
#define MSR_AMD64_PERF_CNTR_GLOBAL_STATUS	0xc0000300
#define MSR_AMD64_PERF_CNTR_GLOBAL_CTL		0xc0000301
#define MSR_AMD64_PERF_CNTR_GLOBAL_STATUS_CLR	0xc0000302

/* Fam 17h MSRs */
#define MSR_F17H_IRPERF			0xc00000e9

@@ -688,6 +703,10 @@
#define MSR_IA32_PERF_CTL		0x00000199
#define INTEL_PERF_CTL_MASK		0xffff

/* AMD Branch Sampling configuration */
#define MSR_AMD_DBG_EXTN_CFG		0xc000010f
#define MSR_AMD_SAMP_BR_FROM		0xc0010300

#define MSR_IA32_MPERF			0x000000e7
#define MSR_IA32_APERF			0x000000e8

+4 −0
Original line number Diff line number Diff line
@@ -99,6 +99,10 @@ FEATURE_TESTS_EXTRA := \
         clang                          \
         libbpf                         \
         libbpf-btf__load_from_kernel_by_id \
         libbpf-bpf_prog_load           \
         libbpf-bpf_object__next_program \
         libbpf-bpf_object__next_map    \
         libbpf-bpf_create_map		\
         libpfm4                        \
         libdebuginfod			\
         clang-bpf-co-re
+20 −0
Original line number Diff line number Diff line
@@ -58,6 +58,11 @@ FILES= \
         test-bpf.bin                           \
         test-libbpf.bin                        \
         test-libbpf-btf__load_from_kernel_by_id.bin	\
         test-libbpf-bpf_prog_load.bin          \
         test-libbpf-bpf_map_create.bin		\
         test-libbpf-bpf_object__next_program.bin \
         test-libbpf-bpf_object__next_map.bin   \
         test-libbpf-btf__raw_data.bin          \
         test-get_cpuid.bin                     \
         test-sdt.bin                           \
         test-cxx.bin                           \
@@ -291,6 +296,21 @@ $(OUTPUT)test-libbpf.bin:
$(OUTPUT)test-libbpf-btf__load_from_kernel_by_id.bin:
	$(BUILD) -lbpf

$(OUTPUT)test-libbpf-bpf_prog_load.bin:
	$(BUILD) -lbpf

$(OUTPUT)test-libbpf-bpf_map_create.bin:
	$(BUILD) -lbpf

$(OUTPUT)test-libbpf-bpf_object__next_program.bin:
	$(BUILD) -lbpf

$(OUTPUT)test-libbpf-bpf_object__next_map.bin:
	$(BUILD) -lbpf

$(OUTPUT)test-libbpf-btf__raw_data.bin:
	$(BUILD) -lbpf

$(OUTPUT)test-sdt.bin:
	$(BUILD)

+8 −0
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0
#include <bpf/bpf.h>

int main(void)
{
	return bpf_map_create(0 /* map_type */, NULL /* map_name */, 0, /* key_size */,
			      0 /* value_size */, 0 /* max_entries */, NULL /* opts */);
}
Loading