From patchwork Fri Mar 7 19:04:14 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 871252 Delivered-To: patch@linaro.org Received: by 2002:a5d:64c8:0:b0:38f:210b:807b with SMTP id f8csp919314wri; Fri, 7 Mar 2025 11:05:19 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCXAMBKDCCCO+05eKQx0ttCIGWBNIQ+ttYfxMfsdYJMRmtPwgWy48bhZv9c4a9IB1qOb9wn8BQ==@linaro.org X-Google-Smtp-Source: AGHT+IGepSp4prXg7x9bt54Jn4jNT7CTsBLLoUpVVRaYmJFSjr//m+8r+dBAC19UO7TSQ8oXbsG6 X-Received: by 2002:a05:6122:8297:b0:51b:a11f:cbdb with SMTP id 71dfb90a1353d-523e4172c0amr4127981e0c.4.1741374318976; Fri, 07 Mar 2025 11:05:18 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1741374318; cv=none; d=google.com; s=arc-20240605; b=HTBvLFgQneC1/ymjREoi9XTueAJageymD2hUCnqf37bopyFB+d4pUMZGzgoqN969Zq jFEnKLNy8UmQBJ7UKYlfeAE1kEwgDNYG55TX7Lh4k3vLpE9Zs87Bnk5gCpuC/jTAhRIL PGxLcdKwZVKA2MhI3/3fvPvM/G/uozBuXgWcjOyHJ8YlPwD1qG7BVbOBRcK/2tv3d5Vr DBkhf+naPkJ1v+4bV3Yshj430cJA/ANdxnxNfaAh3on7cC7rjeQcZZKhjBKwkYtS6rH1 sT7Mkj0VMZFlbKV5pWS/LmmlsbGcADd0xstZfI73JUNh9oDrB+U5mBdJZuuxIKl/sx8E ufeQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=z+zk524gYlZFNpfvm3PBpvMRD+qrtD7WnS20Nzkpdic=; fh=quVKJN+JogokNzsp4kwoA7mheGRSBID5PxcC4hooSO8=; b=MhcmAF2+UkUE0mr3PRpELiEZ/uZAZZNoZMrFmt+4FSywJcUuvQpMSEo2omSplStfM/ bpMTzmiywk1tT4ufQNBvbqcitBJnz7GJJlqyhsrcc2qFJfke/Sm3V6PCHyADTmN6CADq d0dfhyRZpmhuiSFp7BVurAD+8xKW9dr/kqps8t/pveJHRx6C6S8fI3QxSWPqI5StpqXC L3+G8NprhGgSvsx13g9nLtNhD54+IA+WPVbkFFgajWryvsMCGbbYbeexG/e+ZDx07JwW ddG89XuH5x/BsFHaBUWIR8u1tX8u7I7izCUKXGNGdmXZ4lYIp2m82aZLp2Uprkps/0Th 6i4A==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=iF65nn8q; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=fail header.i=@linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id 71dfb90a1353d-523d8cf2a76si998276e0c.254.2025.03.07.11.05.18 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Fri, 07 Mar 2025 11:05:18 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=iF65nn8q; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=fail header.i=@linaro.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tqczr-0004CK-7A; Fri, 07 Mar 2025 14:04:35 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tqczh-0003yE-Hy for qemu-devel@nongnu.org; Fri, 07 Mar 2025 14:04:29 -0500 Received: from mail-pl1-x635.google.com ([2607:f8b0:4864:20::635]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tqczc-0003hn-KE for qemu-devel@nongnu.org; Fri, 07 Mar 2025 14:04:23 -0500 Received: by mail-pl1-x635.google.com with SMTP id d9443c01a7336-224019ad9edso55535515ad.1 for ; Fri, 07 Mar 2025 11:04:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1741374257; x=1741979057; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=z+zk524gYlZFNpfvm3PBpvMRD+qrtD7WnS20Nzkpdic=; b=iF65nn8qlykQ1ErcjKqIeV8dTlO+jAHhvE4dHd0cKKmiPRrwqEqPbf0ypTNNQPhZJI zaD2ESBq4j/UIZFt7sVfduzA5W+3pKZm2p2bKct7XP7VblDtIThuFR5+Mhik8VGnzhkQ CJNtDUW5jqOxBhUs/yUhYc46ZIxHEvpG9P/y1kUDVr+OpReee3TRMEQjpmhRoFH1iTuz jpw16yR3IE9e3P57JIQxfboDaY4smNQ+l7Zp7nduesZ6iEmI+oBJWH/zgC+lgQYD78Xl j9O8qagz+qC2rVCrnQ358Up2c4LMuJuMdG6hscn6GrFvz5oc09k1kYR5NWd6FkE8KEM4 1igA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741374257; x=1741979057; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=z+zk524gYlZFNpfvm3PBpvMRD+qrtD7WnS20Nzkpdic=; b=Pj8M2122AYzcFeIOf6qR5v/BDk2+XIutDIYq0yxqcqnjaRQSgyKDqI/QlUKn5CG6CP Su5165o7uezuwTZSJEaf/YSzoDtTrDsb+sQud1VWLpqfudRhComsBdp4CAs0OWdXv3CJ M5/0wqwl/befkz9EBm8Fc3OyrGSIqvOfZYTLTsgDxqsr7KXVH1fqQE7FwquSC8egKx4N 6UMgYDyIxV16VJyHpK6hLgdh0HqdgC7JXcRWsFAJcDNdVgqH2IKv6rvLIHFo25fM5dXm 7q6JV6jOHGl3bBjUa6ynI26HkmjUPf6Bh8+9Fjav8HdRvSzY/qYay1eZT5zZjufiEvFx kQyA== X-Gm-Message-State: AOJu0YyNh1JAg8pY2vXOE956nSxj5P89K1fbUNDc7XRy8yJ5V/fKR1oa rwbBbnts+vHcli/2/AWjcL4e6YvufHMxVON0DDAu2+50lhk2UJD6gLj3rt6ZQKVufIZNvJbhbF4 e X-Gm-Gg: ASbGnctJGC9KQOeuomf/d+4tOWmS+PILdHgLb6ySQPM3eYeaIUR9pxruSe4sebySqQg hq1PIS2+DBtVdvKjqFsV2wfj3G2LOaK6tQ9jwrwNmelW0x01P9n0iQDAuzEiHO8iODvYgBzXSzv RPUN7g3FoL+Wn1/D61kkBkAQ7Xe3yXCchGqi+WQr29uzrR8+HoOHOoQIPs9P/AG2K+yLjEkGHh2 3MTf1ciOW1je4elj1w+Zga63nSzMincp5FhT7q66qlHhDFbZmRGRfkvhrLGG9QlemZSBsG1MvfZ UjEWFMLkDAuRwvNkjRbmNgOCXNjM1SK1horaK37Gx6aGeOGlNpEX0fqtsJOAiPAWx+dM1lMWm5d A X-Received: by 2002:a17:903:22c8:b0:224:256e:5e3f with SMTP id d9443c01a7336-22428993846mr74979675ad.25.1741374257197; Fri, 07 Mar 2025 11:04:17 -0800 (PST) Received: from stoup.. (174-21-74-48.tukw.qwest.net. [174.21.74.48]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22410a91c5bsm33686335ad.186.2025.03.07.11.04.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Mar 2025 11:04:16 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-stable@nongnu.org Subject: [PATCH 1/2] target/arm: Make DisasContext.{fp, sve}_access_checked tristate Date: Fri, 7 Mar 2025 11:04:14 -0800 Message-ID: <20250307190415.982049-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250307190415.982049-1-richard.henderson@linaro.org> References: <20250307190415.982049-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::635; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x635.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org The check for fp_excp_el in assert_fp_access_checked is incorrect. For SME, with StreamingMode enabled, the access is really against the streaming mode vectors, and access to the normal fp registers is allowed to be disabled. C.f. sme_enabled_check. Convert sve_access_checked to match, even though we don't currently check the exception state. Cc: qemu-stable@nongnu.org Fixes: 3d74825f4d6 ("target/arm: Add SME enablement checks") Signed-off-by: Richard Henderson --- target/arm/tcg/translate-a64.h | 2 +- target/arm/tcg/translate.h | 10 +++++++--- target/arm/tcg/translate-a64.c | 17 +++++++++-------- 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/target/arm/tcg/translate-a64.h b/target/arm/tcg/translate-a64.h index 7d3b59ccd9..b2420f59eb 100644 --- a/target/arm/tcg/translate-a64.h +++ b/target/arm/tcg/translate-a64.h @@ -65,7 +65,7 @@ TCGv_i64 gen_mte_checkN(DisasContext *s, TCGv_i64 addr, bool is_write, static inline void assert_fp_access_checked(DisasContext *s) { #ifdef CONFIG_DEBUG_TCG - if (unlikely(!s->fp_access_checked || s->fp_excp_el)) { + if (unlikely(s->fp_access_checked <= 0)) { fprintf(stderr, "target-arm: FP access check missing for " "instruction 0x%08x\n", s->insn); abort(); diff --git a/target/arm/tcg/translate.h b/target/arm/tcg/translate.h index f8dc2f0d4b..53e485d28a 100644 --- a/target/arm/tcg/translate.h +++ b/target/arm/tcg/translate.h @@ -92,15 +92,19 @@ typedef struct DisasContext { bool aarch64; bool thumb; bool lse2; - /* Because unallocated encodings generate different exception syndrome + /* + * Because unallocated encodings generate different exception syndrome * information from traps due to FP being disabled, we can't do a single * "is fp access disabled" check at a high level in the decode tree. * To help in catching bugs where the access check was forgotten in some * code path, we set this flag when the access check is done, and assert * that it is set at the point where we actually touch the FP regs. + * 0: not checked, + * 1: checked, access ok + * -1: checked, access denied */ - bool fp_access_checked; - bool sve_access_checked; + int8_t fp_access_checked; + int8_t sve_access_checked; /* ARMv8 single-step state (this is distinct from the QEMU gdbstub * single-step support). */ diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 8bef391bb0..48e0ac75b1 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -1381,14 +1381,14 @@ static bool fp_access_check_only(DisasContext *s) { if (s->fp_excp_el) { assert(!s->fp_access_checked); - s->fp_access_checked = true; + s->fp_access_checked = -1; gen_exception_insn_el(s, 0, EXCP_UDEF, syn_fp_access_trap(1, 0xe, false, 0), s->fp_excp_el); return false; } - s->fp_access_checked = true; + s->fp_access_checked = 1; return true; } @@ -1465,13 +1465,13 @@ bool sve_access_check(DisasContext *s) syn_sve_access_trap(), s->sve_excp_el); goto fail_exit; } - s->sve_access_checked = true; + s->sve_access_checked = 1; return fp_access_check(s); fail_exit: /* Assert that we only raise one exception per instruction. */ assert(!s->sve_access_checked); - s->sve_access_checked = true; + s->sve_access_checked = -1; return false; } @@ -1500,8 +1500,9 @@ bool sme_enabled_check(DisasContext *s) * sme_excp_el by itself for cpregs access checks. */ if (!s->fp_excp_el || s->sme_excp_el < s->fp_excp_el) { - s->fp_access_checked = true; - return sme_access_check(s); + bool ret = sme_access_check(s); + s->fp_access_checked = (ret ? 1 : -1); + return ret; } return fp_access_check_only(s); } @@ -10257,8 +10258,8 @@ static void aarch64_tr_translate_insn(DisasContextBase *dcbase, CPUState *cpu) s->insn = insn; s->base.pc_next = pc + 4; - s->fp_access_checked = false; - s->sve_access_checked = false; + s->fp_access_checked = 0; + s->sve_access_checked = 0; if (s->pstate_il) { /* From patchwork Fri Mar 7 19:04:15 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 871250 Delivered-To: patch@linaro.org Received: by 2002:a5d:64c8:0:b0:38f:210b:807b with SMTP id f8csp919145wri; Fri, 7 Mar 2025 11:05:00 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCWviph0R+1wyzu0X3jKIvK3BAwhScNpL5eSvqPQL5PhYA+D9xAI5EGOXGU5/ctwZ4sIu9UGLQ==@linaro.org X-Google-Smtp-Source: AGHT+IGc0UkokriMkwzoVTZRyoo+wHWIeI0VvrvDL0SSvGuf0GJ/X7+MHaKIuH2XZhpsXLvSuZVP X-Received: by 2002:a05:6000:1a8e:b0:38d:d701:419c with SMTP id ffacd0b85a97d-39132dc5717mr2608530f8f.41.1741374300479; Fri, 07 Mar 2025 11:05:00 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1741374300; cv=none; d=google.com; s=arc-20240605; b=Eu6oJ8XWIKrOc7WVzP/f/pNZrcM383NcjcwUfWzW4hcWTQMsVWyi5LoB01TZEMOkS4 ukIo6qpge2uG+EoUcmkV1bwfrZYz8d2SVdqV3g4MQI2v26uw7MU6dHJZPK+Qw+aWsi99 QpMOcevzFdEVry1N6SHtvb+Gq3bXhUKVE7uRA+5FrAs//glZoXU3VyUTUaQDmCA4sO42 csCQff+tRb3GTvxslDWIdHDGxs/6ESxA3jSt3NvHdjV7j+9FYSdYLvhH+hki6/GZj1+i LhCtdduSbAwmmfvOePHYLNUq1tTZkgE8ZEr0R3t7IFllDnK5TsfiNvO++iC27YHnD4Mo zXJQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=gWT0L4EBMx/nGFskBmpx115GbPBpRrubLUlCXG3QWrg=; fh=quVKJN+JogokNzsp4kwoA7mheGRSBID5PxcC4hooSO8=; b=WWkeYAsBZNkmgZ+EGINYqXqcwxL7tFq+KA7yr2YS6jOgz0PyJ1pCxMP+eLrzwQ27z1 wkSUrZZyor+9BvHwGKfdbIdVnez6Avbok+BAJzAq9al0jrxzPbsTiH7gw2esMnT+V6RZ ni3E6DVXszxufAhxSxJ9woeeP9JAvYGJ5/s3ewbNN3Tja44caD/yChR3AkXuSepqwjNH 4aKSwp9eTdofql6vaDCxU4uSlZkqdnlQODZArOiNfqExFGZ2U7RwNb6y/lA9vLOocz1n akPTP3RUNcF/0f2v67k4qVOM9hYVlw2QytT9bc/zzRUXv1Gn/wlydtBB7zrovs0CrJit Yh+g==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=Q+YlI7CN; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id ffacd0b85a97d-3912c11edcesi2745687f8f.647.2025.03.07.11.05.00 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Fri, 07 Mar 2025 11:05:00 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=Q+YlI7CN; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tqczq-00047c-6v; Fri, 07 Mar 2025 14:04:34 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tqczf-0003xe-FP for qemu-devel@nongnu.org; Fri, 07 Mar 2025 14:04:27 -0500 Received: from mail-pl1-x62b.google.com ([2607:f8b0:4864:20::62b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tqczc-0003i2-Kx for qemu-devel@nongnu.org; Fri, 07 Mar 2025 14:04:23 -0500 Received: by mail-pl1-x62b.google.com with SMTP id d9443c01a7336-223594b3c6dso41871865ad.2 for ; Fri, 07 Mar 2025 11:04:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1741374258; x=1741979058; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=gWT0L4EBMx/nGFskBmpx115GbPBpRrubLUlCXG3QWrg=; b=Q+YlI7CNkPltkxqzJG5qqgxjLzwX1nvBEHLJqGx6LtHitimJU6W6D4JK4aEdJhby9k oOWTwIT0fUxx/QfABqyJQ+22rwr91/eHsH2BkYCQsm6e/Nfz/nSjgiCHYMQR50+1cWIS dnUJvA0u59IRMpud4bZUtQQM+PM4dg56vbw3XTZkTP9frPy/ZK+yztAm3JpLK0plAtbv uXaapQp7eol4/RoLny72zoMMZ6Jo8bqtVx8lXTxvGn1MMeMLodi3BA0u1ut0iqchKcly LYyXObU5XCAaIWQXwmiCxD4X3FC3O9f2ACVCTWT9kvMhngL/f8n2O56FAl/4lHfdPQJI FncA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741374258; x=1741979058; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=gWT0L4EBMx/nGFskBmpx115GbPBpRrubLUlCXG3QWrg=; b=jcpbD9NM7bLmLU+/KMk4uLtyJH3e5awb5h5jqB0ZdC1TeftDEdH1vpGOQiICjsGuay 0oz3HVfWpLY3pnT2H2zjj/wx9kvmk8E3Tkh8TQF6zQeIw8rvpuz90T+77bRAZ+y5tTPO dlAGSoL8kMeIiJHBbpTdzRjv9CIDdkoW0QcQrKoie/vXZcx2P6xgSAIhV5FUroqZxRKU Sm2Ue3NkICTFRNtrKJ1PrNQ9EDsaE7NTxsFK1LUhOjAR0wwA7pl7BmHiIYTgzwiKSFQO hFajyXKQ+DE8VdhideLxJL+aYPT+rF/GVaNoksQxpxcw3Dmy6Py1jxG7IfOmawNOvUrr BtHw== X-Gm-Message-State: AOJu0YxJT3U6gosMWYbuxIPKs5zPP4R+gLa5/q4PGEH4rmx1ZLcumpAD iqLFM3xfMgOY4M3PC2s0N6FyXQN3Wf2IvsmRd43E6Yq53qAKxzNZswVwK9WKa2D+DmqhRYC+4+R 2 X-Gm-Gg: ASbGncvp7Qn0wW1NgNPY3y5jsh1hbD5PXWRBNt9H7jYpoa2lOadAtUdunClbDiU/3P/ bRtMcIeOJdIALNF28dhqDqCU28VflS1PEmZGYjVxMxqQOHMQOL6KWs8kx6V/1rl/H+BLsniZfgt 5q5+x1tsTXVjNySKc+yBx2rjvQeU5SJyssQNyRb5qF8e8ST9qOvDuZBZfrBMoxNicnzpqsq/T4K /UdU/lejIe4iaLUIgErg4vwydRkki++AK0jj02AruRfgDzpe5ffdRT0i5TLAlFGmpckqzdO2XJY yvXZm8BtIQV9PVkEtIe+CzNQ/Nrjrb/fd/jhSnKdQx4PjLhV3t7opKaG5bs7umVWlNxb20qcX21 W X-Received: by 2002:a17:903:2282:b0:224:2717:7992 with SMTP id d9443c01a7336-22428be5a5amr62909535ad.33.1741374258002; Fri, 07 Mar 2025 11:04:18 -0800 (PST) Received: from stoup.. (174-21-74-48.tukw.qwest.net. [174.21.74.48]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22410a91c5bsm33686335ad.186.2025.03.07.11.04.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Mar 2025 11:04:17 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-stable@nongnu.org Subject: [PATCH 2/2] target/arm: Simplify pstate_sm check in sve_access_check Date: Fri, 7 Mar 2025 11:04:15 -0800 Message-ID: <20250307190415.982049-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250307190415.982049-1-richard.henderson@linaro.org> References: <20250307190415.982049-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::62b; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org In StreamingMode, fp_access_checked is handled already. We cannot fall through to fp_access_check lest we fall foul of the double-check assertion. Cc: qemu-stable@nongnu.org Fixes: 285b1d5fcef ("target/arm: Handle SME in sve_access_check") Signed-off-by: Richard Henderson --- target/arm/tcg/translate-a64.c | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 48e0ac75b1..723cb3f24a 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -1457,22 +1457,20 @@ bool sve_access_check(DisasContext *s) { if (s->pstate_sm || !dc_isar_feature(aa64_sve, s)) { assert(dc_isar_feature(aa64_sme, s)); - if (!sme_sm_enabled_check(s)) { - goto fail_exit; - } - } else if (s->sve_excp_el) { + bool ret = sme_sm_enabled_check(s); + s->sve_access_checked = (ret ? 1 : -1); + return ret; + } + if (s->sve_excp_el) { + /* Assert that we only raise one exception per instruction. */ + assert(!s->sve_access_checked); gen_exception_insn_el(s, 0, EXCP_UDEF, syn_sve_access_trap(), s->sve_excp_el); - goto fail_exit; + s->sve_access_checked = -1; + return false; } s->sve_access_checked = 1; return fp_access_check(s); - - fail_exit: - /* Assert that we only raise one exception per instruction. */ - assert(!s->sve_access_checked); - s->sve_access_checked = -1; - return false; } /*