diff options
author | Koby Elbaz <kelbaz@habana.ai> | 2023-10-05 11:06:16 -0400 |
---|---|---|
committer | Rodrigo Vivi <rodrigo.vivi@intel.com> | 2023-12-21 11:42:58 -0500 |
commit | fdef72e02e20d7bc3c4b25607a2f8afa99d509eb (patch) | |
tree | 5fa5b0433e98780a00803951c54a2b6b8e7a5146 /drivers/gpu/drm | |
parent | 6360ebd1a12384efa984b44b057b79edce6484df (diff) |
drm/xe: add a flag to bypass multi-tile config from MTCFG reg
Skip reading this register as it is not relevant in the new devices.
Signed-off-by: Koby Elbaz <kelbaz@habana.ai>
Reviewed-by: Ofir Bitton <obitton@habana.ai>
Reviewed-by: Moti Haimovski <mhaimovski@habana.ai>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Diffstat (limited to 'drivers/gpu/drm')
-rw-r--r-- | drivers/gpu/drm/xe/xe_device_types.h | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/xe/xe_mmio.c | 24 | ||||
-rw-r--r-- | drivers/gpu/drm/xe/xe_pci.c | 2 |
3 files changed, 17 insertions, 11 deletions
diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h index f7c7d44a6465..a9bf9c784b7c 100644 --- a/drivers/gpu/drm/xe/xe_device_types.h +++ b/drivers/gpu/drm/xe/xe_device_types.h @@ -243,6 +243,8 @@ struct xe_device { u8 has_llc:1; /** @has_range_tlb_invalidation: Has range based TLB invalidations */ u8 has_range_tlb_invalidation:1; + /** @bypass_mtcfg: Bypass Multi-Tile configuration from MTCFG register */ + u8 bypass_mtcfg:1; } info; /** @irq: device interrupt state */ diff --git a/drivers/gpu/drm/xe/xe_mmio.c b/drivers/gpu/drm/xe/xe_mmio.c index 3ccc0af4430b..054ad752303f 100644 --- a/drivers/gpu/drm/xe/xe_mmio.c +++ b/drivers/gpu/drm/xe/xe_mmio.c @@ -318,26 +318,28 @@ int xe_mmio_probe_vram(struct xe_device *xe) static void xe_mmio_probe_tiles(struct xe_device *xe) { + u8 adj_tile_count = xe->info.tile_count; struct xe_gt *gt = xe_root_mmio_gt(xe); u32 mtcfg; - u8 adj_tile_count; u8 id; if (xe->info.tile_count == 1) return; - mtcfg = xe_mmio_read64_2x32(gt, XEHP_MTCFG_ADDR); - adj_tile_count = xe->info.tile_count = - REG_FIELD_GET(TILE_COUNT, mtcfg) + 1; + if (!xe->info.bypass_mtcfg) { + mtcfg = xe_mmio_read64_2x32(gt, XEHP_MTCFG_ADDR); + adj_tile_count = xe->info.tile_count = + REG_FIELD_GET(TILE_COUNT, mtcfg) + 1; - /* - * FIXME: Needs some work for standalone media, but should be impossible - * with multi-tile for now. - */ - xe->info.gt_count = xe->info.tile_count; + /* + * FIXME: Needs some work for standalone media, but should be impossible + * with multi-tile for now. + */ + xe->info.gt_count = xe->info.tile_count; - drm_info(&xe->drm, "tile_count: %d, adj_tile_count %d\n", - xe->info.tile_count, adj_tile_count); + drm_info(&xe->drm, "tile_count: %d, adj_tile_count %d\n", + xe->info.tile_count, adj_tile_count); + } if (xe->info.tile_count > 1) { const int mmio_bar = 0; diff --git a/drivers/gpu/drm/xe/xe_pci.c b/drivers/gpu/drm/xe/xe_pci.c index 0efe01885cf8..f8e813e17458 100644 --- a/drivers/gpu/drm/xe/xe_pci.c +++ b/drivers/gpu/drm/xe/xe_pci.c @@ -56,6 +56,7 @@ struct xe_device_desc { u8 require_force_probe:1; u8 is_dgfx:1; u8 has_llc:1; + u8 bypass_mtcfg:1; }; #define PLATFORM(x) \ @@ -553,6 +554,7 @@ static int xe_info_init(struct xe_device *xe, xe->info.graphics_name = graphics_desc->name; xe->info.media_name = media_desc ? media_desc->name : "none"; xe->info.has_llc = desc->has_llc; + xe->info.bypass_mtcfg = desc->bypass_mtcfg; xe->info.dma_mask_size = graphics_desc->dma_mask_size; xe->info.vram_flags = graphics_desc->vram_flags; |