Commit 96f86ff0 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'perf-tools-fixes-for-v6.0-2022-08-13' of...

Merge tag 'perf-tools-fixes-for-v6.0-2022-08-13' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux

Pull more perf tool updates from Arnaldo Carvalho de Melo:

 - 'perf c2c' now supports ARM64, adjust its output to cope with
   differences with what is in x86_64. Now go find false sharing on
   ARM64 (at least Neoverse) as well!

 - Refactor the JSON processing, making the output more compact and thus
   reducing the size of the resulting perf binary

 - Improvements for 'perf offcpu' profiling, including tracking child
   processes

 - Update Intel JSON metrics and events files for broadwellde,
   broadwellx, cascadelakex, haswellx, icelakex, ivytown, jaketown,
   knightslanding, sapphirerapids, skylakex and snowridgex

 - Add 'perf stat' JSON output and a 'perf test' entry for it

 - Ignore memfd and anonymous mmap events if jitdump present

 - Refactor 'perf test' shell tests allowing subdirs

 - Fix an error handling path in 'parse_perf_probe_command()'

 - Fixes for the guest Intel PT tracing patchkit in the 1st batch of
   this merge window

 - Print debuginfod queries if -v option is used, to explain delays in
   processing when debuginfo servers are enabled to fetch DSOs with
   richer symbol tables

 - Improve error message for 'perf record -p not_existing_pid'

 - Fix openssl and libbpf feature detection

 - Add PMU pai_crypto event description for IBM z16 on 'perf list'

 - Fix typos and duplicated words on comments in various places

* tag 'perf-tools-fixes-for-v6.0-2022-08-13' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux: (81 commits)
  perf test: Refactor shell tests allowing subdirs
  perf vendor events: Update events for snowridgex
  perf vendor events: Update events and metrics for skylakex
  perf vendor events: Update metrics for sapphirerapids
  perf vendor events: Update events for knightslanding
  perf vendor events: Update metrics for jaketown
  perf vendor events: Update metrics for ivytown
  perf vendor events: Update events and metrics for icelakex
  perf vendor events: Update events and metrics for haswellx
  perf vendor events: Update events and metrics for cascadelakex
  perf vendor events: Update events and metrics for broadwellx
  perf vendor events: Update metrics for broadwellde
  perf jevents: Fold strings optimization
  perf jevents: Compress the pmu_events_table
  perf metrics: Copy entire pmu_event in find metric
  perf pmu-events: Hide the pmu_events
  perf pmu-events: Don't assume pmu_event is an array
  perf pmu-events: Move test events/metrics to JSON
  perf test: Use full metric resolution
  perf pmu-events: Hide pmu_events_map
  ...
parents d785610f 7391db64
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -93,9 +93,11 @@ INSTALL ?= install
RM ?= rm -f

FEATURE_USER = .bpftool
FEATURE_TESTS = libbfd disassembler-four-args disassembler-init-styled libcap \
FEATURE_TESTS = libbfd libbfd-liberty libbfd-liberty-z \
	disassembler-four-args disassembler-init-styled libcap \
	clang-bpf-co-re
FEATURE_DISPLAY = libbfd libcap clang-bpf-co-re
FEATURE_DISPLAY = libbfd libbfd-liberty libbfd-liberty-z \
	libcap clang-bpf-co-re

check_feat := 1
NON_CHECK_FEAT_TARGETS := clean uninstall doc doc-clean doc-install doc-uninstall
+9 −5
Original line number Diff line number Diff line
@@ -90,6 +90,8 @@ all: $(FILES)

__BUILD = $(CC) $(CFLAGS) -MD -Wall -Werror -o $@ $(patsubst %.bin,%.c,$(@F)) $(LDFLAGS)
  BUILD = $(__BUILD) > $(@:.bin=.make.output) 2>&1
  BUILD_BFD = $(BUILD) -DPACKAGE='"perf"' -lbfd -ldl
  BUILD_ALL = $(BUILD) -fstack-protector-all -O2 -D_FORTIFY_SOURCE=2 -ldw -lelf -lnuma -lelf -lslang $(FLAGS_PERL_EMBED) $(FLAGS_PYTHON_EMBED) -DPACKAGE='"perf"' -lbfd -ldl -lz -llzma -lzstd -lcap

