[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