[PATCH v2 0/6] perf arm_spe: Dump IMPDEF events

Arnaldo Carvalho de Melo acme at kernel.org
Fri Apr 10 15:05:09 PDT 2026


On Fri, Apr 10, 2026 at 09:50:16AM -0700, Namhyung Kim wrote:
> Hi James,
> 
> On Tue, Apr 07, 2026 at 03:05:14PM +0100, James Clark wrote:
> > In the Arm SPE raw data dump, IMPDEF events aren't printed. Add the
> > ability to add names for some known events or print the raw event number
> > for unknown events.
> > 
> > For example:
> > 
> >   $ perf report -D
> > 
> >   ... ARM SPE data: size 0xd000 bytes
> >   00000000: b0 18 c6 32 80 00 80 ff a0  PC 0xff80008032c618 el1 ns=1
> >   00000009: 64 e7 42 00 00              CONTEXT 0x42e7 el1
> >   0000000e: 00 00 00 00 00              PAD
> >   00000013: 49 00                       LD GP-REG
> >   00000015: 52 16 10               	EV RETIRED L1D-ACCESS TLB-ACCESS
> > 
> > On N1 the event line becomes:
> > 
> >   00000015: 52 16 10                    EV RETIRED L1D-ACCESS TLB-ACCESS LATE-PREFETCH
> > 
> > Or on other cores it becomes:
> > 
> >   00000015: 52 16 10                    EV RETIRED L1D-ACCESS TLB-ACCESS IMPDEF:12
> > 
> > Signed-off-by: James Clark <james.clark at linaro.org>
> > ---
> > Changes in v2:
> > - Put MIDR in arm_spe_pkt (Leo)
> > - Use for_each_set_bit() (Leo)
> > - Use BIT_ULL() to fix 32bit builds (Ian)
> > - Don't call strtol() with NULL (Ian)
> > - Link to v1: https://lore.kernel.org/r/20260401-james-spe-impdef-decode-v1-0-ad0d372c220c@linaro.org
> 
> I'm getting this on 32-bit build.
> 
>   In file included from /linux/tools/include/linux/bitmap.h:8,                    
>                    from util/arm-spe-decoder/arm-spe-pkt-decoder.c:11:            
>   util/arm-spe-decoder/arm-spe-pkt-decoder.c: In function 'arm_spe_pkt_desc_event':
>   util/arm-spe-decoder/arm-spe-pkt-decoder.c:377:37: error: passing argument 1 of 'find_first_bit' from incompatible pointer type [-Werror=incompatible-pointer-types]
>     377 |                 for_each_set_bit(i, &payload, 64) {                      
>   /linux/tools/include/linux/bitops.h:55:38: note: in definition of macro 'for_each_set_bit'
>      55 |         for ((bit) = find_first_bit((addr), (size));            \       
>         |                                      ^~~~                               
>   In file included from /linux/tools/include/linux/bitmap.h:9:                    
>   /linux/tools/include/linux/find.h:118:51: note: expected 'const long unsigned int *' but argument is of type 'u64 *' {aka 'long long unsigned int *'}
>     118 | unsigned long find_first_bit(const unsigned long *addr, unsigned long size)
>         |                              ~~~~~~~~~~~~~~~~~~~~~^~~~

I saw this as well.

- Arnaldo



More information about the linux-arm-kernel mailing list