mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-23 11:55:58 -04:00
drm/xe: Drop 'force_execlist' module parameter
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>
This commit is contained in:
@@ -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));
|
||||
|
||||
@@ -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__) \
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -404,8 +404,7 @@ static unsigned int dss_per_group(struct xe_gt *gt)
|
||||
* 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)
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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 "
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user