linux-perf-users.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Thomas Richter <tmricht@linux.ibm.com>
To: Ian Rogers <irogers@google.com>
Cc: "linux-perf-use." <linux-perf-users@vger.kernel.org>,
	Arnaldo Carvalho de Melo <acme@kernel.org>,
	Sumanth Korikkar <sumanthk@linux.ibm.com>
Subject: Re: perf test failures in linux-next on s390
Date: Thu, 15 Jun 2023 10:57:31 +0200	[thread overview]
Message-ID: <b33a13cc-a3cc-3e81-1787-0643b3aac623@linux.ibm.com> (raw)
In-Reply-To: <CAP-5=fWjqJH0h607cVb1T7pRxDeq4cZBz5TECMajpnkvVNWHEQ@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 12355 bytes --]

On 6/14/23 16:57, Ian Rogers wrote:
> On Wed, Jun 14, 2023 at 1:32 AM Thomas Richter <tmricht@linux.ibm.com> wrote:
>>
>> On 6/13/23 16:32, Ian Rogers wrote:
>>> On Tue, Jun 13, 2023 at 5:54 AM Thomas Richter <tmricht@linux.ibm.com> wrote:
>>>>
>>>> Hi all,
>>>>
>>>> I have run the perf test suite on the current 6.4rc6 kernel and see just one error:
>>>> # ./perf test 2>&1 | fgrep FAILED
>>>> fgrep: warning: fgrep is obsolescent; using grep -F
>>>>  42.3: BPF prologue generation                                       : FAILED!
>>>> #
>>>>
>>>> However when I download the linux-next tree and build kernel and perf
>>>> tool with the same kernel config file, I get a bunch of failing test cases,
>>>> many with perf tool dumping core:
>>>>
>>>> # perf test 2>&1 | fgrep FAILED
>>>> fgrep: warning: fgrep is obsolescent; using grep -F
>>>>   6.1: Test event parsing                                            : FAILED!
>>>>  10.3: Parsing of PMU event table metrics                            : FAILED!
>>>>  10.4: Parsing of PMU event table metrics with fake PMUs             : FAILED!
>>>>  17: Setup struct perf_event_attr                                    : FAILED!
>>>>  24: Number of exit events of a simple workload                      : FAILED! core-dump
>>>>  28: Use a dummy software event to keep tracking                     : FAILED!
>>>>  35: Track with sched_switch                                         : FAILED!
>>>>  42.3: BPF prologue generation                                       : FAILED!
>>>>  66: Parse and process metrics                                       : FAILED!
>>>>  68: Event expansion for cgroups                                     : FAILED!
>>>>  69.2: Perf time to TSC                                              : FAILED! core-dump
>>>>  74: build id cache operations                                       : FAILED! core-dump
>>>>  81: kernel lock contention analysis test                            : FAILED!
>>>>  86: Zstd perf.data compression/decompression                        : FAILED! core-dump
>>>>  87: perf record tests                                               : FAILED! core-dump
>>>>  94: perf all metricgroups test                                      : FAILED!
>>>>  95: perf all metrics test                                           : FAILED!
>>>> 106: Test java symbol                                                : FAILED! core-dump
>>>> #
>>>>
>>>> I am afraid this will show up pretty soon in the linux tree.
>>>> I am going to look into each failure in the next few days.
>>>>
>>>> What I already found out is that many test cases now fail due to the
>>>> event/PMU rework, here is one example:
>>>>
>>>> # perf test -Fvvvv 95
>>>> 95: perf all metrics test
>>>> --- start ---
>>>> Testing cpi
>>>> ....
>>>> Metric 'transaction' not printed in:
>>>> Error:
>>>> The TX_NC_TABORT event is not supported.
>>>> ---- end ----
>>>> perf all metrics test: FAILED!
>>>> # ls -l /sys/devices/cpum_cf/events/TX_NC_TABORT
>>>> -r--r--r--. 1 root root 4096 Jun 13 13:49 /sys/devices/cpum_cf/events/TX_NC_TABORT
>>>> #
>>>>
>>>> As can be seen, the event is definitely there and supported.
>>>> This same test case succeeds in the linux tree!
>>>>
>>>> Hopefully I can sort out some of the failures before this code show up
>>>> in the linux tree.
>>>
>>> Thanks Thomas, to be clear this is what is in
>>> perf-tools-next/linux-next and not 6.4?
>>
>> Ian,
>>
>> thanks for your help.
>> Correct, I am talking about the linux-next repo. The linux repo is fine.
>>
>>>
>>> Rather than try to do more complicated cases like the metrics tests,
>>> it makes sense to dig into why event parsing is failing. Test 6 first
>>> of all, could you give output?
>>>
>>> Thanks,
>>> Ian
>>>
>> We discussed some aspects of this about two weeks ago, but last week
>> I was on vacation and now I resumed my work on linux-next.
>> We run the linux-next perf test suite every night and I am concerned
>> and would like to get this sorted out before it hits Linux 6.5.
>>
>> Here is the output on my linux-next tree built yesterday:
>> # uname -a
>> Linux a35lp67.lnxne.boe 6.4.0-rc6-next-20230613d-perf #2 \
>>               SMP Tue Jun 13 15:18:43 CEST 2023 s390x GNU/Linux
>> # ./perf test -F 6
>>   6: Parse event definition strings  :
>>   6.1: Test event parsing            :Segmentation fault (core dumped)
>> #
>> # gdb perf
>>   ....
>>   (gdb) r test -F 6
>>    6: Parse event definition strings                                  :
>>   6.1: Test event parsing                                            :
>> Program received signal SIGSEGV, Segmentation fault.
>> __GI_strcmp () at ../sysdeps/s390/strcmp-vx.S:47
>> (gdb) where
>> #0  __GI_strcmp () at ../sysdeps/s390/strcmp-vx.S:47
>> #1  0x000000000110a18c in test__term_equal_term (evlist=0x152ea80) at tests/parse-events.c:1580
>> #2  0x000000000110a96a in test_event (e=0x14dc758 <test.events+1416>) at tests/parse-events.c:2209
>> #3  0x000000000110ac58 in test_events (events=0x14dc1d0 <test.events>, cnt=61) at tests/parse-events.c:2260
>> #4  0x000000000110ad52 in test__events2 (test=0x1500758 <suite.parse_events>, subtest=0)
>>     at tests/parse-events.c:2272
>> #5  0x00000000010f6fac in run_test (test=0x1500758 <suite.parse_events>, subtest=0) at tests/builtin-test.c:236
>> #6  0x00000000010f7142 in test_and_print (t=0x1500758 <suite.parse_events>, subtest=0) at tests/builtin-test.c:265
>> #7  0x00000000010f7b1e in __cmd_test (argc=1, argv=0x3ffffffa320, skiplist=0x0) at tests/builtin-test.c:436
>> #8  0x00000000010f8404 in cmd_test (argc=1, argv=0x3ffffffa320) at tests/builtin-test.c:559
>> #9  0x00000000011473fc in run_builtin (p=0x14f60e8 <commands+600>, argc=3, argv=0x3ffffffa320) at perf.c:323
>> #10 0x000000000114776e in handle_internal_command (argc=3, argv=0x3ffffffa320) at perf.c:377
>> #11 0x0000000001147980 in run_argv (argcp=0x3ffffff9f94, argv=0x3ffffff9f88) at perf.c:421
>> #12 0x0000000001147d48 in main (argc=3, argv=0x3ffffffa320) at perf.c:537
>> (gdb)
>>
>> To be honest, I am no expert on the yacc/bison/flex tool chain.
>> I understand a little bit about them, but that is it.
>>
>> When I look at the output of perf test -Fvvvv 6 on linux-next, some things seem odd,
>> I marked them with 3 question masks ???:
>>
>> # ./perf test -Fvvv 6
>>   6: Parse event definition strings     :
>>   6.1: Test event parsing               :
>> --- start ---
>> running test 0 'syscalls:sys_enter_openat'
>> Using CPUID IBM,3931,704,A01,3.7,002f
>> running test 1 'syscalls:*'
>> running test 2 'r1a'
>> running test 3 '1:1'
>> running test 4 'instructions'
>> No PMU found for 'instructions'FAILED tests/parse-events.c:143 wrong number of entries
>> Event test failure: test 4 'instructions'running test 5 'cycles/period=100000,config2/'
>> ??? What is wrong here?
>> ??? Output on linux 6.4.0rc3:
>> ??? # ./perf stat -e instructions -- true
>> ???
>> ??? Performance counter stats for 'true':
>> ???
>> ???         2,965,720      instructions
>> ???
>> ???        0.002026832 seconds time elapsed
>> ???
>> ???        0.000056000 seconds user
>> ???        0.002048000 seconds sys
>> ??? #
>> ??? This is fine and works as expected. The s390 PMU for counters
>> ??? has a direct mapping for this. So we end up in the s390 PMU
>> ??? to retrieve the value.
>> ???
>> ??? Output on linux-next
>> ???# ./perf stat -e instructions -- true
>> ???
>> ??? Performance counter stats for 'true':
>> ???
>> ???              0.65 msec task-clock                       #    0.250 CPUs utilized
>> ???                 0      context-switches                 #    0.000 /sec
>> ???                 0      cpu-migrations                   #    0.000 /sec
>> ???                49      page-faults                      #   75.375 K/sec
>> ???         3,367,228      cycles                           #    5.180 GHz
>> ???         2,880,270      instructions                     #    0.86  insn per cycle
>> ???   <not supported>      branches
>> ???   <not supported>      branch-misses
>> ???
>> ???       0.002599176 seconds time elapsed
>> ???
>> ???       0.000053000 seconds user
>> ???       0.002650000 seconds sys
>> ???
>> ???#
>> ??? Somehow we end up in a different PMU. The output is the same as if
>> ??? I do not specify an event at all. To reach the s390 specific PMU
>> ??? I have to add it explicitly as in:
>> ???# ./perf stat -e cpum_cf/instructions/ -- true
>> ???
>> ??? Performance counter stats for 'true':
>> ???
>> ???         2,814,522      cpum_cf/instructions/
>> ???
>> ???       0.001899881 seconds time elapsed
>> ???
>> ???       0.000050000 seconds user
>> ???       0.001928000 seconds sys
>> ???
>> ???]#
>> No PMU found for 'cycles/period=100000,config2/'FAILED tests/parse-events.c:157 wrong number of entries
>> Event test failure: test 5 'cycles/period=100000,config2/'running test 6 'faults'
>> ...
>> ??? Similar output for basicly all events.
>>
>> No PMU found for 'cycles'running test 59 'cycles/name=name/'
>> No PMU found for 'name'Segmentation fault (core dumped)
>>
>> Hope this helps.
>>
>> PS: Should we keep the linux-perf-use mailing list as addressee? Not sure
>> if everybody else is interested in this?
> 
> Smaller list is okay. Could you send me a zip of the sysfs
> (/sys/devices) ? At least one issue is that the code didn't find a
> core PMU. On non-hybrid x86 this would be /sys/devices/cpu, I think we
> spoke about this before for s390 and there are >1. The issue here is
> that the test found 0, and we're trying to use PMUs in the code now as
> a way to sort events. There's code/comment in util/pmu.c:
> 
> '''
> /**
>  * is_sysfs_pmu_core() - PMU CORE devices have different name other than cpu in
>  *         sysfs on some platforms like ARM or Intel hybrid. Looking for
>  *         possible the cpus file in sysfs files to identify whether this is a
>  *         core device.
>  * @name: The PMU name such as "cpu_atom".
>  */
> static int is_sysfs_pmu_core(const char *name)
> {
> char path[PATH_MAX];
> 
> if (!perf_pmu__pathname_scnprintf(path, sizeof(path), name, "cpus"))
> return 0;
> return file_available(path);
> }
> ...
> bool is_pmu_core(const char *name)
> {
> return !strcmp(name, "cpu") || is_sysfs_pmu_core(name);
> }
> '''
> 
> Thanks,
> Ian
> 

