mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-06 10:58:48 +09:00
UPSTREAM: 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>
(cherry picked from commit 12f1bacfc5)
Signed-off-by: Will Deacon <willdeacon@google.com>
Bug: 233587962
Bug: 233588291
Change-Id: I96f40351e244d3e9d653ba9133f2c2324bb556f2
This commit is contained in:
@@ -489,6 +489,30 @@ static int __init sve_sysctl_init(void)
|
||||
static int __init sve_sysctl_init(void) { return 0; }
|
||||
#endif /* ! (CONFIG_ARM64_SVE && CONFIG_SYSCTL) */
|
||||
|
||||
#if defined(CONFIG_ARM64_SME) && defined(CONFIG_SYSCTL)
|
||||
static struct ctl_table sme_default_vl_table[] = {
|
||||
{
|
||||
.procname = "sme_default_vector_length",
|
||||
.mode = 0644,
|
||||
.proc_handler = vec_proc_do_default_vl,
|
||||
.extra1 = &vl_info[ARM64_VEC_SME],
|
||||
},
|
||||
{ }
|
||||
};
|
||||
|
||||
static int __init sme_sysctl_init(void)
|
||||
{
|
||||
if (system_supports_sme())
|
||||
if (!register_sysctl("abi", sme_default_vl_table))
|
||||
return -EINVAL;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#else /* ! (CONFIG_ARM64_SME && CONFIG_SYSCTL) */
|
||||
static int __init sme_sysctl_init(void) { return 0; }
|
||||
#endif /* ! (CONFIG_ARM64_SME && CONFIG_SYSCTL) */
|
||||
|
||||
#define ZREG(sve_state, vq, n) ((char *)(sve_state) + \
|
||||
(SVE_SIG_ZREG_OFFSET(vq, n) - SVE_SIG_REGS_OFFSET))
|
||||
|
||||
@@ -1684,6 +1708,9 @@ static int __init fpsimd_init(void)
|
||||
if (cpu_have_named_feature(SME) && !cpu_have_named_feature(SVE))
|
||||
pr_notice("SME is implemented but not SVE\n");
|
||||
|
||||
return sve_sysctl_init();
|
||||
sve_sysctl_init();
|
||||
sme_sysctl_init();
|
||||
|
||||
return 0;
|
||||
}
|
||||
core_initcall(fpsimd_init);
|
||||
|
||||
Reference in New Issue
Block a user