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;
u8 require_force_probe:1;
u8 is_dgfx:1;
u8 has_llc:1;
+ u8 bypass_mtcfg:1;
};
#define PLATFORM(x) \
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;