[Intel-xe] [PATCH v3 03/16] drm/xe: Make DRM_XE_DEVICE_QUERY_ENGINES future proof
Souza, Jose
jose.souza at intel.com
Thu Nov 30 20:36:36 UTC 2023
On Thu, 2023-11-30 at 12:32 -0800, Dixit, Ashutosh wrote:
> On Thu, 30 Nov 2023 10:39:42 -0800, Francois Dugast wrote:
> >
> > From: José Roberto de Souza <jose.souza at intel.com>
> >
> > We have at least 2 future features(OA and future media engines
> > capabilities) that will require Xe to provide more information about
> > engines to UMDs.
> >
> > But this information should not just be added to
> > drm_xe_engine_class_instance for a couple of reasons:
> > - drm_xe_engine_class_instance is used as input to other structs/uAPIs
> > and those uAPIs don't care about any of these future new engine fields
> > - those new fields are useless information after initialization for
> > some UMDs, so it should not need to carry that around
> >
> > So here my proposal is to make DRM_XE_DEVICE_QUERY_ENGINES return an
> > array of drm_xe_query_engine_info that contain
> > drm_xe_engine_class_instance and 3 u64s to be used for future features.
> >
> > Reference OA:
> > https://patchwork.freedesktop.org/patch/558362/?series=121084&rev=6
>
> Incidentally we're proposing to remove OA info from
> drm_xe_engine_class_instance. The direction now is to collect all OA info
> into a separate struct which looks something like this at present, see
> drm_xe_engine_class_instance at the bottom:
okay, so one less user for this reserved fields...
>
> struct drm_xe_query_oa_units {
> /** @extensions: Pointer to the first extension struct, if any */
> __u64 extensions;
>
> /** @num_oa_units: number of OA units returned in oau[] */
> __u32 num_oa_units;
>
> /** @pad: MBZ */
> __u32 pad;
>
> /** @reserved: MBZ */
> __u64 reserved[4];
>
> /** @oa_units: OA units returned for this device */
> struct drm_xe_oa_unit {
> /** @oa_unit_id: OA unit ID */
> __u16 oa_unit_id;
>
> /** @oa_unit_type: OA unit type of @drm_xe_oa_unit_type */
> __u16 oa_unit_type;
>
> /** @gt_id: GT ID for this OA unit */
> __u16 gt_id;
drm_xe_engine_class_instance already have gt_id
>
> /** @open_stream: True if a stream is open on the OA unit */
> __u16 open_stream;
>
> /** @internal_events: True if internal events are available */
> __u16 internal_events;
>
> /** @pad: MBZ */
> __u16 pad;
>
> /** @capabilities: OA capabilities bit-mask */
> __u64 capabilities;
>
> /** @oa_timestamp_freq: OA timestamp freq */
> __u64 oa_timestamp_freq;
>
> /** @oa_buf_size: OA buffer size */
> __u64 oa_buf_size;
>
> /** @reserved: MBZ */
> __u64 reserved[4];
>
> /** @num_engines: number of engines in @eci array */
> __u64 num_engines;
>
> /** @eci: engines attached to this OA unit */
> struct drm_xe_engine_class_instance eci[];
> } oa_units[];
> };
More information about the Intel-xe
mailing list