From patchwork Fri Jan 20 12:04:08 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mark Brown X-Patchwork-Id: 46303 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp161088wrn; Fri, 20 Jan 2023 04:09:57 -0800 (PST) X-Google-Smtp-Source: AMrXdXvDYDzQNagtCwdCCDpJjAB+N5oSHdPNnRR6ZWWvkTk3OKGKdUyNaZNtj+Pb+zEwzwBpeJFn X-Received: by 2002:aa7:dbc1:0:b0:49c:a7c8:527 with SMTP id v1-20020aa7dbc1000000b0049ca7c80527mr13488467edt.3.1674216597144; Fri, 20 Jan 2023 04:09:57 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674216597; cv=none; d=google.com; s=arc-20160816; b=0y6pXgSgBpmSIffbMQUeaCTxZkUkMH1joyDoC3mpkskMUWgpCxlqDfTpT4dbuC06AY g8mff54GLttQCz2GfBnfUV87tdJqMljIlyzxOgKagoEcuJs0s3NsWMb30dFxH8yW1TCV Fvs2812g2aAn332TetzaGeYbxa6YsLt5OFhGpRybyo77iM4TiZEkIPxyyyxvpL63qA4/ KEqgl8J1lo4AOZNhvR1/QOyyTDo6veDuXiT3f8HoLNZb2SeA1+BZFWJpea8p1IHwmeV5 C8U8VkRHjLRWomZd0Y05o/PMzHpoNJi1y2lF5RLqTnahE+RZ7BfwaXycyXLI854Evspz dyBA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:subject:date:from :dkim-signature; bh=pQjMZ+VBomcC1A8yuL4wB9NV3dFl3H+ubusdHv4U/2Q=; b=D3tj6OdGryHdbDLqiYPe2ANC3+awTvdhACGOKg8m8MQSl40gpSUO+tPdsXOxHWI8hC ecb2jNZ3Z/+dCdvFGJBmliW8d9NmlMmnFqojCaQncnoMJ7L75j/v9Yz8KIHwPUNW7LoI 2Jx8HWsJFVwxXhGh6Idgz648m2Q+dRqY3cVoYIzV3OKoUl7bFadrq36uvMU+WHuKhMEZ eIT1wCbqv/OnMDT27Wpj66ZNIBcZtYFJ65L6R8wzD181+UqZ04Saa4Vb/UfIH4qXbqxM iRARxtYRIY+pIPFuY+KbkEDMyzkCJqmypoGn9kNcIE/3Fvg8kHYmFOYlSsnIcoTjNhaX jNcA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=QjNKClth; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id m3-20020aa7d343000000b0049e76c617c5si3456670edr.253.2023.01.20.04.09.32; Fri, 20 Jan 2023 04:09:57 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=QjNKClth; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230047AbjATMEv (ORCPT + 99 others); Fri, 20 Jan 2023 07:04:51 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41834 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230063AbjATMEp (ORCPT ); Fri, 20 Jan 2023 07:04:45 -0500 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2B88F7C875; Fri, 20 Jan 2023 04:04:44 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id D7843B82608; Fri, 20 Jan 2023 12:04:42 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E9D84C4339E; Fri, 20 Jan 2023 12:04:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1674216281; bh=G1YecYTzPBTdDuE6klviThW76hBwjUFMCoL2VKolvfc=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=QjNKClthHXEOXVQLZHhKAzOdrE86/SOcQVP45uoDTduYm49GUx+4h6FdG0Ut9TqyB j7JL5wFs/SepjowSYNVC/f8BsoldCm6/jMjgExcuZmaaUBcWEJiG1r4hdndKguyCcv AKfCT1+YSR/IhfkVF28hCr9YtOjJsfTnokN8DIFxgzHpDWessRRew7gghwZ5ad1eRV Tr9Xg/snGPxad9ZpT6KtvpBEldydXu1LPtiJpKbEbhGVSQUxGjCnE91+ueMMXrNfeB K4viLMHChcje+OhZbddY3T9gAdUuYJNrUlN7Rm2H+ANcpSELbw55hA2XYkm1gxYIpE lawyiPJHeryqQ== From: Mark Brown Date: Fri, 20 Jan 2023 12:04:08 +0000 Subject: [PATCH 1/2] kselftest/arm64: Verify that SSVE signal context has SVE_SIG_FLAG_SM set MIME-Version: 1.0 Message-Id: <20230117-arm64-test-ssve-za-v1-1-203c00150154@kernel.org> References: <20230117-arm64-test-ssve-za-v1-0-203c00150154@kernel.org> In-Reply-To: <20230117-arm64-test-ssve-za-v1-0-203c00150154@kernel.org> To: Catalin Marinas , Will Deacon , Shuah Khan Cc: linux-arm-kernel@lists.infradead.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, Mark Brown X-Mailer: b4 0.12-dev-77e06 X-Developer-Signature: v=1; a=openpgp-sha256; l=1004; i=broonie@kernel.org; h=from:subject:message-id; bh=G1YecYTzPBTdDuE6klviThW76hBwjUFMCoL2VKolvfc=; b=owEBbQGS/pANAwAKASTWi3JdVIfQAcsmYgBjyoNVo+QLAPPwGLEzBdEbbyGyDsfwYBzXmnZmVluV m3Ltq0aJATMEAAEKAB0WIQSt5miqZ1cYtZ/in+ok1otyXVSH0AUCY8qDVQAKCRAk1otyXVSH0EFfB/ wJu0C3TsF2Zll0K29OrWZelIKBteIhzaeqnwNwye9JoDG800vJ5T4ZShRYAlonXTUGYv+L5JMV/fqW dPhsTnRiIEtYcnE0Z5IReKac2kbkEQXppPz3NngSXTqr/EYzUM+/S0bOISfU3Y4eSkmRC2EmF65PIp f/DRn0/5eEk+yUPR2r2pWDAbIQ/x1YeacGBMAa4+qxfkEWVLq4fctt/O3A2wZ3RF8KNbR4xmh6seb+ 03LO7KFaixUMGc4V/FvaR48Q5DQ5VHZEmg4dGKPzHBX6B1/g0zjYdC+e+f5yarAal4xXfVQ7qGOQlE leGyg1RXCVLuPFCnHlmKRsDaf3sJhd X-Developer-Key: i=broonie@kernel.org; a=openpgp; fpr=3F2568AAC26998F9E813A1C5C3F436CA30F5D8EB X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1755543342525147592?= X-GMAIL-MSGID: =?utf-8?q?1755543342525147592?= Streaming mode SVE signal context should have SVE_SIG_FLAG_SM set but we were not actually validating this. Add a check. Signed-off-by: Mark Brown --- tools/testing/selftests/arm64/signal/testcases/ssve_regs.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tools/testing/selftests/arm64/signal/testcases/ssve_regs.c b/tools/testing/selftests/arm64/signal/testcases/ssve_regs.c index d0a178945b1a..cd738265cdcd 100644 --- a/tools/testing/selftests/arm64/signal/testcases/ssve_regs.c +++ b/tools/testing/selftests/arm64/signal/testcases/ssve_regs.c @@ -92,6 +92,11 @@ static int do_one_sme_vl(struct tdescr *td, siginfo_t *si, ucontext_t *uc, return 1; } + if (!(ssve->flags & SVE_SIG_FLAG_SM)) { + fprintf(stderr, "SVE_SIG_FLAG_SM not set in SVE record\n"); + return 1; + } + /* The actual size validation is done in get_current_context() */ fprintf(stderr, "Got expected size %u and VL %d\n", head->size, ssve->vl); From patchwork Fri Jan 20 12:04:09 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mark Brown X-Patchwork-Id: 46304 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp161308wrn; Fri, 20 Jan 2023 04:10:24 -0800 (PST) X-Google-Smtp-Source: AMrXdXteUTllrw71AlV63HIJzrRYlfUx8A0FMwLtY8KWPfBzqujyUvSMNwmXvMfFh2NGaImGvpEo X-Received: by 2002:a05:6402:10c9:b0:49d:a87f:ba78 with SMTP id p9-20020a05640210c900b0049da87fba78mr14556533edu.35.1674216624581; Fri, 20 Jan 2023 04:10:24 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674216624; cv=none; d=google.com; s=arc-20160816; b=JLStcnxRrWLrMj6a5/IPQziitFCa5p9blTjfCpaQbVml2Ow/IPrpoVu8lLnfO/P+Vo FRTi4Tg53cUt/6wRxwuCvEgdAPVAkgZzQnq/jkr1AO7Ivh56zfw7X+ytvU6Yn373vUOv 3edgzJEpdvBUVgrv8Q7T1vZKceEBYk/Z5E2bU+BpGgR5qMygNpt3CVZzHPe9z4Pxt8cE oFcW8YFwRxCGjK/KF+Cij8C2RS7k+inQJOs534DJ3a3rHWIwDP+ytYq+Y8i2TP64tc0Y owPhd+MhifJ4I+oKI81X3vAXVRpsjQMf9xf3x1fM1bLEvPrO2/JFcWxSXMkNhq+WZzxW YU3w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:subject:date:from :dkim-signature; bh=3aFjawkLy6KGy4zcIATDzH1Mxw1cyutASe1AJcFKljA=; b=Qp4FebG/7ijrLAtar/E5UNScwrqJv7a8UvN+L/atpX0waX73ML0lWbLqs6Nq61ZwTS 1lzn2ZaAwTGcF0usHW1ypyzQ0QYfnJufQtbBFRj4dZEdUIA82+xSNHx+NWqGmfwTFYQM 5Ux4+wsVYReWBJv6cGkEvAatfuRdEZo7BUUH6ekTF7I1e/5fEhpKuxoQw31kxzBakg3K tTysjauMj/iXf+zjTDpkeaGUGCWKhIMXISIa//mjTY4lHDbV5ITs/sZ4FeegLv5kPltW 4NZHqluICoe8QpzZMSDFmXlImS72hxGv9eRM1QL9sfzLD8brKDpcTH0PTEcseNqTWeLE Po2g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=WvNBXs7k; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id tk25-20020a170907c29900b0086fd97e310bsi14898559ejc.169.2023.01.20.04.10.01; Fri, 20 Jan 2023 04:10:24 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=WvNBXs7k; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229550AbjATMEz (ORCPT + 99 others); Fri, 20 Jan 2023 07:04:55 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41844 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230093AbjATMEr (ORCPT ); Fri, 20 Jan 2023 07:04:47 -0500 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 55CE47C875; Fri, 20 Jan 2023 04:04:46 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 0C59EB824B2; Fri, 20 Jan 2023 12:04:45 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1A344C433EF; Fri, 20 Jan 2023 12:04:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1674216283; bh=AxlzWP6bKYbN0GnwW4HFD2FOqyA4ObEOwSpC6C3TMVo=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=WvNBXs7kDf+LDPS5KvNo7Mk+i3I+U6Yku8IXJ7x6yR6ikIapfigmFzzRwEw2g5HKh rGX+57t3TBRxDSrU1C3jXxvJaw7nprEyYLk2cGq/Q2yvjHed8uAvwavqsU9FEwRgYL bBmwufbFyfhJaJGAg1mPNDlnF05u3qArqYKmlxSKla4ICOSBau44QapuZ+A9dj8Oap /VfAKbapfnOfjvGSfFgbLq/a4HGjFMF+YISZUnqaUEwlSqxIjgz2BW/ffUIW358vi5 SIAzlqomhOtRMK+3PvK/+Qhq8FXAwEsMLSoSfJlSlsLPunB9PpFrbIxJSpUAkFL4ed Vg/Qppyp+YnkA== From: Mark Brown Date: Fri, 20 Jan 2023 12:04:09 +0000 Subject: [PATCH 2/2] kselftest/arm64: Verify simultaneous SSVE and ZA context generation MIME-Version: 1.0 Message-Id: <20230117-arm64-test-ssve-za-v1-2-203c00150154@kernel.org> References: <20230117-arm64-test-ssve-za-v1-0-203c00150154@kernel.org> In-Reply-To: <20230117-arm64-test-ssve-za-v1-0-203c00150154@kernel.org> To: Catalin Marinas , Will Deacon , Shuah Khan Cc: linux-arm-kernel@lists.infradead.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, Mark Brown X-Mailer: b4 0.12-dev-77e06 X-Developer-Signature: v=1; a=openpgp-sha256; l=4446; i=broonie@kernel.org; h=from:subject:message-id; bh=AxlzWP6bKYbN0GnwW4HFD2FOqyA4ObEOwSpC6C3TMVo=; b=owEBbQGS/pANAwAKASTWi3JdVIfQAcsmYgBjyoNVHWUkN1v2qrFjL52jNiXt6aMJTyoa1/+Eu2S4 y+piR3SJATMEAAEKAB0WIQSt5miqZ1cYtZ/in+ok1otyXVSH0AUCY8qDVQAKCRAk1otyXVSH0LDbB/ 9vFflIr4202fmnXNpnBP8sn0cctd7RrGBVmkY4P9O8AuKV7NjLLIQvrvTfS/TZhZMy/UMfhj9a/WZu Ox6jU+xliFc9N1KqC9gs1uJMdU/1H9zd2fBZn5T+CszetXIw/WhwWO0g7kfhL2MF3MIIhu9jW97Bhl mXqj94h3IYqwUxH6WGfSSnKLeAzC90Zz56OpXQYWTjjdfCFb68dnEDLGZARU3yhkuHsSyt+ueKLitM au80gapcMRTStHqqu0Z5Qm1PV2YP3elQOb51O86De7t/YzAKWG6pU30C4s5gAMP2wdh6I6JhluezXA 60KouzTF4gelARoelTUV4baDte6fi1 X-Developer-Key: i=broonie@kernel.org; a=openpgp; fpr=3F2568AAC26998F9E813A1C5C3F436CA30F5D8EB X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1755543371157782424?= X-GMAIL-MSGID: =?utf-8?q?1755543371157782424?= Add a test that generates SSVE and ZA context in a single signal frame to ensure that nothing is going wrong in that case for any reason. Signed-off-by: Mark Brown --- .../arm64/signal/testcases/ssve_za_regs.c | 162 +++++++++++++++++++++ 1 file changed, 162 insertions(+) diff --git a/tools/testing/selftests/arm64/signal/testcases/ssve_za_regs.c b/tools/testing/selftests/arm64/signal/testcases/ssve_za_regs.c new file mode 100644 index 000000000000..954a21f6121a --- /dev/null +++ b/tools/testing/selftests/arm64/signal/testcases/ssve_za_regs.c @@ -0,0 +1,162 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2021 ARM Limited + * + * Verify that both the streaming SVE and ZA register context in + * signal frames is set up as expected when enabled simultaneously. + */ + +#include +#include +#include + +#include "test_signals_utils.h" +#include "testcases.h" + +static union { + ucontext_t uc; + char buf[1024 * 128]; +} context; +static unsigned int vls[SVE_VQ_MAX]; +unsigned int nvls = 0; + +static bool sme_get_vls(struct tdescr *td) +{ + int vq, vl; + + /* + * Enumerate up to SVE_VQ_MAX vector lengths + */ + for (vq = SVE_VQ_MAX; vq > 0; --vq) { + vl = prctl(PR_SME_SET_VL, vq * 16); + if (vl == -1) + return false; + + vl &= PR_SME_VL_LEN_MASK; + + /* Skip missing VLs */ + vq = sve_vq_from_vl(vl); + + vls[nvls++] = vl; + } + + /* We need at least one VL */ + if (nvls < 1) { + fprintf(stderr, "Only %d VL supported\n", nvls); + return false; + } + + return true; +} + +static void setup_regs(void) +{ + /* smstart sm; real data is TODO */ + asm volatile(".inst 0xd503437f" : : : ); + + /* smstart za; real data is TODO */ + asm volatile(".inst 0xd503457f" : : : ); +} + +static char zeros[ZA_SIG_REGS_SIZE(SVE_VQ_MAX)]; + +static int do_one_sme_vl(struct tdescr *td, siginfo_t *si, ucontext_t *uc, + unsigned int vl) +{ + size_t offset; + struct _aarch64_ctx *head = GET_BUF_RESV_HEAD(context); + struct _aarch64_ctx *regs; + struct sve_context *ssve; + struct za_context *za; + int ret; + + fprintf(stderr, "Testing VL %d\n", vl); + + ret = prctl(PR_SME_SET_VL, vl); + if (ret != vl) { + fprintf(stderr, "Failed to set VL, got %d\n", ret); + return 1; + } + + /* + * Get a signal context which should have the SVE and ZA + * frames in it. + */ + setup_regs(); + if (!get_current_context(td, &context.uc, sizeof(context))) + return 1; + + regs = get_header(head, SVE_MAGIC, GET_BUF_RESV_SIZE(context), + &offset); + if (!regs) { + fprintf(stderr, "No SVE context\n"); + return 1; + } + + ssve = (struct sve_context *)regs; + if (ssve->vl != vl) { + fprintf(stderr, "Got SSVE VL %d, expected %d\n", ssve->vl, vl); + return 1; + } + + if (!(ssve->flags & SVE_SIG_FLAG_SM)) { + fprintf(stderr, "SVE_SIG_FLAG_SM not set in SVE record\n"); + return 1; + } + + fprintf(stderr, "Got expected SSVE size %u and VL %d\n", + regs->size, ssve->vl); + + regs = get_header(head, ZA_MAGIC, GET_BUF_RESV_SIZE(context), + &offset); + if (!regs) { + fprintf(stderr, "No ZA context\n"); + return 1; + } + + za = (struct za_context *)regs; + if (za->vl != vl) { + fprintf(stderr, "Got ZA VL %d, expected %d\n", za->vl, vl); + return 1; + } + + fprintf(stderr, "Got expected ZA size %u and VL %d\n", + regs->size, za->vl); + + /* We didn't load any data into ZA so it should be all zeros */ + if (memcmp(zeros, (char *)za + ZA_SIG_REGS_OFFSET, + ZA_SIG_REGS_SIZE(sve_vq_from_vl(za->vl))) != 0) { + fprintf(stderr, "ZA data invalid\n"); + return 1; + } + + return 0; +} + +static int sme_regs(struct tdescr *td, siginfo_t *si, ucontext_t *uc) +{ + int i; + + for (i = 0; i < nvls; i++) { + if (do_one_sme_vl(td, si, uc, vls[i])) + return 1; + } + + td->pass = 1; + + return 0; +} + +struct tdescr tde = { + .name = "Streaming SVE registers", + .descr = "Check that we get the right Streaming SVE registers reported", + /* + * We shouldn't require FA64 but things like memset() used in the + * helpers might use unsupported instructions so for now disable + * the test unless we've got the full instruction set. + */ + .feats_required = FEAT_SME | FEAT_SME_FA64, + .timeout = 3, + .init = sme_get_vls, + .run = sme_regs, +};