[PATCH 1/4] perf event: Add simd_flags field to perf_sample

James Clark james.clark at arm.com
Tue Dec 20 02:22:32 PST 2022



On 19/12/2022 18:21, Namhyung Kim wrote:
> Hi James,
> 
> On Mon, Dec 19, 2022 at 8:13 AM James Clark <james.clark at arm.com> wrote:
>>
>> From: German Gomez <german.gomez at arm.com>
>>
>> Add new field to the struct perf_sample to store flags related to SIMD
>> ops.
>>
>> It will be used to store SIMD information from SVE and NEON when
>> profiling using ARM SPE.
>>
>> Signed-off-by: German Gomez <german.gomez at arm.com>
>> Signed-off-by: James Clark <james.clark at arm.com>
>> ---
>>  tools/perf/util/sample.h | 13 +++++++++++++
>>  1 file changed, 13 insertions(+)
>>
>> diff --git a/tools/perf/util/sample.h b/tools/perf/util/sample.h
>> index 60ec79d4eea4..bdf52faf165f 100644
>> --- a/tools/perf/util/sample.h
>> +++ b/tools/perf/util/sample.h
>> @@ -66,6 +66,18 @@ struct aux_sample {
>>         void *data;
>>  };
>>
>> +struct simd_flags {
>> +       u64     arch:1, /* architecture (isa) */
>> +               pred:2; /* predication */
> 
> Can we reserve more bits for possible future extension or
> other arch support?  It seems to be too tight for each field.
> Do you plan to add more info to the struct in the future?

As far as I can see because this is userspace only, reserving bits
doesn't be done ahead of time. When we need more bits we can just add
it. It never gets written to a file either so there is no need for
backwards compatibility.

> 
> Thanks,
> Namhyung
> 
> 
>> +};
>> +
>> +/* simd architecture flags */
>> +#define SIMD_OP_FLAGS_ARCH_SVE         0x01    /* ARM SVE */
>> +
>> +/* simd predicate flags */
>> +#define SIMD_OP_FLAGS_PRED_PARTIAL     0x01    /* partial predicate */
>> +#define SIMD_OP_FLAGS_PRED_EMPTY       0x02    /* empty predicate */
>> +
>>  struct perf_sample {
>>         u64 ip;
>>         u32 pid, tid;
>> @@ -103,6 +115,7 @@ struct perf_sample {
>>         struct stack_dump user_stack;
>>         struct sample_read read;
>>         struct aux_sample aux_sample;
>> +       struct simd_flags simd_flags;
>>  };
>>
>>  /*
>> --
>> 2.25.1
>>



More information about the linux-arm-kernel mailing list