[PATCH 1/4] drm/xe/pmu: Enable PMU interface

Aravind Iddamsetty aravind.iddamsetty at linux.intel.com
Mon Sep 2 05:59:05 UTC 2024


On 30/08/24 03:40, Belgaumkar, Vinay wrote:
>
> 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.

This was previously asked by Rodrigo https://patchwork.freedesktop.org/patch/555013/?series=119504&rev=5

so what changed from then to now.

Thanks,
Aravind.

>
> Thanks,
>
> Vinay.
>
>>
>> Lucas De Marchi


More information about the Intel-xe mailing list