summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorKoby Elbaz <kelbaz@habana.ai>2023-10-05 18:06:16 +0300
committerRodrigo Vivi <rodrigo.vivi@intel.com>2023-12-21 19:42:58 +0300
commitfdef72e02e20d7bc3c4b25607a2f8afa99d509eb (patch)
tree5fa5b0433e98780a00803951c54a2b6b8e7a5146 /drivers
parent6360ebd1a12384efa984b44b057b79edce6484df (diff)
downloadlinux-fdef72e02e20d7bc3c4b25607a2f8afa99d509eb.tar.xz
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')
-rw-r--r--drivers/gpu/drm/xe/xe_device_types.h2
-rw-r--r--drivers/gpu/drm/xe/xe_mmio.c24
-rw-r--r--drivers/gpu/drm/xe/xe_pci.c2
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;