[Intel-xe] [PATCH v2 34/50] drm/xe/uapi: Move memory_region masks from GT to engine
Souza, Jose
jose.souza at intel.com
Thu Nov 9 16:35:19 UTC 2023
On Thu, 2023-11-09 at 08:29 -0800, José Roberto de Souza wrote:
> On Fri, 2023-11-03 at 14:34 +0000, Francois Dugast wrote:
> > From: Rodrigo Vivi <rodrigo.vivi at intel.com>
> >
> > In the Tiled platforms, the memory is more tied to the Tile
> > than to the GT.
> > The distance (near vs far) makes more sense from the Engine
> > perspective than from the GT perspective.
>
> why not add a uAPI to query tile information?
> this is duplicating a tile information onto every engine of that tile.
> we could leave reserved fields in the tile uAPI to include additional information that might be relevant in future.
other issue here and in other patches of this huge patch series.
a previous patch in this series renamed near_mem_regions, then this one moves it to other struct... please drop the first patch and rename and move it
into a single patch.
a series as big as this one will cause reviews in KMD and UMD to take a while...
>
> >
> > So, let's move this out from the GT and into the engine info.
> >
> > Signed-off-by: Rodrigo Vivi <rodrigo.vivi at intel.com>
> > ---
> > drivers/gpu/drm/xe/xe_query.c | 14 +++++++-------
> > include/uapi/drm/xe_drm.h | 27 ++++++++++++++-------------
> > 2 files changed, 21 insertions(+), 20 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/xe/xe_query.c b/drivers/gpu/drm/xe/xe_query.c
> > index aa5743e2e4d0..49a9b36f1193 100644
> > --- a/drivers/gpu/drm/xe/xe_query.c
> > +++ b/drivers/gpu/drm/xe/xe_query.c
> > @@ -217,6 +217,13 @@ static int query_engines(struct xe_device *xe,
> > hwe->logical_instance;
> > hw_engine_info[i].instance.gt_id = gt->info.id;
> > hw_engine_info[i].instance.pad = 0;
> > + if (!IS_DGFX(xe))
> > + hw_engine_info[i].near_mem_regions = 0x1;
> > + else
> > + hw_engine_info[i].near_mem_regions =
> > + BIT(gt_to_tile(gt)->id) << 1;
> > + hw_engine_info[i].far_mem_regions = xe->info.mem_region_mask ^
> > + hw_engine_info[i].near_mem_regions;
> > memset(hw_engine_info->reserved, 0, sizeof(hw_engine_info->reserved));
> >
> > i++;
> > @@ -377,13 +384,6 @@ static int query_gt_list(struct xe_device *xe, struct drm_xe_device_query *query
> > gt_list->gt_list[id].type = DRM_XE_QUERY_GT_TYPE_MAIN;
> > gt_list->gt_list[id].gt_id = gt->info.id;
> > gt_list->gt_list[id].clock_freq = gt->info.clock_freq;
> > - if (!IS_DGFX(xe))
> > - gt_list->gt_list[id].near_mem_regions = 0x1;
> > - else
> > - gt_list->gt_list[id].near_mem_regions =
> > - BIT(gt_to_tile(gt)->id) << 1;
> > - gt_list->gt_list[id].far_mem_regions = xe->info.mem_region_mask ^
> > - gt_list->gt_list[id].near_mem_regions;
> > }
> >
> > if (copy_to_user(query_ptr, gt_list, size)) {
> > diff --git a/include/uapi/drm/xe_drm.h b/include/uapi/drm/xe_drm.h
> > index 5164ed150a2e..8e84ef6fd46e 100644
> > --- a/include/uapi/drm/xe_drm.h
> > +++ b/include/uapi/drm/xe_drm.h
> > @@ -228,6 +228,20 @@ struct drm_xe_query_engine_info {
> > /** @instance: The @drm_xe_engine_class_instance */
> > struct drm_xe_engine_class_instance instance;
> >
> > + /**
> > + * @near_mem_regions: Bit mask of instances from
> > + * drm_xe_query_mem_regions that is near this engine.
> > + */
> > + __u64 near_mem_regions;
> > + /**
> > + * @far_mem_regions: Bit mask of instances from
> > + * drm_xe_query_mem_regions that is far from this engine.
> > + * In general, it has extra indirections when compared to the
> > + * @near_mem_regions. For a discrete device this could mean system
> > + * memory and memory living in a different Tile.
> > + */
> > + __u64 far_mem_regions;
> > +
> > /** @reserved: Reserved */
> > __u64 reserved[3];
> > };
> > @@ -401,19 +415,6 @@ struct drm_xe_query_gt {
> > __u16 gt_id;
> > /** @clock_freq: A clock frequency for timestamp */
> > __u32 clock_freq;
> > - /**
> > - * @near_mem_regions: Bit mask of instances from
> > - * drm_xe_query_mem_regions that is near the current engines of this GT.
> > - */
> > - __u64 near_mem_regions;
> > - /**
> > - * @far_mem_regions: Bit mask of instances from
> > - * drm_xe_query_mem_regions that is far from the engines of this GT.
> > - * In general, it has extra indirections when compared to the
> > - * @near_mem_regions. For a discrete device this could mean system
> > - * memory and memory living in a different Tile.
> > - */
> > - __u64 far_mem_regions;
> > /** @reserved: Reserved */
> > __u64 reserved[8];
> > };
>
More information about the Intel-xe
mailing list