]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/xe: Add device flag to indicate standalone MERT
authorLukasz Laguna <lukasz.laguna@intel.com>
Mon, 24 Nov 2025 19:02:34 +0000 (20:02 +0100)
committerMichal Wajdeczko <michal.wajdeczko@intel.com>
Tue, 25 Nov 2025 16:45:22 +0000 (17:45 +0100)
The MERT subsystem manages memory accesses between host and device. On
the Crescent Island platform, it requires direct management by the
driver.

Introduce a device flag and corresponding helpers to identify platforms
with standalone MERT, enabling proper initialization and handling.

Signed-off-by: Lukasz Laguna <lukasz.laguna@intel.com>
Reviewed-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Link: https://patch.msgid.link/20251124190237.20503-2-lukasz.laguna@intel.com
drivers/gpu/drm/xe/xe_device.h
drivers/gpu/drm/xe/xe_device_types.h
drivers/gpu/drm/xe/xe_pci.c
drivers/gpu/drm/xe/xe_pci_types.h

index 32cc6323b7f64eb6444a2d4296bf0e56563d6d88..6604b89330d517ec6d26f18dbf9a176b418e9c60 100644 (file)
@@ -172,6 +172,11 @@ static inline bool xe_device_has_lmtt(struct xe_device *xe)
        return IS_DGFX(xe);
 }
 
+static inline bool xe_device_has_mert(struct xe_device *xe)
+{
+       return xe->info.has_mert;
+}
+
 u32 xe_device_ccs_bytes(struct xe_device *xe, u64 size);
 
 void xe_device_snapshot_print(struct xe_device *xe, struct drm_printer *p);
index a03cc83aa26fe38c53f0cfa13ffb74da2d1ad77b..1907f868e77006f473d00351a1cb43c3fcd3a462 100644 (file)
@@ -303,6 +303,8 @@ struct xe_device {
                u8 has_mbx_power_limits:1;
                /** @info.has_mem_copy_instr: Device supports MEM_COPY instruction */
                u8 has_mem_copy_instr:1;
+               /** @info.has_mert: Device has standalone MERT */
+               u8 has_mert:1;
                /** @info.has_pxp: Device has PXP support */
                u8 has_pxp:1;
                /** @info.has_range_tlb_inval: Has range based TLB invalidations */
index 10eb18bc740e0393d917034fae7d244b00516871..4b4c6aa800ecae0515f3d3ac0ae792bc2af0b2ff 100644 (file)
@@ -407,6 +407,7 @@ static const struct xe_device_desc cri_desc = {
        .has_display = false,
        .has_flat_ccs = false,
        .has_mbx_power_limits = true,
+       .has_mert = true,
        .has_sriov = true,
        .max_gt_per_tile = 2,
        .require_force_probe = true,
@@ -671,6 +672,7 @@ static int xe_info_init_early(struct xe_device *xe,
        xe->info.has_heci_cscfi = desc->has_heci_cscfi;
        xe->info.has_late_bind = desc->has_late_bind;
        xe->info.has_llc = desc->has_llc;
+       xe->info.has_mert = desc->has_mert;
        xe->info.has_pxp = desc->has_pxp;
        xe->info.has_sriov = xe_configfs_primary_gt_allowed(to_pci_dev(xe->drm.dev)) &&
                desc->has_sriov;
index 9892c063a9c543a25f6f2d7d4e4cdce898d3effc..d89ee5d824399a36b58e382ced7e8f4d4576d132 100644 (file)
@@ -47,6 +47,7 @@ struct xe_device_desc {
        u8 has_llc:1;
        u8 has_mbx_power_limits:1;
        u8 has_mem_copy_instr:1;
+       u8 has_mert:1;
        u8 has_pxp:1;
        u8 has_sriov:1;
        u8 needs_scratch:1;