__BUILDXX = $(CXX) $(CXXFLAGS) -MD -Wall -Werror -o $@ $(patsubst %.bin,%.cpp,$(@F)) $(LDFLAGS)
  BUILDXX = $(__BUILDXX) > $(@:.bin=.make.output) 2>&1
@@ -97,7 +99,7 @@ __BUILDXX = $(CXX) $(CXXFLAGS) -MD -Wall -Werror -o $@ $(patsubst %.bin,%.cpp,$(
###############################

$(OUTPUT)test-all.bin:
	$(BUILD) -fstack-protector-all -O2 -D_FORTIFY_SOURCE=2 -ldw -lelf -lnuma -lelf -lslang $(FLAGS_PERL_EMBED) $(FLAGS_PYTHON_EMBED) -DPACKAGE='"perf"' -lbfd -ldl -lz -llzma -lzstd -lcap
	$(BUILD_ALL) || $(BUILD_ALL) -lopcodes -liberty

$(OUTPUT)test-hello.bin:
	$(BUILD)
@@ -241,16 +243,18 @@ $(OUTPUT)test-libpython.bin:
	$(BUILD) $(FLAGS_PYTHON_EMBED)

$(OUTPUT)test-libbfd.bin:
	$(BUILD) -DPACKAGE='"perf"' -lbfd -ldl
	$(BUILD_BFD)

$(OUTPUT)test-libbfd-buildid.bin:
	$(BUILD) -DPACKAGE='"perf"' -lbfd -ldl
	$(BUILD_BFD) || $(BUILD_BFD) -liberty || $(BUILD_BFD) -liberty -lz

$(OUTPUT)test-disassembler-four-args.bin:
	$(BUILD) -DPACKAGE='"perf"' -lbfd -lopcodes
	$(BUILD_BFD) -lopcodes || $(BUILD_BFD) -lopcodes -liberty || \
	$(BUILD_BFD) -lopcodes -liberty -lz

$(OUTPUT)test-disassembler-init-styled.bin:
	$(BUILD) -DPACKAGE='"perf"' -lbfd -lopcodes
	$(BUILD_BFD) -lopcodes || $(BUILD_BFD) -lopcodes -liberty || \
	$(BUILD_BFD) -lopcodes -liberty -lz

$(OUTPUT)test-reallocarray.bin:
	$(BUILD)
+11 −10
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0
#include <openssl/evp.h>
#include <openssl/sha.h>
#include <openssl/md5.h>

/*
 * The MD5_* API have been deprecated since OpenSSL 3.0, which causes the
 * feature test to fail silently. This is a workaround.
 */
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"

int main(void)
{
	MD5_CTX context;
	EVP_MD_CTX *mdctx;
	unsigned char md[MD5_DIGEST_LENGTH + SHA_DIGEST_LENGTH];
	unsigned char dat[] = "12345";
	unsigned int digest_len;

	mdctx = EVP_MD_CTX_new();
	if (!mdctx)
		return 0;

	MD5_Init(&context);
	MD5_Update(&context, &dat[0], sizeof(dat));
	MD5_Final(&md[0], &context);
	EVP_DigestInit_ex(mdctx, EVP_md5(), NULL);
	EVP_DigestUpdate(mdctx, &dat[0], sizeof(dat));
	EVP_DigestFinal_ex(mdctx, &md[0], &digest_len);
	EVP_MD_CTX_free(mdctx);

	SHA1(&dat[0], sizeof(dat), &md[0]);

+1 −1
Original line number Diff line number Diff line
@@ -1310,7 +1310,7 @@ union perf_mem_data_src {
#define PERF_MEM_SNOOP_SHIFT	19

#define PERF_MEM_SNOOPX_FWD	0x01 /* forward */
/* 1 free */
#define PERF_MEM_SNOOPX_PEER	0x02 /* xfer from peer */
#define PERF_MEM_SNOOPX_SHIFT  38

/* locked instruction */
+16 −0
Original line number Diff line number Diff line
include::guestmount.txt[]

--guestkallsyms=<path>::
	Guest OS /proc/kallsyms file copy. perf reads it to get guest
	kernel symbols. Users copy it out from guest OS.

--guestmodules=<path>::
	Guest OS /proc/modules file copy. perf reads it to get guest
	kernel module information. Users copy it out from guest OS.

--guestvmlinux=<path>::
	Guest OS kernel vmlinux.

--guest-code::
	Indicate that guest code can be found in the hypervisor process,
	which is a common case for KVM test programs.
Loading