Re: [PATCH v11 31/40] kselftest/arm64: sme: Add SME support to vlset

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxx>
---
  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@xxxxxxxxxxxxxxxxxxx>

thanks,
-- Shuah



[Index of Archives]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Share Photos]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux