mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-29 22:02:02 +00:00
kselftest/arm64: sme: Add SME support to vlset
The Scalable Matrix Extenions (SME) introduces additional register state with configurable vector lengths, similar to SVE but configured separately. Extend vlset to support configuring this state with a --sme or -s command line option. Signed-off-by: Mark Brown <broonie@kernel.org> Reviewed-by: Shuah Khan <skhan@linuxfoundation.org> Acked-by: Catalin Marinas <catalin.marinas@arm.com> Link: https://lore.kernel.org/r/20220419112247.711548-30-broonie@kernel.org Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
This commit is contained in:
parent
6d51b18865
commit
e8c4451480
1 changed files with 8 additions and 2 deletions
|
@ -22,12 +22,15 @@ static int inherit = 0;
|
|||
static int no_inherit = 0;
|
||||
static int force = 0;
|
||||
static unsigned long vl;
|
||||
static int set_ctl = PR_SVE_SET_VL;
|
||||
static int get_ctl = PR_SVE_GET_VL;
|
||||
|
||||
static const struct option options[] = {
|
||||
{ "force", no_argument, NULL, 'f' },
|
||||
{ "inherit", no_argument, NULL, 'i' },
|
||||
{ "max", no_argument, NULL, 'M' },
|
||||
{ "no-inherit", no_argument, &no_inherit, 1 },
|
||||
{ "sme", no_argument, NULL, 's' },
|
||||
{ "help", no_argument, NULL, '?' },
|
||||
{}
|
||||
};
|
||||
|
@ -50,6 +53,9 @@ static int parse_options(int argc, char **argv)
|
|||
case 'M': vl = SVE_VL_MAX; break;
|
||||
case 'f': force = 1; break;
|
||||
case 'i': inherit = 1; break;
|
||||
case 's': set_ctl = PR_SME_SET_VL;
|
||||
get_ctl = PR_SME_GET_VL;
|
||||
break;
|
||||
case 0: break;
|
||||
default: goto error;
|
||||
}
|
||||
|
@ -125,14 +131,14 @@ int main(int argc, char **argv)
|
|||
if (inherit)
|
||||
flags |= PR_SVE_VL_INHERIT;
|
||||
|
||||
t = prctl(PR_SVE_SET_VL, vl | flags);
|
||||
t = prctl(set_ctl, vl | flags);
|
||||
if (t < 0) {
|
||||
fprintf(stderr, "%s: PR_SVE_SET_VL: %s\n",
|
||||
program_name, strerror(errno));
|
||||
goto error;
|
||||
}
|
||||
|
||||
t = prctl(PR_SVE_GET_VL);
|
||||
t = prctl(get_ctl);
|
||||
if (t == -1) {
|
||||
fprintf(stderr, "%s: PR_SVE_GET_VL: %s\n",
|
||||
program_name, strerror(errno));
|
||||
|
|
Loading…
Reference in a new issue