mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-09-01 02:21:20 +00:00
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>
This commit is contained in:
parent
6360ebd1a1
commit
fdef72e02e
@ -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 */
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user