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 <broo...@kernel.org>
Reviewed-by: Shuah Khan <sk...@linuxfoundation.org>
Acked-by: Catalin Marinas <catalin.mari...@arm.com>
---
 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));
-- 
2.30.2

_______________________________________________
kvmarm mailing list
kvmarm@lists.cs.columbia.edu
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm

Reply via email to