Skip to content

Commit 12f1bac

Browse files
brooniectmarinas
authored andcommitted
arm64/sme: Implement sysctl to set the default vector length
As for SVE provide a sysctl which allows the default SME vector length to be configured. Signed-off-by: Mark Brown <broonie@kernel.org> Reviewed-by: Catalin Marinas <catalin.marinas@arm.com> Link: https://lore.kernel.org/r/20220419112247.711548-11-broonie@kernel.org Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
1 parent b42990d commit 12f1bac

File tree

1 file changed

+28
-1
lines changed

1 file changed

+28
-1
lines changed

arch/arm64/kernel/fpsimd.c

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -489,6 +489,30 @@ static int __init sve_sysctl_init(void)
489489
static int __init sve_sysctl_init(void) { return 0; }
490490
#endif /* ! (CONFIG_ARM64_SVE && CONFIG_SYSCTL) */
491491

492+
#if defined(CONFIG_ARM64_SME) && defined(CONFIG_SYSCTL)
493+
static struct ctl_table sme_default_vl_table[] = {
494+
{
495+
.procname = "sme_default_vector_length",
496+
.mode = 0644,
497+
.proc_handler = vec_proc_do_default_vl,
498+
.extra1 = &vl_info[ARM64_VEC_SME],
499+
},
500+
{ }
501+
};
502+
503+
static int __init sme_sysctl_init(void)
504+
{
505+
if (system_supports_sme())
506+
if (!register_sysctl("abi", sme_default_vl_table))
507+
return -EINVAL;
508+
509+
return 0;
510+
}
511+
512+
#else /* ! (CONFIG_ARM64_SME && CONFIG_SYSCTL) */
513+
static int __init sme_sysctl_init(void) { return 0; }
514+
#endif /* ! (CONFIG_ARM64_SME && CONFIG_SYSCTL) */
515+
492516
#define ZREG(sve_state, vq, n) ((char *)(sve_state) + \
493517
(SVE_SIG_ZREG_OFFSET(vq, n) - SVE_SIG_REGS_OFFSET))
494518

@@ -1687,6 +1711,9 @@ static int __init fpsimd_init(void)
16871711
if (cpu_have_named_feature(SME) && !cpu_have_named_feature(SVE))
16881712
pr_notice("SME is implemented but not SVE\n");
16891713

1690-
return sve_sysctl_init();
1714+
sve_sysctl_init();
1715+
sme_sysctl_init();
1716+
1717+
return 0;
16911718
}
16921719
core_initcall(fpsimd_init);

0 commit comments

Comments
 (0)