]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
kselftest/arm64: Actually test SME vector length changes via sigreturn
authorMark Brown <broonie@kernel.org>
Thu, 29 Aug 2024 17:20:09 +0000 (18:20 +0100)
committerWill Deacon <will@kernel.org>
Fri, 30 Aug 2024 11:53:04 +0000 (12:53 +0100)
The test case for SME vector length changes via sigreturn use a bit too
much cut'n'paste and only actually changed the SVE vector length in the
test itself. Andre's recent factoring out of the initialisation code caused
this to be exposed and the test to start failing. Fix the test to actually
cover the thing it's supposed to test.

Fixes: 4963aeb35a9e ("kselftest/arm64: signal: Add SME signal handling tests")
Signed-off-by: Mark Brown <broonie@kernel.org>
Reviewed-by: Andre Przywara <andre.przywara@arm.com>
Tested-by: Andre Przywara <andre.przywara@arm.com>
Link: https://lore.kernel.org/r/20240829-arm64-sme-signal-vl-change-test-v1-1-42d7534cb818@kernel.org
Signed-off-by: Will Deacon <will@kernel.org>
tools/testing/selftests/arm64/signal/testcases/fake_sigreturn_sme_change_vl.c

index cb8c051b5c8f2ea31c6c8d05aea1247ec50c983f..dfd6a2badf9fb37978f0ecae52f0f8679a0fc48c 100644 (file)
@@ -35,30 +35,30 @@ static int fake_sigreturn_ssve_change_vl(struct tdescr *td,
 {
        size_t resv_sz, offset;
        struct _aarch64_ctx *head = GET_SF_RESV_HEAD(sf);
-       struct sve_context *sve;
+       struct za_context *za;
 
        /* Get a signal context with a SME ZA frame in it */
        if (!get_current_context(td, &sf.uc, sizeof(sf.uc)))
                return 1;
 
        resv_sz = GET_SF_RESV_SIZE(sf);
-       head = get_header(head, SVE_MAGIC, resv_sz, &offset);
+       head = get_header(head, ZA_MAGIC, resv_sz, &offset);
        if (!head) {
-               fprintf(stderr, "No SVE context\n");
+               fprintf(stderr, "No ZA context\n");
                return 1;
        }
 
-       if (head->size != sizeof(struct sve_context)) {
+       if (head->size != sizeof(struct za_context)) {
                fprintf(stderr, "Register data present, aborting\n");
                return 1;
        }
 
-       sve = (struct sve_context *)head;
+       za = (struct za_context *)head;
 
        /* No changes are supported; init left us at minimum VL so go to max */
        fprintf(stderr, "Attempting to change VL from %d to %d\n",
-               sve->vl, vls[0]);
-       sve->vl = vls[0];
+               za->vl, vls[0]);
+       za->vl = vls[0];
 
        fake_sigreturn(&sf, sizeof(sf), 0);