提交 643f97e6 编写于 作者: M Mark Brown 提交者: Wang ShaoBo

arm64/sme: Implement sysctl to set the default vector length

mainline inclusion
from mainline-v5.19-rc1
commit 12f1bacf
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I5ITJT
CVE: NA

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=12f1bacfc5d9e55bedbfc7a25bf42ff6d19d1dab

-------------------------------------------------

As for SVE provide a sysctl which allows the default SME vector length to
be configured.
Signed-off-by: NMark Brown <broonie@kernel.org>
Reviewed-by: NCatalin Marinas <catalin.marinas@arm.com>
Link: https://lore.kernel.org/r/20220419112247.711548-11-broonie@kernel.orgSigned-off-by: NCatalin Marinas <catalin.marinas@arm.com>
Signed-off-by: NWang ShaoBo <bobo.shaobowang@huawei.com>
上级 1d41cc71
...@@ -477,6 +477,30 @@ static int __init sve_sysctl_init(void) ...@@ -477,6 +477,30 @@ static int __init sve_sysctl_init(void)
static int __init sve_sysctl_init(void) { return 0; } static int __init sve_sysctl_init(void) { return 0; }
#endif /* ! (CONFIG_ARM64_SVE && CONFIG_SYSCTL) */ #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) + \ #define ZREG(sve_state, vq, n) ((char *)(sve_state) + \
(SVE_SIG_ZREG_OFFSET(vq, n) - SVE_SIG_REGS_OFFSET)) (SVE_SIG_ZREG_OFFSET(vq, n) - SVE_SIG_REGS_OFFSET))
...@@ -1672,6 +1696,9 @@ static int __init fpsimd_init(void) ...@@ -1672,6 +1696,9 @@ static int __init fpsimd_init(void)
if (cpu_have_named_feature(SME) && !cpu_have_named_feature(SVE)) if (cpu_have_named_feature(SME) && !cpu_have_named_feature(SVE))
pr_notice("SME is implemented but not SVE\n"); 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); core_initcall(fpsimd_init);
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册