Thanks for refreshing my memory. With s390 core PMU named as
/sys/devices/cpum_cf, this fix was missing:

diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
index fe64ad292d36..6142e4710a2f 100644
--- a/tools/perf/util/pmu.c
+++ b/tools/perf/util/pmu.c
@@ -1419,7 +1419,7 @@ void perf_pmu__del_formats(struct list_head *formats)
 
 bool is_pmu_core(const char *name)
 {
-       return !strcmp(name, "cpu") || is_sysfs_pmu_core(name);
+       return !strcmp(name, "cpu") || !strcmp(name, "cpum_cf") || is_sysfs_pmu_core(name);
 }
 
 bool perf_pmu__supports_legacy_cache(const struct perf_pmu *pmu)

With that fix applied, the test succeeds:

# ./perf test -F 6
  6: Parse event definition strings                                  :
  6.1: Test event parsing                                            : Ok
  6.2: Parsing of all PMU events from sysfs                          : Ok
  6.3: Parsing of given PMU events from sysfs                        : Ok
  6.4: Parsing of aliased events from sysfs                          : Skip (no aliases in sysfs)
  6.5: Parsing of aliased events                                     : Ok
  6.6: Parsing of terms (event modifiers)                            : Ok
#

I have tried to send my /sys/devices tree before as zip or tgz but that
mail got deleted by your mailer because it contained compressed data.

