[PATCH 1/4] drm/xe/pmu: Enable PMU interface
Belgaumkar, Vinay
vinay.belgaumkar at intel.com
Thu Aug 29 22:10:11 UTC 2024
On 8/28/2024 12:33 PM, Lucas De Marchi wrote:
> On Tue, Aug 27, 2024 at 09:41:04AM GMT, Vinay Belgaumkar wrote:
>> diff --git a/include/uapi/drm/xe_drm.h b/include/uapi/drm/xe_drm.h
>> index b6fbe4988f2e..de6f39db618c 100644
>> --- a/include/uapi/drm/xe_drm.h
>> +++ b/include/uapi/drm/xe_drm.h
>> @@ -1389,6 +1389,40 @@ struct drm_xe_wait_user_fence {
>> __u64 reserved[2];
>> };
>>
>> +/**
>> + * DOC: XE PMU event config IDs
>> + *
>> + * Check 'man perf_event_open' to use the ID's XE_PMU_XXXX listed in
>> xe_drm.h
>> + * in 'struct perf_event_attr' as part of perf_event_open syscall to
>> read a
>> + * particular event.
>> + *
>> + * For example to open the XE_PMU_RENDER_GROUP_BUSY(0):
>> + *
>> + * .. code-block:: C
>> + *
>> + * struct perf_event_attr attr;
>> + * long long count;
>> + * int cpu = 0;
>> + * int fd;
>> + *
>> + * memset(&attr, 0, sizeof(struct perf_event_attr));
>> + * attr.type = type; // eg:
>> /sys/bus/event_source/devices/xe_0000_56_00.0/type
>> + * attr.read_format = PERF_FORMAT_TOTAL_TIME_ENABLED;
>> + * attr.use_clockid = 1;
>> + * attr.clockid = CLOCK_MONOTONIC;
>> + * attr.config = XE_PMU_RENDER_GROUP_BUSY(0);
>> + *
>> + * fd = syscall(__NR_perf_event_open, &attr, -1, cpu, -1, 0);
>> + */
>> +
>> +/*
>> + * Top bits of every counter are GT id.
>> + */
>> +#define __XE_PMU_GT_SHIFT (56)
>> +
>> +#define ___XE_PMU_OTHER(gt, x) \
>> + (((__u64)(x)) | ((__u64)(gt) << __XE_PMU_GT_SHIFT))
>> +
>
> The perf uapi is self-describing and users should look up on sysfs what
> to use. Example for i915 since it's what I'm currently working on:
>
> $ cat /sys/bus/event_source/devices/i915/events/actual-frequency
> config=0x100000
> $ cat /sys/bus/event_source/devices/i915/events/actual-frequency.unit
> M
>
> `perf list` works fine and doesn't know anything about this xe-only
> header. Why would we add anything here rather than encourage other users
> to read from the generic interface?
Agree. perf list | grep rc6 is sufficient.
Thanks,
Vinay.
>
> Lucas De Marchi
More information about the Intel-xe
mailing list