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 <[email protected]>
---
  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 <[email protected]>

thanks,
-- Shuah
_______________________________________________
kvmarm mailing list
[email protected]
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm

Reply via email to