Skip to content

Commit 96f86ff

Browse files
committed
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 ...
2 parents d785610 + 7391db6 commit 96f86ff

File tree

112 files changed

+95286
-6479
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

112 files changed

+95286
-6479
lines changed

tools/bpf/bpftool/Makefile

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,9 +93,11 @@ INSTALL ?= install
9393
RM ?= rm -f
9494

9595
FEATURE_USER = .bpftool
96-
FEATURE_TESTS = libbfd disassembler-four-args disassembler-init-styled libcap \
96+
FEATURE_TESTS = libbfd libbfd-liberty libbfd-liberty-z \
97+
disassembler-four-args disassembler-init-styled libcap \
9798
clang-bpf-co-re
98-
FEATURE_DISPLAY = libbfd libcap clang-bpf-co-re
99+
FEATURE_DISPLAY = libbfd libbfd-liberty libbfd-liberty-z \
100+
libcap clang-bpf-co-re
99101

100102
check_feat := 1
101103
NON_CHECK_FEAT_TARGETS := clean uninstall doc doc-clean doc-install doc-uninstall

tools/build/feature/Makefile

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -90,14 +90,16 @@ all: $(FILES)
9090

9191
__BUILD = $(CC) $(CFLAGS) -MD -Wall -Werror -o $@ $(patsubst %.bin,%.c,$(@F)) $(LDFLAGS)
9292
BUILD = $(__BUILD) > $(@:.bin=.make.output) 2>&1
93+
BUILD_BFD = $(BUILD) -DPACKAGE='"perf"' -lbfd -ldl
94+
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
9395

9496
__BUILDXX = $(CXX) $(CXXFLAGS) -MD -Wall -Werror -o $@ $(patsubst %.bin,%.cpp,$(@F)) $(LDFLAGS)
9597
BUILDXX = $(__BUILDXX) > $(@:.bin=.make.output) 2>&1
9698

9799
###############################
98100

