[PATCH v11 31/40] kselftest/arm64: sme: Add SME support to vlset
Shuah Khan
skhan at linuxfoundation.org
Mon Feb 7 16:15:39 PST 2022
On 2/7/22 8:21 AM, Mark Brown wrote:
> 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.
It would be useful to add a -g command to get the current value.
-g would just do PR_SVE_GET_VL and print the value perhaps?
>
> Signed-off-by: Mark Brown <broonie at kernel.org>
> ---
> tools/testing/selftests/arm64/fp/vlset.c | 10 ++++++++--
> 1 file changed, 8 insertions(+), 2 deletions(-)
>
> diff --git a/tools/testing/selftests/arm64/fp/vlset.c b/tools/testing/selftests/arm64/fp/vlset.c
> index 308d27a68226..76912a581a95 100644
> --- a/tools/testing/selftests/arm64/fp/vlset.c
> +++ b/tools/testing/selftests/arm64/fp/vlset.c
> @@ -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));
>
With the above comment addressed or explained:
Reviewed-by: Shuah Khan <skhan at linuxfoundation.org>
thanks,
-- Shuah
More information about the linux-arm-kernel
mailing list