drm/xe: Add has_range_tlb_invalidation device attribute
authorMatthew Brost <matthew.brost@intel.com>
Wed, 25 Jan 2023 00:33:09 +0000 (16:33 -0800)
committerRodrigo Vivi <rodrigo.vivi@intel.com>
Tue, 19 Dec 2023 23:27:46 +0000 (18:27 -0500)
This will help implementing range based TLB invalidations.

Signed-off-by: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Reviewed-by: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
drivers/gpu/drm/xe/xe_device_types.h
drivers/gpu/drm/xe/xe_pci.c

index 81bc293..ef723b0 100644 (file)
@@ -87,6 +87,8 @@ struct xe_device {
                bool has_flat_ccs;
                /** @has_4tile: Whether tile-4 tiling is supported */
                bool has_4tile;
+               /** @has_range_tlb_invalidation: Has range based TLB invalidations */
+               bool has_range_tlb_invalidation;
        } info;
 
        /** @irq: device interrupt state */
index 67fd9c3..2482ce8 100644 (file)
@@ -70,6 +70,7 @@ struct xe_device_desc {
        bool supports_usm;
        bool has_flat_ccs;
        bool has_4tile;
+       bool has_range_tlb_invalidation;
 };
 
 #define PLATFORM(x)            \
@@ -139,6 +140,7 @@ static const struct xe_device_desc dg1_desc = {
        .require_force_probe = true, \
        .graphics_ver = 12, \
        .graphics_rel = 50, \
+       .has_range_tlb_invalidation = true, \
        .has_flat_ccs = true, \
        .dma_mask_size = 46, \
        .max_tiles = 1, \
@@ -255,6 +257,7 @@ static const struct xe_device_desc mtl_desc = {
        .max_tiles = 2,
        .vm_max_level = 3,
        .media_ver = 13,
+       .has_range_tlb_invalidation = true,
        PLATFORM(XE_METEORLAKE),
        .extra_gts = xelpmp_gts,
        .platform_engine_mask = MTL_MAIN_ENGINES,
@@ -407,6 +410,7 @@ static int xe_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
        xe->info.supports_usm = desc->supports_usm;
        xe->info.has_flat_ccs = desc->has_flat_ccs;
        xe->info.has_4tile = desc->has_4tile;
+       xe->info.has_range_tlb_invalidation = desc->has_range_tlb_invalidation;
 
        spd = subplatform_get(xe, desc);
        xe->info.subplatform = spd ? spd->subplatform : XE_SUBPLATFORM_NONE;