So I send you an ls -lR from our 5 PMUs on s390 as text attachment and
here are the type values:
# for i in  /sys/devices/cpum_[sc]f* /sys/devices/pai_*; do echo PMU $i PMU_TYPE $(cat $i/type); done
PMU /sys/devices/cpum_cf PMU_TYPE 8
PMU /sys/devices/cpum_cf_diag PMU_TYPE 9
PMU /sys/devices/cpum_sf PMU_TYPE 4
PMU /sys/devices/pai_crypto PMU_TYPE 10
PMU /sys/devices/pai_ext PMU_TYPE 11
# 

For the /sys/devices/PMU tree see attachment sysfs-s390.txt

Thanks a lot for you help.
-- 
Thomas Richter, Dept 3303, IBM s390 Linux Development, Boeblingen, Germany
--
Vorsitzender des Aufsichtsrats: Gregor Pillen
Geschäftsführung: David Faller
Sitz der Gesellschaft: Böblingen / Registergericht: Amtsgericht Stuttgart, HRB 243294

[-- Attachment #2: sysfs-s390.txt --]
[-- Type: text/plain, Size: 19744 bytes --]

/sys/devices/cpum_cf:
total 0
drwxr-xr-x 2 root root    0 Jun 14 13:03 events
drwxr-xr-x 2 root root    0 Jun 14 13:03 format
-rw-r--r-- 1 root root 4096 Jun 15 10:48 perf_event_mux_interval_ms
lrwxrwxrwx 1 root root    0 Jun 15 10:48 subsystem -> ../../bus/event_source
-r--r--r-- 1 root root 4096 Jun 14 13:03 type
-rw-r--r-- 1 root root 4096 Jun 15 10:48 uevent

/sys/devices/cpum_cf/events:
total 0
-r--r--r-- 1 root root 4096 Jun 14 13:03 AES_BLOCKED_CYCLES
-r--r--r-- 1 root root 4096 Jun 14 13:03 AES_BLOCKED_FUNCTIONS
-r--r--r-- 1 root root 4096 Jun 14 13:03 AES_CYCLES
-r--r--r-- 1 root root 4096 Jun 14 13:03 AES_FUNCTIONS
-r--r--r-- 1 root root 4096 Jun 14 13:03 BCD_DFP_EXECUTION_SLOTS
-r--r--r-- 1 root root 4096 Jun 14 13:03 CPU_CYCLES
-r--r--r-- 1 root root 4096 Jun 14 13:03 CRSTE_1MB_WRITES
-r--r--r-- 1 root root 4096 Jun 14 13:03 DCW_OFF_DRAWER
-r--r--r-- 1 root root 4096 Jun 14 13:03 DCW_OFF_DRAWER_MEMORY
-r--r--r-- 1 root root 4096 Jun 14 13:03 DCW_ON_CHIP
-r--r--r-- 1 root root 4096 Jun 14 13:03 DCW_ON_CHIP_CHIP_HIT
-r--r--r-- 1 root root 4096 Jun 14 13:03 DCW_ON_CHIP_DRAWER_HIT
-r--r--r-- 1 root root 4096 Jun 14 13:03 DCW_ON_CHIP_IV
-r--r--r-- 1 root root 4096 Jun 14 13:03 DCW_ON_CHIP_MEMORY
-r--r--r-- 1 root root 4096 Jun 14 13:03 DCW_ON_DRAWER
-r--r--r-- 1 root root 4096 Jun 14 13:03 DCW_ON_DRAWER_MEMORY
-r--r--r-- 1 root root 4096 Jun 14 13:03 DCW_ON_MODULE
-r--r--r-- 1 root root 4096 Jun 14 13:03 DCW_ON_MODULE_MEMORY
-r--r--r-- 1 root root 4096 Jun 14 13:03 DCW_REQ
-r--r--r-- 1 root root 4096 Jun 14 13:03 DCW_REQ_CHIP_HIT
-r--r--r-- 1 root root 4096 Jun 14 13:03 DCW_REQ_DRAWER_HIT
-r--r--r-- 1 root root 4096 Jun 14 13:03 DCW_REQ_IV
-r--r--r-- 1 root root 4096 Jun 14 13:03 DEA_BLOCKED_CYCLES
-r--r--r-- 1 root root 4096 Jun 14 13:03 DEA_BLOCKED_FUNCTIONS
-r--r--r-- 1 root root 4096 Jun 14 13:03 DEA_CYCLES
-r--r--r-- 1 root root 4096 Jun 14 13:03 DEA_FUNCTIONS
-r--r--r-- 1 root root 4096 Jun 14 13:03 DECIMAL_INSTRUCTIONS
-r--r--r-- 1 root root 4096 Jun 14 13:03 DFLT_ACCESS
-r--r--r-- 1 root root 4096 Jun 14 13:03 DFLT_CC
-r--r--r-- 1 root root 4096 Jun 14 13:03 DFLT_CCFINISH
-r--r--r-- 1 root root 4096 Jun 14 13:03 DFLT_CYCLES
-r--r--r-- 1 root root 4096 Jun 14 13:03 DTLB2_GPAGE_WRITES
-r--r--r-- 1 root root 4096 Jun 14 13:03 DTLB2_MISSES
-r--r--r-- 1 root root 4096 Jun 14 13:03 DTLB2_WRITES
-r--r--r-- 1 root root 4096 Jun 14 13:03 ECC_BLOCKED_CYCLES_COUNT
-r--r--r-- 1 root root 4096 Jun 14 13:03 ECC_BLOCKED_FUNCTION_COUNT
-r--r--r-- 1 root root 4096 Jun 14 13:03 ECC_CYCLES_COUNT
-r--r--r-- 1 root root 4096 Jun 14 13:03 ECC_FUNCTION_COUNT
-r--r--r-- 1 root root 4096 Jun 14 13:03 ICW_OFF_DRAWER
-r--r--r-- 1 root root 4096 Jun 14 13:03 ICW_OFF_DRAWER_MEMORY
-r--r--r-- 1 root root 4096 Jun 14 13:03 ICW_ON_CHIP
-r--r--r-- 1 root root 4096 Jun 14 13:03 ICW_ON_CHIP_CHIP_HIT
-r--r--r-- 1 root root 4096 Jun 14 13:03 ICW_ON_CHIP_DRAWER_HIT
-r--r--r-- 1 root root 4096 Jun 14 13:03 ICW_ON_CHIP_IV
-r--r--r-- 1 root root 4096 Jun 14 13:03 ICW_ON_CHIP_MEMORY
-r--r--r-- 1 root root 4096 Jun 14 13:03 ICW_ON_DRAWER
-r--r--r-- 1 root root 4096 Jun 14 13:03 ICW_ON_DRAWER_MEMORY
-r--r--r-- 1 root root 4096 Jun 14 13:03 ICW_ON_MODULE
-r--r--r-- 1 root root 4096 Jun 14 13:03 ICW_ON_MODULE_MEMORY
-r--r--r-- 1 root root 4096 Jun 14 13:03 ICW_REQ
-r--r--r-- 1 root root 4096 Jun 14 13:03 ICW_REQ_CHIP_HIT
-r--r--r-- 1 root root 4096 Jun 14 13:03 ICW_REQ_DRAWER_HIT
-r--r--r-- 1 root root 4096 Jun 14 13:03 ICW_REQ_IV
-r--r--r-- 1 root root 4096 Jun 14 13:03 IDCW_OFF_DRAWER_CHIP_HIT
-r--r--r-- 1 root root 4096 Jun 14 13:03 IDCW_OFF_DRAWER_DRAWER_HIT
-r--r--r-- 1 root root 4096 Jun 14 13:03 IDCW_OFF_DRAWER_IV
-r--r--r-- 1 root root 4096 Jun 14 13:03 IDCW_ON_DRAWER_CHIP_HIT
-r--r--r-- 1 root root 4096 Jun 14 13:03 IDCW_ON_DRAWER_DRAWER_HIT
-r--r--r-- 1 root root 4096 Jun 14 13:03 IDCW_ON_DRAWER_IV
-r--r--r-- 1 root root 4096 Jun 14 13:03 IDCW_ON_MODULE_CHIP_HIT
-r--r--r-- 1 root root 4096 Jun 14 13:03 IDCW_ON_MODULE_DRAWER_HIT
-r--r--r-- 1 root root 4096 Jun 14 13:03 IDCW_ON_MODULE_IV
-r--r--r-- 1 root root 4096 Jun 14 13:03 INSTRUCTIONS
-r--r--r-- 1 root root 4096 Jun 14 13:03 ITLB2_MISSES
-r--r--r-- 1 root root 4096 Jun 14 13:03 ITLB2_WRITES
-r--r--r-- 1 root root 4096 Jun 14 13:03 L1C_TLB2_MISSES
-r--r--r-- 1 root root 4096 Jun 14 13:03 L1D_DIR_WRITES
-r--r--r-- 1 root root 4096 Jun 14 13:03 L1D_PENALTY_CYCLES
-r--r--r-- 1 root root 4096 Jun 14 13:03 L1D_RO_EXCL_WRITES
-r--r--r-- 1 root root 4096 Jun 14 13:03 L1I_DIR_WRITES
-r--r--r-- 1 root root 4096 Jun 14 13:03 L1I_PENALTY_CYCLES
-r--r--r-- 1 root root 4096 Jun 14 13:03 LAST_HOST_TRANSLATIONS
-r--r--r-- 1 root root 4096 Jun 14 13:03 MT_DIAG_CYCLES_ONE_THR_ACTIVE
-r--r--r-- 1 root root 4096 Jun 14 13:03 MT_DIAG_CYCLES_TWO_THR_ACTIVE
-r--r--r-- 1 root root 4096 Jun 14 13:03 NNPA_COMPLETIONS
-r--r--r-- 1 root root 4096 Jun 14 13:03 NNPA_HOLD_LOCK
-r--r--r-- 1 root root 4096 Jun 14 13:03 NNPA_INVOCATIONS
-r--r--r-- 1 root root 4096 Jun 14 13:03 NNPA_WAIT_LOCK
-r--r--r-- 1 root root 4096 Jun 14 13:03 PRNG_BLOCKED_CYCLES
-r--r--r-- 1 root root 4096 Jun 14 13:03 PRNG_BLOCKED_FUNCTIONS
-r--r--r-- 1 root root 4096 Jun 14 13:03 PRNG_CYCLES
-r--r--r-- 1 root root 4096 Jun 14 13:03 PRNG_FUNCTIONS
-r--r--r-- 1 root root 4096 Jun 14 13:03 PROBLEM_STATE_CPU_CYCLES
-r--r--r-- 1 root root 4096 Jun 14 13:03 PROBLEM_STATE_INSTRUCTIONS
-r--r--r-- 1 root root 4096 Jun 14 13:03 SHA_BLOCKED_CYCLES
-r--r--r-- 1 root root 4096 Jun 14 13:03 SHA_BLOCKED_FUNCTIONS
-r--r--r-- 1 root root 4096 Jun 14 13:03 SHA_CYCLES
-r--r--r-- 1 root root 4096 Jun 14 13:03 SHA_FUNCTIONS
-r--r--r-- 1 root root 4096 Jun 14 13:03 SORTL
-r--r--r-- 1 root root 4096 Jun 14 13:03 TLB2_CRSTE_WRITES
-r--r--r-- 1 root root 4096 Jun 14 13:03 TLB2_ENGINES_BUSY
-r--r--r-- 1 root root 4096 Jun 14 13:03 TLB2_PTE_WRITES
-r--r--r-- 1 root root 4096 Jun 14 13:03 TX_C_TABORT_NO_SPECIAL
-r--r--r-- 1 root root 4096 Jun 14 13:03 TX_C_TABORT_SPECIAL
-r--r--r-- 1 root root 4096 Jun 14 13:03 TX_C_TEND
-r--r--r-- 1 root root 4096 Jun 14 13:03 TX_NC_TABORT
-r--r--r-- 1 root root 4096 Jun 14 13:03 TX_NC_TEND
-r--r--r-- 1 root root 4096 Jun 14 13:03 VX_BCD_EXECUTION_SLOTS

/sys/devices/cpum_cf/format:
total 0
-r--r--r-- 1 root root 4096 Jun 14 13:03 event

/sys/devices/cpum_cf_diag:
total 0
drwxr-xr-x 2 root root    0 Jun 14 15:43 events
drwxr-xr-x 2 root root    0 Jun 14 15:43 format
-rw-r--r-- 1 root root 4096 Jun 15 10:53 perf_event_mux_interval_ms
lrwxrwxrwx 1 root root    0 Jun 15 10:53 subsystem -> ../../bus/event_source
-r--r--r-- 1 root root 4096 Jun 14 15:43 type
-rw-r--r-- 1 root root 4096 Jun 15 10:53 uevent

/sys/devices/cpum_cf_diag/events:
total 0
-r--r--r-- 1 root root 4096 Jun 14 15:43 CF_DIAG

/sys/devices/cpum_cf_diag/format:
total 0
-r--r--r-- 1 root root 4096 Jun 14 15:43 event

/sys/devices/cpum_sf:
total 0
drwxr-xr-x 2 root root    0 Jun 14 13:03 events
drwxr-xr-x 2 root root    0 Jun 14 13:03 format
-rw-r--r-- 1 root root 4096 Jun 15 10:48 perf_event_mux_interval_ms
lrwxrwxrwx 1 root root    0 Jun 15 10:48 subsystem -> ../../bus/event_source
-r--r--r-- 1 root root 4096 Jun 14 13:03 type
-rw-r--r-- 1 root root 4096 Jun 15 10:48 uevent

/sys/devices/cpum_sf/events:
total 0
-r--r--r-- 1 root root 4096 Jun 14 13:03 SF_CYCLES_BASIC
-r--r--r-- 1 root root 4096 Jun 14 13:03 SF_CYCLES_BASIC_DIAG

/sys/devices/cpum_sf/format:
total 0
-r--r--r-- 1 root root 4096 Jun 14 13:03 event

/sys/devices/pai_crypto:
total 0
drwxr-xr-x 2 root root    0 Jun 14 12:12 events
drwxr-xr-x 2 root root    0 Jun 14 13:03 format
-rw-r--r-- 1 root root 4096 Jun 15 10:49 perf_event_mux_interval_ms
lrwxrwxrwx 1 root root    0 Jun 15 10:49 subsystem -> ../../bus/event_source
-r--r--r-- 1 root root 4096 Jun 14 13:03 type
-rw-r--r-- 1 root root 4096 Jun 15 10:49 uevent

/sys/devices/pai_crypto/events:
total 0
-r--r--r-- 1 root root 4096 Jun 14 15:43 CRYPTO_ALL
-r--r--r-- 1 root root 4096 Jun 15 10:33 IBM_RESERVED_155
-r--r--r-- 1 root root 4096 Jun 15 10:33 IBM_RESERVED_156
-r--r--r-- 1 root root 4096 Jun 15 10:33 KDSA_ECDSA_SIGN_P256
-r--r--r-- 1 root root 4096 Jun 15 10:33 KDSA_ECDSA_SIGN_P384
-r--r--r-- 1 root root 4096 Jun 15 10:33 KDSA_ECDSA_SIGN_P521
-r--r--r-- 1 root root 4096 Jun 15 10:33 KDSA_ECDSA_VERIFY_P256
-r--r--r-- 1 root root 4096 Jun 15 10:33 KDSA_ECDSA_VERIFY_P384
-r--r--r-- 1 root root 4096 Jun 15 10:33 KDSA_ECDSA_VERIFY_P521
-r--r--r-- 1 root root 4096 Jun 14 15:43 KDSA_EDDSA_SIGN_ED25519
-r--r--r-- 1 root root 4096 Jun 15 10:33 KDSA_EDDSA_SIGN_ED448
-r--r--r-- 1 root root 4096 Jun 15 10:33 KDSA_EDDSA_VERIFY_ED25519
-r--r--r-- 1 root root 4096 Jun 15 10:33 KDSA_EDDSA_VERIFY_ED448
-r--r--r-- 1 root root 4096 Jun 14 15:43 KDSA_ENCRYPTED_ECDSA_SIGN_P256
-r--r--r-- 1 root root 4096 Jun 15 10:33 KDSA_ENCRYPTED_ECDSA_SIGN_P384
-r--r--r-- 1 root root 4096 Jun 14 15:43 KDSA_ENCRYPTED_ECDSA_SIGN_P521
-r--r--r-- 1 root root 4096 Jun 15 10:33 KDSA_ENCRYPTED_EDDSA_SIGN_ED25519
-r--r--r-- 1 root root 4096 Jun 15 10:33 KDSA_ENCRYPTED_EDDSA_SIGN_ED448
-r--r--r-- 1 root root 4096 Jun 15 10:33 KIMD_GHASH
-r--r--r-- 1 root root 4096 Jun 15 10:33 KIMD_SHA_1
-r--r--r-- 1 root root 4096 Jun 15 10:33 KIMD_SHA_256
-r--r--r-- 1 root root 4096 Jun 15 10:33 KIMD_SHA3_224
-r--r--r-- 1 root root 4096 Jun 15 10:33 KIMD_SHA3_256
-r--r--r-- 1 root root 4096 Jun 14 15:43 KIMD_SHA3_384
-r--r--r-- 1 root root 4096 Jun 15 10:33 KIMD_SHA3_512
-r--r--r-- 1 root root 4096 Jun 15 10:33 KIMD_SHA_512
-r--r--r-- 1 root root 4096 Jun 15 10:33 KIMD_SHAKE_128
-r--r--r-- 1 root root 4096 Jun 15 10:33 KIMD_SHAKE_256
-r--r--r-- 1 root root 4096 Jun 14 13:03 KLMD_SHA_1
-r--r--r-- 1 root root 4096 Jun 15 10:33 KLMD_SHA_256
-r--r--r-- 1 root root 4096 Jun 15 10:33 KLMD_SHA3_224
-r--r--r-- 1 root root 4096 Jun 15 10:33 KLMD_SHA3_256
-r--r--r-- 1 root root 4096 Jun 15 10:33 KLMD_SHA3_384
-r--r--r-- 1 root root 4096 Jun 14 15:43 KLMD_SHA3_512
-r--r--r-- 1 root root 4096 Jun 15 10:33 KLMD_SHA_512
-r--r--r-- 1 root root 4096 Jun 14 15:43 KLMD_SHAKE_128
-r--r--r-- 1 root root 4096 Jun 15 10:33 KLMD_SHAKE_256
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMAC_AES_128
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMAC_AES_192
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMAC_AES_256
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMAC_DEA
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMAC_ENCRYPTED_AES_128
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMAC_ENCRYPTED_AES_192
-r--r--r-- 1 root root 4096 Jun 14 15:43 KMAC_ENCRYPTED_AES_256
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMAC_ENCRYPTED_DEA
-r--r--r-- 1 root root 4096 Jun 14 15:43 KMAC_ENCRYPTED_TDEA_128
-r--r--r-- 1 root root 4096 Jun 14 15:43 KMAC_ENCRYPTED_TDEA_192
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMAC_TDEA_128
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMAC_TDEA_192
-r--r--r-- 1 root root 4096 Jun 15 10:33 KM_AES_128
-r--r--r-- 1 root root 4096 Jun 15 10:33 KM_AES_192
-r--r--r-- 1 root root 4096 Jun 15 10:33 KM_AES_256
-r--r--r-- 1 root root 4096 Jun 14 15:43 KMA_GCM_AES_128
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMA_GCM_AES_192
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMA_GCM_AES_256
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMA_GCM_ENCRYPTED_AES_128
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMA_GCM_ENCRYPTED_AES_192
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMA_GCM_ENCRYPTED_AES_256
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMC_AES_128
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMC_AES_192
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMC_AES_256
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMC_DEA
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMC_ENCRYPTED_AES_128
-r--r--r-- 1 root root 4096 Jun 14 15:43 KMC_ENCRYPTED_AES_192
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMC_ENCRYPTED_AES_256
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMC_ENCRYPTED_DEA
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMC_ENCRYPTED_TDEA_128
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMC_ENCRYPTED_TDEA_192
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMC_PRNG
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMC_TDEA_128
-r--r--r-- 1 root root 4096 Jun 14 15:43 KMC_TDEA_192
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMCTR_AES_128
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMCTR_AES_192
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMCTR_AES_256
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMCTR_DEA
-r--r--r-- 1 root root 4096 Jun 14 15:43 KMCTR_ENCRYPTED_AES_128
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMCTR_ENCRYPTED_AES_192
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMCTR_ENCRYPTED_AES_256
-r--r--r-- 1 root root 4096 Jun 14 15:43 KMCTR_ENCRYPTED_DEA
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMCTR_ENCRYPTED_TDEA_128
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMCTR_ENCRYPTED_TDEA_192
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMCTR_TDEA_128
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMCTR_TDEA_192
-r--r--r-- 1 root root 4096 Jun 15 10:33 KM_DEA
-r--r--r-- 1 root root 4096 Jun 15 10:33 KM_ENCRYPTED_AES_128
-r--r--r-- 1 root root 4096 Jun 15 10:33 KM_ENCRYPTED_AES_192
-r--r--r-- 1 root root 4096 Jun 15 10:33 KM_ENCRYPTED_AES_256
-r--r--r-- 1 root root 4096 Jun 15 10:33 KM_ENCRYPTED_DEA
-r--r--r-- 1 root root 4096 Jun 15 10:33 KM_ENCRYPTED_TDEA_128
-r--r--r-- 1 root root 4096 Jun 15 10:33 KM_ENCRYPTED_TDEA_192
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMF_AES_128
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMF_AES_192
-r--r--r-- 1 root root 4096 Jun 14 15:43 KMF_AES_256
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMF_DEA
-r--r--r-- 1 root root 4096 Jun 14 15:43 KMF_ENCRYPTED_AES_128
-r--r--r-- 1 root root 4096 Jun 14 15:43 KMF_ENCRYPTED_AES_192
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMF_ENCRYPTED_AES_256
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMF_ENCRYPTED_DEA
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMF_ENCRYPTED_TDEA_128
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMF_ENCRYPTED_TDEA_192
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMF_TDEA_128
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMF_TDEA_192
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMO_AES_128
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMO_AES_192
-r--r--r-- 1 root root 4096 Jun 14 15:43 KMO_AES_256
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMO_DEA
-r--r--r-- 1 root root 4096 Jun 14 15:43 KMO_ENCRYPTED_AES_128
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMO_ENCRYPTED_AES_192
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMO_ENCRYPTED_AES_256
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMO_ENCRYPTED_DEA
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMO_ENCRYPTED_TDEA_128
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMO_ENCRYPTED_TDEA_192
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMO_TDEA_128
-r--r--r-- 1 root root 4096 Jun 15 10:33 KMO_TDEA_192
-r--r--r-- 1 root root 4096 Jun 15 10:33 KM_TDEA_128
-r--r--r-- 1 root root 4096 Jun 15 10:33 KM_TDEA_192
-r--r--r-- 1 root root 4096 Jun 14 15:43 KM_XTS_AES_128
-r--r--r-- 1 root root 4096 Jun 15 10:33 KM_XTS_AES_256
-r--r--r-- 1 root root 4096 Jun 15 10:33 KM_XTS_ENCRYPTED_AES_128
-r--r--r-- 1 root root 4096 Jun 15 10:33 KM_XTS_ENCRYPTED_AES_256
-r--r--r-- 1 root root 4096 Jun 15 10:33 PCC_COMPUTE_LAST_BLOCK_CMAC_USING_AES_128
-r--r--r-- 1 root root 4096 Jun 15 10:33 PCC_COMPUTE_LAST_BLOCK_CMAC_USING_AES_192
-r--r--r-- 1 root root 4096 Jun 15 10:33 PCC_COMPUTE_LAST_BLOCK_CMAC_USING_AES_256
-r--r--r-- 1 root root 4096 Jun 15 10:33 PCC_COMPUTE_LAST_BLOCK_CMAC_USING_DEA
-r--r--r-- 1 root root 4096 Jun 15 10:33 PCC_COMPUTE_LAST_BLOCK_CMAC_USING_ENCRYPTED_AES_128
-r--r--r-- 1 root root 4096 Jun 15 10:33 PCC_COMPUTE_LAST_BLOCK_CMAC_USING_ENCRYPTED_AES_192
-r--r--r-- 1 root root 4096 Jun 15 10:33 PCC_COMPUTE_LAST_BLOCK_CMAC_USING_ENCRYPTED_AES_256A
-r--r--r-- 1 root root 4096 Jun 15 10:33 PCC_COMPUTE_LAST_BLOCK_CMAC_USING_ENCRYPTED_DEA
-r--r--r-- 1 root root 4096 Jun 14 15:43 PCC_COMPUTE_LAST_BLOCK_CMAC_USING_ENCRYPTED_TDEA_128
-r--r--r-- 1 root root 4096 Jun 15 10:33 PCC_COMPUTE_LAST_BLOCK_CMAC_USING_ENCRYPTED_TDEA_192
-r--r--r-- 1 root root 4096 Jun 15 10:33 PCC_COMPUTE_LAST_BLOCK_CMAC_USING_TDEA_128
-r--r--r-- 1 root root 4096 Jun 15 10:33 PCC_COMPUTE_LAST_BLOCK_CMAC_USING_TDEA_192
-r--r--r-- 1 root root 4096 Jun 15 10:33 PCC_COMPUTE_XTS_PARAMETER_USING_AES_128
-r--r--r-- 1 root root 4096 Jun 15 10:33 PCC_COMPUTE_XTS_PARAMETER_USING_AES_256
-r--r--r-- 1 root root 4096 Jun 15 10:33 PCC_COMPUTE_XTS_PARAMETER_USING_ENCRYPTED_AES_128
-r--r--r-- 1 root root 4096 Jun 15 10:33 PCC_COMPUTE_XTS_PARAMETER_USING_ENCRYPTED_AES_256
-r--r--r-- 1 root root 4096 Jun 14 15:43 PCC_SCALAR_MULTIPLY_ED25519
-r--r--r-- 1 root root 4096 Jun 14 15:43 PCC_SCALAR_MULTIPLY_ED448
-r--r--r-- 1 root root 4096 Jun 15 10:33 PCC_SCALAR_MULTIPLY_P256
-r--r--r-- 1 root root 4096 Jun 15 10:33 PCC_SCALAR_MULTIPLY_P384
-r--r--r-- 1 root root 4096 Jun 15 10:33 PCC_SCALAR_MULTIPLY_P521
-r--r--r-- 1 root root 4096 Jun 15 10:33 PCC_SCALAR_MULTIPLY_X25519
-r--r--r-- 1 root root 4096 Jun 15 10:33 PCC_SCALAR_MULTIPLY_X448
-r--r--r-- 1 root root 4096 Jun 15 10:33 PCKMO_ENCRYPT_AES_128_KEY
-r--r--r-- 1 root root 4096 Jun 15 10:33 PCKMO_ENCRYPT_AES_192_KEY
-r--r--r-- 1 root root 4096 Jun 15 10:33 PCKMO_ENCRYPT_AES_256_KEY
-r--r--r-- 1 root root 4096 Jun 15 10:33 PCKMO_ENCRYPT_DEA_KEY
-r--r--r-- 1 root root 4096 Jun 15 10:33 PCKMO_ENCRYPT_ECC_ED25519_KEY
-r--r--r-- 1 root root 4096 Jun 15 10:33 PCKMO_ENCRYPT_ECC_ED448_KEY
-r--r--r-- 1 root root 4096 Jun 15 10:33 PCKMO_ENCRYPT_ECC_P256_KEY
-r--r--r-- 1 root root 4096 Jun 15 10:33 PCKMO_ENCRYPT_ECC_P384_KEY
-r--r--r-- 1 root root 4096 Jun 15 10:33 PCKMO_ENCRYPT_ECC_P521_KEY
-r--r--r-- 1 root root 4096 Jun 15 10:33 PCKMO_ENCRYPT_TDEA_128_KEY
-r--r--r-- 1 root root 4096 Jun 14 15:43 PCKMO_ENCRYPT_TDEA_192_KEY
-r--r--r-- 1 root root 4096 Jun 15 10:33 PRNO_SHA_512_DRNG
-r--r--r-- 1 root root 4096 Jun 15 10:33 PRNO_TRNG
-r--r--r-- 1 root root 4096 Jun 15 10:33 PRNO_TRNG_QUERY_RAW_TO_CONDITIONED_RATIO

/sys/devices/pai_crypto/format:
total 0
-r--r--r-- 1 root root 4096 Jun 14 13:03 event

/sys/devices/pai_ext:
total 0
drwxr-xr-x 2 root root    0 Jun 14 13:03 events
drwxr-xr-x 2 root root    0 Jun 14 13:03 format
-rw-r--r-- 1 root root 4096 Jun 15 10:49 perf_event_mux_interval_ms
lrwxrwxrwx 1 root root    0 Jun 15 10:49 subsystem -> ../../bus/event_source
-r--r--r-- 1 root root 4096 Jun 14 13:03 type
-rw-r--r-- 1 root root 4096 Jun 15 10:49 uevent

/sys/devices/pai_ext/events:
total 0
-r--r--r-- 1 root root 4096 Jun 14 13:03 NNPA_1MFRAME
-r--r--r-- 1 root root 4096 Jun 14 13:03 NNPA_2GFRAME
-r--r--r-- 1 root root 4096 Jun 14 13:03 NNPA_ACCESSEXCEPT
-r--r--r-- 1 root root 4096 Jun 14 13:03 NNPA_ADD
-r--r--r-- 1 root root 4096 Jun 14 13:03 NNPA_ALL
-r--r--r-- 1 root root 4096 Jun 14 13:03 NNPA_AVGPOOL2D
-r--r--r-- 1 root root 4096 Jun 14 13:03 NNPA_BATCHNORM
-r--r--r-- 1 root root 4096 Jun 14 13:03 NNPA_CONVOLUTION
-r--r--r-- 1 root root 4096 Jun 14 13:03 NNPA_DIV
-r--r--r-- 1 root root 4096 Jun 14 13:03 NNPA_EXP
-r--r--r-- 1 root root 4096 Jun 14 13:03 NNPA_GRUACT
-r--r--r-- 1 root root 4096 Jun 14 13:03 NNPA_IBM_RESERVED_9
-r--r--r-- 1 root root 4096 Jun 14 13:03 NNPA_LARGEDIM
-r--r--r-- 1 root root 4096 Jun 14 13:03 NNPA_LOG
-r--r--r-- 1 root root 4096 Jun 14 13:03 NNPA_LSTMACT
-r--r--r-- 1 root root 4096 Jun 14 13:03 NNPA_MATMUL_OP
-r--r--r-- 1 root root 4096 Jun 14 13:03 NNPA_MATMUL_OP_BCAST23
-r--r--r-- 1 root root 4096 Jun 14 13:03 NNPA_MAX
-r--r--r-- 1 root root 4096 Jun 14 13:03 NNPA_MAXPOOL2D
-r--r--r-- 1 root root 4096 Jun 14 13:03 NNPA_MIN
-r--r--r-- 1 root root 4096 Jun 14 13:03 NNPA_MUL
-r--r--r-- 1 root root 4096 Jun 14 13:03 NNPA_RELU
-r--r--r-- 1 root root 4096 Jun 14 13:03 NNPA_SIGMOID
-r--r--r-- 1 root root 4096 Jun 14 13:03 NNPA_SMALLBATCH
-r--r--r-- 1 root root 4096 Jun 14 13:03 NNPA_SMALLTENSOR
-r--r--r-- 1 root root 4096 Jun 14 13:03 NNPA_SOFTMAX
-r--r--r-- 1 root root 4096 Jun 14 13:03 NNPA_SUB
-r--r--r-- 1 root root 4096 Jun 14 13:03 NNPA_TANH

/sys/devices/pai_ext/format:
total 0
-r--r--r-- 1 root root 4096 Jun 14 13:03 event

  reply	other threads:[~2023-06-15  8:57 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-06-13 12:54 perf test failures in linux-next on s390 Thomas Richter
2023-06-13 14:32 ` Ian Rogers
2023-06-14  8:31   ` Thomas Richter
2023-06-14 14:57     ` Ian Rogers
2023-06-15  8:57       ` Thomas Richter [this message]
2023-06-15  9:39       ` Thomas Richter
2023-06-15 14:34         ` Arnaldo Carvalho de Melo
2023-06-16 14:23           ` Ian Rogers
2023-06-16 14:36             ` Hybrid PMU issues on aarch64. was: " Arnaldo Carvalho de Melo
2023-06-16 14:44               ` Arnaldo Carvalho de Melo
2023-06-16 16:28                 ` Ian Rogers
2023-06-16 16:53                   ` Arnaldo Carvalho de Melo
2023-06-16 21:47                     ` Arnaldo Carvalho de Melo
2023-06-16 22:09                       ` Ian Rogers
2023-06-19 10:04               ` Thomas Richter

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=b33a13cc-a3cc-3e81-1787-0643b3aac623@linux.ibm.com \
    --to=tmricht@linux.ibm.com \
    --cc=acme@kernel.org \
    --cc=irogers@google.com \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=sumanthk@linux.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).