Message ID | 20250129195212.745731-32-matthew.brost@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Introduce GPU SVM and Xe SVM implementation | expand |
On Wed, 2025-01-29 at 11:52 -0800, Matthew Brost wrote: > Useful to experiment with notifier size and how it affects > performance. > > v3: > - Pull missing changes including in following patch (Thomas) > > Signed-off-by: Matthew Brost <matthew.brost@intel.com> Reviewed-by: Thomas Hellström <thomas.hellstrom@linux.intel.com> > --- > drivers/gpu/drm/xe/xe_module.c | 4 ++++ > drivers/gpu/drm/xe/xe_module.h | 1 + > drivers/gpu/drm/xe/xe_svm.c | 4 +++- > 3 files changed, 8 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/xe/xe_module.c > b/drivers/gpu/drm/xe/xe_module.c > index 0f2c20e9204a..2126e99ede01 100644 > --- a/drivers/gpu/drm/xe/xe_module.c > +++ b/drivers/gpu/drm/xe/xe_module.c > @@ -25,9 +25,13 @@ struct xe_modparam xe_modparam = { > .max_vfs = IS_ENABLED(CONFIG_DRM_XE_DEBUG) ? ~0 : 0, > #endif > .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 pow2"); > + > module_param_named_unsafe(force_execlist, > xe_modparam.force_execlist, bool, 0444); > MODULE_PARM_DESC(force_execlist, "Force Execlist submission"); > > diff --git a/drivers/gpu/drm/xe/xe_module.h > b/drivers/gpu/drm/xe/xe_module.h > index 161a5e6f717f..5a3bfea8b7b4 100644 > --- a/drivers/gpu/drm/xe/xe_module.h > +++ b/drivers/gpu/drm/xe/xe_module.h > @@ -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; > diff --git a/drivers/gpu/drm/xe/xe_svm.c > b/drivers/gpu/drm/xe/xe_svm.c > index 0df924ca8ed1..f291b2eb2073 100644 > --- a/drivers/gpu/drm/xe/xe_svm.c > +++ b/drivers/gpu/drm/xe/xe_svm.c > @@ -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" > @@ -596,7 +597,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;
diff --git a/drivers/gpu/drm/xe/xe_module.c b/drivers/gpu/drm/xe/xe_module.c index 0f2c20e9204a..2126e99ede01 100644 --- a/drivers/gpu/drm/xe/xe_module.c +++ b/drivers/gpu/drm/xe/xe_module.c @@ -25,9 +25,13 @@ struct xe_modparam xe_modparam = { .max_vfs = IS_ENABLED(CONFIG_DRM_XE_DEBUG) ? ~0 : 0, #endif .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 pow2"); + module_param_named_unsafe(force_execlist, xe_modparam.force_execlist, bool, 0444); MODULE_PARM_DESC(force_execlist, "Force Execlist submission"); diff --git a/drivers/gpu/drm/xe/xe_module.h b/drivers/gpu/drm/xe/xe_module.h index 161a5e6f717f..5a3bfea8b7b4 100644 --- a/drivers/gpu/drm/xe/xe_module.h +++ b/drivers/gpu/drm/xe/xe_module.h @@ -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; diff --git a/drivers/gpu/drm/xe/xe_svm.c b/drivers/gpu/drm/xe/xe_svm.c index 0df924ca8ed1..f291b2eb2073 100644 --- a/drivers/gpu/drm/xe/xe_svm.c +++ b/drivers/gpu/drm/xe/xe_svm.c @@ -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" @@ -596,7 +597,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;
Useful to experiment with notifier size and how it affects performance. v3: - Pull missing changes including in following patch (Thomas) Signed-off-by: Matthew Brost <matthew.brost@intel.com> --- drivers/gpu/drm/xe/xe_module.c | 4 ++++ drivers/gpu/drm/xe/xe_module.h | 1 + drivers/gpu/drm/xe/xe_svm.c | 4 +++- 3 files changed, 8 insertions(+), 1 deletion(-)