99101
$(OUTPUT)test-all.bin:
100-
$(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
102+
$(BUILD_ALL) || $(BUILD_ALL) -lopcodes -liberty
101103

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

243245
$(OUTPUT)test-libbfd.bin:
244-
$(BUILD) -DPACKAGE='"perf"' -lbfd -ldl
246+
$(BUILD_BFD)
245247

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

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

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

255259
$(OUTPUT)test-reallocarray.bin:
256260
$(BUILD)

tools/build/feature/test-libcrypto.c

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,23 @@
11
// SPDX-License-Identifier: GPL-2.0
2+
#include <openssl/evp.h>
23
#include <openssl/sha.h>
34
#include <openssl/md5.h>
45

5-
/*
6-
* The MD5_* API have been deprecated since OpenSSL 3.0, which causes the
7-
* feature test to fail silently. This is a workaround.
8-
*/
9-
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
10-
116
int main(void)
127
{
13-
MD5_CTX context;
8+
EVP_MD_CTX *mdctx;
149
unsigned char md[MD5_DIGEST_LENGTH + SHA_DIGEST_LENGTH];
1510
unsigned char dat[] = "12345";
11+
unsigned int digest_len;
12+
13+
mdctx = EVP_MD_CTX_new();
14+
if (!mdctx)
15+
return 0;
1616

17-
MD5_Init(&context);
18-
MD5_Update(&context, &dat[0], sizeof(dat));
19-
MD5_Final(&md[0], &context);
17+
EVP_DigestInit_ex(mdctx, EVP_md5(), NULL);
18+
EVP_DigestUpdate(mdctx, &dat[0], sizeof(dat));
19+
EVP_DigestFinal_ex(mdctx, &md[0], &digest_len);
20+
EVP_MD_CTX_free(mdctx);
2021

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

tools/include/uapi/linux/perf_event.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1310,7 +1310,7 @@ union perf_mem_data_src {
13101310
#define PERF_MEM_SNOOP_SHIFT 19
13111311

13121312
#define PERF_MEM_SNOOPX_FWD 0x01 /* forward */
1313-
/* 1 free */
1313+
#define PERF_MEM_SNOOPX_PEER 0x02 /* xfer from peer */
13141314
#define PERF_MEM_SNOOPX_SHIFT 38
13151315

13161316
/* locked instruction */
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
include::guestmount.txt[]
2+
3+
--guestkallsyms=<path>::
4+
Guest OS /proc/kallsyms file copy. perf reads it to get guest
5+
kernel symbols. Users copy it out from guest OS.
6+
7+
--guestmodules=<path>::
8+
Guest OS /proc/modules file copy. perf reads it to get guest
9+
kernel module information. Users copy it out from guest OS.
10+
11+
--guestvmlinux=<path>::
12+
Guest OS kernel vmlinux.
13+
14+
--guest-code::
15+
Indicate that guest code can be found in the hypervisor process,
16+
which is a common case for KVM test programs.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
--guestmount=<path>::
2+
Guest OS root file system mount directory. Users mount guest OS
3+
root directories under <path> by a specific filesystem access method,
4+
typically, sshfs.
5+
For example, start 2 guest OS, one's pid is 8888 and the other's is 9999:
6+
[verse]
7+
$ mkdir \~/guestmount
8+
$ cd \~/guestmount
9+
$ sshfs -o allow_other,direct_io -p 5551 localhost:/ 8888/
10+
$ sshfs -o allow_other,direct_io -p 5552 localhost:/ 9999/
11+
$ perf {GMEXAMPLECMD} --guestmount=~/guestmount {GMEXAMPLESUBCMD}

tools/perf/Documentation/perf-c2c.txt

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,9 @@ REPORT OPTIONS
109109

110110
-d::
111111
--display::
112-
Switch to HITM type (rmt, lcl) to display and sort on. Total HITMs as default.
112+
Switch to HITM type (rmt, lcl) or peer snooping type (peer) to display
113+
and sort on. Total HITMs (tot) as default, except Arm64 uses peer mode
114+
as default.
113115

114116
--stitch-lbr::
115117
Show callgraph with stitched LBRs, which may have more complete
@@ -174,12 +176,18 @@ For each cacheline in the 1) list we display following data:
174176
Cacheline
175177
- cacheline address (hex number)
176178

177-
Rmt/Lcl Hitm
179+
Rmt/Lcl Hitm (Display with HITM types)
178180
- cacheline percentage of all Remote/Local HITM accesses
179181

180-
LLC Load Hitm - Total, LclHitm, RmtHitm
182+
Peer Snoop (Display with peer type)
183+
- cacheline percentage of all peer accesses
184+
185+
LLC Load Hitm - Total, LclHitm, RmtHitm (For display with HITM types)
181186
- count of Total/Local/Remote load HITMs
182187

188+
Load Peer - Total, Local, Remote (For display with peer type)
189+
- count of Total/Local/Remote load from peer cache or DRAM
190+
183191
Total records
184192
- sum of all cachelines accesses
185193

@@ -201,16 +209,21 @@ For each cacheline in the 1) list we display following data:
201209
- count of LLC load accesses, includes LLC hits and LLC HITMs
202210

203211
RMT Load Hit - RmtHit, RmtHitm
204-
- count of remote load accesses, includes remote hits and remote HITMs
212+
- count of remote load accesses, includes remote hits and remote HITMs;
213+
on Arm neoverse cores, RmtHit is used to account remote accesses,
214+
includes remote DRAM or any upward cache level in remote node
205215

206216
Load Dram - Lcl, Rmt
207217
- count of local and remote DRAM accesses
208218

209219
For each offset in the 2) list we display following data:
210220

211-
HITM - Rmt, Lcl
221+
HITM - Rmt, Lcl (Display with HITM types)
212222
- % of Remote/Local HITM accesses for given offset within cacheline
213223

224+
Peer Snoop - Rmt, Lcl (Display with peer type)
225+
- % of Remote/Local peer accesses for given offset within cacheline
226+
214227
Store Refs - L1 Hit, L1 Miss, N/A
215228
- % of store accesses that hit L1, missed L1 and N/A (no available) memory
216229
level for given offset within cacheline
@@ -227,9 +240,12 @@ For each offset in the 2) list we display following data:
227240
Code address
228241
- code address responsible for the accesses
229242

230-
cycles - rmt hitm, lcl hitm, load
243+
cycles - rmt hitm, lcl hitm, load (Display with HITM types)
231244
- sum of cycles for given accesses - Remote/Local HITM and generic load
232245

246+
cycles - rmt peer, lcl peer, load (Display with peer type)
247+
- sum of cycles for given accesses - Remote/Local peer load and generic load
248+
233249
cpu cnt
234250
- number of cpus that participated on the access
235251

@@ -251,7 +267,8 @@ The 'Node' field displays nodes that accesses given cacheline
251267
offset. Its output comes in 3 flavors:
252268
- node IDs separated by ','
253269
- node IDs with stats for each ID, in following format:
254-
Node{cpus %hitms %stores}
270+
Node{cpus %hitms %stores} (Display with HITM types)
271+
Node{cpus %peers %stores} (Display with peer type)
255272
- node IDs with list of affected CPUs in following format:
256273
Node{cpu list}
257274

tools/perf/Documentation/perf-inject.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,10 @@ include::itrace.txt[]
102102
should be used, and also --buildid-all and --switch-events may be
103103
useful.
104104

105+
:GMEXAMPLECMD: inject
106+
:GMEXAMPLESUBCMD:
107+
include::guestmount.txt[]
108+
105109
SEE ALSO
106110
--------
107111
linkperf:perf-record[1], linkperf:perf-report[1], linkperf:perf-archive[1],

tools/perf/Documentation/perf-kvm.txt

Lines changed: 5 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -77,26 +77,11 @@ OPTIONS
7777
Collect host side performance profile.
7878
--guest::
7979
Collect guest side performance profile.
80-
--guestmount=<path>::
81-
Guest os root file system mount directory. Users mounts guest os
82-
root directories under <path> by a specific filesystem access method,
83-
typically, sshfs. For example, start 2 guest os. The one's pid is 8888
84-
and the other's is 9999.
85-
#mkdir ~/guestmount; cd ~/guestmount
86-
#sshfs -o allow_other,direct_io -p 5551 localhost:/ 8888/
87-
#sshfs -o allow_other,direct_io -p 5552 localhost:/ 9999/
88-
#perf kvm --host --guest --guestmount=~/guestmount top
89-
--guestkallsyms=<path>::
90-
Guest os /proc/kallsyms file copy. 'perf' kvm' reads it to get guest
91-
kernel symbols. Users copy it out from guest os.
92-
--guestmodules=<path>::
93-
Guest os /proc/modules file copy. 'perf' kvm' reads it to get guest
94-
kernel module information. Users copy it out from guest os.
95-
--guestvmlinux=<path>::
96-
Guest os kernel vmlinux.
97-
--guest-code::
98-
Indicate that guest code can be found in the hypervisor process,
99-
which is a common case for KVM test programs.
80+
81+
:GMEXAMPLECMD: kvm --host --guest
82+
:GMEXAMPLESUBCMD: top
83+
include::guest-files.txt[]
84+
10085
-v::
10186
--verbose::
10287
Be more verbose (show counter open errors, etc).

tools/perf/Documentation/perf-script.txt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ OPTIONS
228228
Instruction Trace decoding.
229229

230230
The machine_pid and vcpu fields are derived from data resulting from using
231-
perf insert to insert a perf.data file recorded inside a virtual machine into
231+
perf inject to insert a perf.data file recorded inside a virtual machine into
232232
a perf.data file recorded on the host at the same time.
233233

234234
Finally, a user may not set fields to none for all event types.
@@ -507,9 +507,9 @@ include::itrace.txt[]
507507
The known limitations include exception handing such as
508508
setjmp/longjmp will have calls/returns not match.
509509

510-
--guest-code::
511-
Indicate that guest code can be found in the hypervisor process,
512-
which is a common case for KVM test programs.
510+
:GMEXAMPLECMD: script
511+
:GMEXAMPLESUBCMD:
512+
include::guest-files.txt[]
513513

514514
SEE ALSO
515515
--------

tools/perf/Documentation/perf-stat.txt

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -570,6 +570,27 @@ Additional metrics may be printed with all earlier fields being empty.
570570

571571
include::intel-hybrid.txt[]
572572

573+
JSON FORMAT
574+
-----------
575+
576+
With -j, perf stat is able to print out a JSON format output
577+
that can be used for parsing.
578+
579+
- timestamp : optional usec time stamp in fractions of second (with -I)
580+
- optional aggregate options:
581+
- core : core identifier (with --per-core)
582+
- die : die identifier (with --per-die)
583+
- socket : socket identifier (with --per-socket)
584+
- node : node identifier (with --per-node)
585+
- thread : thread identifier (with --per-thread)
586+
- counter-value : counter value
587+
- unit : unit of the counter value or empty
588+
- event : event name
589+
- variance : optional variance if multiple values are collected (with -r)
590+
- runtime : run time of counter
591+
- metric-value : optional metric value
592+
- metric-unit : optional unit of metric
593+
573594
SEE ALSO
574595
--------
575596
linkperf:perf-top[1], linkperf:perf-list[1]

tools/perf/Makefile.config

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -297,9 +297,6 @@ FEATURE_CHECK_LDFLAGS-libpython := $(PYTHON_EMBED_LDOPTS)
297297

298298
FEATURE_CHECK_LDFLAGS-libaio = -lrt
299299

300-
FEATURE_CHECK_LDFLAGS-disassembler-four-args = -lbfd -lopcodes -ldl
301-
FEATURE_CHECK_LDFLAGS-disassembler-init-styled = -lbfd -lopcodes -ldl
302-
303300
CORE_CFLAGS += -fno-omit-frame-pointer
304301
CORE_CFLAGS += -ggdb3
305302
CORE_CFLAGS += -funwind-tables
@@ -329,8 +326,8 @@ ifneq ($(TCMALLOC),)
329326
endif
330327

