Commit 8e5a5dc0 authored by Matthew Brost's avatar Matthew Brost
Browse files

drm/xe: Add modparam for SVM notifier size



Useful to experiment with notifier size and how it affects performance.

v3:
 - Pull missing changes including in following patch (Thomas)
v5:
 - Spell out power of 2 (Thomas)

Signed-off-by: default avatarMatthew Brost <matthew.brost@intel.com>
Reviewed-by: default avatarThomas Hellström <thomas.hellstrom@linux.intel.com>
Reviewed-by: default avatarHimal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20250306012657.3505757-31-matthew.brost@intel.com
parent d92eabb3
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -22,9 +22,13 @@ struct xe_modparam xe_modparam = {
	.guc_log_level = 3,
	.force_probe = CONFIG_DRM_XE_FORCE_PROBE,
	.wedged_mode = 1,
	.svm_notifier_size = 512,
	/* the rest are 0 by default */
};

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");

module_param_named_unsafe(force_execlist, xe_modparam.force_execlist, bool, 0444);
MODULE_PARM_DESC(force_execlist, "Force Execlist submission");

+1 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ struct xe_modparam {
	unsigned int max_vfs;
#endif
	int wedged_mode;
	u32 svm_notifier_size;
};

extern struct xe_modparam xe_modparam;
+3 −1
Original line number Diff line number Diff line
@@ -6,6 +6,7 @@
#include "xe_bo.h"
#include "xe_gt_tlb_invalidation.h"
#include "xe_migrate.h"
#include "xe_module.h"
#include "xe_pt.h"
#include "xe_svm.h"
#include "xe_ttm_vram_mgr.h"
@@ -607,7 +608,8 @@ int xe_svm_init(struct xe_vm *vm)

	err = drm_gpusvm_init(&vm->svm.gpusvm, "Xe SVM", &vm->xe->drm,
			      current->mm, xe_svm_devm_owner(vm->xe), 0,
			      vm->size, SZ_512M, &gpusvm_ops, fault_chunk_sizes,
			      vm->size, xe_modparam.svm_notifier_size * SZ_1M,
			      &gpusvm_ops, fault_chunk_sizes,
			      ARRAY_SIZE(fault_chunk_sizes));
	if (err)
		return err;