]> git.hungrycats.org Git - linux/commitdiff
drm/xe: Drop 'force_execlist' module parameter
authorMatt Roper <matthew.d.roper@intel.com>
Fri, 26 Jun 2026 21:39:35 +0000 (14:39 -0700)
committerMatt Roper <matthew.d.roper@intel.com>
Tue, 30 Jun 2026 15:14:22 +0000 (08:14 -0700)
During very early development of the Xe driver the force_execlist module
parameter could be used to exercise some parts of the driver in a
GuC-less manner.  This was primarily intended to ensure that the driver
was being designed and developed with proper modularity and layering;
use of the GuC firmware has always been considered mandatory for any
real Xe driver operation.  The "execlist" implementation in the driver
was never completed, and has further bitrotted over time to the point
where it hangs during execution of even the simplest IGT tests like
xe_exec_store now.

Drop the force_execlist parameter; it's broken and isn't going to get
fixed.  In the (very unlikely) event that we decide to bring something
like this back in the future, it would need to be as a per-device
configfs setting rather than a driver-wide module parameter.

The "execlist" implementation is now dead code, so it will probably also
be removed sometime in the near future.  There's a bit more general
refactoring we might want to do first before we take that step, so for
now we're just removing the module parameter.

Reviewed-by: Maarten Lankhorst <dev@lankhorst.se>
Link: https://patch.msgid.link/20260626-remove_execlists-v1-1-2584d8c4a6f2@intel.com
Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
drivers/gpu/drm/xe/xe_debugfs.c
drivers/gpu/drm/xe/xe_device.h
drivers/gpu/drm/xe/xe_device_types.h
drivers/gpu/drm/xe/xe_gt_mcr.c
drivers/gpu/drm/xe/xe_guc_tlb_inval.c
drivers/gpu/drm/xe/xe_module.c
drivers/gpu/drm/xe/xe_module.h
drivers/gpu/drm/xe/xe_pci.c

index 22b471303984a684867c1b0b28aa866537e858ba..3c018dbccc0766c016f0330299be766454133e78 100644 (file)
@@ -117,7 +117,6 @@ static int info(struct seq_file *m, void *data)
        drm_printf(&p, "revid %d\n", xe->info.revid);
        drm_printf(&p, "tile_count %d\n", xe->info.tile_count);
        drm_printf(&p, "vm_max_level %d\n", xe->info.vm_max_level);
-       drm_printf(&p, "force_execlist %s\n", str_yes_no(xe->info.force_execlist));
        drm_printf(&p, "has_flat_ccs %s\n", str_yes_no(xe->info.has_flat_ccs));
        drm_printf(&p, "has_usm %s\n", str_yes_no(xe->info.has_usm));
        drm_printf(&p, "skip_guc_pc %s\n", str_yes_no(xe->info.skip_guc_pc));
index 975768a6a9c838675d3e92d30151fdf73021f11c..8056d8bd7d6d837c47b42b13cc555fa246771156 100644 (file)
@@ -116,7 +116,7 @@ static inline struct xe_mmio *xe_root_tile_mmio(struct xe_device *xe)
 
 static inline bool xe_device_uc_enabled(struct xe_device *xe)
 {
-       return !xe->info.force_execlist;
+       return true;
 }
 
 #define for_each_tile(tile__, xe__, id__) \
index 4e2f115f14e2032c7c2a08fe31a562c7e21419a3..46a9e9fad7a940808470d9b2ae56a13cceb84741 100644 (file)
@@ -144,8 +144,6 @@ struct xe_device {
                 * Keep all flags below alphabetically sorted
                 */
 
-               /** @info.force_execlist: Forced execlist submission */
-               u8 force_execlist:1;
                /** @info.has_access_counter: Device supports access counter */
                u8 has_access_counter:1;
                /** @info.has_asid: Has address space ID */
index d11cc9e25cdb20bc08bd15df87dbd1078f393314..a97b236dab7c95e2e741f1d31d0281b61a336fed 100644 (file)
@@ -404,8 +404,7 @@ fallback:
         * Some older platforms don't have tables or don't have complete tables.
         * Newer platforms should always have the required info.
         */
-       if (GRAPHICS_VERx100(gt_to_xe(gt)) >= 2000 &&
-           !gt_to_xe(gt)->info.force_execlist)
+       if (GRAPHICS_VERx100(gt_to_xe(gt)) >= 2000)
                xe_gt_err(gt, "Slice/Subslice counts missing from hwconfig table; using typical fallback values\n");
 
        if (gt_to_xe(gt)->info.platform == XE_PVC)
index cf6d106e6036ace990b1ca9867cbc8af316c9de5..046d0655122f1fe16d0156800a04cc01401e9def 100644 (file)
@@ -208,9 +208,6 @@ static int send_tlb_inval_asid_ppgtt(struct xe_tlb_inval *tlb_inval, u32 seqno,
 
        lockdep_assert_held(&tlb_inval->seqno_lock);
 
-       if (guc_to_xe(guc)->info.force_execlist)
-               return -ECANCELED;
-
        return send_tlb_inval_ppgtt(guc, seqno, start, end, asid,
                                    XE_GUC_TLB_INVAL_PAGE_SELECTIVE, prl_sa);
 }
@@ -228,9 +225,6 @@ static int send_tlb_inval_ctx_ppgtt(struct xe_tlb_inval *tlb_inval, u32 seqno,
 
        lockdep_assert_held(&tlb_inval->seqno_lock);
 
-       if (xe->info.force_execlist)
-               return -ECANCELED;
-
        vm = xe_device_asid_to_vm(xe, asid);
        if (IS_ERR(vm))
                return PTR_ERR(vm);
index 4cb5781829122950af0e2bb69a1a70c02277bd74..39e4fc85f019ce5c49c1b73f4fbd1fade2c859a3 100644 (file)
@@ -36,9 +36,6 @@ module_param_named(svm_notifier_size, xe_modparam.svm_notifier_size, uint, 0600)
 MODULE_PARM_DESC(svm_notifier_size, "Set the svm notifier size in MiB, must be power of 2 "
                 "[default=" __stringify(XE_DEFAULT_SVM_NOTIFIER_SIZE) "]");
 
-module_param_named_unsafe(force_execlist, xe_modparam.force_execlist, bool, 0444);
-MODULE_PARM_DESC(force_execlist, "Force Execlist submission");
-
 #if IS_ENABLED(CONFIG_DRM_XE_DISPLAY)
 module_param_named(probe_display, xe_modparam.probe_display, bool, 0444);
 MODULE_PARM_DESC(probe_display, "Probe display HW, otherwise it's left untouched "
index 79cb9639c0f3df6b6ebab70eb2e11d7d23694028..c751534712484173cd0372db8644a6d8ed7a2de5 100644 (file)
@@ -10,7 +10,6 @@
 
 /* Module modprobe variables */
 struct xe_modparam {
-       bool force_execlist;
        bool probe_display;
        int force_vram_bar_size;
        int guc_log_level;
index c9d4fb6c4ff6ab570fd4aa9484363406823bdb1f..03362480e3e0a96cbeb4faaf54bc0a7d21738693 100644 (file)
@@ -792,7 +792,6 @@ static int xe_info_init_early(struct xe_device *xe,
        xe->info.probe_display = IS_ENABLED(CONFIG_DRM_XE_DISPLAY) &&
                                 xe_modparam.probe_display &&
                                 desc->has_display;
-       xe->info.force_execlist = xe_modparam.force_execlist;
 
        xe_assert(xe, desc->max_gt_per_tile > 0);
        xe_assert(xe, desc->max_gt_per_tile <= XE_MAX_GT_PER_TILE);