331328
ifeq ($(FEATURES_DUMP),)
332-
# We will display at the end of this Makefile.config, using $(call feature_display_entries)
333-
# As we may retry some feature detection here, see the disassembler-four-args case, for instance
329+
# We will display at the end of this Makefile.config, using $(call feature_display_entries),
330+
# as we may retry some feature detection here.
334331
FEATURE_DISPLAY_DEFERRED := 1
335332
include $(srctree)/tools/build/Makefile.feature
336333
else
@@ -924,13 +921,9 @@ ifndef NO_LIBBFD
924921

925922
ifeq ($(feature-libbfd-liberty), 1)
926923
EXTLIBS += -lbfd -lopcodes -liberty
927-
FEATURE_CHECK_LDFLAGS-disassembler-four-args += -liberty -ldl
928-
FEATURE_CHECK_LDFLAGS-disassembler-init-styled += -liberty -ldl
929924
else
930925
ifeq ($(feature-libbfd-liberty-z), 1)
931926
EXTLIBS += -lbfd -lopcodes -liberty -lz
932-
FEATURE_CHECK_LDFLAGS-disassembler-four-args += -liberty -lz -ldl
933-
FEATURE_CHECK_LDFLAGS-disassembler-init-styled += -liberty -lz -ldl
934927
endif
935928
endif
936929
$(call feature_check,disassembler-four-args)
@@ -1356,7 +1349,7 @@ endif
13561349

13571350
# re-generate FEATURE-DUMP as we may have called feature_check, found out
13581351
# extra libraries to add to LDFLAGS of some other test and then redo those
1359-
# tests, see the block about libbfd, disassembler-four-args, for instance.
1352+
# tests.
13601353
$(shell rm -f $(FEATURE_DUMP_FILENAME))
13611354
$(foreach feat,$(FEATURE_TESTS),$(shell echo "$(call feature_assign,$(feat))" >> $(FEATURE_DUMP_FILENAME)))
13621355

tools/perf/Makefile.perf

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1005,7 +1005,8 @@ install-tests: all install-gtk
10051005
$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests/shell'; \
10061006
$(INSTALL) tests/shell/*.sh '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests/shell'; \
10071007
$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests/shell/lib'; \
1008-
$(INSTALL) tests/shell/lib/*.sh '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests/shell/lib'
1008+
$(INSTALL) tests/shell/lib/*.sh '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests/shell/lib'; \
1009+
$(INSTALL) tests/shell/lib/*.py '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests/shell/lib'
10091010

10101011
install-bin: install-tools install-tests install-traceevent-plugins
10111012

tools/perf/arch/arm/util/cs-etm.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -438,7 +438,7 @@ static int cs_etm_recording_options(struct auxtrace_record *itr,
438438
if (opts->full_auxtrace) {
439439
struct evsel *tracking_evsel;
440440

441-
err = parse_events(evlist, "dummy:u", NULL);
441+
err = parse_event(evlist, "dummy:u");
442442
if (err)
443443
goto out;
444444

tools/perf/arch/arm64/util/arm-spe.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ static int arm_spe_recording_options(struct auxtrace_record *itr,
257257
evsel__set_sample_bit(arm_spe_evsel, PHYS_ADDR);
258258

259259
/* Add dummy event to keep tracking */
260-
err = parse_events(evlist, "dummy:u", NULL);
260+
err = parse_event(evlist, "dummy:u");
261261
if (err)
262262
return err;
263263

tools/perf/arch/arm64/util/pmu.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
#include "../../../util/cpumap.h"
44
#include "../../../util/pmu.h"
55

6-
const struct pmu_events_map *pmu_events_map__find(void)
6+
const struct pmu_events_table *pmu_events_table__find(void)
77
{
88
struct perf_pmu *pmu = NULL;
99

@@ -18,7 +18,7 @@ const struct pmu_events_map *pmu_events_map__find(void)
1818
if (pmu->cpus->nr != cpu__max_cpu().cpu)
1919
return NULL;
2020

21-
return perf_pmu__find_map(pmu);
21+
return perf_pmu__find_table(pmu);
2222
}
2323

2424
return NULL;

tools/perf/arch/x86/tests/intel-cqm.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ int test__intel_cqm_count_nmi_context(struct test_suite *test __maybe_unused, in
5656
return TEST_FAIL;
5757
}
5858

59-
ret = parse_events(evlist, "intel_cqm/llc_occupancy/", NULL);
59+
ret = parse_event(evlist, "intel_cqm/llc_occupancy/");
6060
if (ret) {
6161
pr_debug("parse_events failed, is \"intel_cqm/llc_occupancy/\" available?\n");
6262
err = TEST_SKIP;

0 commit comments

Comments
 (0)