Commit bd75664b authored by Matt Roper's avatar Matt Roper Committed by Rodrigo Vivi

drm/xe: Clarify GT counting logic

The total number of GTs supported by a platform should be one primary
GT, one media GT (if media version >= 13), and a number of remote tile
GTs dependent on the graphics IP present.  Express this more clearly in
the device setup.

Note that xe->info.tile_count is inaccurately named; the rest of the
driver treats this as the GT count, not just the tile count.  This
will need to be cleaned up at some point down the road.
Reviewed-by: default avatarLucas De Marchi <lucas.demarchi@intel.com>
Link: https://lore.kernel.org/r/20230406235621.1914492-6-matthew.d.roper@intel.comSigned-off-by: default avatarMatt Roper <matthew.d.roper@intel.com>
Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
parent 33b270d9
...@@ -124,7 +124,7 @@ static const struct xe_graphics_desc graphics_xehpc = { ...@@ -124,7 +124,7 @@ static const struct xe_graphics_desc graphics_xehpc = {
XE_HP_FEATURES, XE_HP_FEATURES,
.dma_mask_size = 52, .dma_mask_size = 52,
.max_tiles = 2, .max_remote_tiles = 1,
.vm_max_level = 4, .vm_max_level = 4,
.vram_flags = XE_VRAM_FLAGS_NEED64K, .vram_flags = XE_VRAM_FLAGS_NEED64K,
...@@ -143,8 +143,6 @@ static const struct xe_graphics_desc graphics_xelpg = { ...@@ -143,8 +143,6 @@ static const struct xe_graphics_desc graphics_xelpg = {
BIT(XE_HW_ENGINE_CCS0), BIT(XE_HW_ENGINE_CCS0),
XE_HP_FEATURES, XE_HP_FEATURES,
.max_tiles = 2,
.has_flat_ccs = 0, .has_flat_ccs = 0,
}; };
...@@ -388,7 +386,6 @@ static void xe_info_init(struct xe_device *xe, ...@@ -388,7 +386,6 @@ static void xe_info_init(struct xe_device *xe,
xe->info.platform = desc->platform; xe->info.platform = desc->platform;
xe->info.dma_mask_size = desc->graphics->dma_mask_size; xe->info.dma_mask_size = desc->graphics->dma_mask_size;
xe->info.vram_flags = desc->graphics->vram_flags; xe->info.vram_flags = desc->graphics->vram_flags;
xe->info.tile_count = desc->graphics->max_tiles ?: 1;
xe->info.vm_max_level = desc->graphics->vm_max_level; xe->info.vm_max_level = desc->graphics->vm_max_level;
xe->info.supports_usm = desc->graphics->supports_usm; xe->info.supports_usm = desc->graphics->supports_usm;
xe->info.has_asid = desc->graphics->has_asid; xe->info.has_asid = desc->graphics->has_asid;
...@@ -397,6 +394,19 @@ static void xe_info_init(struct xe_device *xe, ...@@ -397,6 +394,19 @@ static void xe_info_init(struct xe_device *xe,
xe->info.has_range_tlb_invalidation = desc->graphics->has_range_tlb_invalidation; xe->info.has_range_tlb_invalidation = desc->graphics->has_range_tlb_invalidation;
xe->info.has_link_copy_engine = desc->graphics->has_link_copy_engine; xe->info.has_link_copy_engine = desc->graphics->has_link_copy_engine;
/*
* All platforms have at least one primary GT. Any platform with media
* version 13 or higher has an additional dedicated media GT. And
* depending on the graphics IP there may be additional "remote tiles."
* All of these together determine the overall GT count.
*
* FIXME: 'tile_count' here is misnamed since the rest of the driver
* treats it as the number of GTs rather than just the number of tiles.
*/
xe->info.tile_count = 1 + desc->graphics->max_remote_tiles;
if (MEDIA_VER(xe) >= 13)
xe->info.tile_count++;
xe->info.subplatform = subplatform_desc ? xe->info.subplatform = subplatform_desc ?
subplatform_desc->subplatform : XE_SUBPLATFORM_NONE; subplatform_desc->subplatform : XE_SUBPLATFORM_NONE;
xe->info.step = xe_step_get(xe); xe->info.step = xe_step_get(xe);
......
...@@ -13,12 +13,13 @@ struct xe_graphics_desc { ...@@ -13,12 +13,13 @@ struct xe_graphics_desc {
u8 rel; u8 rel;
u8 dma_mask_size; /* available DMA address bits */ u8 dma_mask_size; /* available DMA address bits */
u8 max_tiles; /* defaults to 1 if unset */
u8 vm_max_level; u8 vm_max_level;
u8 vram_flags; u8 vram_flags;
u64 hw_engine_mask; /* hardware engines provided by graphics IP */ u64 hw_engine_mask; /* hardware engines provided by graphics IP */
u8 max_remote_tiles:2;
u8 has_asid:1; u8 has_asid:1;
u8 has_flat_ccs:1; u8 has_flat_ccs:1;
u8 has_link_copy_engine:1; u8 has_link_copy_engine:1;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment