From nobody Sun Jul 26 11:01:48 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1783334354; cv=none; d=zohomail.com; s=zohoarc; b=Dl/ihReXEM47el3CPz6AW8WTP9s3w8EN6LQGxPVZxkrsR9jMR5n46WZcsE51qK5j9beDImiPUP+P2iZSQ+V7cCKQ3eLFVafiNLEa3U3axqiUegD1ZJ0NB4rI1nuImTc88Y+7WMOVV7WT7uMF6xOH/O/9k4rmytGmLwpCBi7Wzwc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783334354; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=n+h4KcNRD+h0hC6MoEK/ijKM0u4LLci0opUR0sXDBd0=; b=Q7fr4dPDzgJU3ITfdJaDK6ca/O23K6OKFHRz2r48aIryG16CWA9WzLYtCUhL/VZ1bbGu6Va4owoynWR6KYKUkZuPXaj2+MS7eqtw1TgBQ9jQ8Bv/mkarKqMZk1Es+VdH2JvvUSUDyOCAzVm3as3Lz0WEVC8xHnHMTdwc1T4BaDQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783334354185541.129810799575; Mon, 6 Jul 2026 03:39:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wggiB-0006zQ-H8; Mon, 06 Jul 2026 06:38:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wggi7-0006xB-HV for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:00 -0400 Received: from mail-wm1-x341.google.com ([2a00:1450:4864:20::341]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wggi5-0003Ew-Mi for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:37:59 -0400 Received: by mail-wm1-x341.google.com with SMTP id 5b1f17b1804b1-493d3135f62so9043145e9.2 for ; Mon, 06 Jul 2026 03:37:56 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63b6f1bsm329501805e9.10.2026.07.06.03.37.54 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jul 2026 03:37:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783334275; x=1783939075; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=n+h4KcNRD+h0hC6MoEK/ijKM0u4LLci0opUR0sXDBd0=; b=i+jpamjD6YMHW89Hqp9qFtmMkqf3R7gwgWrO2iu5g2nYjXuJzFwg9PyjBWVOOwWsqQ cnaozvVenJf7QqjnCypMXjq7Jq42Pez6K7L5xFFMMnhWrxM9j8ucaBUMMoYmSSE6yaVF 1RbT9OguUrC7a55SlHtm4Ddz6rZf2r72INRMAjz/GCjq6/phVKj2RXcbabjEXzSZxJDP ex2crZGMo6ZHvKHQck7CF7bUYT9t1HdE78YtxXxiLEvjF4mom2BiFlbETCjCr1Tw0caa x6mA9rnUlG+8WMncQ9kNsNTVrKeGMmUNcfYmvztm79b2N1sch+12jzpyLrjXE3xbCdXn ZFRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783334275; x=1783939075; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=n+h4KcNRD+h0hC6MoEK/ijKM0u4LLci0opUR0sXDBd0=; b=YsFC25jq7K4hQ46IZVoYikFi/Y4Wo2XmUp/FYlgggXaO4jgFI/XogdZ35e1otESkF2 d7BY4kVXPY/symBSwqI5BIVxdWySX9z1pJWrkeLuSgU4ofpSR2jKrog+n7r5Q08VbRET yaiTmnOAyuURvOxaWdQs922ylqUpmVYWpF3WDIvIYKRJZk8UQWsJYHPOI1cMrpAa8LeO WF7kS815RZaJm9oEL39XWrlSRR8v1q4ffXIKHrn2fA3yqzQrKl3u3WePPCy9Owdj5k5m 0XOL+rrSYAe/vCT7pjTXa9dv7OtLmUusA4iIL5cVIrrGSxCb4yetnKaUT708Hxny//bg i9tw== X-Gm-Message-State: AOJu0Yy5nFK0249aGowcbxQh0KreiRa79g5KCuINWFvtndiF8U61+Irq gMiisSGn9F0GjB0QnEwrayfor8qstXdMs46rRsYd3ESJ04IylJ0kSVs/aZ8pv3f1iGN2IuvMro3 mnkUHVe+mmWaW X-Gm-Gg: AfdE7cm8qmgO6og2XjSf8E0v7pCOGgADTP2uTp8uFZfRE62ZDxAfFO0bD6PwP+LmKAW fLNO79vo4q6kwRVmDwqevo/RG6FP0CAwL261poEqo+ZzbTJqiSOojhEpTQcVs6oVcxgx6nq5DRx hYcmu4OxgMa8+A2mWsePZHsF5hNdTNQ2uW9H2nZXUsXB8Yk5A1wJCMFmW1t6y+N8xc8XHYt/fdU 0+jWDMRqTF0v38kob812OhFeYfGSteqmLeJwDLZLDlh0e/6TxUlJAnJkdePzlsxBa35R+n/dHAe 4HYE3MTVVrEArd94/EFlzJQXWsnObRNcergmRMWPZv7k/0Wh8C8IMc+vb46Np1IIHmrYgWBigrF UYFGPFp0LLyRFrLbM6jtvj4q1hd6hqgzweSAz9XfcrXF84f+drmCuE9qK7VnK7p9pLsyQVXpBk2 qUldlhqH5pZx8r93KOLj88nHxCIsSG2A4SqBVy8VeczRBajdzXShpuaYfyDTtvn1Od/GLLtXoEA jTrXBY58MNgzxKbYZVZWg== X-Received: by 2002:a05:600c:c4a6:b0:492:70f4:8d1e with SMTP id 5b1f17b1804b1-493d526d4admr79840495e9.11.1783334275481; Mon, 06 Jul 2026 03:37:55 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 01/49] hw/net/fsl_etsec: validate FCB offsets in process_tx_fcb() Date: Mon, 6 Jul 2026 11:37:04 +0100 Message-ID: <20260706103752.320511-2-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260706103752.320511-1-peter.maydell@linaro.org> References: <20260706103752.320511-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::341; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x341.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783334355183158500 Content-Type: text/plain; charset="utf-8" From: Feifan Qian The TX Frame Control Block (FCB) is prepended to a TX frame when BD_TX_TOEUN is set. It contains two guest-controlled u8 offset fields that process_tx_fcb() uses to locate L3/L4 headers within the frame buffer: l3_header_offset =3D FCB byte 3 (0..255) l4_header_offset =3D FCB byte 2 (0..255) These offsets are applied without any bounds check. When the UDP-no-CTU branch is taken, the function writes zero to l4_header[6] and l4_header[7]. With both offsets set to 0xFF the write target is: tx_buffer + 8 + 255 + 255 + 6/7 =3D tx_buffer + 525 A malicious guest can therefore corrupt up to 509 bytes of heap memory beyond a minimally-sized (16 B) TX frame. Fix: reject the frame and log a guest error when the minimum required buffer length 8 (FCB) + l3_header_offset + l4_header_offset + 8 exceeds tx_buffer_len. Move the l3_header and l4_header pointer declarations past the new guard so that out-of-bounds pointers are never materialised. Cc: qemu-stable@nongnu.org Resolves: https://gitlab.com/qemu-project/qemu/-/work_items/3517 Signed-off-by: Feifan Qian Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- hw/net/fsl_etsec/rings.c | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/hw/net/fsl_etsec/rings.c b/hw/net/fsl_etsec/rings.c index 6d2bf71b52..c8fc5d55d1 100644 --- a/hw/net/fsl_etsec/rings.c +++ b/hw/net/fsl_etsec/rings.c @@ -177,16 +177,31 @@ static void tx_padding_and_crc(eTSEC *etsec, uint32_t= min_frame_len) static void process_tx_fcb(eTSEC *etsec) { uint8_t flags =3D (uint8_t)(*etsec->tx_buffer); - /* L3 header offset from start of frame */ + /* L3 header offset from start of frame (FCB byte 3) */ uint8_t l3_header_offset =3D (uint8_t)*(etsec->tx_buffer + 3); - /* L4 header offset from start of L3 header */ + /* L4 header offset from start of L3 header (FCB byte 2) */ uint8_t l4_header_offset =3D (uint8_t)*(etsec->tx_buffer + 2); - /* L3 header */ - uint8_t *l3_header =3D etsec->tx_buffer + 8 + l3_header_offset; - /* L4 header */ - uint8_t *l4_header =3D l3_header + l4_header_offset; + uint8_t *l3_header; + uint8_t *l4_header; int csum =3D 0; =20 + /* + * Validate FCB header offsets before pointer arithmetic. The highest + * byte accessed is l4_header[7], at offset + * 8 (FCB size) + l3_header_offset + l4_header_offset + 7 + * from tx_buffer. Drop the frame if this exceeds the buffer length. + */ + if (etsec->tx_buffer_len < 8u + l3_header_offset + l4_header_offset + = 8u) { + qemu_log_mask(LOG_GUEST_ERROR, + "eTSEC: FCB offsets exceed frame length, dropping\n"= ); + return; + } + + /* L3 header */ + l3_header =3D etsec->tx_buffer + 8 + l3_header_offset; + /* L4 header */ + l4_header =3D l3_header + l4_header_offset; + /* if packet is IP4 and IP checksum is requested */ if (flags & FCB_TX_IP && flags & FCB_TX_CIP) { csum |=3D CSUM_IP; --=20 2.43.0 From nobody Sun Jul 26 11:01:48 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1783334301; cv=none; d=zohomail.com; s=zohoarc; b=mZWMvLiCEU00mLqlevIQzXNTORrYBIs2uLRCc5RvEy8CseDMNxIVTSF6LepHlzQKV/OMILx9Kgr1Fj+wL7hopbmh05X7CkipoO48htNbQ5oB1c/aTssz94t9MnAmUqX0jWsObKLI6CkXI+oED9m+ixxYA82998FMI+rsB1MwbMU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783334301; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=+97oten0hNNuTAbNo9fRI3B+bvLWCRDF1yKEOcFHQOk=; b=BSAJcDwKJHNFdIB2U6YMKfIkQZrFprtqcu6KsQugbPtp0iB+m2depboaXxvJWWjhycXe3rJ2nGx/dm3e/Dl1zLgSPz05xJtEDc8U3lcqmGQUcQwCiMI3J4JH/DrlfndC4Ta2JpO27HJpmiBZ5K6p0DDv9nhK0Ish4J5MNzTJ5m0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783334301672607.1581176644208; Mon, 6 Jul 2026 03:38:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wggiD-0006zm-Dz; Mon, 06 Jul 2026 06:38:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wggi8-0006xd-W8 for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:01 -0400 Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wggi6-0003F5-4K for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:00 -0400 Received: by mail-wm1-x32c.google.com with SMTP id 5b1f17b1804b1-493ae59eca6so20656195e9.1 for ; Mon, 06 Jul 2026 03:37:57 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63b6f1bsm329501805e9.10.2026.07.06.03.37.55 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jul 2026 03:37:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783334276; x=1783939076; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=+97oten0hNNuTAbNo9fRI3B+bvLWCRDF1yKEOcFHQOk=; b=hdjYnLEUCClZXmkMa/0N89Fsg/JbPb7SkcTCZrcrqRW8+yF5tLBmTRdNm7Izjeul5Y 9JEAGHSJMczC0y9KEzbhLdKHO/M2bLndK7q5TbTIkg0u1kJMA+xHqac/ue/KkixQU0Hp 0apIBSCWxX1iusOehkhxBHvuaD1XEQh5OJocBqaDcSmESDMDpkCYHEvOXZxjmZeswtMN t3zyUpFOYuhDlKooI4fO2AqcACuwANpTDshwVWBhgttu/M7kvcrOGynfp4mC7Du33ia+ diB/XweUUTz26MI0YH0Rv5ARDk8d4o6G7xHmTc6nE/l2elFD75mDbGtOpKgE0nEW4q/H bRsg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783334276; x=1783939076; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=+97oten0hNNuTAbNo9fRI3B+bvLWCRDF1yKEOcFHQOk=; b=m7ztgYEMzZm0a8eQR7RQzSdAH4lhn4V62EMsfIk57v6ekjc8bqmVYvrJa/iDdWlM2R E5nFS75wKFxdp+53BwVEOfxnkPpKgeCjE7qc75DgMac6lJHHxududjb8vnLDfVQR42Au NO130QuEI6QWlaxwiN+9DyH/mm6LJFgSHPNBgM18t1iVFkyJuavKt5jE6r1188c72eQt 9fBdzlnF10IjpT0IDcHHsVNUU4B27+qDwNTxEqyfk+LD7pUz8mtg11im4W96jSLtnO8j qr49z+IjDlpGEXAt7hTtYdbKYiJhopvUZ/nQrLQHvh56tK1LAFR9F5etKDr0/YaD2z4E zFXQ== X-Gm-Message-State: AOJu0YwM+5+tW8/3oC1XrE2cA1ILGnbztkLb0cPWivGMNp7I7D4+yPf5 jY0DXDp1q3k7q6wY+eKxtumUWiJBZptWQou29r3Q5chl5QgNCj/+0MvP1/YbV9XOimZV32dkxJC wYrAznc4tjg== X-Gm-Gg: AfdE7clCCIILC12Gp5vhm4DgYp/RN/DAkkZ8N0RmDOsyi5CcWruLHlPBgmkK12fQuY8 2CxdLNOtIumEJNd9HFJwmhvd+Nq7HVgQAZ1e5KJP1XNRZHekPXzc34TFuP1TUCu0VP4mUB0F66W WYK0VzsptZTPm2dvNygFvri5NxyXoIPgpTn5aWgkv504T1gv16UvqkYZ5qgbNjKoKT82rAW16IB FT+EMRmbmr/f7SiziCArlIIAYZ9P0K4Z6vOnm5W1oSC//V1r1fubbxJy4Yf8egPMRxpU4fVLaAD QDDl8pOZn1FjLvH/69FREPcV4V4ns77G80aHqDdlpxe7y8JvmyiDZ6AER0kQG7/rn11kw7zEjd4 7OVFlw7+l3i8HucQKXBtxPXYWMNTRGM04XJzuKIjlRs1s0jaNcBgPId0iSf7A0clK4wUHzxphVp 4SdLaKUM2060dhkjlcuxik37qXuo4ekbos5xZtS8NoGpX5S2m05tYO8jeSoEo/NxjyLw52JVRD1 c1lgX7y139uOacio5cw5Q== X-Received: by 2002:a05:600c:8b76:b0:493:d21f:8f98 with SMTP id 5b1f17b1804b1-493d21f9075mr97100765e9.36.1783334276480; Mon, 06 Jul 2026 03:37:56 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 02/49] hw/arm/smmuv3-accel: Fix veventq read returning true on EAGAIN/EINTR Date: Mon, 6 Jul 2026 11:37:05 +0100 Message-ID: <20260706103752.320511-3-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260706103752.320511-1-peter.maydell@linaro.org> References: <20260706103752.320511-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32c; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32c.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783334303270158500 From: Shameer Kolothum smmuv3_accel_event_read_validate() returns true for EAGAIN/EINTR, but no data has been read into the buffer. Callers treat true as success and proceed to use the uninitialized buffer. Change the return type to int with three distinct states: 0 =E2=80=94 success, buf is populated and valid 1 =E2=80=94 EAGAIN/EINTR, no data available -1 =E2=80=94 error, @errp set Resolves: Coverity CID 1660057 Fixes: d4aea0f75b ("hw/arm/smmuv3-accel: Introduce common helper for vevent= q read") Reported-by: Peter Maydell Signed-off-by: Shameer Kolothum Reviewed-by: Eric Auger Message-id: 20260625122843.107584-1-skolothumtho@nvidia.com Signed-off-by: Peter Maydell --- hw/arm/smmuv3-accel-stubs.c | 6 +++--- hw/arm/smmuv3-accel.c | 30 ++++++++++++++++++++---------- hw/arm/smmuv3-accel.h | 4 ++-- hw/arm/tegra241-cmdqv.c | 11 ++++++++--- 4 files changed, 33 insertions(+), 18 deletions(-) diff --git a/hw/arm/smmuv3-accel-stubs.c b/hw/arm/smmuv3-accel-stubs.c index 147ae06163..b8dd7e7b89 100644 --- a/hw/arm/smmuv3-accel-stubs.c +++ b/hw/arm/smmuv3-accel-stubs.c @@ -47,10 +47,10 @@ bool smmuv3_accel_alloc_veventq(SMMUv3State *s, Error *= *errp) return true; } =20 -bool smmuv3_accel_event_read_validate(IOMMUFDVeventq *veventq, uint32_t ty= pe, - void *buf, size_t size, Error **errp) +int smmuv3_accel_event_read_validate(IOMMUFDVeventq *veventq, uint32_t typ= e, + void *buf, size_t size, Error **errp) { - return true; + return 0; } =20 =20 diff --git a/hw/arm/smmuv3-accel.c b/hw/arm/smmuv3-accel.c index 5e83dbd8ee..91aca1aa14 100644 --- a/hw/arm/smmuv3-accel.c +++ b/hw/arm/smmuv3-accel.c @@ -441,8 +441,13 @@ bool smmuv3_accel_issue_inv_cmd(SMMUv3State *bs, void = *cmd, SMMUDevice *sdev, sizeof(Cmd), &entry_num, cmd, errp); } =20 -bool smmuv3_accel_event_read_validate(IOMMUFDVeventq *veventq, uint32_t ty= pe, - void *buf, size_t size, Error **errp) +/* + * Returns 0 on success (buf is populated and valid). + * Returns 1 if the read should be retried (EAGAIN/EINTR). + * Returns -1 on error with @errp set. + */ +int smmuv3_accel_event_read_validate(IOMMUFDVeventq *veventq, uint32_t typ= e, + void *buf, size_t size, Error **errp) { uint32_t last_seq =3D veventq->last_event_seq; uint32_t id =3D veventq->veventq_id; @@ -452,22 +457,22 @@ bool smmuv3_accel_event_read_validate(IOMMUFDVeventq = *veventq, uint32_t type, bytes =3D read(veventq->veventq_fd, buf, size); if (bytes <=3D 0) { if (errno =3D=3D EAGAIN || errno =3D=3D EINTR) { - return true; + return 1; } error_setg(errp, "vEVENTQ(type %u id %u): read failed (%m)", type,= id); - return false; + return -1; } hdr =3D (struct iommufd_vevent_header *)buf; if (bytes =3D=3D sizeof(*hdr) && (hdr->flags & IOMMU_VEVENTQ_FLAG_LOST_EVENTS)) { error_setg(errp, "vEVENTQ(type %u id %u): overflowed", type, id); veventq->event_start =3D false; - return false; + return -1; } if (bytes < size) { error_setg(errp, "vEVENTQ(type %u id %u): short read(%zd/%zd bytes= )", type, id, bytes, size); - return false; + return -1; } /* Check sequence in hdr for lost events if any */ if (veventq->event_start && (hdr->sequence - last_seq !=3D 1)) { @@ -476,7 +481,7 @@ bool smmuv3_accel_event_read_validate(IOMMUFDVeventq *v= eventq, uint32_t type, } veventq->last_event_seq =3D hdr->sequence; veventq->event_start =3D true; - return true; + return 0; } =20 static void smmuv3_accel_event_read(void *opaque) @@ -488,13 +493,18 @@ static void smmuv3_accel_event_read(void *opaque) struct iommu_vevent_arm_smmuv3 vevent; } buf; Error *local_err =3D NULL; + int ret; =20 - if (!smmuv3_accel_event_read_validate(veventq, - IOMMU_VEVENTQ_TYPE_ARM_SMMUV3, &= buf, - sizeof(buf), &local_err)) { + ret =3D smmuv3_accel_event_read_validate(veventq, + IOMMU_VEVENTQ_TYPE_ARM_SMMUV3, = &buf, + sizeof(buf), &local_err); + if (ret < 0) { warn_report_err_once(local_err); return; } + if (ret > 0) { + return; /* EAGAIN/EINTR */ + } smmuv3_propagate_event(s, (Evt *)&buf.vevent); } =20 diff --git a/hw/arm/smmuv3-accel.h b/hw/arm/smmuv3-accel.h index dd755c394d..ea11d513cc 100644 --- a/hw/arm/smmuv3-accel.h +++ b/hw/arm/smmuv3-accel.h @@ -97,8 +97,8 @@ bool smmuv3_accel_issue_inv_cmd(SMMUv3State *s, void *cmd= , SMMUDevice *sdev, Error **errp); void smmuv3_accel_idr_override(SMMUv3State *s); bool smmuv3_accel_alloc_veventq(SMMUv3State *s, Error **errp); -bool smmuv3_accel_event_read_validate(IOMMUFDVeventq *veventq, uint32_t ty= pe, - void *buf, size_t size, Error **errp= ); +int smmuv3_accel_event_read_validate(IOMMUFDVeventq *veventq, uint32_t typ= e, + void *buf, size_t size, Error **errp); void smmuv3_accel_reset(SMMUv3State *s); SMMUv3AccelCmdqvType smmuv3_accel_cmdqv_type(Object *obj); =20 diff --git a/hw/arm/tegra241-cmdqv.c b/hw/arm/tegra241-cmdqv.c index 29c488e0e4..7223aa9d1d 100644 --- a/hw/arm/tegra241-cmdqv.c +++ b/hw/arm/tegra241-cmdqv.c @@ -841,13 +841,18 @@ static void tegra241_cmdqv_event_read(void *opaque) struct iommu_vevent_tegra241_cmdqv vevent; } buf; Error *local_err =3D NULL; + int ret; =20 - if (!smmuv3_accel_event_read_validate(veventq, - IOMMU_VEVENTQ_TYPE_TEGRA241_CMDQ= V, - &buf, sizeof(buf), &local_err)) { + ret =3D smmuv3_accel_event_read_validate(veventq, + IOMMU_VEVENTQ_TYPE_TEGRA241_CMD= QV, + &buf, sizeof(buf), &local_err); + if (ret < 0) { warn_report_err_once(local_err); return; } + if (ret > 0) { + return; /* EAGAIN/EINTR */ + } =20 if (buf.vevent.lvcmdq_err_map[0] || buf.vevent.lvcmdq_err_map[1]) { cmdqv->vintf_cmdq_err_map[0] =3D --=20 2.43.0 From nobody Sun Jul 26 11:01:48 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1783334322; cv=none; d=zohomail.com; s=zohoarc; b=Z8/JnHJ/lHcyd4PFglMYFuMlang7SM0cSrx2qOnSSMXMfa2OIGjRW7LDwweCnV0aNEF2blK1jTqfLWX2HI5aBrLbz5seHyKO5ApE9eb8sW22jGZ+NpZBMcozcZwdlBNN3OFeKbhK+bdD5J7YuHOGjdlZ3EZTZav0t//mWU2/YNw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783334322; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=QQTwqppPqiePeZawZcTwYiUXWYlSSZwaAcnX9202ai8=; b=n8ZDJ6L7HF+q3sdand4opyinFuooGQWtVD30Vzuv2MYTDinoeuAdPUkykH4L4pzXGvWoo5ziBdjuAabteMeWRhhU7w6KaG2M4Qhbp0hAxfid+IVv3madGrqD/PS5+NNjzdSircpeHpE4s+2aGojq4K37wAJ1pFbwEUgC7vj812Q= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17833343228871018.2872060201407; Mon, 6 Jul 2026 03:38:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wggiW-000734-N2; Mon, 06 Jul 2026 06:38:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wggi9-0006xe-7n for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:01 -0400 Received: from mail-wm1-x336.google.com ([2a00:1450:4864:20::336]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wggi7-0003FE-MV for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:01 -0400 Received: by mail-wm1-x336.google.com with SMTP id 5b1f17b1804b1-493bfe9f886so15658985e9.0 for ; Mon, 06 Jul 2026 03:37:59 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63b6f1bsm329501805e9.10.2026.07.06.03.37.56 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jul 2026 03:37:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783334278; x=1783939078; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=QQTwqppPqiePeZawZcTwYiUXWYlSSZwaAcnX9202ai8=; b=spVv6VabpE+UiHDbpsgARZ8dWo/YTisg/mNhm+zC5JvPH+vTMpRASsDKj9SsVdkrz9 TViQBRj7kB95FAuE6vJuttp+2EDGpASw76DKY1paCIxWCpXwteRD6OA+GXX6+D7W+WdA q4jHeL1+PXHSROe/N2QGurvjKRaOn1OD56MEmZQ6GnbM9A6TR6Notm1CeDtnfkB5DFmB uoygztxAkLkvXZIUCeCnYVFuRAHNr8AY/jg/O+uHbAFCnDd0Y6IvHD2kZ7Q7qHyA+17/ X8JWwR6tdiqo+A6/R10jRYF3ouYj6DvCBCTn4PQyT8LaoJByUHdaBIeA2FP2ys8qh3ZK I6yA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783334278; x=1783939078; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=QQTwqppPqiePeZawZcTwYiUXWYlSSZwaAcnX9202ai8=; b=i4zrGLObKDnE7fJSvQ5FSw0+UBJXaK4mrgneOcG+Nzq3vgNSJlq6M9114FmnXGphzl 0H7liAJ8AzrtaBdYPO6LGyFyOu8LU/WK42wq3aHMo6uYSLJQQjvYEp81+v3Nuc75Bxke BIf4OnBqQDpsNzPtR2SXlSkMDunqw1nvTIijmeIKRjwE8Ww3VD75SAJJOGTaBnk16ODv wHRpaIHZTBm6VrV3TKU4Y1WEYRi412+gOlQpne7WG4gzZyJ0WS9y/wntyFjiO6b8Kara 9QteGPnbEUeoB7xYcWDFlhu2Ma5RP5J+gqlmJxiP9Vu03GNik3QkuiyWJMSALdEcSdyo TAKg== X-Gm-Message-State: AOJu0YynIoPCfsjr0hcuQldDngsh3qHk78JdKQNmFu7mTEdt4s5bLG66 SIeRoXzX/PgFwEv/izSW6wn2ajCvcP6PE4FDlyRrP168uxxLfHPZ5FPspNyREJuMVYVCH5Uuafk AS6KsuRe7ug== X-Gm-Gg: AfdE7clWrt9FX1GKqhwb0MgyBx6Ae+m47hElwTzvyKm7VqJ6VOdofrdGkfe2VuE8w3v /KP6XHXB6mKxQ4dFV6Qh60Yzsy/QYB5s1HQ78xZNtBOcv3jeceH/g0RE0JsPX3xORTCUn/PT9g/ /PdLyiAqwoUHj2yv4B3Bf3GSq4RU4gLeEN7KTKrIhS968OsGnfXcgplCpZsLA/BTe1O/8Rtirki 9vbnV6CauEBhwxWGTu675OkKBEH5RMd6OcF5AMs0hrueRpj/WjC67jeHATFojNFqNc5kVkzb4kl fO0m2SyO362kUqsdQ3uGqYAltU13uKwswT5vcVHrM5NerY8mr55NJLFfK3pfI0pBRjCwmnD196X GbRoj6URqUgWZZT1Noc7rS/axlwGEkeHedm8IK+fMWeOXvbg3LtKe/DpVsfHfbMR73MUv5tlW/g RP6qFzjjv9cUwQyL/JcCPIbckFNLdFM7pJNZcSvcU1qMCT5RdR9YeaZ4TMQDvzZ4rkZu2d3sN16 QJEdzYPYnLd+/ulCe7VqQ== X-Received: by 2002:a05:600c:190c:b0:490:e5c1:b8bf with SMTP id 5b1f17b1804b1-493d1cf1be4mr97442735e9.13.1783334278252; Mon, 06 Jul 2026 03:37:58 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 03/49] target/arm: Only evaluate SCR_EL3.PIEN if ARM_FEATURE_EL3 is present Date: Mon, 6 Jul 2026 11:37:06 +0100 Message-ID: <20260706103752.320511-4-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260706103752.320511-1-peter.maydell@linaro.org> References: <20260706103752.320511-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::336; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x336.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783334325111158500 Content-Type: text/plain; charset="utf-8" From: Oliver Upton Running KVM with (as of writing, out-of-tree) support for FEAT_S2PIE on -cpu max gets stuck in an infinite loop of stage-2 permission faults due to the PTW incorrectly using an effective value of 0 for S2PIR_EL2. Similar to how S1PIE is handled, only use the IMPLEMENTATION SPECIFIC value of 0 for S2PIR_EL2 if EL3 is implemented and PIEN=3D0. Cc: qemu-stable@nongnu.org Fixes: a811c5dafb ("target/arm: Implement get_S2prot_indirect") Reviewed-by: Richard Henderson Signed-off-by: Oliver Upton Message-id: 20260626231738.947317-1-oupton@kernel.org [PMM: removed hardcoded tab] Signed-off-by: Peter Maydell --- target/arm/ptw.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/target/arm/ptw.c b/target/arm/ptw.c index 99295954a1..a29de0385f 100644 --- a/target/arm/ptw.c +++ b/target/arm/ptw.c @@ -1490,9 +1490,14 @@ static int get_S2prot_indirect(CPUARMState *env, Get= PhysAddrResult *result, PAGE_READ | PAGE_WRITE }, }; =20 - uint64_t pir =3D (env->cp15.scr_el3 & SCR_PIEN ? env->cp15.s2pir_el2 := 0); - int s2pi =3D extract64(pir, pi_index * 4, 4); + uint64_t pir =3D env->cp15.s2pir_el2; + int s2pi; =20 + if (arm_feature(env, ARM_FEATURE_EL3) && !(env->cp15.scr_el3 & SCR_PIE= N)) { + pir =3D 0; + } + + s2pi =3D extract64(pir, pi_index * 4, 4); result->f.prot =3D perm_table[s2pi][2]; return perm_table[s2pi][s1_is_el0]; } --=20 2.43.0 From nobody Sun Jul 26 11:01:48 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1783334361; cv=none; d=zohomail.com; s=zohoarc; b=Y6BbgqEQ5kQ75EI3jUtqhQmlTlJHCAA4buQEIk8cHagN4QJU/IMJn8ubwHHlEXQ1fcAruwS9L+YDh/cQliew0FPB9TArxQRF9W5XCn7gyhPmvjxlEGtU6rrQCL3BKGrDiygbTPaMDYCSuB4I1shXDHNp0QcrWU7dMInOntg21Ks= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783334361; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=iclwxfzEgrD+jvUMgxN+U2TLgEtviJ2+kKpQnsZMhoo=; b=hU67iLDVrmmvIifO+AWdxgYa6TbqVviX+tj6kkdrRQJWseW6Tg0lOwt2O1a/6L2a/UoEDqZ5k9MPrHN3LAXPp00L1GH4Lc5PPifsosaEMLRlKTMgmnRTZjvK3m6M1j+NrsiQ4dN6e49guw8mK9Zk5Z72cM54RjMP9WwZ8a/I1n0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17833343619271008.1667494744112; Mon, 6 Jul 2026 03:39:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wggio-0007Rm-Ks; Mon, 06 Jul 2026 06:38:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wggiB-0006zR-In for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:05 -0400 Received: from mail-wm1-x330.google.com ([2a00:1450:4864:20::330]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wggi8-0003FU-N4 for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:02 -0400 Received: by mail-wm1-x330.google.com with SMTP id 5b1f17b1804b1-493ba701891so22638225e9.3 for ; Mon, 06 Jul 2026 03:38:00 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63b6f1bsm329501805e9.10.2026.07.06.03.37.58 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jul 2026 03:37:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783334279; x=1783939079; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=iclwxfzEgrD+jvUMgxN+U2TLgEtviJ2+kKpQnsZMhoo=; b=iPKKrJCiaKCpNWNANq2mvYXHgs4cuD/l7Z7cqq6/7GtReCG03hMDq/vDua2O04902I xj3Zqe+6pKkBEfI7dr68bR4LPMunZ3CKLtROV9kcsXq2SUCysrFwyqXc0odYdbFIg2uu URe3TVYnpvg5vtfXPPRGsyWz6YxJF47pAwTbqX/N0xq9/ytt9bU3Fn+KMb8xNKUEUb1t E/pBkIiLatMUcalp7eGlczoIL0ezxG3F2vd/Fj/kPtvimc7YYmE+UPiUQ5XhMzo091Y+ 2cJK1forOK/o/0d3ey9f5txossT6qOnYsT6ZpntjBTK6eAqsKpJQnpKY8XmVWhhVllzT msJQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783334279; x=1783939079; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=iclwxfzEgrD+jvUMgxN+U2TLgEtviJ2+kKpQnsZMhoo=; b=hfzpVnawjsDw/DJyRm+o6XuhNAUBxkArMXHaUSH3KCFo5pTC+QYxmt8DX3u8nO1Ni+ M+JJ5ZVPQ+fc6gvP6aBmEa7BkMFS2ZtGbmwL6WTcNhltVUUkWZHtz91H1Q5oVbhUDqVw CY7gddqQ1WKY2w+sy43RUznZdp4mUsWrNruNcGd16aS5NtridoZJCoHJbjBD/MRejMU4 UmAwSX7ZhKiKBLyuDB3cewmV0ffWJt0lzhHSYhPpyphYFuMB0KrVDc9XfCrV8qUPCn6i aM/fmOV5lYk9wmyziV9+Ub6NnbBeY9AbmqSk3bgIq72C4cJuOvzzlT+0sUbsSHC+qQ39 UsfQ== X-Gm-Message-State: AOJu0Ywj2qRtl5E1h4eDYQ+n8XzLJ+3wJrVkblQR90E1aR/VgxPVjQg9 ZSmg/pDVw5qc8p/jQZAX+wIh9xytuYMHgRtqlYT77sugk46AtUbD3WXpfh+1yw4u1SEJ3YkGyR3 /zHRNZrva5Q== X-Gm-Gg: AfdE7ck4o7dDjbYCpCGD8htWhXbw8FFe3JKdgLqTkHSaB9p3sZHkWlfkeKlUMIRVXnD lreyEBY1Eq05whZZK7jO0EPPFLTsDzu/xxPd0CjYFwnZjL37QnxoV3DqjTmpeQCgassmiKPfWiE eby2orVRhTTkLu+wQPppJe99i9Q6InFpDbSyhX/vs+sLJIal56yF+DxxgGE6kosUzi8bavBviTB IZBCymAybtgLW6593LVw/p1ME7o0f5zfdGiqvWcmbtceEtlD7QU/2/2TC4EzwCX0S48Jkx2fe8c UytDnIsDa/cSM71yP3nyht/CbrjCNMvZPirtfbC5FWxkxgQdEbqDPrzD8KTlUIfNMrN7I2Vmbbf 8XRwls8M7Lhon0p8gimbVOVe7vJB6PTYTq87yLUnINt8NN7W567ZXrcSXu9rKR+R09rpZveBrak ZK3zaQJUK4yRr4DRDbqdDdc+f/TWYuOCSbFD5h801fJ3ntWeUI2FnULoyu4TmLBTI90QRVidmTL xhPXjrMemAucRwqNMds6g05y0bX5RBV X-Received: by 2002:a05:600c:34d3:b0:493:c062:a533 with SMTP id 5b1f17b1804b1-493d11dd0ffmr117212255e9.17.1783334279177; Mon, 06 Jul 2026 03:37:59 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 04/49] target/arm/tcg: Implement new instructions for FPRCVT Date: Mon, 6 Jul 2026 11:37:07 +0100 Message-ID: <20260706103752.320511-5-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260706103752.320511-1-peter.maydell@linaro.org> References: <20260706103752.320511-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::330; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x330.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783334363571158500 Content-Type: text/plain; charset="utf-8" From: Jim MacArthur Adds the opcode format for the SIMD versions of FCVTXX and [US]CVTF. These use very similar logic to the FP-to-general and general-to-FP register versions which exist, but use another SIMD/FP register as source or destination. The source and destination size rules are slightly different. Signed-off-by: Jim MacArthur Reviewed-by: Richard Henderson Message-id: 20260630-jmac-fprcvt-v3-1-f4840d5e0a7f@linaro.org Signed-off-by: Peter Maydell --- target/arm/cpu-features.h | 5 +++ target/arm/tcg/a64.decode | 15 +++++++ target/arm/tcg/translate-a64.c | 77 +++++++++++++++++++++++----------- 3 files changed, 73 insertions(+), 24 deletions(-) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 98102d75bf..e1d9259d30 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1685,6 +1685,11 @@ static inline bool isar_feature_aa64_f8mm4(const ARM= ISARegisters *id) return FIELD_EX64_IDREG(id, ID_AA64FPFR0, F8MM4); } =20 +static inline bool isar_feature_aa64_fprcvt(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64ISAR3, FPRCVT); +} + /* * Combinations of feature tests, for ease of use with TRANS_FEAT. */ diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index 28cd1faf61..5b6f156d08 100644 --- a/target/arm/tcg/a64.decode +++ b/target/arm/tcg/a64.decode @@ -1456,6 +1456,21 @@ FCVTZU_g . 0011110 .. 111001 000000 ..... ...= .. @icvt FCVTAS_g . 0011110 .. 100100 000000 ..... ..... @icvt FCVTAU_g . 0011110 .. 100101 000000 ..... ..... @icvt =20 +# Conversion between floating-point and integer (SIMD & FP) +SCVTF_simd . 0011110 .. 111100 000000 ..... ..... @icvt +UCVTF_simd . 0011110 .. 111101 000000 ..... ..... @icvt + +FCVTAS_g_simd . 0011110 .. 111010 000000 ..... ..... @icvt +FCVTAU_g_simd . 0011110 .. 111011 000000 ..... ..... @icvt +FCVTMS_g_simd . 0011110 .. 110100 000000 ..... ..... @icvt +FCVTMU_g_simd . 0011110 .. 110101 000000 ..... ..... @icvt +FCVTNS_g_simd . 0011110 .. 101010 000000 ..... ..... @icvt +FCVTNU_g_simd . 0011110 .. 101011 000000 ..... ..... @icvt +FCVTPS_g_simd . 0011110 .. 110010 000000 ..... ..... @icvt +FCVTPU_g_simd . 0011110 .. 110011 000000 ..... ..... @icvt +FCVTZS_g_simd . 0011110 .. 110110 000000 ..... ..... @icvt +FCVTZU_g_simd . 0011110 .. 110111 000000 ..... ..... @icvt + FJCVTZS 0 0011110 01 111110 000000 ..... ..... @rr =20 FMOV_ws 0 0011110 00 100110 000000 ..... ..... @rr diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 227719ef25..0da365e345 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -9905,12 +9905,14 @@ TRANS(SCVTF_g, do_cvtf_g, a, true) TRANS(UCVTF_g, do_cvtf_g, a, false) =20 /* - * [US]CVTF (vector), scalar version. - * Which sounds weird, but really just means input from fp register + * [US]CVTF (vector), scalar or SIMD version. + * Which sounds weird, but really just means input from FP/SIMD register * instead of input from general register. Input and output element - * size are always equal. + * size are always equal for the scalar version and different for the + * SIMD version. */ -static bool do_cvtf_f(DisasContext *s, arg_fcvt *a, bool is_signed) +static bool do_cvtf_f(DisasContext *s, arg_fcvt *a, MemOp src_mop_int, + bool is_signed) { TCGv_i64 tcg_int; int check =3D fp_access_check_scalar_hsd(s, a->esz); @@ -9918,14 +9920,18 @@ static bool do_cvtf_f(DisasContext *s, arg_fcvt *a,= bool is_signed) if (check <=3D 0) { return check =3D=3D 0; } - tcg_int =3D tcg_temp_new_i64(); - read_vec_element(s, tcg_int, a->rn, 0, a->esz | (is_signed ? MO_SIGN := 0)); + read_vec_element(s, tcg_int, a->rn, 0, + src_mop_int | (is_signed ? MO_SIGN : 0)); return do_cvtf_scalar(s, a->esz, a->rd, a->shift, tcg_int, is_signed); } =20 -TRANS(SCVTF_f, do_cvtf_f, a, true) -TRANS(UCVTF_f, do_cvtf_f, a, false) +TRANS(SCVTF_f, do_cvtf_f, a, a->esz, true) +TRANS(UCVTF_f, do_cvtf_f, a, a->esz, false) +TRANS_FEAT(SCVTF_simd, aa64_fprcvt, do_cvtf_f, a, + a->sf ? MO_64 : MO_32, true) +TRANS_FEAT(UCVTF_simd, aa64_fprcvt, do_cvtf_f, a, + a->sf ? MO_64 : MO_32, false) =20 static void do_fcvt_scalar(DisasContext *s, MemOp out, MemOp esz, TCGv_i64 tcg_out, int shift, int rn, @@ -10044,6 +10050,7 @@ static bool do_fcvt_g(DisasContext *s, arg_fcvt *a, return true; } =20 + TRANS(FCVTNS_g, do_fcvt_g, a, FPROUNDING_TIEEVEN, true) TRANS(FCVTNU_g, do_fcvt_g, a, FPROUNDING_TIEEVEN, false) TRANS(FCVTPS_g, do_fcvt_g, a, FPROUNDING_POSINF, true) @@ -10056,13 +10063,14 @@ TRANS(FCVTAS_g, do_fcvt_g, a, FPROUNDING_TIEAWAY,= true) TRANS(FCVTAU_g, do_fcvt_g, a, FPROUNDING_TIEAWAY, false) =20 /* - * FCVT* (vector), scalar version. - * Which sounds weird, but really just means output to fp register + * FCVT* (vector), scalar or SIMD/FP version. + * Which sounds weird, but really just means output to fp or SIMD register * instead of output to general register. Input and output element - * size are always equal. + * size are always equal for the scalar version and different for the + * SIMD version. */ static bool do_fcvt_f(DisasContext *s, arg_fcvt *a, - ARMFPRounding rmode, bool is_signed) + ARMFPRounding rmode, MemOp dst_mop_int, bool is_sign= ed) { TCGv_i64 tcg_int; int check =3D fp_access_check_scalar_hsd(s, a->esz); @@ -10072,26 +10080,47 @@ static bool do_fcvt_f(DisasContext *s, arg_fcvt *= a, } =20 tcg_int =3D tcg_temp_new_i64(); - do_fcvt_scalar(s, a->esz | (is_signed ? MO_SIGN : 0), + do_fcvt_scalar(s, dst_mop_int | (is_signed ? MO_SIGN : 0), a->esz, tcg_int, a->shift, a->rn, rmode); =20 if (!s->fpcr_nep) { clear_vec(s, a->rd); } - write_vec_element(s, tcg_int, a->rd, 0, a->esz); + write_vec_element(s, tcg_int, a->rd, 0, dst_mop_int); return true; } =20 -TRANS(FCVTNS_f, do_fcvt_f, a, FPROUNDING_TIEEVEN, true) -TRANS(FCVTNU_f, do_fcvt_f, a, FPROUNDING_TIEEVEN, false) -TRANS(FCVTPS_f, do_fcvt_f, a, FPROUNDING_POSINF, true) -TRANS(FCVTPU_f, do_fcvt_f, a, FPROUNDING_POSINF, false) -TRANS(FCVTMS_f, do_fcvt_f, a, FPROUNDING_NEGINF, true) -TRANS(FCVTMU_f, do_fcvt_f, a, FPROUNDING_NEGINF, false) -TRANS(FCVTZS_f, do_fcvt_f, a, FPROUNDING_ZERO, true) -TRANS(FCVTZU_f, do_fcvt_f, a, FPROUNDING_ZERO, false) -TRANS(FCVTAS_f, do_fcvt_f, a, FPROUNDING_TIEAWAY, true) -TRANS(FCVTAU_f, do_fcvt_f, a, FPROUNDING_TIEAWAY, false) +TRANS(FCVTNS_f, do_fcvt_f, a, FPROUNDING_TIEEVEN, a->esz, true) +TRANS(FCVTNU_f, do_fcvt_f, a, FPROUNDING_TIEEVEN, a->esz, false) +TRANS(FCVTPS_f, do_fcvt_f, a, FPROUNDING_POSINF, a->esz, true) +TRANS(FCVTPU_f, do_fcvt_f, a, FPROUNDING_POSINF, a->esz, false) +TRANS(FCVTMS_f, do_fcvt_f, a, FPROUNDING_NEGINF, a->esz, true) +TRANS(FCVTMU_f, do_fcvt_f, a, FPROUNDING_NEGINF, a->esz, false) +TRANS(FCVTZS_f, do_fcvt_f, a, FPROUNDING_ZERO, a->esz, true) +TRANS(FCVTZU_f, do_fcvt_f, a, FPROUNDING_ZERO, a->esz, false) +TRANS(FCVTAS_f, do_fcvt_f, a, FPROUNDING_TIEAWAY, a->esz, true) +TRANS(FCVTAU_f, do_fcvt_f, a, FPROUNDING_TIEAWAY, a->esz, false) + +TRANS_FEAT(FCVTNS_g_simd, aa64_fprcvt, do_fcvt_f, a, + FPROUNDING_TIEEVEN, a->sf ? MO_64 : MO_32, true) +TRANS_FEAT(FCVTNU_g_simd, aa64_fprcvt, do_fcvt_f, a, + FPROUNDING_TIEEVEN, a->sf ? MO_64 : MO_32, false) +TRANS_FEAT(FCVTPS_g_simd, aa64_fprcvt, do_fcvt_f, a, + FPROUNDING_POSINF, a->sf ? MO_64 : MO_32, true) +TRANS_FEAT(FCVTPU_g_simd, aa64_fprcvt, do_fcvt_f, a, + FPROUNDING_POSINF, a->sf ? MO_64 : MO_32, false) +TRANS_FEAT(FCVTMS_g_simd, aa64_fprcvt, do_fcvt_f, a, + FPROUNDING_NEGINF, a->sf ? MO_64 : MO_32, true) +TRANS_FEAT(FCVTMU_g_simd, aa64_fprcvt, do_fcvt_f, a, + FPROUNDING_NEGINF, a->sf ? MO_64 : MO_32, false) +TRANS_FEAT(FCVTZS_g_simd, aa64_fprcvt, do_fcvt_f, a, + FPROUNDING_ZERO, a->sf ? MO_64 : MO_32, true) +TRANS_FEAT(FCVTZU_g_simd, aa64_fprcvt, do_fcvt_f, a, + FPROUNDING_ZERO, a->sf ? MO_64 : MO_32, false) +TRANS_FEAT(FCVTAS_g_simd, aa64_fprcvt, do_fcvt_f, a, + FPROUNDING_TIEAWAY, a->sf ? MO_64 : MO_32, true) +TRANS_FEAT(FCVTAU_g_simd, aa64_fprcvt, do_fcvt_f, a, + FPROUNDING_TIEAWAY, a->sf ? MO_64 : MO_32, false) =20 static bool trans_FJCVTZS(DisasContext *s, arg_FJCVTZS *a) { --=20 2.43.0 From nobody Sun Jul 26 11:01:48 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1783334360; cv=none; d=zohomail.com; s=zohoarc; b=VYTdhh42WoJ3GJnCoNs9kWj4l3oY5m5Vsape8ZOLSYxkEfrM0QJpigtgh/g463Kcq/doYvGGSJ4PfpzQbmk1eaJgoORRiJlXizS5a7TnLZE/lH9Z42BZXg5dWXkiXxstJKIthrEoyXTWkTI2dtVwBfkO84Xh1vGzZMX4gBWagT4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783334360; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=8FUejTYmodH0wqj+6a2DCfVObYS5abMbFRH/NIXkG5c=; b=Krxb0uaj3Vb8OTki4OfI31tU/NZp21zluiwj8IrWjQUeqZsrN+VlTmnM5jRJ0pfwENS1GMOIMrtRU93Jau0jfJ8FLgaIX/NxQzUlzEOyaZGLgQ/9FFRTnAyHnSvdE3qLFBIAF5TY8IRdXzbVnhp9LcTy/Bl5j+ZHnio8+IjGeb0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783334360868568.3844091937323; Mon, 6 Jul 2026 03:39:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wggib-00078a-7K; Mon, 06 Jul 2026 06:38:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wggiB-0006zS-Iv for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:05 -0400 Received: from mail-wm1-x334.google.com ([2a00:1450:4864:20::334]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wggi9-0003Fb-Ed for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:02 -0400 Received: by mail-wm1-x334.google.com with SMTP id 5b1f17b1804b1-493c83474ddso26354655e9.3 for ; Mon, 06 Jul 2026 03:38:01 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63b6f1bsm329501805e9.10.2026.07.06.03.37.59 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jul 2026 03:37:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783334280; x=1783939080; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=8FUejTYmodH0wqj+6a2DCfVObYS5abMbFRH/NIXkG5c=; b=ACKcplgl1UnmF4sXyOtpE0VR8HI25RvrO2J4ziaPEw7V9cVAJsAPixATYkBR6/LVxg du9fpo4ymZAotipDviTtebtLkMqESJHUQXDstw/gqBsffii5MKqj7vg2wTUEWMunjpAT uMrypBkbGL4cJnLrSmfekuNfcdmjox9kjRj3+tPvNO8iw1pK47CEBP4VnMhprVDQwONm W6LUh2H2I2ZL1jSUi5mEdS6PNHR3c9y+IhBhdBv8Yi/NLzKCJhvFt0iVFdIenL2DQWGb xkLP3nLADo6M6pPBzjGeEWsR26fqi3RquSE1zqiZa2DgpZzJ6HYfMPqN8PcTjSMKe2qs Xj7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783334280; x=1783939080; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=8FUejTYmodH0wqj+6a2DCfVObYS5abMbFRH/NIXkG5c=; b=QFAC+G12hLesRfXl90uTyJRSHo/Uy7rg3M36FRSGwhCUuki1fy2yMjcAdQHCv7lJRh Rw1NH3cgDsu66nsnqyFLQB1BViFo7skKJoybLL7K/BBRBQLdZo5Im73nYxUavacZ+QA4 H00pYD/kZTCmw3sFrhr2sl7TlEIXdWIJaGCyKSMk0e5uFXjI7nVEexMz3DgnpZP6TUzu aIZKYbjRFwDW5oO/Lf8NzcQis+AVEF7aB/d3+g9tZB6KvxcfDOwcVFMQypAO5J4Ik1ih ViPTRrqhuDE6KFCYgfiorh84Gg9n/8gtB7kkXBd4u4sa+EZiqfxyFD0P6TOB+lhDwyTI z4Ag== X-Gm-Message-State: AOJu0YyV9L/JAZWCBjxlGxFVAvU52x2ImnHl8+smI06Uf3st/W2/V+Yq G5+rm6r+hCYgsgfGjOEMIsDc2u4+wJqVY0laK/e4CE7JE1UQG9prJMKgnGRNInX8qnYbY9tTpvn bHtKIn4+yNg== X-Gm-Gg: AfdE7ck6xVCOkKyqIjqmgr75FTmjQxZccc0rn+RJfSW9VYAlmh5caVk/ISH2pW2lBvM P03IYMvkwGRHu/+8DnqgNlLw9XHW15Os/VGVbgm8ReEPeTqc0k0fAeJ+4QAjyIk4w+sDue4WmfG 64WWQV3m+Y4ZdSE5nyctNjV8dl3TlaTtMYCTT5irZ5wZhjLe6d41Q4VqyY7Hpr4gUOXJrU4ZLA0 bZDIcsBEyLeahI5gt0yEHuE1uEtiVcaJzn5OafZ0SpsxtsxJ8rhgH7pXxGIKia0UkpGZN90tqI+ Wfc6ALK7rG1RcRAnuuKpLs694kwTDsE8U7BcRg1vz6eF0SLFLsNrfaPMTvRF/EcZC3Qgo8TO0or gDPXnQ9DRJvYegxhoCcZU4CsKxQITfJPCrxrfJYeJTnXPGXMOVPLaa17SJtI8jC0g7FDziEXsg1 +Bgu2ENAdz550hJgoGcvjzu0/ItJX4418gTioCnnXNv2bOSMm/S2ZRLzQvgR63Db3r6Mesu+EwG mUbdD490Wie+SZhKtgI8g== X-Received: by 2002:a05:600c:8716:b0:493:cefc:d113 with SMTP id 5b1f17b1804b1-493d11ceed3mr101859095e9.5.1783334280012; Mon, 06 Jul 2026 03:38:00 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 05/49] target/arm/tcg: Allow vector FP conversions with FPRCVT Date: Mon, 6 Jul 2026 11:37:08 +0100 Message-ID: <20260706103752.320511-6-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260706103752.320511-1-peter.maydell@linaro.org> References: <20260706103752.320511-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::334; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x334.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783334361223158500 From: Jim MacArthur FEAT_FPRCVT allows the vector forms of FCVTXX and [US]CVTF in streaming mode which would otherwise only be available in nonstreaming mode. Reviewed-by: Alex Benn=C3=A9e Reviewed-by: Richard Henderson Signed-off-by: Jim MacArthur Message-id: 20260630-jmac-fprcvt-v3-2-f4840d5e0a7f@linaro.org Signed-off-by: Peter Maydell --- target/arm/tcg/translate-a64.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 0da365e345..2821c84843 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -9915,7 +9915,14 @@ static bool do_cvtf_f(DisasContext *s, arg_fcvt *a, = MemOp src_mop_int, bool is_signed) { TCGv_i64 tcg_int; - int check =3D fp_access_check_scalar_hsd(s, a->esz); + int check; + + /* FEAT_FPRCVT allows vector forms in streaming mode */ + if (dc_isar_feature(aa64_fprcvt, s)) { + s->is_nonstreaming =3D false; + } + + check =3D fp_access_check_scalar_hsd(s, a->esz); =20 if (check <=3D 0) { return check =3D=3D 0; @@ -10073,7 +10080,14 @@ static bool do_fcvt_f(DisasContext *s, arg_fcvt *a, ARMFPRounding rmode, MemOp dst_mop_int, bool is_sign= ed) { TCGv_i64 tcg_int; - int check =3D fp_access_check_scalar_hsd(s, a->esz); + int check; + + /* FEAT_FPRCVT allows vector forms in streaming mode */ + if (dc_isar_feature(aa64_fprcvt, s)) { + s->is_nonstreaming =3D false; + } + + check =3D fp_access_check_scalar_hsd(s, a->esz); =20 if (check <=3D 0) { return check =3D=3D 0; --=20 2.43.0 From nobody Sun Jul 26 11:01:48 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1783334672; cv=none; d=zohomail.com; s=zohoarc; b=RIjchdY85rMErr+1AYkSRyF4r8/glNei2Y9AE4v8G7HcBWmdvKor+mwJCJBCVSsmmqCxQKD3BDBL3IizSs57CX4GGsbYBWjHcv7j/iBo1SQHOewEX0zHaWph+BOyp1mU7+t2iBrwkSzl+0cGK/qoasv6g+dnWuMqyOV8Hcz1UMY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783334672; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=ODf57zRkHDHd0Db6mUb52CYFhVg4YiM5UomsMwkvL+I=; b=d5Ae3ulqyMJhYttbKgwarddNUmsx9Tv+Ly7kt0y5RDpV0ozvgeASe9ROG+kOujmm82Zd0rE5KHXfZMvR7YQgB4tRDMz83uE6N1Uu/LqmPxgSyTUe1GXliDnHJrFs6SpIHvIU87oFaROQgdifCrrso4TGK0JQqBQxj5kQUOmq+W4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783334672342838.4281720830229; Mon, 6 Jul 2026 03:44:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wggid-0007BY-2P; Mon, 06 Jul 2026 06:38:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wggiD-0006zl-Cy for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:05 -0400 Received: from mail-wm1-x333.google.com ([2a00:1450:4864:20::333]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wggiA-0003Fq-4N for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:04 -0400 Received: by mail-wm1-x333.google.com with SMTP id 5b1f17b1804b1-493b1710405so17300365e9.2 for ; Mon, 06 Jul 2026 03:38:01 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63b6f1bsm329501805e9.10.2026.07.06.03.38.00 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jul 2026 03:38:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783334281; x=1783939081; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=ODf57zRkHDHd0Db6mUb52CYFhVg4YiM5UomsMwkvL+I=; b=uMcpQXg0IVBWs91kWboxsOZdey8xCgcO3aq+o7HGc79tz2IkneRPvQzL9z/G7DLKMF +ArpyQaYd57KZsuC3GXPxHiziqbE+zgIKqanFw5BqTlUfncE1j3mP9lwb1hNdcy/wW7O k6ZKfXdrIHDwo9LQ+8wbwO+I5JuNPfeT0/+IsV6wfgwEIseSNNkXbZ7gWfAw5IwLEMET drkUKXhaR12Eiglc/tj656fAo2xtmW2CYeAmGbtxThjkLiZvf5zxkNi97f0Uw5dNCBCS U+QsGGtZi8MwrP3i8JSFqTJMG2ex+w8vh+eYuJBU3AIVMDVUdLxL2eRM5t7tIMpXZhzd Y5sA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783334281; x=1783939081; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=ODf57zRkHDHd0Db6mUb52CYFhVg4YiM5UomsMwkvL+I=; b=fQaXD4x/bh9FEZKdOBht0XcQ0loD7csqPGXimUw7VA/pLeQQk2c7Fs82CzLHl8G/NV By5S+1vVuucux19F+7NXlimCq7CcWHLEDd2pC/oMuxHCjo/57ZImWm1DsmfkvoLRHH6D 1G72W+LzW/2Z/2O5OFdR/o7jGXhZ0lglV8KRROlE0+LGxpYgsi1/mjeAJMWRDNze9x7Q 7vO80Gmsv+nTZIhmejht1uqFn2MiSCWAIJeSj8aakjkSaAgiRnRYV+abqeHaVcah83j6 DcoqYkLs93aKtTkAQ/48cq74bEN+DH4KmAuQL0eGInGSxC93IegukbO0ONmdMCpNJaPQ CSQA== X-Gm-Message-State: AOJu0YzLi/LxQbuIw6rQHBsj0aqsBFerXcuEWnoFzHezGQcB/mYC/68Q oEElEZs33WhUShLC6OHEpS+S5QnVJgYBPcHF+Vz0BX0qTI805yNT/oLCaqS2iRcdeWAiEfUcNRC 9qRd5BuUisQ== X-Gm-Gg: AfdE7clPZpBm4sgZoS+pxnqMKn6t044U07AEdklay/2SWlulbhzfdfnGRA4svNFPVwY dBCPb5HjxunA4iPD+C7qF0P4bAC9RRKufECrCtbVPZERCcLBq3LedA1f4zRV2ShF4mtPU/kk6fq phBcAZ0XtZvhRQ3uvsEv5bDfk6YdaSTbMeO6FSj1dDW4G9MWm2gOq9dk++zWzi37DhI4eipjIrH lcrhgY/cOEyg9JFnwqDE4aY44d36OL0EdbGaNaDrgEUYoWLZ08CHtAqEpWB3XqDFtYW7SW9Jb6X 22g4qI6AjdI7eyttL9Uot6DwkxxzrccqRXAgMExBNO5VQ5sDxm4lhhws0FR85luN4wKtmZdC0Ji 6vfbFjqfUocjf7MWQWKm0Eq6nrS86yRpt6a8GjHGSm8I7B+C/ngyRCJV7ZGxZAqhuKNvI4aFz/F LHb7D4lj78ovyhwvNxq7ySawcaPL7Ufl0q3Izjd0pblqMpYfstr8tccYCjFZ7xvf0Wwj0yj9dFI Dde0kGNCVUuOs7OTD/sPA== X-Received: by 2002:a05:600c:c166:b0:492:63c3:8eeb with SMTP id 5b1f17b1804b1-493d11fe04cmr111773225e9.35.1783334280743; Mon, 06 Jul 2026 03:38:00 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 06/49] target/arm/tcg/cpu64.c: Add FEAT_FPRCVT to cpu_max Date: Mon, 6 Jul 2026 11:37:09 +0100 Message-ID: <20260706103752.320511-7-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260706103752.320511-1-peter.maydell@linaro.org> References: <20260706103752.320511-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::333; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x333.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783334673317158500 From: Jim MacArthur Reviewed-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e Signed-off-by: Jim MacArthur Message-id: 20260630-jmac-fprcvt-v3-3-f4840d5e0a7f@linaro.org Signed-off-by: Peter Maydell --- target/arm/tcg/cpu64.c | 1 + 1 file changed, 1 insertion(+) diff --git a/target/arm/tcg/cpu64.c b/target/arm/tcg/cpu64.c index ae3952a1ed..1f9eb56a94 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -1269,6 +1269,7 @@ void aarch64_max_tcg_initfn(Object *obj) =20 t =3D GET_IDREG(isar, ID_AA64ISAR3); t =3D FIELD_DP64(t, ID_AA64ISAR3, FAMINMAX, 1); /* FEAT_FAMINMAX */ + t =3D FIELD_DP64(t, ID_AA64ISAR3, FPRCVT, 1); /* FEAT_FPRCVT */ SET_IDREG(isar, ID_AA64ISAR3, t); =20 t =3D GET_IDREG(isar, ID_AA64PFR0); --=20 2.43.0 From nobody Sun Jul 26 11:01:48 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1783334341; cv=none; d=zohomail.com; s=zohoarc; b=iUtA7PDej2g69j/ytNZUkHTdbTekmbtdjQEns/Aw/fJTKwvf4rQIucgDxCFr9Xym6BCreteMKTMdctNEyrJhp4YKOhaG/YhaftlwufazjHnfMGkWGla5za/ytQqToMfUbEO0lySyMo8a2zl8o0rAG4CQJL2XLT3wHQggNiPEzLs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783334341; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=BRHsYyKfovCsOHrpArxC8pbUR651XaJyUPFZuqonhrc=; b=UlrKt106cVa6yuqJIt0sB8gRRiwx1+JANtp75ifHPSwEumGI+deV4wNw+1IcK1qHXHsbYZ5d6IndQIPDwbzo6DBjd0JQQCHBeFiBXrMfSiyEy0jUI67V8U42ZtndDhzbT19NmEcZ17VlrSqtzGN4FhtztqfoLGAGhyQHwb924gM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783334341539260.5009299554108; Mon, 6 Jul 2026 03:39:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wggib-00078b-7Z; Mon, 06 Jul 2026 06:38:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wggiD-0006zp-Pi for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:07 -0400 Received: from mail-wm1-x335.google.com ([2a00:1450:4864:20::335]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wggiB-0003G1-9M for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:05 -0400 Received: by mail-wm1-x335.google.com with SMTP id 5b1f17b1804b1-493c52cde9eso29624585e9.3 for ; Mon, 06 Jul 2026 03:38:02 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63b6f1bsm329501805e9.10.2026.07.06.03.38.00 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jul 2026 03:38:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783334282; x=1783939082; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=BRHsYyKfovCsOHrpArxC8pbUR651XaJyUPFZuqonhrc=; b=gVQ6s0WZkZlRNvZYDZce8rANc3W4zmg4Zsk6N+XQmsYyTxOAwcJ+kJ5TqJJwblKOEC QxoixsHIKHRmTXdcpFIjogbSTAzQYvOkw9sFxJc0V0zCCsgDwj0fFHibXSW4wrIhR//y bMYz4QG6jdwq4uhKNNaZuOz4Z3mRuyWhbpWWp9hoj8wqGiMvlcHsffJho7N1NLCqMN8B UcUIfSQdTM8Zh3McRgv6nFc49pLY3Ntltboxe8dYj4HLJQwiJfdOW60s8CGT37FX6Qij iEgMqx5RxDoAkhuzOa7PtuRUS1y6p4MGV28gvQctnesQFsQfLEVF9Yk2CiWg8hW2SK3c IEqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783334282; x=1783939082; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=BRHsYyKfovCsOHrpArxC8pbUR651XaJyUPFZuqonhrc=; b=G5UmOKusJeeYm20cmMvJcXnZi4SS1HUxmFW+EUUiZCNYbTutIqae5t4FyWTagCJlMU ou3zYb3mbE6hJ7L/vh/xprIP958+QcMrx9oWCHhM3RdnbqR1DKm/jI7wHQLnOAm+nreR oepFPiwY0Dr43MU1TDSFrLnLzjJny6Jq6CM+yex3CwxwFToy5Pfb3zLWKLKZDuCO0Wd1 DJ1it08QEGIpyEqTmTQDGuhrd5SCOHVPAdtuRyisqGUYjjGov0+b+3/3rma3Ty0QiY5R Q0a0Wuuwsf5fycGsSv/Q1o2/T8sXq3xuWVKt7L1TQP0FCm7wCanmQC7c9wyW6CwaBMl+ +ymw== X-Gm-Message-State: AOJu0YyqARfLPs6VD0Enwkrxwz8cUMYjw3dDxBNDI+1tjgluzTIAny2D qMG+6f94EEuGMuQ+GRnlxb0pLAJSu+JZSSGv/ywm8Hox1vmyHVPfomnw0eJI0vKNi9CSZ5vPkLh 47tV8pZ+fqw== X-Gm-Gg: AfdE7cmSkKEzoumMF6l+HWw3NIoRYiz6ZeHpE/cBEuamnLgkOsnehvCWonJOwzarrwm Pcw260kgGqDgq2XEYOO4RiF5kZ+J173uPwtS5pLRI3oELQPYnXK7IGAYA1kVeRwV7VobAUFnISe WNpXbdkwLUa0/vZXy8Bb+AgWRJZFwJWF15CR7vR02APnCgjV3IGaAOmZDsBdCZUHyS0u8qKvv+I nhieouVFRkZv33zI73oKPvunWP6gRMA78zThhR/8rqErC+oh6NDYAB5mrNm45Ys2OdP1SoDrl7z PmMLdo5I1o37NJqiVNdblq8UCR/1K7lkBEJ0+oEGbGx0IMEA6o1wv7tOLFdpSE1stHXAkg2Oee3 BVs4Uc6xQUUMiRaw5gruvDCFa8pt/PNY85U7/XKdo/qF9x+WXfh5668xOjCt2K7PzztX69X7A8O YFLPc2cRwCPF6Dqv5FM3EcQqRo0QROGTlgid/YGVQadxGVerTi0fWw3qI469qXJqoN25UMNfsy/ x31zPmffvqjzCEnJxcYJ/gf0wdvC44D X-Received: by 2002:a05:600c:5394:b0:493:bd2f:c5fc with SMTP id 5b1f17b1804b1-493d11d81b1mr114346465e9.15.1783334281698; Mon, 06 Jul 2026 03:38:01 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 07/49] linux-user/aarch64/elfload.c: Add FPRCVT Date: Mon, 6 Jul 2026 11:37:10 +0100 Message-ID: <20260706103752.320511-8-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260706103752.320511-1-peter.maydell@linaro.org> References: <20260706103752.320511-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::335; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x335.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783334343095158500 Content-Type: text/plain; charset="utf-8" From: Jim MacArthur Reviewed-by: Richard Henderson Signed-off-by: Jim MacArthur Message-id: 20260630-jmac-fprcvt-v3-4-f4840d5e0a7f@linaro.org Signed-off-by: Peter Maydell --- linux-user/aarch64/elfload.c | 1 + 1 file changed, 1 insertion(+) diff --git a/linux-user/aarch64/elfload.c b/linux-user/aarch64/elfload.c index 42aeb29306..e33dce7830 100644 --- a/linux-user/aarch64/elfload.c +++ b/linux-user/aarch64/elfload.c @@ -174,6 +174,7 @@ abi_ulong get_elf_hwcap(CPUState *cs) GET_FEATURE_ID(aa64_f8mm8, ARM_HWCAP_A64_F8MM8); GET_FEATURE_ID(aa64_f8mm4, ARM_HWCAP_A64_F8MM4); GET_FEATURE_ID(aa64_ssve_aes, ARM_HWCAP_A64_SME_AES); + GET_FEATURE_ID(aa64_fprcvt, ARM_HWCAP_A64_FPRCVT); =20 return hwcaps; } --=20 2.43.0 From nobody Sun Jul 26 11:01:48 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1783334339; cv=none; d=zohomail.com; s=zohoarc; b=aW2yfXoLGJKaEkFZshWeYq3nfPiktXEo4yFlnHCSGluuQEXJFV2OP9N6qHucS8sx3PKs2nAMPP4IOYPJQvf9p3SerZSk+L/B0lX7kLGIH9gntdF8XJts3Bk5hh2q4FE7YnkDYvPbj5hfiut0JPje8ev//VqQdQsUqSaeBSmP7yQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783334339; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=OrDoB58JzaQayXuT6YvGlxG6wGKQEZMsvLHBmmmRoWo=; b=aa/flyn1r9o2K+Jmu8zMitLqJ3tLpXBBlyv7FzhrKeHzn2+Q7Oy1Mme1jA0q885LIXDh0dKTITLjKCz9ZzSfhH88nemqGtIUp/A/EGBOCsv99+i1JqiLg0rNKVQ9z8E+NNrzG0TAr0tBBgJTVHoz4cobG6XrJrP2VCjqlKIfd/k= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783334339461575.3047565255845; Mon, 6 Jul 2026 03:38:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wggic-0007BG-Uj; Mon, 06 Jul 2026 06:38:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wggiF-000702-C3 for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:10 -0400 Received: from mail-wm1-x32a.google.com ([2a00:1450:4864:20::32a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wggiD-0003G7-3q for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:06 -0400 Received: by mail-wm1-x32a.google.com with SMTP id 5b1f17b1804b1-493b77b150aso27109115e9.2 for ; Mon, 06 Jul 2026 03:38:03 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63b6f1bsm329501805e9.10.2026.07.06.03.38.01 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jul 2026 03:38:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783334282; x=1783939082; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=OrDoB58JzaQayXuT6YvGlxG6wGKQEZMsvLHBmmmRoWo=; b=lNBA0q/TQce+AD0PhSJV35nUsNRBmIgx+SGExLI0JBgPnLC7fVhhEHS4de1EHtoqcn FqT3i1kLiQIHdA0Qcg2vvuA2/Ehvepbm4zQDzWPVcIEqVBo8BWetaFisrRlNeDrxZmCx KvzbJKQlOxss0zrW1Y47SpjoGSgDOLIYjqjUvmfphBp5SdcCYEwI5dza1asF80n07WXD ubud11qGBRMTbU+ZKGDOsG7UEPEdcwNtVT7m/bcIMly2i8xEHK9o0GzemyDIR5MyqqvJ x+gTlz7y3rClr5uG3OB+IAZgLxapFIVzVXAQSWRCHznxGdqLwCM8KoR8Grprkj0B5rxT 5Y1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783334282; x=1783939082; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=OrDoB58JzaQayXuT6YvGlxG6wGKQEZMsvLHBmmmRoWo=; b=SUktLAIfXRWkzLuozfeIANRB9Ll3FgTzQhljZc0K7UTMKOJij8U6mJAWr24iEvnxY+ EndxYBH/jQbmZFrvR12I4PETKzuvukgmbLvfCgJIHl2L2om14sqJHWQ3epixLuzY/m2f 3CN1xSeChP07HFEZ47c3A8JfGERTxZJiP6g/hJkhe3gS+SSbW0SP1d1y5wBeHa1HMBMb xEgzdYTs9lf8rzzTTadesstGBaZVX+RemkqKjUKnpwsaSyRFCq2ruuiz57AKl/VFINl+ CCia7rbZy21/2h7yYUUJPdHcak/CPilvPl7vrK0ewaFxJY1qOuHElk/6lnc1wwv+MA0c ZndA== X-Gm-Message-State: AOJu0YzCoRKOPeNyKJj94keCkdtwas6IaA5cYURQHhwwAC99fFUS4NMe /bJebpwjXIOBJAM1sTA0auKJFE3FOta7a71eiA6DcATjazc6OCdNv3C3jbe9Rt0g7b8J0T/60Iq rmHw8z6jhCQ== X-Gm-Gg: AfdE7ck6mwj0rEycU/qQ2pztTQXrmX/vKLmM+Czdu/xiAzHvBRusUW42DY+rfawi/aN 0rlY0bUgysdbL1OOG+itW6bb4uhMauYjw3vsH2/llos9mW4e/7+lCEJYfSU4tcq0Az83DXdpyoc TnkrYtEkbdL0Q77Lmj4pS4uYmKRFD0Gsf0/ja0HfamStLv4nEjuu9rr0eEcESZjFc1lE2315oRw Ejg7MZQC/zEG/bfcUghZXxVazy5OXHP83sNgxkQO0zuoE4uymUAIkgjRpB6rwT7LYojS/fAegXx BUnOxDrdliHyKlAZJs5BPTkIXu0+Q2HX/1WheBsnd/XuAl8oYrxBgtBfIrr03lrZbtspq8TTkMo gGtHvs0jX0cV0seCPArDSkBbA6s1MkMM7xBvKOmyLMdCNlFY84lNvbSIoBQHGIPVSZflhIgIGxR ltucBRr4u1WOXiaBAoc2sJOCMxQNrafSnjJtLdciMdZYHwsAxsYibhrBlBzdBmejcS8Nk3OZtmo j72Z0Y9J+ZhgXVsjxlOKQ== X-Received: by 2002:a05:600c:6812:b0:493:92c9:1e6d with SMTP id 5b1f17b1804b1-493d11faefbmr118894345e9.33.1783334282544; Mon, 06 Jul 2026 03:38:02 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 08/49] docs/system/arm: Add FEAT_FPRCVT to A-profile support Date: Mon, 6 Jul 2026 11:37:11 +0100 Message-ID: <20260706103752.320511-9-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260706103752.320511-1-peter.maydell@linaro.org> References: <20260706103752.320511-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32a; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32a.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783334341147158500 Content-Type: text/plain; charset="utf-8" From: Jim MacArthur Reviewed-by: Richard Henderson Signed-off-by: Jim MacArthur Message-id: 20260630-jmac-fprcvt-v3-5-f4840d5e0a7f@linaro.org Signed-off-by: Peter Maydell --- docs/system/arm/emulation.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index 191d1a8c93..b1fec58840 100644 --- a/docs/system/arm/emulation.rst +++ b/docs/system/arm/emulation.rst @@ -86,6 +86,7 @@ the following architecture extensions: - FEAT_FPACCOMBINE (Faulting on combined pointer authentication instructio= ns) - FEAT_FPACC_SPEC (Speculative behavior of combined pointer authentication= instructions) - FEAT_FPMR (Floating-point Mode Register) +- FEAT_FPRCVT (Floating-Point to/from Integer in Scalar FP register) - FEAT_FRINTTS (Floating-point to integer instructions) - FEAT_FlagM (Flag manipulation instructions v2) - FEAT_FlagM2 (Enhancements to flag manipulation instructions) --=20 2.43.0 From nobody Sun Jul 26 11:01:48 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1783334344; cv=none; d=zohomail.com; s=zohoarc; b=TiQ/LAbNZKHfUvWxu4V0OtyETsYkYJxKlStQWOUp4U5FaNILIMLBTgwfAquM1tH26ytHYE8v4bEfNR/PzwTRnYdvT34stkSPM9M+nChZ0rY3gKxE1y7buHeZccX4CMR2liqWa/2jgGlST3hDmHeZqHE0N00r/l1Co1n4CAqvXMc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783334344; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=bAvW1IPTU6EfP0gh4hmPVnQQil1eg3LocjPyetNdf2A=; b=QevE7bNgqX+NfSXCvPn2Ardg2vAV3GxS4oVFPeglG9fPHdm4pJysjoNQazqMa7nkLr3oswVguZb+g/U9q1SUrZhKdbEXfUBiQsGTSlwWg9gINex54893mXmBc5qCfIR8UmyvNJ2KAcAuf4KXqPdd/Rlpt+OeOXVaaPSFfc/y9ns= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783334344151882.3175895835438; Mon, 6 Jul 2026 03:39:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wggio-0007Rn-LO; Mon, 06 Jul 2026 06:38:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wggiF-000701-Bd for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:10 -0400 Received: from mail-wm1-x32e.google.com ([2a00:1450:4864:20::32e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wggiD-0003GU-46 for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:06 -0400 Received: by mail-wm1-x32e.google.com with SMTP id 5b1f17b1804b1-490cf3000f0so28924035e9.1 for ; Mon, 06 Jul 2026 03:38:04 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63b6f1bsm329501805e9.10.2026.07.06.03.38.02 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jul 2026 03:38:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783334283; x=1783939083; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=bAvW1IPTU6EfP0gh4hmPVnQQil1eg3LocjPyetNdf2A=; b=XzcriO0hqff1zqAS+J8h1TCaqoSkak1qE+p+zVxzjCm1hQac0gafMIx/nZb3yojjAY XIOrYm4Q+XKE666ivJRuYtxjR9Ur7ku5gGDrTyjjG00kMi9PHgiUrZ5MOAjA8J9qJXVS Nj4sc8CtHK5nR+kILyMrHcKP6y//JKAT1wHjsFq4j+slbV2EazR+6gHTeJ2PsAI4+C74 yBNhi96jqepgtSFnw9PmsdLldGcdK8zsy0P6mNP17jbHxeS5bPXGdPjDCzDNrMNfpGO5 n63e9NDrgV53+KmeQNtM71mxhgyGAV5SzCut90L7NnspkmUkjVXroYjNBluf4GXc1WXx 4zqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783334283; x=1783939083; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=bAvW1IPTU6EfP0gh4hmPVnQQil1eg3LocjPyetNdf2A=; b=KaktaOADGUaH+cHSb/NP8hDAYWaxfwX83FHK0zhuhhqSoZg+8q6201B+K44bOvHpGn Agt/v52YxOtxtm/3iixkpUX2qwwNfyRu22eaGZGHNlo8cCWfkAFhgz/ZSsBlFFn4odrx GpSaUHRwLyQ0Xovc5EuUSLpM9KKwPvnojF0UBb7YvxMg/U4Aiqc5aPnmkSO2q0QVBGoe g70rRDzGdam5h4AuxjJ7LZvs4q85jelv6IrZpDMiMrechPWhfx/4sGudo0x1jTl1rn+5 V9jSpl05bCfS+YhJ532h3BC1BAEqxUVd54IcHt0SSUnE9/aGpUwYpUkPQcN1jMSBHlp0 68fg== X-Gm-Message-State: AOJu0YyvMGI+UGxq/nQgZvEWs9dnHGtZQ6LQXszH7J8NZP4OecVg5tG3 PDYQL7JnQf6pmvBcCflQwxgC6qodxEhHUaGNUd4hcm6pG+hQ/yUBXNT16FoxC7mHBZzvkoOEUU5 vlkL/RGhflQ== X-Gm-Gg: AfdE7ckJqRUw5cXT2ltmUYkFP+qxI7ALhCogPQsSIRatVHmQClcPYPoFof7DwOU6kvi IkCCpgmlvIYt74KCbblR8ODluSz9SShNCpDqxPRWiUNMZNTRCzOuoepKfsEdSqEbqOW4yfFvJ7Y q4+wJR8mCr7Kzon8W7VQd5VRN4g2J3AtmvEelrxBjrcRpdXMzzvyxYdSCryxmmfZv4d2ld0LPR3 uAlRcwNDzNd7a2ZgpSnfY7WGJVbqdwbge2iid/bAoDoCG2rNe33A8Uxz8DtD5ENXHcWBFW6PJUP MwtzEOsmJLVSQGs0LUX4xpXGS8vLtzirfm98JLFuV0g6FK7l2p2l3T3Hw4iDdKPh38kG1ViGpSj x6vafT/O7Q0E73rk+efnkMS5W3o2aWKNGeFUvzWhhqs5xID3nkxGG2twEVcVK+zS46QFaC1C6xn 9PeCbc7bVbv++/xwbIQu3P0NtBN80W4ctHIGf8dea4cgmfRJKTUnnHTRZAWhG+ngbXsikjJ0Ebr 5Vu8DaQGr4E+23Obq8CKw== X-Received: by 2002:a05:600c:3f0a:b0:492:4a50:41fe with SMTP id 5b1f17b1804b1-493d11f05a3mr111330895e9.22.1783334283299; Mon, 06 Jul 2026 03:38:03 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 09/49] tests/tcg/arm: Tests for new FPRCVT instructions Date: Mon, 6 Jul 2026 11:37:12 +0100 Message-ID: <20260706103752.320511-10-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260706103752.320511-1-peter.maydell@linaro.org> References: <20260706103752.320511-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32e; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32e.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783334345317158500 From: Jim MacArthur We autodetect the presence of FPRCVT in the test cross compiler, which is a recent feature in GCC and not supported by many distros yet. If this is in place, we compile the existing fcvt.c test with an extra compiler flag which uses the new SIMD instructions; the output from the test is unchanged. The existing [US]CVTF instructions do not have a test, so no new tests are added for the SIMD versions. They have been tested manually to check the new SIMD versions produce the same numerical results as the existing versions. Reviewed-by: Alex Benn=C3=A9e Signed-off-by: Jim MacArthur Message-id: 20260630-jmac-fprcvt-v3-6-f4840d5e0a7f@linaro.org Signed-off-by: Peter Maydell --- tests/tcg/aarch64/Makefile.target | 14 +++++++++++++- tests/tcg/arm/fcvt.c | 7 +++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/tests/tcg/aarch64/Makefile.target b/tests/tcg/aarch64/Makefile= .target index 6203ac9b51..32f2689273 100644 --- a/tests/tcg/aarch64/Makefile.target +++ b/tests/tcg/aarch64/Makefile.target @@ -28,9 +28,21 @@ config-cc.mak: Makefile $(call cc-option,-march=3Darmv8.5-a, CROSS_CC_HAS_ARMV8_= 5); \ $(call cc-option,-mbranch-protection=3Dstandard, CROSS_CC_HAS_ARMV8_= BTI); \ $(call cc-option,-march=3Darmv8.5-a+memtag, CROSS_CC_HAS_ARMV8_= MTE); \ - $(call cc-option,-Wa$(COMMA)-march=3Darmv9-a+sme $$fnia, CROSS_AS_HAS= _ARMV9_SME)) 3> config-cc.mak + $(call cc-option,-Wa$(COMMA)-march=3Darmv9-a+sme $$fnia, CROSS_AS_HAS= _ARMV9_SME); \ + $(call cc-option,-march=3Darmv9-a+fprcvt, CROSS_CC_HAS_ARMV9_= FPRCVT)) 3> config-cc.mak -include config-cc.mak =20 +ifneq ($(CROSS_CC_HAS_ARMV9_FPRCVT),) +AARCH64_TESTS +=3D fcvt-fprcvt +fcvt-fprcvt: LDFLAGS +=3D -lm +fcvt-fprcvt: CFLAGS +=3D $(CROSS_CC_HAS_ARMV9_FPRCVT) -DFPRCVT +fcvt-fprcvt: fcvt.c + $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS) +run-fcvt-fprcvt: fcvt-fprcvt + $(call run-test,$<,$(QEMU) $<) + $(call diff-out,$<,$(AARCH64_SRC)/fcvt.ref) +endif + ifneq ($(CROSS_CC_HAS_ARMV8_2),) AARCH64_TESTS +=3D dcpop dcpop: CFLAGS +=3D $(CROSS_CC_HAS_ARMV8_2) diff --git a/tests/tcg/arm/fcvt.c b/tests/tcg/arm/fcvt.c index ecebbb0247..7c0cc4367e 100644 --- a/tests/tcg/arm/fcvt.c +++ b/tests/tcg/arm/fcvt.c @@ -171,8 +171,14 @@ static void convert_single_to_integer(void) #if defined(__arm__) /* asm("vcvt.s32.f32 %s0, %s1" : "=3Dt" (output) : "t" (input)); */ output =3D input; +#else +#ifdef FPRCVT + asm("fcvtzs d0, %s1\r\n" + "fmov %0, d0" : + "=3Dr" (output) : "w" (input)); #else asm("fcvtzs %0, %s1" : "=3Dr" (output) : "w" (input)); +#endif #endif print_int64(i, output); } @@ -425,6 +431,7 @@ int main(int argc, char *argv[argc]) convert_double_to_integer(); convert_half_to_integer(); =20 + /* And now with ARM alternative FP16 */ #if defined(__arm__) asm("vmrs r1, fpscr\n\t" --=20 2.43.0 From nobody Sun Jul 26 11:01:48 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1783334534; cv=none; d=zohomail.com; s=zohoarc; b=YuN5U/VU9VVLVU4jC8amdLDd9/bCeHGpd7Bhrsoe0ol2ewdM6EIJf59HEdjqtg+sK3ztcbzJP21gGqmkE0/P7LhnkbQOSHoE9xvKeogiDofHkCjbgYw1Jod1OXAFFaSiXCbRTqgaV/sP5golFo44PEYMOni3wSVnH3fmgB1+cJI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783334534; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=s6dzd1hn+vPgcOffUF2LY84jneo37++mNtdru7f80BM=; b=BGoclwGkxHjcMsj7hMa6WEoDk1FCZYBiUn86D6TrWmesJT0vR+iPsFFyRCN8UxO5x/jLIaojYGP3tXLC5jRiDr6VJZLnPYioY9CIDSFYfbJRXXZgU8Yz9mBNfKxrGAGuP9xmDrxZAvjfEBBUUoZ9IVKjLVUUxBkIwX9Sj9UaEVE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783334534099108.32854012271628; Mon, 6 Jul 2026 03:42:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wggid-0007Cl-NH; Mon, 06 Jul 2026 06:38:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wggiF-000709-I2 for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:10 -0400 Received: from mail-wm1-x331.google.com ([2a00:1450:4864:20::331]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wggiD-0003Gb-Nf for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:07 -0400 Received: by mail-wm1-x331.google.com with SMTP id 5b1f17b1804b1-493d3135f62so9044145e9.2 for ; Mon, 06 Jul 2026 03:38:05 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63b6f1bsm329501805e9.10.2026.07.06.03.38.03 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jul 2026 03:38:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783334284; x=1783939084; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=s6dzd1hn+vPgcOffUF2LY84jneo37++mNtdru7f80BM=; b=zRPkzlqy+JpyIMOz32jmojpY/YaNAlXHiVIoGiO/c7kmCWRQbYUYDv/1DjzHqpFzGm 9lQmyEsGc8xdWA4c/fF/++X/1aVg3GQmMuP3K1knkqYe/79iErZRR4RO5KvwAmnG/Kz3 WtXGRjY9fWehfxXG1ZI+i/KcjkWfhCGHAusToCMWHXSwYlFXvUaa9N+knGeLvP6c82HH AWB9M92ty696pSDXyexJqV/wH8nqrm59uhqnB+Y2KN95BkGwnK525fIH9C/0qPCbWBBm xZtyHCSvZlt4Rk5M1ZenazEm8JdKkCxrNDpPOk691buXTSF8hoMah9XVGbu9M90BkUTh nkZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783334284; x=1783939084; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=s6dzd1hn+vPgcOffUF2LY84jneo37++mNtdru7f80BM=; b=k29a0RsdPIvszm9/4Cv/CcQ8WI9vVpm0BzgsQt0EoJ6LhUXW9/K6fBSLL5w9wuXUAD eIjidYmRHMcwVPSvykbmZApAkk2lkmE/yFmLOv3BqY+VmrQU5YLvBd3TH4TV9CntSnXn 1zrJIaCYQyW3ALjv57V3oabnFml7I2Hme34NSad+xN4srj77TsJHZtf4Fp2/aZcirnES Ioh+8tryV3dJxquxm9Xhk/6FF3ZzHAZBIP1krP9WvYkBjlGSKtTpWwZ4KBrcRPJG5Nnu q8OH/QIxVXf0OCB3rUhfgWDzxoDnRm+xcs0cQYM2aBZH2joSjnew3s0ZAKAxoGLd1ZP7 1liQ== X-Gm-Message-State: AOJu0YyKde4Qm2GxzO8ey8c57SOcVjSDOBe7NgqmUEGcAWMczVa2fzr7 vXps1eBiwwNDdM8FyM17qquEzpi8G8qYVJObVXCk2B3OyklvRjuXzqHVPDKv8cTKBY3RXxJeNQH EUvVfl2XfzA== X-Gm-Gg: AfdE7cnRwL9QBUL0Y55K4WgMNvS9xDP191OgU7hVJtbh+ek955DkDzEINP0/7syFUOs YPLjbA6vcGNGudWyIvM7xTRup52lzobRecl1c4o7trNopFCvyRgjpqpvj8ziAIEbMy29TPC69WY PrZ6QhfpgBFrPGt7AvenU3b4BxXxGxfin3ngDaO3gAOJAxWieKKg8ppUcG4AAr5OCCIbB/rjvc7 jsDYQc9txBea/GHZbAlwOP6g5+dpbYBiMNnMJdYCUQ8XKWpvorwaVC99kWhN8lDlvJM+YyKbKO9 VEFb+Ox3UKmlD49VYobLW6v72tegFuohKthKMhjTb73SldZExURZ3b4QDOAqhNGKVbxGQLTYRzu 3pphcfBuiVkorCJDVopRjlYlrQlxr/wITMv6YmrKAK5M3g04HvxrDADeXS4C0vXCIN7tZ7oBsWj IlMl8qjWH7fdoLPFEtIecxSZCPbMjoTf5Xx8UN+dIU5O7Hf5vfgjnznoHZ5sOdYd97f22ENfCdQ hdgj1/TyFLhZ413ZXMnUScI9+WSQLQw X-Received: by 2002:a05:600c:8b6e:b0:492:66fb:5dc5 with SMTP id 5b1f17b1804b1-493d11f326fmr109313045e9.24.1783334284118; Mon, 06 Jul 2026 03:38:04 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 10/49] target/arm: Implement and enable FEAT_SSVE_FEXPA for -cpu max Date: Mon, 6 Jul 2026 11:37:13 +0100 Message-ID: <20260706103752.320511-11-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260706103752.320511-1-peter.maydell@linaro.org> References: <20260706103752.320511-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::331; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x331.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783334534363158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Signed-off-by: Richard Henderson Message-id: 20260626164819.770787-1-richard.henderson@linaro.org Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- docs/system/arm/emulation.rst | 1 + linux-user/aarch64/elfload.c | 1 + target/arm/cpu-features.h | 5 +++++ target/arm/tcg/cpu64.c | 1 + target/arm/tcg/translate-sve.c | 21 +++++++++++++++------ 5 files changed, 23 insertions(+), 6 deletions(-) diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index b1fec58840..2864e25294 100644 --- a/docs/system/arm/emulation.rst +++ b/docs/system/arm/emulation.rst @@ -176,6 +176,7 @@ the following architecture extensions: - FEAT_SME_I16I64 (16-bit to 64-bit integer widening outer product instruc= tions) - FEAT_SME_LUTv2 (Lookup table instructions with 4-bit indices and 8-bit e= lements) - FEAT_SSVE_AES (Streaming SVE Mode Advanced Encryption Standard and 128-b= it polynomial multiply long instructions) +- FEAT_SSVE_FEXPA (Streaming FEXPA instruction) - FEAT_SSVE_FP8DOT2 (SVE2 FP8 2-way dot product to half-precision instruct= ions in Streaming SVE mode) - FEAT_SSVE_FP8DOT4 (SVE2 FP8 4-way dot product to single-precision instru= ctions in Streaming SVE mode) - FEAT_SSVE_FP8FMA (SVE2 FP8 multiply-accumulate to half-precision and sin= gle-precision instructions in Streaming SVE mode) diff --git a/linux-user/aarch64/elfload.c b/linux-user/aarch64/elfload.c index e33dce7830..850bfb8666 100644 --- a/linux-user/aarch64/elfload.c +++ b/linux-user/aarch64/elfload.c @@ -174,6 +174,7 @@ abi_ulong get_elf_hwcap(CPUState *cs) GET_FEATURE_ID(aa64_f8mm8, ARM_HWCAP_A64_F8MM8); GET_FEATURE_ID(aa64_f8mm4, ARM_HWCAP_A64_F8MM4); GET_FEATURE_ID(aa64_ssve_aes, ARM_HWCAP_A64_SME_AES); + GET_FEATURE_ID(aa64_ssve_fexpa, ARM_HWCAP_A64_SME_SFEXPA); GET_FEATURE_ID(aa64_fprcvt, ARM_HWCAP_A64_FPRCVT); =20 return hwcaps; diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index e1d9259d30..de81c4f103 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1580,6 +1580,11 @@ static inline bool isar_feature_aa64_sve_b16b16(cons= t ARMISARegisters *id) return FIELD_EX64_IDREG(id, ID_AA64ZFR0, B16B16); } =20 +static inline bool isar_feature_aa64_ssve_fexpa(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64SMFR0, SFEXPA); +} + static inline bool isar_feature_aa64_ssve_aes(const ARMISARegisters *id) { return FIELD_EX64_IDREG(id, ID_AA64SMFR0, AES); diff --git a/target/arm/tcg/cpu64.c b/target/arm/tcg/cpu64.c index 1f9eb56a94..e0d701a85c 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -1384,6 +1384,7 @@ void aarch64_max_tcg_initfn(Object *obj) SET_IDREG(isar, ID_AA64DFR0, t); =20 t =3D GET_IDREG(isar, ID_AA64SMFR0); + t =3D FIELD_DP64(t, ID_AA64SMFR0, SFEXPA, 1); /* FEAT_SSVE_FEXPA */ t =3D FIELD_DP64(t, ID_AA64SMFR0, AES, 1); /* FEAT_SSVE_AES */ t =3D FIELD_DP64(t, ID_AA64SMFR0, SF8DP2, 1); /* FEAT_SSVE_FP8DOT2 */ t =3D FIELD_DP64(t, ID_AA64SMFR0, SF8DP4, 1); /* FEAT_SSVE_FP8DOT4 */ diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 79e8e16b24..fc4cc8c479 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -1369,12 +1369,21 @@ TRANS_FEAT_NONSTREAMING(ADR_u32, aa64_sve, do_adr, = a, gen_helper_sve_adr_u32) *** SVE Integer Misc - Unpredicated Group */ =20 -static gen_helper_gvec_2 * const fexpa_fns[4] =3D { - NULL, gen_helper_sve_fexpa_h, - gen_helper_sve_fexpa_s, gen_helper_sve_fexpa_d, -}; -TRANS_FEAT_NONSTREAMING(FEXPA, aa64_sve, gen_gvec_ool_zz, - fexpa_fns[a->esz], a->rd, a->rn, s->fpcr_ah) +static bool trans_FEXPA(DisasContext *s, arg_FEXPA *a) +{ + static gen_helper_gvec_2 * const fexpa_fns[4] =3D { + NULL, gen_helper_sve_fexpa_h, + gen_helper_sve_fexpa_s, gen_helper_sve_fexpa_d, + }; + + if (!dc_isar_feature(aa64_ssve_fexpa, s)) { + if (!dc_isar_feature(aa64_sve, s)) { + return false; + } + s->is_nonstreaming =3D true; + } + return gen_gvec_ool_zz(s, fexpa_fns[a->esz], a->rd, a->rn, s->fpcr_ah); +} =20 static gen_helper_gvec_3 * const ftssel_fns[4] =3D { NULL, gen_helper_sve_ftssel_h, --=20 2.43.0 From nobody Sun Jul 26 11:01:48 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1783334638; cv=none; d=zohomail.com; s=zohoarc; b=eOk55djqeCx1TLO8zDToDndFGDBNqD0yXlb+tTRf8AZ0Uuv2gKNyaYdICit2pS8weHwExXSLu7Rf7ojnFWutbscqYd687TxydxggQXu7fEVZxf1bOEGf3mE7vnrCTsxzLFS/SZ9e1/eF0xhb2ISJj63M7sw64s9EvF8ktz2XqLQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783334638; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=OaMjZwxzZhA1NzC7/h6PwC65ow7Bbi/S7QuuxLOQLcM=; b=mo9zRA5g+lKOlJ59EpA55KWV3dnk3YdsZaLWWA7ktbiw8e3c2NN2Sj9CAxRPEwI3palVj1pPQXQyi/cleYPQ6LCDnIeIcJ+A39ok/47OHTOgLTtACO3JytkhtD13Gqcj/cfXGd8SISfGD5O/RDXXrBpXQI780hDq40txwyylAiE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783334638087776.347650917736; Mon, 6 Jul 2026 03:43:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wggif-0007Da-D4; Mon, 06 Jul 2026 06:38:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wggiG-00070I-PT for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:10 -0400 Received: from mail-wm1-x341.google.com ([2a00:1450:4864:20::341]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wggiF-0003Gu-6T for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:08 -0400 Received: by mail-wm1-x341.google.com with SMTP id 5b1f17b1804b1-493b6f1b14bso11317105e9.0 for ; Mon, 06 Jul 2026 03:38:06 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63b6f1bsm329501805e9.10.2026.07.06.03.38.04 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jul 2026 03:38:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783334285; x=1783939085; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=OaMjZwxzZhA1NzC7/h6PwC65ow7Bbi/S7QuuxLOQLcM=; b=HP0sj+ospkxZq+jWe/OZnpQ8FioILoOzwQMrW6frIwsOxNXGQcEk2ue+CkisHu/3TF W4g1E6qkKf/EVSi6AVVp0HDGX9LCWgLo33uUdH0tUwCOdjLqxfPEk2vihTrUv3BFliP6 CP3Rk+uGFctXMhvt44Z5P0uhgemLsdv4P/TGJjpeGgNJF1hKjM7vaM8+52qp3Vf+Ohrg TNDFJ2h7daUGcQ8Cb2qludTe1NN61138vDxDxVP0jwyvkRivJJNCxMebsYhj3oqUL2HR 5k6JRpSAAZFScsSRPdzKidlGFG5nquF789756NnsPUe8QRQDDCuEuo016ILS+bp2I+IT sI3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783334285; x=1783939085; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=OaMjZwxzZhA1NzC7/h6PwC65ow7Bbi/S7QuuxLOQLcM=; b=cXFBix+R+qRHBGMJ7ZQKPE/yD7GfOg5rI1m/qq024QkdMdatmp7Ru+eiauXnla0srj MHBEEBkIgpnkxN8Odq7Y6rWa0uaqesKfX30HT8371muuUrRy9wXKstDAxOm1MeuBxqQG CYOwieyh/TgGJRnad2/r2Jv8iRrIOr+iHbAcw30AcVmmohMnkZ3AK8CvqCIOxj/sOlft KV4pPev9ilD0tBypsUabyxBHEKLsUUeIkdLfIrZbXWJ1oRaP27pjarErEnV7ndntcWZ4 9gO5HxhfNeHKqIpKQ7MJQGhq2JtiZqvQIpG0il3u51BzusqdhC1aUxBxayMaaM900Ri1 aM+w== X-Gm-Message-State: AOJu0YypvSuGYqOJHZGsM4xcJPAL3HH3JYR+uT5/EIBLhqXfqvzA82SK rR/4Nf18z7R93HtWPX5XFJuC9IhJ+c5WyElf5ddvaZgnDuM8cAv4KyF/dOH5C7EekE1nBufyDxM RV/4uknsUVPbF X-Gm-Gg: AfdE7cmymsnBJ/LdC2sAQtUMd8LRMKGdszX8A1x3uYJ4AJxqUCHmwQHIpd4HKSY1852 oDvdfbx86TXfn9WzhJkT5ZGzQQcFMtb9T5A2ZuOO9TFAqBudqmgGhTnIWVI8009Z/XIm700zWQ6 7LmKW0I/Jjn5+mIeJ50Jkyu6jHZkhFWsVjlq8Ybrek7CMrgphQCkbYk26aYd6gDJwEiDmEg1wZR XBtjadNwvkPa7v554enFmrVROrLkCWN9dlBzfIp/tIoYpwB7/iwkCm7CtCKe7c6IGBhmEsox/dl EI0NAOXwalWp5zUDm6XnDoamw5pyIFHPxWiSrnLecd5OkeJm5p8XMQQgsj3uGNDkVZ9GhVmyaHZ J7OOgFdw/fQNEgRvw2ucU9CZbsTm3kxfbuR9VBuPwK6FUcLuSmpDebVyhLOsdkhEJ14+UIB18ye RcN4nSX1Z4uoZasLiW5YputU8+rfngT8g+N4+zPQq7XJGRgRVvY0iqmU+n/XY/D/R2fpBnkQClA YfhmOkk17ZHKyz4NwZb3Q== X-Received: by 2002:a05:600c:6287:b0:490:e5c1:b8b9 with SMTP id 5b1f17b1804b1-493d1188014mr106991075e9.0.1783334285025; Mon, 06 Jul 2026 03:38:05 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 11/49] hw/arm: use cortex-a9 mpcore base for CBAR on npcm7xx machines Date: Mon, 6 Jul 2026 11:37:14 +0100 Message-ID: <20260706103752.320511-12-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260706103752.320511-1-peter.maydell@linaro.org> References: <20260706103752.320511-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::341; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x341.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783334639062158500 From: Alex Benn=C3=A9e CBAR is an IMPDEF register and according to the A9 TRM [1]: In Cortex-A9 MPCore implementations, the base address is reset to PERIPHBASE[31:13] so that software can determine the location of the private memory region [2]. If it doesn't we will confuse the Linux kernel as it probes the system SCU registers [3] and erroneously assumes the system is a buggy Aegis SOC and nerf the emission of SEV instructions, deadlocking any WFE's in the kernel (or QEMU smpboot code). [1] https://developer.arm.com/documentation/ddi0388/i/system-control/regist= er-descriptions/configuration-base-address-register [2] https://developer.arm.com/documentation/ddi0407/g/Introduction/Private-= Memory-Region [3] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree= /arch/arm/kernel/head.S?h=3Dv7.1#n550 Fixes: 2d8f048c25ab ("hw/arm: Add NPCM730 and NPCM750 SoC models") Cc: qemu-stable@nongnu.org Signed-off-by: Alex Benn=C3=A9e Reviewed-by: Peter Maydell Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20260624103049.884930-2-alex.bennee@linaro.org Suggested-by: Arnd Bergmann Reviewed-by: Peter Maydell Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Peter Maydell --- hw/arm/npcm7xx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/arm/npcm7xx.c b/hw/arm/npcm7xx.c index c2bbcd89db..c27f149c04 100644 --- a/hw/arm/npcm7xx.c +++ b/hw/arm/npcm7xx.c @@ -492,7 +492,7 @@ static void npcm7xx_realize(DeviceState *dev, Error **e= rrp) /* CPUs */ for (i =3D 0; i < nc->num_cpus; i++) { object_property_set_int(OBJECT(&s->cpu[i]), "reset-cbar", - NPCM7XX_GIC_CPU_IF_ADDR, &error_abort); + NPCM7XX_CPUP_BA, &error_abort); object_property_set_bool(OBJECT(&s->cpu[i]), "reset-hivecs", true, &error_abort); =20 --=20 2.43.0 From nobody Sun Jul 26 11:01:48 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1783334525; cv=none; d=zohomail.com; s=zohoarc; b=KnqwwHiSKojC74p2Wr25cQzWMJV7Fc9+udqogZwm4TJ/LMh5H1vZhO2Fs+3NlsqXK1MVJjB1G+eSoa/kq96Jk28/kG1vbC+mHgnPw0izEvy2KHPAaCK7lcmIgbw7ZbNee52hRms3v78CnLzzPHuG2ULi3Gdi8S6HHvB1Kqc32RI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783334525; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=pPkWKKHOnNoHHo33e/HALhEFjRT3a0i7uwqrWO34aA8=; b=aMJNRH8o57ZLb+JL6BMKnTBEZ/Mj1LkzgxcG2qch0Q+L5R+KhEcCuJehToG7U5/4Alu6+DYovimQEnE1PaFCvnenK7n0ATM5pUbsT4qcZqJIZcbCEnjydQ87FGqP9+bWO7tMP6MHTP1DB1wP5p/tdxVxg+URIkMToyhXksuwB/4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783334525792596.1392621513378; Mon, 6 Jul 2026 03:42:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wggih-0007Ep-3R; Mon, 06 Jul 2026 06:38:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wggiH-00070J-6P for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:10 -0400 Received: from mail-wm1-x343.google.com ([2a00:1450:4864:20::343]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wggiF-0003H7-Fa for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:08 -0400 Received: by mail-wm1-x343.google.com with SMTP id 5b1f17b1804b1-493d3135f62so9044355e9.2 for ; Mon, 06 Jul 2026 03:38:07 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63b6f1bsm329501805e9.10.2026.07.06.03.38.05 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jul 2026 03:38:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783334286; x=1783939086; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=pPkWKKHOnNoHHo33e/HALhEFjRT3a0i7uwqrWO34aA8=; b=OVyD9sFKKUX4VtPZnconS6+O/crh+ux80hDvTLLKav5gmAl5XjqWxJGiqQGFdvtiyS C3hn+fTFo5IxB5Ct/0dgVHOgLV4Kixwh5/gMAnsC0ePRQaqgPYP1wz6c++WluCirp1hY IoL2vm5aGtiJVUpWN4UTikqyyzQaKnixoYjKOThJzV/5vbQ8EbBeMfa9Ft7nFaODpQXK ZzzEocxEemDNlxG68SYqBEIkya46qGDQ4dz3XwhWQgnLaAZkfKF64/s5S8r1d+U33jDl DwVSJpJdnuiAgDFUyXmRJLOVef0D7OWhYpZ+k7i6tKpy13nHHWmp2m9LGybLphfpIbPt QoMQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783334286; x=1783939086; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=pPkWKKHOnNoHHo33e/HALhEFjRT3a0i7uwqrWO34aA8=; b=q74C67Mdf8HGEeg4sKvk089KyQJCGTHJPLexmtVjC34f00DfeuOOffA7U3jlJZWAUg tB/bFsY6uhk1EFvqH7A2YFmERVG1z5MliJ3fDqrWLtGZstjQ7wQuWUE1ti0gqgQkywyh Nr8nJz58oxKq1Ct8z6MOqj6H/raMPKuJxaNQg+a0XhFZQRMAcJxU5nJlvYIGeqdCpz7Y J3hC8gPZOxtSt0xluF/Vhe9WBXPiwLwdo7ap6U+CTEPrOXrgWa4dYn3rhlJhWYC9KUtM JVEzaQdlEAGjKT2yEQjj2K3rwW6deJ2UQFnS5XTM5P/moFxNLcdMUDtrou5d2U4m+Op0 cSUA== X-Gm-Message-State: AOJu0YzmQhmANbp23/dH9h1dyVotTQqVgiEseGA/18aEGh1RN7HNXGhf zQd/BY0UDK4nHiEjsZCWppT7cJOuciGqjp4sGXRYbegKJHvUzWTVJWTWCsjH5eMQ+WiOTIvlWPe GR5FU7bSrueEl X-Gm-Gg: AfdE7ckmMJvg8IXibwkHZMNrFEAcH6DBKIhQNCYjRgGezamLEefdscIwGmRs5wGfvEU CeLm63232aEKp2MCQ7xws/z6AlaIMSn98hNbQwk79QZ18s2ncoPAPP2emI8Y3pelFzMd1HA+cOs yESXKFAmne69Vc+jQVBTcsU9l+/oypF/f/fBSy9at+/GLyUmJzGrz3AF6nbngb5ZqjFoTo04YKR ygL9+9rYcrVaad3vmppy4778QY02cz93T7i5j3Z7YsSws1bYFVvErw+8/ZDmuJuOOOrPdJPt8NX XXaWq5AQhyLJP+ePw5yyPiLVfnJe8Zh+1xoT45sy9J+BoSvxeHBB4GPcqgULCaGXlzkSk9ItNfX Zy+XPQ7sJLhe24lfcsAEPnO3Yg7u6VF6G3gtpmmd52dp7peuDCjv5ieLjVxlnn40F9G9EepHRTK 82TacVhviGiUyt4/eJOEVoIEevJiU76QRHWD+lhwiUmuMvRb7ffC2Mf/ttc7/a4g+MR+b4X3wDv GNp1a4S+oUfdAc/uf7jAQ== X-Received: by 2002:a05:600c:64c6:b0:492:4363:e7eb with SMTP id 5b1f17b1804b1-493d11f8d5fmr103470215e9.32.1783334286075; Mon, 06 Jul 2026 03:38:06 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 12/49] tests/functional: update anacapa-bmc image Date: Mon, 6 Jul 2026 11:37:15 +0100 Message-ID: <20260706103752.320511-13-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260706103752.320511-1-peter.maydell@linaro.org> References: <20260706103752.320511-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::343; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x343.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783334526284158500 From: Alex Benn=C3=A9e The initial version had the wrong DTB which caused issues with image corruption [1]. Update to the latest version. [1] https://github.com/legoater/qemu-aspeed-boot/pull/7 Reviewed-by: C=C3=A9dric Le Goater Signed-off-by: Alex Benn=C3=A9e Message-id: 20260624103049.884930-3-alex.bennee@linaro.org Suggested-by: C=C3=A9dric Le Goater Signed-off-by: Alex Benn=C3=A9e Signed-off-by: Peter Maydell --- tests/functional/arm/test_aspeed_anacapa.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/functional/arm/test_aspeed_anacapa.py b/tests/functional= /arm/test_aspeed_anacapa.py index 27f8bd8b56..b16c6035c9 100644 --- a/tests/functional/arm/test_aspeed_anacapa.py +++ b/tests/functional/arm/test_aspeed_anacapa.py @@ -11,8 +11,8 @@ class AnacapaMachine(FacebookAspeedTest): =20 ASSET_ANACAPA_FLASH =3D Asset( - 'https://github.com/legoater/qemu-aspeed-boot/raw/3fa3212827b04be4= 034d43b5adeef57c27d6ab18/images/anacapa-bmc/openbmc-20260512025228/obmc-pho= sphor-image-anacapa-20260512025228.static.mtd.xz', - '2232e241abcfb6d4f6b82cb6c378ce5ce05e364aac6d118785c2b6cc33fe43f3') + 'https://github.com/legoater/qemu-aspeed-boot/raw/refs/heads/maste= r/images/anacapa-bmc/openbmc-20260616025349/obmc-phosphor-image-anacapa-202= 60616025349.static.mtd.xz', + 'de3841fb6ed3085aec6424358ee6efc4b8ee85688361e5aa1987fd1acb7d3fb4') =20 def test_arm_ast2600_anacapa_openbmc(self): image_path =3D self.uncompress(self.ASSET_ANACAPA_FLASH) --=20 2.43.0 From nobody Sun Jul 26 11:01:48 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1783334592; cv=none; d=zohomail.com; s=zohoarc; b=j2gqS4DbgSWYHINfuq7zQychJuAZRTplzUVkOoqFEqLt+P0hVINkRiDK5j8seOWg3dP1H6QiKIIF9LEJ6+yVCkrMMsg/+0OcRvYxPUZMrIeH7Qkq5tJo3/1cfGkka73L3w/xYKYnxzNBpYogNNPrzO0B769SzaGJQMKsp03P8o4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783334592; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=Eg2eRwi8fXdXbVGfTtLDKdMU/uLApKIx4jIhkKqt32Y=; b=aMXrBFtRndHxAwNCb1NSrAuucmgmN9T9Go/MIi9iV5tgcJI4sQZFa5RSVQ67XHAUirKrWlMOXZugmc7/PFbJwbouGU6mtQIUjGi+p8DRscS8roAEpfYEyBfEKzdEE6lSHR3oGg779nS8e20k3lUZk5XmChnj9TQr8KRWmJR7/E0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783334592250361.08062275978045; Mon, 6 Jul 2026 03:43:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wggip-0007UR-9G; Mon, 06 Jul 2026 06:38:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wggiJ-000717-3f for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:12 -0400 Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wggiG-0003HY-DI for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:09 -0400 Received: by mail-wm1-x32c.google.com with SMTP id 5b1f17b1804b1-493bc8fda98so31422185e9.0 for ; Mon, 06 Jul 2026 03:38:08 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63b6f1bsm329501805e9.10.2026.07.06.03.38.06 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jul 2026 03:38:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783334287; x=1783939087; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=Eg2eRwi8fXdXbVGfTtLDKdMU/uLApKIx4jIhkKqt32Y=; b=VNmvrYH/FzIITXk3etvMgIbCFDRAKGNtnxVe/XjFZXBsfLlg+hx/s/E4VBcJ8ayfAS gkjKKcLYMjrH0t5P6k2ZbX4p4eFWPiJjJEo+0ItO/Cv7yxIFCyFEAISCUfVWmZLbNCR+ ev4F38YtqyBQkHhzc2jgoLOJikYp486uYwRAMzLAzpJVURBinJWJDi6qcvcVg3x0fKG0 ShZ7glfD1WxJykcYEvn6Q2LOlKm50Ms5X5aMMY2azAS+kYpaefO10GlYy1gjQXnvyVYf zAli3uzv15ouQq9fpnUmf11nhszxrIgJXFLGOsn2mtetuEExJgPR4OS59MJ3Bq9BXvDq lvng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783334287; x=1783939087; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=Eg2eRwi8fXdXbVGfTtLDKdMU/uLApKIx4jIhkKqt32Y=; b=o5Uq9NnpzrhS7zhdBxqojoObVBs+008rY9dOFAXnol+odGEET0VAfX0i52KRjjLC5b KZ9zVQ78+fuYOLI/StZlh2l2BdvEY6A7RdFhGkMzl5PwyB22Vhy0CK8soGMZQqRu5t95 +ppPm/ESRWS87hKGCyF5OJipjW6ocrDTHwtofffuREL3qCCuWP2Q0Ehllf58Iha/YTmC X2sQBJCeN1fVbrmFpbZ/S9LjwwVTySrQCIqXM7O8WrxsSgMfqEZzp7gRdFqaOo2thRCI 5OrFBvGCISTigIbbcyDdlvTFORii8uS0Nhs+2rj1y2nGIVY4sk9AtTa5anMEdk0QDpUt u5aw== X-Gm-Message-State: AOJu0Yx5Th9nRybOJivthELVNrAps6uH0hALaFPvgc67AcgwxRVELSh9 dLx3qih0OMVptJYOvU29m0MU2mvdFtq4cOSORTkPdRQMDPkhMhHU0MBf26bkVUD0DxnkdjHS592 yRBxOWzlW8Q== X-Gm-Gg: AfdE7cmURFKSvhsDW4MwmMKPZYpjGiuE7mNj3GIfeqV6ryacPjHOVKUj4TLSfYOLP4/ p9anW0mbytG7MRPvNcvscZ6jnzD6QcQikXgRvWYzNQmvlXrdigwKoi2JUvSAWXcZgrxhekhViQf qLtFJS46WkOYZ6MKIHhS0Qcxz7/okVMQEA9qTwtgkQY4wivV2pE2byuH2MpvUi6VyFtQQteRYmZ hvFQdFEVlzEnnORnMdREE5X8MTy1xXbPMA6GlOb5h0vDlimw54EEHW796IsYWfuzRr4LSTnXfBT Becf2YFZWvHS5xCt4+XA0aS7xHk3ZM1fUWJIYqQE1iKjFplXMD6V8SUKgkApk7YxyGqBZSTs0h0 LTzoEHR8I/COVoJ1Zco1zRG8hXo58XUFMlMLcgFrYJCB6kHkJWQW6aYvotZQLLTGkbxbCsU/I3X rB3ammBgGduguG/wOBTiKSO3N9xGBmSBN3DXmcSID/M2XMZ84254uPDOPRsfGK8fV0Ha5ZmG/uP 8ZpYZ+fINYGBZeiBtXq+A== X-Received: by 2002:a05:600c:19d0:b0:493:b750:bd20 with SMTP id 5b1f17b1804b1-493d11d7df8mr101826645e9.15.1783334286886; Mon, 06 Jul 2026 03:38:06 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 13/49] target/arm: do not clear halting reason in has_work helper Date: Mon, 6 Jul 2026 11:37:16 +0100 Message-ID: <20260706103752.320511-14-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260706103752.320511-1-peter.maydell@linaro.org> References: <20260706103752.320511-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32c; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32c.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783334592721158500 From: Alex Benn=C3=A9e The helper will be called multiple times as we exit a loop and until we actually restart (via arm_cpu_exec_halt) we should leave the condition the same. Fixes: 6fd2fcdc61b (target/arm: teach arm_cpu_has_work about halting reason= s) Reviewed-by: Peter Maydell Signed-off-by: Alex Benn=C3=A9e Reviewed-by: Richard Henderson Message-id: 20260624103049.884930-4-alex.bennee@linaro.org Signed-off-by: Peter Maydell --- include/hw/core/sysemu-cpu-ops.h | 3 +++ target/arm/cpu.c | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/include/hw/core/sysemu-cpu-ops.h b/include/hw/core/sysemu-cpu-= ops.h index 8be6a84bd5..9a45596169 100644 --- a/include/hw/core/sysemu-cpu-ops.h +++ b/include/hw/core/sysemu-cpu-ops.h @@ -18,6 +18,9 @@ typedef struct SysemuCPUOps { /** * @has_work: Callback for checking if there is work to do. + * + * This function should be idempotent (i.e. not change state) as + * it will likely be queried multiple times before a CPU resumes. */ bool (*has_work)(CPUState *cpu); /* MANDATORY NON-NULL */ /** diff --git a/target/arm/cpu.c b/target/arm/cpu.c index 128c78f6cf..26bd21aa86 100644 --- a/target/arm/cpu.c +++ b/target/arm/cpu.c @@ -158,7 +158,6 @@ static bool arm_cpu_has_work(CPUState *cs) * A wake-up event should only wake us if we are halted on a WFE */ if (cpu->env.halt_reason =3D=3D HALT_WFE && cpu->env.event_register) { - cpu->env.halt_reason =3D NOT_HALTED; return true; } =20 @@ -170,7 +169,6 @@ static bool arm_cpu_has_work(CPUState *cs) | CPU_INTERRUPT_NMI | CPU_INTERRUPT_VINMI | CPU= _INTERRUPT_VFNMI | CPU_INTERRUPT_VFIQ | CPU_INTERRUPT_VIRQ | CPU= _INTERRUPT_VSERR | CPU_INTERRUPT_EXITTB)) { - cpu->env.halt_reason =3D NOT_HALTED; return true; } =20 @@ -882,6 +880,8 @@ bool arm_cpu_exec_halt(CPUState *cs) if (cpu->wfxt_timer) { timer_del(cpu->wfxt_timer); } + /* clear the halt reason */ + cpu->env.halt_reason =3D NOT_HALTED; } return leave_halt; } --=20 2.43.0 From nobody Sun Jul 26 11:01:48 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1783334400; cv=none; d=zohomail.com; s=zohoarc; b=alpP3gMWOFpzKdzD0irjLuyv8DvNYpupeDfkqquEjO+o2JVzO6C/gIo+nV3uB6kMHLLKzxJp2YOE1gR2OrTzp6Dg1Syqrq8z2X7F5UCPD/lnR5VeO2iKwoBY0JhmaaDcql5Hhj1xQ0+ZRrJ5TghphJQMJWNGFayO7TTtQUTL/gA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783334400; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=NrrPXpQHnc6Y4zWwDDuOjNrSPtslvAcCIqaUGcEI2EU=; b=DRrtpCP0lnwOAKeKcuKH7Dj7mplDJdQX6DnzfLhd2+Nikqp6NiVwBZ4f7wGgUV3BdiohTK4fJ3TGH8QtGqBeKYuwlfnS9d4mYzsNL6+qDhodxwMTuuvhj3U0/2SVsYSZfjB5m3l1mwGLNCwrQE7uM7I2AasyNnXiV7tyeNkcqJI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783334400131373.5998953691027; Mon, 6 Jul 2026 03:40:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wggie-0007DD-Tn; Mon, 06 Jul 2026 06:38:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wggiJ-00071G-3e for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:12 -0400 Received: from mail-wm1-x32f.google.com ([2a00:1450:4864:20::32f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wggiH-0003Hh-9T for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:10 -0400 Received: by mail-wm1-x32f.google.com with SMTP id 5b1f17b1804b1-493b691cb44so19838245e9.0 for ; Mon, 06 Jul 2026 03:38:08 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63b6f1bsm329501805e9.10.2026.07.06.03.38.06 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jul 2026 03:38:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783334288; x=1783939088; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=NrrPXpQHnc6Y4zWwDDuOjNrSPtslvAcCIqaUGcEI2EU=; b=kEe2GIU36NNEv+Pu6zm2M4zZqQKCi5lAKMQqFCL/qL6ejP9rxQISbvUVBdaLJQaLah OWoqHRjIFVjZxEw0tZ0MdVHNgF6QCse+7/XIL46YMe5ibznupIwOpPWDBVgpGbJS+Buh Nr4+jYZISeKDvsYRJ0dH2BVspfK/tHr3oJydcAn9QEivYGE5qfmi8YtNvBoDVTO7vCC8 YHULl/mFkiFkxi4FagEEu+S7wUT/goy6CaRG81DZ1rKV5sNSJEByZkTxOaayZK4I987a AhTApYSfFJ0IOdQnq3e9iAstyDZWX2M99XxPsJpAssI3HvggN5yn5omn5/l53Al98Ema 3Ohw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783334288; x=1783939088; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=NrrPXpQHnc6Y4zWwDDuOjNrSPtslvAcCIqaUGcEI2EU=; b=Wad81rI/IAyaxASdU/e9tK7vi1DN9/tYf0THz00GSBeWUKb+6dXrhz77rMtUEx/WoM kPo/2bzpgmOaCRBrsQUoC1p8BE/zi+mNEE2E5yljbMk9D+sIRVh2KaYMoYD25MEGaczw B0M48JIzo8B/LOvMmtCPV15JyDnVBxuAISksDja5TIPIfu/75Ub5y1lDy+kAEezzSqX9 1Y9gU0HEsXYTR3pbQbg1QP7S3HNx4zTEZkO/EG3khZpQXHIiZ3u5DphON4hpU04TuOzI 4K4/dHcZqrG8ITzr2HOsqijJ7kUxlztMg1LWnlzi2KIMMHfknXZQ0v6DTZ/7VRCVJogf 6HvA== X-Gm-Message-State: AOJu0YyinneZFa7fch/Bl+CtcVmMRHx3zGd/t+A2aYKzFg0CWEHxqWPq Y3CZsmNCFFXBRb5ZCOErW13bnH7FKMFsCro8nclBRY52h1fMpyGrizcBJ7wi6WSRWRWlgGpwp1k mZSSsppskkw== X-Gm-Gg: AfdE7cmOTStL1j75MVPW45cj0s1zsJnk6sAk5wi9c53bZwAU6kQQ1g6nNQZoDzsvMWj Hy65GzgWIn9gORAc94DW0+JOskaWZ5KlG/KeW79/GFCkdO8gYu388lwY1Zz+jMoyL4Vxy88R/xH +rZZUC+CPS8D5g39wQIz6ckZH5ERH3coAS8zqFOPAYdeeK3qcKDcoAspQw9M+7aHwbqLUDHJ+/6 ZxM2xihsiA6UIUTBTOMHzmNes1IU8HHH7+nApFqzWkVuaK0WWyFNbiOxhSfGawKar8uGeFoseCd IjKJMyap40KNHlbBI2CzZZe/06VDjy5krEmO4ujsbBjUAhXdJlygf6BE4QPu01qRFzNtXOZnOUn e1DIu+pnLHjnKN3mp19PgFaoyYuNuA6taVjzfU/tr/Hh0Q6OnaKXKJlOvqNTHCsb5ASoUtKrkxG IhprHM0KFrdxKeIMk9NEQloBRHlyF8YqpucoMI8qUwm5Y+RIrzZKXhAB0SgNzqJUCDBVYULwfLI KoGZ3ucGmJzkeSx2P2Kl/euhxy0miXf X-Received: by 2002:a05:600c:63c3:b0:493:bc4a:fb56 with SMTP id 5b1f17b1804b1-493d1203ee0mr85270445e9.39.1783334287648; Mon, 06 Jul 2026 03:38:07 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 14/49] target/arm: ensure we create the wxft_timer for all modes Date: Mon, 6 Jul 2026 11:37:17 +0100 Message-ID: <20260706103752.320511-15-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260706103752.320511-1-peter.maydell@linaro.org> References: <20260706103752.320511-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32f; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32f.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783334401437158500 From: Alex Benn=C3=A9e We don't want to just use it for timeouts as we will calculate which will comes first. Remove the wxft feature test in favour of the broader architecture checks. Signed-off-by: Alex Benn=C3=A9e Reviewed-by: Richard Henderson Message-id: 20260624103049.884930-5-alex.bennee@linaro.org Signed-off-by: Peter Maydell --- target/arm/cpu.c | 6 +++++- target/arm/cpu.h | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/target/arm/cpu.c b/target/arm/cpu.c index 26bd21aa86..7143118708 100644 --- a/target/arm/cpu.c +++ b/target/arm/cpu.c @@ -2273,7 +2273,11 @@ static void arm_cpu_realizefn(DeviceState *dev, Erro= r **errp) } =20 #ifndef CONFIG_USER_ONLY - if (tcg_enabled() && cpu_isar_feature(aa64_wfxt, cpu)) { + /* + * We use the wfxt_timer for timeouts and event stream so we + * enable from V6K up. There is no event stream on M-profile. + */ + if (tcg_enabled() && arm_feature(env, ARM_FEATURE_V6K)) { cpu->wfxt_timer =3D timer_new_ns(QEMU_CLOCK_VIRTUAL, arm_wfxt_timer_cb, cpu); } diff --git a/target/arm/cpu.h b/target/arm/cpu.h index 84d33e87dc..03a30afcbe 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -967,7 +967,7 @@ struct ArchCPU { * pmu_op_finish() - it does not need other handling during migration */ QEMUTimer *pmu_timer; - /* Timer used for WFxT timeouts */ + /* Timer used for WFxT timeouts OR event stream events */ QEMUTimer *wfxt_timer; =20 /* GPIO outputs for generic timer */ --=20 2.43.0 From nobody Sun Jul 26 11:01:48 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1783334672; cv=none; d=zohomail.com; s=zohoarc; b=MdkAtUEDEl6ZLIZPh+kjV84wAp+P1pjHgpyQNfzn9rSpAcg2i8d7DMT1rGHVk1aCdWMzYEAHuGuZo0KXDRZNy4wRPyyNlHwq/7ZtmSmujGlerjB4xgtMi199/9OUCJxcJh4QpcplFE8oeErsGUIYGaxSwU4Xz3+ItfFfdYNTtTY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783334672; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=Z1Ec+hZy59GhYS7kA26UogIk7K23KCMqUXQL63N8QK4=; b=jSzM9CJl6TOl6WNochodB2/ZKUxdJeVUcnWMSMSAtxNGwqEnCbjr25Dn2w95crYrFlhbRtSIuEOTBi9Z/JIdk0EjE2FnQauDL5kATlcP4tpgHk79fV0qUCWHadX8/LBfux9E2fhgzMtvWoWaFLQzmSqIOnL/MGCfYu1Lk6tLS70= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783334671970877.5225927305703; Mon, 6 Jul 2026 03:44:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wggid-0007Ck-M1; Mon, 06 Jul 2026 06:38:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wggiM-00072o-Vl for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:15 -0400 Received: from mail-wm1-x333.google.com ([2a00:1450:4864:20::333]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wggiJ-0003IC-H1 for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:14 -0400 Received: by mail-wm1-x333.google.com with SMTP id 5b1f17b1804b1-493d3135f62so9044695e9.2 for ; Mon, 06 Jul 2026 03:38:11 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63b6f1bsm329501805e9.10.2026.07.06.03.38.07 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jul 2026 03:38:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783334290; x=1783939090; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=Z1Ec+hZy59GhYS7kA26UogIk7K23KCMqUXQL63N8QK4=; b=nKujKFHIbdPHWeJGeqvPY68IDfWx7OqFlALJpT/sYvJOiyku/Mx6UrBURO+oOreJsG oL3fot4+RRo+EBYDGCMMepz2tO10M5YjXQSEQWM2Bzu1OgPAghxObSUQW3ZMEYcDkIiH uj0WNagPfYUhLsBeLw25X+IiRh3M1V4MDsKdHvrd2Ko4TBX5EYIVH86ZVJrJ2V8sX5W5 nNBtWEw1ZQkmQCopeZMkCKABNeYfLGFHr2MZs1+Xs500nvClKncJKpkWn2nOMbljBxKk wU5yxtnCE8nuvelEdOHdea2ExVqB1oS3OBAOY9mRDvj1/DhGW0066bUxG2/QQ5z6UsI1 Am5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783334290; x=1783939090; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=Z1Ec+hZy59GhYS7kA26UogIk7K23KCMqUXQL63N8QK4=; b=CjkykdNt/LSEiq2L5WC7/uHhN5DcVCeNYB1TFAnpo12Y/0mVSem8xNw1clfmwewD1S hZzOwE4PHA+VgYTwHPmoc3BX0Azc+FiOItHmi0xA+3hNqVAiIGJn0n1Q72M5qwlC9N28 cFmvIA1j1gVN/+Hk662vfVaMZD7xb0O07nCn/tjOgEPSDpdxosorK0XMBFmem4KamLhw UA1VZbXzA3wis95RQDg3wv1bfLH3/GJnvaxojj3VsJOvCIy4X5X3D62lyBs8Aoz2aAmg 9inbmLgQOe+++TaDznZMBDO1yUHLKsFZiyX5MyWMqzWHiQJzXSnqRfGxhqRuRHzgsXUK 4xFA== X-Gm-Message-State: AOJu0YzXaK+HkXzXepodW42XvvqF356Y4e/JPmKIfj9bGbqWxq+R7sgV 0Pz6i4I+6Cvz+dQMaW2V+UJKGTpxBi6ssuOuLcosIgjucDUXm2iKFg3FFpnDvmJxZdgZVDFmfpU JJJ3bBhhT5A== X-Gm-Gg: AfdE7clle2FEs95antyvYpSgPQlZSCRgwouGQS4+Qc8ji81Ur8uDs/BLERhfaCQQafb zd6Rde+ZIdaRqyvxC3FP4qIUNi3jj4N3emKj6jM+lU75dW7FE/umKc0NABTUS+2rAzNRiqfOu0k cPl1FYBnePKNo3NDjGIU7pfnmH9DRUwho15JYvHeS0zveryOiqRCLM3l/BtUyTbbqz+ULgyGmnz HmvZmfaDtg3Eec98BPbkaneuMqzQkLc4cXT1V/HJ8csdLpO+75gPN31SaICcAKpNGzI4SBmCaJw sTuS3r2qCVSc818HJhhFq+Ceoh0x1DKlGCxhB5PWvbwnH/uavIEN06CBk3Zcu4z10cY+knb5MVf Wvse0y+HFWIndHOjiiiVbk0UAe8BhOoDwTGdgymhiRDL7iCexytjzUT1A6WPQc0RUJS3LVPsU7L 03cz8P4tkFw4DVx2YPhNZ85IT3MlZKrnVpv3XBHU96YLHIlHNKCIuL/3z2V3RHvKB57dmHaORmP BgDgVpQ0nlUPbAvK7/HAfVl/RUsMnhn X-Received: by 2002:a05:600c:6992:b0:493:bfea:2780 with SMTP id 5b1f17b1804b1-493d11db39cmr113125515e9.9.1783334289753; Mon, 06 Jul 2026 03:38:09 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 15/49] target/arm: implements SEV/SEVL for all modes Date: Mon, 6 Jul 2026 11:37:18 +0100 Message-ID: <20260706103752.320511-16-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260706103752.320511-1-peter.maydell@linaro.org> References: <20260706103752.320511-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::333; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x333.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783334673431158500 From: Alex Benn=C3=A9e Remove the restrictions that make this a M-profile only operation and enable the instructions for all Arm profiles. Reviewed-by: Richard Henderson Signed-off-by: Alex Benn=C3=A9e Message-id: 20260624103049.884930-6-alex.bennee@linaro.org Signed-off-by: Peter Maydell --- target/arm/tcg/a32.decode | 5 ++--- target/arm/tcg/a64.decode | 5 ++--- target/arm/tcg/op_helper.c | 4 +--- target/arm/tcg/t16.decode | 4 +--- target/arm/tcg/t32.decode | 4 +--- target/arm/tcg/translate-a64.c | 17 +++++++++++++++++ target/arm/tcg/translate.c | 20 +++++++++++++++++--- target/arm/tcg/translate.h | 18 ++++++++++++++++++ 8 files changed, 59 insertions(+), 18 deletions(-) diff --git a/target/arm/tcg/a32.decode b/target/arm/tcg/a32.decode index f2ca480949..547aa2b149 100644 --- a/target/arm/tcg/a32.decode +++ b/target/arm/tcg/a32.decode @@ -192,9 +192,8 @@ SMULTT .... 0001 0110 .... 0000 .... 1110 ...= . @rd0mn WFE ---- 0011 0010 0000 1111 ---- 0000 0010 WFI ---- 0011 0010 0000 1111 ---- 0000 0011 =20 - # TODO: Implement SEV, SEVL; may help SMP performance. - # SEV ---- 0011 0010 0000 1111 ---- 0000 0100 - # SEVL ---- 0011 0010 0000 1111 ---- 0000 0101 + SEV ---- 0011 0010 0000 1111 ---- 0000 0100 + SEVL ---- 0011 0010 0000 1111 ---- 0000 0101 =20 ESB ---- 0011 0010 0000 1111 ---- 0001 0000 ] diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index 5b6f156d08..b5de5d5a02 100644 --- a/target/arm/tcg/a64.decode +++ b/target/arm/tcg/a64.decode @@ -250,9 +250,8 @@ ERETA 1101011 0100 11111 00001 m:1 11111 1111= 1 &reta # ERETAA, ERETAB YIELD 1101 0101 0000 0011 0010 0000 001 11111 WFE 1101 0101 0000 0011 0010 0000 010 11111 WFI 1101 0101 0000 0011 0010 0000 011 11111 - # We implement WFE to never block, so our SEV/SEVL are NOPs - # SEV 1101 0101 0000 0011 0010 0000 100 11111 - # SEVL 1101 0101 0000 0011 0010 0000 101 11111 + SEV 1101 0101 0000 0011 0010 0000 100 11111 + SEVL 1101 0101 0000 0011 0010 0000 101 11111 # Our DGL is a NOP because we don't merge memory accesses anyway. # DGL 1101 0101 0000 0011 0010 0000 110 11111 XPACLRI 1101 0101 0000 0011 0010 0000 111 11111 diff --git a/target/arm/tcg/op_helper.c b/target/arm/tcg/op_helper.c index 9f9ea39be5..d15062e155 100644 --- a/target/arm/tcg/op_helper.c +++ b/target/arm/tcg/op_helper.c @@ -477,9 +477,7 @@ void HELPER(sev)(CPUARMState *env) CPUState *cs =3D env_cpu(env); CPU_FOREACH(cs) { ARMCPU *target_cpu =3D ARM_CPU(cs); - if (arm_feature(&target_cpu->env, ARM_FEATURE_M)) { - target_cpu->env.event_register =3D true; - } + target_cpu->env.event_register =3D true; if (!qemu_cpu_is_self(cs)) { qemu_cpu_kick(cs); } diff --git a/target/arm/tcg/t16.decode b/target/arm/tcg/t16.decode index 778fbf1627..9a8f89538a 100644 --- a/target/arm/tcg/t16.decode +++ b/target/arm/tcg/t16.decode @@ -228,10 +228,8 @@ REVSH 1011 1010 11 ... ... @rdm WFE 1011 1111 0010 0000 WFI 1011 1111 0011 0000 =20 - # M-profile SEV is implemented. - # TODO: Implement SEV for other profiles, and SEVL for all profiles; m= ay help SMP performance. SEV 1011 1111 0100 0000 - # SEVL 1011 1111 0101 0000 + SEVL 1011 1111 0101 0000 =20 # The canonical nop has the second nibble as 0000, but the whole of the # rest of the space is a reserved hint, behaves as nop. diff --git a/target/arm/tcg/t32.decode b/target/arm/tcg/t32.decode index 49b8d0037e..8ae277fe11 100644 --- a/target/arm/tcg/t32.decode +++ b/target/arm/tcg/t32.decode @@ -369,10 +369,8 @@ CLZ 1111 1010 1011 ---- 1111 .... 1000 ..= .. @rdm WFE 1111 0011 1010 1111 1000 0000 0000 0010 WFI 1111 0011 1010 1111 1000 0000 0000 0011 =20 - # M-profile SEV is implemented. - # TODO: Implement SEV for other profiles, and SEVL for all profile= s; may help SMP performance. SEV 1111 0011 1010 1111 1000 0000 0000 0100 - # SEVL 1111 0011 1010 1111 1000 0000 0000 0101 + SEVL 1111 0011 1010 1111 1000 0000 0000 0101 =20 ESB 1111 0011 1010 1111 1000 0000 0001 0000 ] diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 2821c84843..ce2b88d3c9 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -2142,6 +2142,23 @@ static bool trans_WFI(DisasContext *s, arg_WFI *a) return true; } =20 +static bool trans_SEV(DisasContext *s, arg_SEV *a) +{ + /* + * SEV is a NOP for user-mode emulation. + */ +#ifndef CONFIG_USER_ONLY + gen_helper_sev(tcg_env); +#endif + return true; +} + +static bool trans_SEVL(DisasContext *s, arg_SEV *a) +{ + gen_event_reg(); + return true; +} + static bool trans_WFE(DisasContext *s, arg_WFI *a) { /* diff --git a/target/arm/tcg/translate.c b/target/arm/tcg/translate.c index c744b16345..9079458a29 100644 --- a/target/arm/tcg/translate.c +++ b/target/arm/tcg/translate.c @@ -3246,17 +3246,31 @@ static bool trans_YIELD(DisasContext *s, arg_YIELD = *a) static bool trans_SEV(DisasContext *s, arg_SEV *a) { /* - * Currently SEV is a NOP for non-M-profile and in user-mode emulation. - * For system-mode M-profile, it sets the event register. + * SEV is a NOP for user-mode emulation. For v6T2 and earlier + * non-M-profile cores this encoding is a NOP hint. */ #ifndef CONFIG_USER_ONLY - if (arm_dc_feature(s, ARM_FEATURE_M)) { + if (arm_dc_feature(s, ARM_FEATURE_M) || + arm_dc_feature(s, ARM_FEATURE_V7)) { gen_helper_sev(tcg_env); } #endif return true; } =20 +static bool trans_SEVL(DisasContext *s, arg_SEV *a) +{ + /* + * SEVL only exists for v8A; for M-profile and v7A and earlier + * this encoding is an unallocated must-NOP hint. + */ + if (!arm_dc_feature(s, ARM_FEATURE_M) && + arm_dc_feature(s, ARM_FEATURE_V8)) { + gen_event_reg(); + } + return true; +} + static bool trans_WFE(DisasContext *s, arg_WFE *a) { /* diff --git a/target/arm/tcg/translate.h b/target/arm/tcg/translate.h index 462d4c1c74..83b413ee36 100644 --- a/target/arm/tcg/translate.h +++ b/target/arm/tcg/translate.h @@ -860,6 +860,24 @@ static inline void gen_restore_rmode(TCGv_i32 old, TCG= v_ptr fpst) gen_helper_set_rmode(old, old, fpst); } =20 +/* + * Event Register signalling. + * + * A bunch of activities trigger events, we just need to latch on to + * true. The event eventually gets consumed by WFE/WFET. + * + * user-mode treats these as NOPs. + */ + +static inline void gen_event_reg(void) +{ +#ifndef CONFIG_USER_ONLY + TCGv_i32 set_event =3D tcg_constant_i32(1); + QEMU_BUILD_BUG_ON(sizeof_field(CPUARMState, event_register) !=3D 1); + tcg_gen_st8_i32(set_event, tcg_env, offsetof(CPUARMState, event_regist= er)); +#endif +} + /* * Helpers for implementing sets of trans_* functions. * Defer the implementation of NAME to FUNC, with optional extra arguments. --=20 2.43.0 From nobody Sun Jul 26 11:01:48 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1783334638; cv=none; d=zohomail.com; s=zohoarc; b=JcYheJou83jrL1w1uNtjJSo/dSfGL28/DwYx8aFKc57hJVKTbUEXiA8m2SrEbgL3fGi2QAp91Pr/xrV5qCUHqxLEG9qN6rRr/wacqV9d8+9A4BxKJQ8xp2lQaWGORohaNAiLwqSJ1/CLWB5s0xIv0qZwGtevZv11TAsVBjQUZXA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783334638; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=JrQPQu6trwQ+ZtPmGzTI7Y+zvo+PCiV65rqmxKbP71o=; b=UPBC/FjFoTH6BJhPwwX9mofQYKGzjk0xLh9mkti2ScOce+wrJCIvCvhxy7I9b8Ela+RMwkDJvjk5dp3vfxHoBRyf+XgktkkJeloB9I5uEF66bCHMU1Ov+mFn+lvj8ErwfAIzmeWQWY2lXEZwvMDWM062D0RilF6cAjGzuSGe464= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783334638788367.0337149612584; Mon, 6 Jul 2026 03:43:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wggiq-0007Vw-9B; Mon, 06 Jul 2026 06:38:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wggiO-000732-Su for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:17 -0400 Received: from mail-wm1-x344.google.com ([2a00:1450:4864:20::344]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wggiK-0003Je-Gy for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:14 -0400 Received: by mail-wm1-x344.google.com with SMTP id 5b1f17b1804b1-4921eed3fa2so19613775e9.0 for ; Mon, 06 Jul 2026 03:38:12 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63b6f1bsm329501805e9.10.2026.07.06.03.38.09 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jul 2026 03:38:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783334291; x=1783939091; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=JrQPQu6trwQ+ZtPmGzTI7Y+zvo+PCiV65rqmxKbP71o=; b=t4SrkDQXaMNcW7wD79x0XWSZwYJ0OqnV0ItFC1xtx8tDe9vg2Us+w6ABuxc6xvwYa+ Xu1vSOxvsHo/9oGscZzqpQws4XPOPI+Sb+PVE/7mJNuH6ecX1dfcvqK9iCD6LXjIbG1P TgAQaFoxl3kWy3k5XtjpPKQzwpbSLykk5kpgXGzxYcbfKRbh1uOdsbP7ZWBloBkAR0wN SlXnAqpQccActJPuLWzYuLUDqkh6B3kkVGnujWv6VTsoiEMWOrk+UkulNOKcHUwtD71K ABp+srf0dEpsgF8Zg/WXrOOBMy9FSCpNoHhPz4pNv+Ib50HGIMvQgeOWZWSmly7Tc/tJ kHtA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783334291; x=1783939091; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=JrQPQu6trwQ+ZtPmGzTI7Y+zvo+PCiV65rqmxKbP71o=; b=kTX6uGktXZykxvcZkja7e3WUQjNPwzIDo7FS6icHcPB+oQYfnMdXfoYYFFHef27jNP w1kDGhlKeFd5lPaGtp4T1E2xwkp4xkpW0j/3VZ3hyI1WnmXYG/R5/CwMBCZGONp6NQ/Y MC5szcBsgkbjz+7P4PNs/g/A2cwvNjvimfCnrDOoF8QyUe3a8UlzdbwBnE7btA+eXP/v hCADq1cJDC8XEiCDmnkER4YARGShg7clTEkt1xPbrc4cwlvf2l48kVlGkJwG5FSiGu6e +FwzrMDy3oVUqit2ox5To52BGWUbKZd1DHsWym4wVykG+noEajx4aOcv+KzhxnrQ4rfx UeGQ== X-Gm-Message-State: AOJu0YwKTAUZG3wTVpozgmbZnyjR/17fN2ulevZxqhqW3eXSf31MOV7M GNlOQPWvKm4OmZAiJ7SMtr1Y56v/uvfKCTqsZldq0bqPD1hR8xayC8wJU2vCm88+nvMvP1PqhI7 d7d5g9W3tcpCE X-Gm-Gg: AfdE7cmsKzQYUbbnXuWc5d8AIr8boNZxVxNzPjMQtQCGBgNeMVAe4avpD3srS7XVvtC vkJr6QK179mmAvlsbs+t72jBqHCtwepPwlONPaK69FaxOgQDwTreqRFR7KyK/NwtXPiBFEIB7JO QhDfGKcNTfegouA3BePcWClXRVPmXXzWraeA2QRyFkR7lzQrJDxdPSiI9GGWmvsSnf5M36TnTqk 4p5pXBnnnynDveD/ZKcHWe8PwHJhm7UyVOTFlSHb94vBGNhTxMgVxQJMSGTpyFYMubg4Fqiy6ph FcWur9HPhq2Edu7FnU2scLZFR5oE86HeOpnwgX+sH3IT2ksyv3+z7AMDGzoQTexlyUPSQTBINmy DlCoJOcJAg0wnNFihm0ciYDmidHcNmiBrx/YO4FcoaUY4JQBcau92WFJDUIvspIKqudo4jmIHDi jCSABxK2b1lUxQTB4vzzwfFNQ7YoXWyaLv/LwtwNj7CUd4N/23S7eSeG+h+JyKIj42giakNhqip NV4MFsC9jpAXLWDHdA08w== X-Received: by 2002:a05:600c:c166:b0:493:bc4a:fb51 with SMTP id 5b1f17b1804b1-493d11fdf90mr110463795e9.39.1783334290640; Mon, 06 Jul 2026 03:38:10 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 16/49] target/arm: enable WFE sleeping for A-profile Date: Mon, 6 Jul 2026 11:37:19 +0100 Message-ID: <20260706103752.320511-17-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260706103752.320511-1-peter.maydell@linaro.org> References: <20260706103752.320511-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::344; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x344.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783334639178158500 From: Alex Benn=C3=A9e To enable full architectural behaviour for A-profile we need to do a number of things: - add support for the event stream to wake things up - add support for potential trap on sleep - handle the global monitor's interactions with WFE - remove the M-profile specific gates Event stream Reviewed-by: Richard Henderson ------------ Two generic timers (K and H) are capable of generating timer event stream events. Provide a helper to calculate when the nearest one will happen. Now we can calculate when the next event stream event is we can re-use the wfxt_timer and configure it to fire as we enter a WFE that is going to sleep. Reverse the M-profile logic so we can enter a sleep state in both profiles. We also take care to use atomics for accessing env->event_register as we now have potential access outside the vCPU context. Traps ----- A-profile can trap WFE's *if* the instruction would otherwise sleep. To do this we need to pass the instruction size so we can deal with the is_16bit syndrome encoding. Global Monitor -------------- To avoid issues with QEMU's incomplete ldst exclusive handling causing potential deadlocks in common WFE enabled locking patterns we take advantage of the architectures flexibility and treat being in the exclusive region as a reason to exit. Reviewed-by: Richard Henderson Signed-off-by: Alex Benn=C3=A9e Message-id: 20260624103049.884930-7-alex.bennee@linaro.org Signed-off-by: Peter Maydell --- target/arm/cpu.c | 13 +++ target/arm/tcg/helper-defs.h | 2 +- target/arm/tcg/op_helper.c | 160 ++++++++++++++++++++++++++++----- target/arm/tcg/translate-a64.c | 12 +-- target/arm/tcg/translate.c | 18 +--- 5 files changed, 158 insertions(+), 47 deletions(-) diff --git a/target/arm/cpu.c b/target/arm/cpu.c index 7143118708..62335b8294 100644 --- a/target/arm/cpu.c +++ b/target/arm/cpu.c @@ -887,10 +887,23 @@ bool arm_cpu_exec_halt(CPUState *cs) } #endif =20 +/* + * Unlike almost everything else that messes with the halt_reason and + * event_register details the timer callbacks are not in the vCPU + * context. + * + * To prevent races we atomically consume a HALT_WFE and set the event + * register. Either way we trigger the an exit event. + */ static void arm_wfxt_timer_cb(void *opaque) { ARMCPU *cpu =3D opaque; CPUState *cs =3D CPU(cpu); + CPUARMState *env =3D &cpu->env; + + if (qatomic_cmpxchg(&env->halt_reason, HALT_WFE, NOT_HALTED)) { + qatomic_set(&env->event_register, true); + } =20 /* * We expect the CPU to be halted; this will cause arm_cpu_is_work() diff --git a/target/arm/tcg/helper-defs.h b/target/arm/tcg/helper-defs.h index 8ec6c16319..99ebd75494 100644 --- a/target/arm/tcg/helper-defs.h +++ b/target/arm/tcg/helper-defs.h @@ -54,7 +54,7 @@ DEF_HELPER_2(exception_swstep, noreturn, env, i32) DEF_HELPER_2(exception_pc_alignment, noreturn, env, vaddr) DEF_HELPER_1(setend, void, env) DEF_HELPER_2(wfi, void, env, i32) -DEF_HELPER_1(wfe, void, env) +DEF_HELPER_2(wfe, void, env, i32) DEF_HELPER_2(wfit, void, env, i32) DEF_HELPER_1(yield, void, env) DEF_HELPER_1(pre_hvc, void, env) diff --git a/target/arm/tcg/op_helper.c b/target/arm/tcg/op_helper.c index d15062e155..3321e29898 100644 --- a/target/arm/tcg/op_helper.c +++ b/target/arm/tcg/op_helper.c @@ -484,7 +484,98 @@ void HELPER(sev)(CPUARMState *env) } } =20 -void HELPER(wfe)(CPUARMState *env) +#ifndef CONFIG_USER_ONLY +/* + * Event Stream events don't do anything apart from wake up sleeping + * cores. These helpers calculate the next event stream event time so + * the WFE helper can decide when its next wake up tick will be. + */ +static int64_t gt_recalc_one_evt(CPUARMState *env, uint32_t control, uint6= 4_t offset) +{ + ARMCPU *cpu =3D env_archcpu(env); + bool evnten =3D FIELD_EX32(control, CNTxCTL, EVNTEN); + + if (evnten) { + int evnti =3D FIELD_EX32(control, CNTxCTL, EVNTI); + bool evntis =3D FIELD_EX32(control, CNTxCTL, EVNTIS); + bool evntdir =3D FIELD_EX32(control, CNTxCTL, EVNTDIR); + /* + * To figure out when the next event timer should fire we need + * to calculate which bit of the counter we want to flip and + * which transition counts. + * + * So we calculate 1 << bit - current lower bits and then add + * 1 << bit if the bit needs to flip twice to meet evntdir + */ + int bit =3D evntis ? evnti + 8 : evnti; + uint64_t count =3D gt_get_countervalue(env) - offset; + uint64_t target_bit =3D BIT_ULL(bit); + uint64_t lower_bits =3D MAKE_64BIT_MASK(0, bit - 1); + uint64_t next_tick =3D target_bit - (count & lower_bits); + uint64_t abstick; + + /* do we need to bit flip twice? */ + if (((count & target_bit) !=3D 0) ^ evntdir) { + next_tick +=3D target_bit; + } + + /* + * Note that the desired next expiry time might be beyond the + * signed-64-bit range of a QEMUTimer -- in this case we just + * set the timer for as far in the future as possible. When the + * timer expires we will reset the timer for any remaining period. + */ + if (uadd64_overflow(next_tick, offset, &abstick)) { + abstick =3D UINT64_MAX; + } + if (abstick > INT64_MAX / gt_cntfrq_period_ns(cpu)) { + return INT64_MAX; + } else { + return abstick; + } + } + + return -1; +} + +/* + * Calculate the next event stream time and return it. Returns -1 if + * no event streams are enabled. It is up to the WFE helpers to decide + * on the next time. + */ +static int64_t gt_calc_next_event_stream(CPUARMState *env) +{ + ARMCPU *cpu =3D env_archcpu(env); + uint64_t hcr =3D arm_hcr_el2_eff(env); + int64_t next_time =3D -1; + uint64_t offset; + + /* Unless we are missing EL2 this can generate events */ + if (arm_feature(env, ARM_FEATURE_EL2)) { + offset =3D gt_direct_access_timer_offset(env, GTIMER_PHYS); + next_time =3D gt_recalc_one_evt(env, env->cp15.cnthctl_el2, offset= ); + } + + /* Event stream events from virtual counter enabled? */ + if (!cpu_isar_feature(aa64_vh, cpu) || + !((hcr & (HCR_E2H | HCR_TGE)) =3D=3D (HCR_E2H | HCR_TGE))) { + int64_t next_virt_time; + offset =3D gt_direct_access_timer_offset(env, GTIMER_VIRT); + next_virt_time =3D gt_recalc_one_evt(env, env->cp15.c14_cntkctl, o= ffset); + + /* is this earlier than the next physical event? */ + if (next_virt_time > 0) { + if (next_time < 0 || next_virt_time < next_time) { + next_time =3D next_virt_time; + } + } + } + + return next_time; +} +#endif + +void HELPER(wfe)(CPUARMState *env, uint32_t insn_len) { #ifdef CONFIG_USER_ONLY /* @@ -496,32 +587,57 @@ void HELPER(wfe)(CPUARMState *env) #else /* * WFE (Wait For Event) is a hint instruction. - * For Cortex-M (M-profile), we implement the strict architectural beh= avior: + * * 1. Check the Event Register (set by SEV or SEVONPEND). * 2. If set, clear it and continue (consume the event). */ - if (arm_feature(env, ARM_FEATURE_M)) { - CPUState *cs =3D env_cpu(env); + CPUState *cs =3D env_cpu(env); + ARMCPU *cpu =3D env_archcpu(env); + uint32_t excp; + int target_el; =20 - if (env->event_register) { - env->event_register =3D false; - return; - } - - env->halt_reason =3D HALT_WFE; - cs->exception_index =3D EXCP_HLT; - cs->halted =3D 1; - cpu_loop_exit(cs); - } else { - /* - * For A-profile and others, we rely on the existing "yield" behav= ior. - * Don't actually halt the CPU, just yield back to top - * level loop. This is not going into a "low power state" - * (ie halting until some event occurs), so we never take - * a configurable trap to a different exception level - */ - HELPER(yield)(env); + if (qatomic_xchg(&env->event_register, false)) { + return; } + + /* We might sleep, so now we check to see if we should trap */ + target_el =3D check_wfx_trap(env, true, &excp); + if (target_el) { + if (env->aarch64) { + env->pc -=3D insn_len; + } else { + env->regs[15] -=3D insn_len; + } + raise_exception(env, excp, syn_wfx(1, 0xe, 0, false, WFE, insn_len= =3D=3D 2), + target_el); + } + + /* + * If the CPU has entered the exclusive region we could sleep + * until the global monitor moves from Exclusive to Open Access. + * However it would be expensive for QEMU to fully model the + * global monitor and not doing so would potentially trigger + * deadlocks in WFE enabled locking code. However as WFE is a hint + * instruction the architecture allows for the PE to leave + * low-power state for any reason. QEMU chooses to treat being in + * an exclusive region as such and return directly. + */ + if (env->exclusive_addr !=3D -1) { + return; + } + + /* For A-profile we also can be woken by the event stream */ + if (cpu->wfxt_timer) { + int64_t next_event =3D gt_calc_next_event_stream(env); + if (next_event > 0) { + timer_mod(cpu->wfxt_timer, next_event); + } + } + + env->halt_reason =3D HALT_WFE; + cs->exception_index =3D EXCP_HLT; + cs->halted =3D 1; + cpu_loop_exit(cs); #endif } =20 diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index ce2b88d3c9..cdf843984d 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -2161,15 +2161,7 @@ static bool trans_SEVL(DisasContext *s, arg_SEV *a) =20 static bool trans_WFE(DisasContext *s, arg_WFI *a) { - /* - * When running in MTTCG we don't generate jumps to the yield and - * WFE helpers as it won't affect the scheduling of other vCPUs. - * If we wanted to more completely model WFE/SEV so we don't busy - * spin unnecessarily we would need to do something more involved. - */ - if (!(tb_cflags(s->base.tb) & CF_PARALLEL)) { - s->base.is_jmp =3D DISAS_WFE; - } + s->base.is_jmp =3D DISAS_WFE; return true; } =20 @@ -11275,7 +11267,7 @@ static void aarch64_tr_tb_stop(DisasContextBase *dc= base, CPUState *cpu) */ case DISAS_WFE: gen_a64_update_pc(dc, 4); - gen_helper_wfe(tcg_env); + gen_helper_wfe(tcg_env, tcg_constant_i32(4)); tcg_gen_exit_tb(NULL, 0); break; case DISAS_WFI: diff --git a/target/arm/tcg/translate.c b/target/arm/tcg/translate.c index 9079458a29..a1fc050618 100644 --- a/target/arm/tcg/translate.c +++ b/target/arm/tcg/translate.c @@ -3273,19 +3273,9 @@ static bool trans_SEVL(DisasContext *s, arg_SEV *a) =20 static bool trans_WFE(DisasContext *s, arg_WFE *a) { - /* - * When running single-threaded TCG code, use the helper to ensure that - * the next round-robin scheduled vCPU gets a crack. - * - * For Cortex-M, we implement the architectural WFE behavior (sleeping - * until an event occurs or the Event Register is set). - * For other profiles, we currently treat this as a NOP or yield, - * to preserve existing performance characteristics. - */ - if (!(tb_cflags(s->base.tb) & CF_PARALLEL)) { - gen_update_pc(s, curr_insn_len(s)); - s->base.is_jmp =3D DISAS_WFE; - } + /* For WFE, halt the vCPU until an event. */ + gen_update_pc(s, curr_insn_len(s)); + s->base.is_jmp =3D DISAS_WFE; return true; } =20 @@ -6857,7 +6847,7 @@ static void arm_tr_tb_stop(DisasContextBase *dcbase, = CPUState *cpu) tcg_gen_exit_tb(NULL, 0); break; case DISAS_WFE: - gen_helper_wfe(tcg_env); + gen_helper_wfe(tcg_env, tcg_constant_i32(curr_insn_len(dc))); /* * The helper can return if the event register is set, so we * must go back to the main loop to check for events. --=20 2.43.0 From nobody Sun Jul 26 11:01:48 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1783334579; cv=none; d=zohomail.com; s=zohoarc; b=UgTSYDZ/zGpE4kCItemEIO9wUbp0rYOiOpdQLuzf9YoyngRWr+YvZBgmWVSUIxB7R+d01oaGotkD5n+7ynqU+k+nUjmlVUZvwxGs78wJol4GObEqu8ejzx+pwLVnKLoL95bG8U2gN+l0zU8jfcJbYMC4di1EBhjuV4EAxCTI+98= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783334579; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=+wrMWj5qI1NLseeZ04VrSRvuInkOzHOMvMqTvd4qMTs=; b=nM+ZgLVFYewjwN8p4o8kcTDp97FD3S+VpPVpXWuN24IlvINhKbz4/qfzfyrcwjVzS/fnFebvAN7mNoetAtMrxcgSq2nZLkTcbjVLcdDxPJWOpQHnDM4hWMITmRV5X1YE+D3x8IdekG+PQCavLxAXyng+lo/8vxoH6Rft3zRgYrU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783334579666341.9003750176207; Mon, 6 Jul 2026 03:42:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wggif-0007E3-VN; Mon, 06 Jul 2026 06:38:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wggiR-00073P-4N for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:22 -0400 Received: from mail-wm1-x341.google.com ([2a00:1450:4864:20::341]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wggiO-0003KT-Kl for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:18 -0400 Received: by mail-wm1-x341.google.com with SMTP id 5b1f17b1804b1-493c59f740cso19655155e9.3 for ; Mon, 06 Jul 2026 03:38:12 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63b6f1bsm329501805e9.10.2026.07.06.03.38.10 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jul 2026 03:38:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783334291; x=1783939091; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=+wrMWj5qI1NLseeZ04VrSRvuInkOzHOMvMqTvd4qMTs=; b=JMsIhyY/HrGPEOM6wcu98NjEUZLWOS82b1q8hy4HijeffHxwEBzMl1r63939fE/92a LGH8lclfiW7QvR+bqBqRix6BAlIyKbghsG0XZ2N+YdpHZPKhSGATCkjvwp8xCrlqxQiC LUM3A7TXUso16jd0ngz8yeAfDoTIx9AAi8Ooceraz6+7f6DkcaGvLirKH3Z9Z8RTvA7c NUDE6uw0jyazARz2qCONKzYEtMxR/BJXGsDtNT6soUsmCAvzkzELGWz9Q/Mgny1Fjm0L G5HKzfK+2+fY2qXC5V/XAYsMDd0oXb2RDJzlMId9rIL4bP/JVUZuWH4K26L4SMNk0J7E Iv6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783334291; x=1783939091; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=+wrMWj5qI1NLseeZ04VrSRvuInkOzHOMvMqTvd4qMTs=; b=o7FJIOLbUkeV1UyItYUatRJMpHHSSWOUDk3feu1zd6pSciD9jdtalxf46UJZ2uzH9y yCgIPmZjDn2dFY4Be5zyqYQKnNkj97rX2pSJi/qCcWvUPWWBMFXgcdZlVYxDJCEY8WbC jasMoX6Qt/aBeCfJi09uFU0MrK7Z2kkpUdv6iymG5g5sm5cIBlxJvoEzMbp3dwqX5sXQ LHdf1RiKYe3GTfUG9PVsf/CDPDk/34wPt5Ju7lNCo2zs1Dh7P7lE30tjUsUQraFS7KC/ NtouQK35DtEWQ1C29uX35AlSSgr4M5sqfD2xQ707U7fPZc8Enl+fp3/rMjdvAphaNVBN 6jkg== X-Gm-Message-State: AOJu0Yz7VAO7zJ+tX68ynLpTYavpSMYWwteuLYwwFEvycGXuF6UV3ajH H/Bvilhe1Zoz24N4CDK+7I83p+f6zR+k8LKNWl2mWIvwrv7uk4FElSg8ajMv5Wvc/UWc8du67gK gDsfOLvLpllW+ X-Gm-Gg: AfdE7cmpEU7OENjjzmIP/eT/fEoaa/TZCLKtATu4B/wDt6HuEOzNAw0qpKB6w4cT169 8DQL5jtRqugxamqC5tTd0JRtMQcuD7qOwvs1yD/cVp+T6hH+gw7MnoZ4jXFZOSUs9sMVyMtVMa7 tXNbyF/Z2XCxgFJxmVhso5+2pUjgln4xmIqh43xwuNwnQPqSAS16IpUGv+ld3Nb+mub0YNQWEp8 MAl3AI0m9ngCGwvGiS8vWUDx8jokSIgh9L0TLY98jgqCf7Brz+bCnZP4SobRBrZA0bzroJNos9l h2EddV6r3opvPqJdmN5KzNa3upoq2mFKNdlYrRhVTD3h4DVkmT3lvj5LeiLz49tCA3R2h3W/eNk dt/K6HsuPVTJN8d9/xEKLilDz/8q8kc3jv/YWQZF0GArlUvSTvX/24gEn+ZZYW5BXQNhpXATV7z KzKjCA8c3AZbE7trGMSYmflgDZ0tvWSAEzifyWTJ6ahybrrMh0Um+F8ziCLCTJvpW2aFCLdwysL Jcj67YfF9lNZ34A4jZdAQ== X-Received: by 2002:a05:600c:620e:b0:493:bed7:6d7c with SMTP id 5b1f17b1804b1-493d30d39d8mr88797895e9.25.1783334291413; Mon, 06 Jul 2026 03:38:11 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 17/49] target/arm: implement WFET Date: Mon, 6 Jul 2026 11:37:20 +0100 Message-ID: <20260706103752.320511-18-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260706103752.320511-1-peter.maydell@linaro.org> References: <20260706103752.320511-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::341; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x341.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783334580634158500 From: Alex Benn=C3=A9e Now we have the event stream and SEV/SEVL implemented we can finally enable WFET for Aarch64. To avoid issues with QEMU's incomplete ldst exclusive handling causing potential deadlocks in common WFE enabled locking patterns we take advantage of the architectures flexibility and treat being in the exclusive region as a reason to exit. Reviewed-by: Richard Henderson Signed-off-by: Alex Benn=C3=A9e Message-id: 20260624103049.884930-8-alex.bennee@linaro.org Signed-off-by: Peter Maydell --- target/arm/tcg/helper-defs.h | 1 + target/arm/tcg/op_helper.c | 94 ++++++++++++++++++++++++++++++++++ target/arm/tcg/translate-a64.c | 15 +++--- 3 files changed, 103 insertions(+), 7 deletions(-) diff --git a/target/arm/tcg/helper-defs.h b/target/arm/tcg/helper-defs.h index 99ebd75494..0077aeb4e2 100644 --- a/target/arm/tcg/helper-defs.h +++ b/target/arm/tcg/helper-defs.h @@ -56,6 +56,7 @@ DEF_HELPER_1(setend, void, env) DEF_HELPER_2(wfi, void, env, i32) DEF_HELPER_2(wfe, void, env, i32) DEF_HELPER_2(wfit, void, env, i32) +DEF_HELPER_2(wfet, void, env, i32) DEF_HELPER_1(yield, void, env) DEF_HELPER_1(pre_hvc, void, env) DEF_HELPER_2(pre_smc, void, env, i32) diff --git a/target/arm/tcg/op_helper.c b/target/arm/tcg/op_helper.c index 3321e29898..c4433be2ed 100644 --- a/target/arm/tcg/op_helper.c +++ b/target/arm/tcg/op_helper.c @@ -641,6 +641,100 @@ void HELPER(wfe)(CPUARMState *env, uint32_t insn_len) #endif } =20 +void HELPER(wfet)(CPUARMState *env, uint32_t rd) +{ +#ifdef CONFIG_USER_ONLY + /* + * As for WFIT make it NOP here, because trying to raise EXCP_HLT + * would trigger an abort. + */ + return; +#else + CPUState *cs =3D env_cpu(env); + uint32_t excp; + int target_el; + ARMCPU *cpu; + uint64_t cntval, timeout, offset, cntvct, nexttick; + int64_t next_event; + + /* + * As for WFE if the event register is already set we can consume + * the event and return immediately. + */ + if (qatomic_xchg(&env->event_register, false)) { + return; + } + + /* + * Don't bother to go into our "low power state" if + * we would just wake up immediately. + * + * We want the value that we would get if we read CNTVCT_EL0 from + * the current exception level, so the direct_access offset, not + * the indirect_access one. Compare the pseudocode LocalTimeoutEvent(), + * which calls VirtualCounterTimer(). + */ + cntval =3D gt_get_countervalue(env); + offset =3D gt_direct_access_timer_offset(env, GTIMER_VIRT); + cntvct =3D cntval - offset; + timeout =3D env->xregs[rd]; + if (cpu_has_work(cs) || cntvct >=3D timeout) { + return; + } + + /* We might sleep, so now we check to see if we should trap */ + target_el =3D check_wfx_trap(env, true, &excp); + if (target_el) { + env->pc -=3D 4; + raise_exception(env, excp, syn_wfx(1, 0xe, rd, true, WFET, false),= target_el); + } + + /* + * If the CPU has entered the exclusive region we could sleep + * until the global monitor moves from Exclusive to Open Access. + * However it would be expensive for QEMU to fully model the + * global monitor and not doing so would potentially trigger + * deadlocks in WFE enabled locking code. However as WFE is a hint + * instruction the architecture allows for the PE to leave + * low-power state for any reason. QEMU chooses to treat being in + * an exclusive region as such and return directly. + */ + if (env->exclusive_addr !=3D -1) { + return; + } + + /* + * Finally work out if the timeout or event stream will kick in + * earlier. + * + * The WFET should time out when CNTVCT_EL0 >=3D the specified value. + */ + cpu =3D env_archcpu(env); + if (uadd64_overflow(timeout, offset, &nexttick)) { + nexttick =3D UINT64_MAX; + } + if (nexttick > INT64_MAX / gt_cntfrq_period_ns(cpu)) { + nexttick =3D INT64_MAX; + } + + next_event =3D gt_calc_next_event_stream(env); + if (next_event > 0 && next_event < nexttick) { + timer_mod(cpu->wfxt_timer, next_event); + } else { + if (nexttick =3D=3D INT64_MAX) { + timer_mod_ns(cpu->wfxt_timer, INT64_MAX); + } else { + timer_mod(cpu->wfxt_timer, nexttick); + } + } + + env->halt_reason =3D HALT_WFE; + cs->exception_index =3D EXCP_HLT; + cs->halted =3D 1; + cpu_loop_exit(cs); +#endif +} + void HELPER(yield)(CPUARMState *env) { CPUState *cs =3D env_cpu(env); diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index cdf843984d..69648ad94b 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -2195,14 +2195,15 @@ static bool trans_WFET(DisasContext *s, arg_WFET *a) return false; } =20 - /* - * We rely here on our WFE implementation being a NOP, so we - * don't need to do anything different to handle the WFET timeout - * from what trans_WFE does. - */ - if (!(tb_cflags(s->base.tb) & CF_PARALLEL)) { - s->base.is_jmp =3D DISAS_WFE; + if (s->ss_active) { + /* Act like a NOP under architectural singlestep */ + return true; } + + gen_a64_update_pc(s, 4); + gen_helper_wfet(tcg_env, tcg_constant_i32(a->rd)); + /* Go back to the main loop to check for interrupts */ + s->base.is_jmp =3D DISAS_EXIT; return true; } =20 --=20 2.43.0 From nobody Sun Jul 26 11:01:48 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1783334386; cv=none; d=zohomail.com; s=zohoarc; b=Iu8mTkZobkgv4ivNd9iQpsPMzjFi3ZNYZADtQoaJH3PObOyVh8xJu66ZpaU8m+bAndfQYRs/oavCLSng+jaK4j7e5pRUOJ4p3uy8dd1C8H/5wr+EAnBtmzphjrmnndTah4Fln4iu9QszYLzo0nRMZAaJsmVkt0tAxaqVZP6PlH8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783334386; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=vaarXhZ2gUUxnXrUImuA3SXpHAUC7gm2EOhq4j7dpug=; b=g1i5o9ynA9dvNXkwBOjLTcRRitCeVfSfBD9V5MNzHtztwYUPDl6qcknn8ZsujW4yJqoF2DhNnsgbcm1UzNgbtkql9CvN1BkwkzYf4+kzEvIZSHlIdOh2Fh8guOSvpiuOhpe8IC/8/QJdGHZReq7QzvgKmFB50v42wTMVjiXO9A8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17833343863981012.6044393050224; Mon, 6 Jul 2026 03:39:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wggip-0007Uh-Mg; Mon, 06 Jul 2026 06:38:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wggiT-00076V-T0 for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:24 -0400 Received: from mail-wm1-x331.google.com ([2a00:1450:4864:20::331]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wggiR-0003O7-07 for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:21 -0400 Received: by mail-wm1-x331.google.com with SMTP id 5b1f17b1804b1-4938d5f86f3so18285015e9.1 for ; Mon, 06 Jul 2026 03:38:14 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63b6f1bsm329501805e9.10.2026.07.06.03.38.11 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jul 2026 03:38:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783334294; x=1783939094; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=vaarXhZ2gUUxnXrUImuA3SXpHAUC7gm2EOhq4j7dpug=; b=nXHS57vTHt5GOPGlzwnt3rvJmsjr/Vdfmp+teMdEM7iIrseihQBS4YtvQaVyl0PPLz ryX6IEZpnXDnEihlG9oRK9Ei4gavK/eut/OdNyIjMpZ5UbJ2vG8wtO2eO0es927yxfEG f57kciV7iAg28uxpbOT5NChX2YuCaJ+KupfZt90WEdYxqxzuQ1l0lyTo56nBdIQjK4SN UUsBg1HMUb/pT8YWQD1Vbk90ocDy8CcFBCgmDmOq8/+WAKQ9H3FB6puXYg741AAzEfok BGJafRjh7sbEkxD6c98DCwuDSelhEedFXEW4T8EW2XsqnqnbyZAONKLIsBnOAKOGjbw0 QxMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783334294; x=1783939094; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=vaarXhZ2gUUxnXrUImuA3SXpHAUC7gm2EOhq4j7dpug=; b=dZg2KxVJ/GM/psj/e4RmJFmAQh35CYEaHaZT2Iy/g3g59yxmdcjslEfSA02q3H4GjQ RLxWPUZZh5dbJOtXNwr1AEeN1nQzGoHHSnPHo6rjgcTYJQ9yWXAT2MLfvVcN+dW8S2A2 3eYFrTxaWRXOrt5/j9bqVbbEpqT/NIJ0DUS1rLN9p4/jTf1bhDCHvDKYCmvzyfoRVFje Xk28J+NRzi/mGChJjhImlGga9tyvbmvLEjmMOj+J2HtkyNmp7yCnCJ++pbgrivJ6LL9h dkUA7vOVTWmUMV4Z4kmDdlX0/4AOyVs3u1//v4ejuOK56Gi+n0DLPDoECT+wKTfACDci 1BSQ== X-Gm-Message-State: AOJu0YxnBVnlzr0xgdhIlPxBmxeKtlkHsQsfByHf1ZpfopvD/O91rPqp EGk91v/31icfHoHME9moIhaDUddBs12PcjVcc5Sig0HySIfx4yLJX8wkctcoCbQTh87FJP76o2r xNvzVzuBasQ== X-Gm-Gg: AfdE7ckZQFvlc/hQbFYiwZEPAj6GcDwRSXlTtZcH4ZJx5L8OAMYWbBBAYiqdxcyCB2U X9ILHIwAGKGpx96VThvZPau9iID9hdvxNF4OI6viV0fL2AcZsOGhYBbn88E4z1+tB4CZ2dE8t8/ X9ijAaQyWcErCJGpEGouZMBrNRbCxcI36QUfADxh5s9+p+0ggXEJU9XSjD9fTf3beSgzcXVVZz8 iK66Eijysu8hOlohcysFYOJo2MD5FVk+W92fABY4XesNG69l4MnaHVZdRStzmfkupAblxvs64n6 Uu4cfK7JHlCMiPiGQsK3PPDea7riXcxHbILEMg2Xty5WT0oYiDlJqz3i1fhfSRxK0yGY9Vq+KSh ZQYjG+R3dtsKItLidNTB7DdjttXLdfxcmXedTkETi9zuixC8+rMJXpnwxOO2joGDRDv2rqLr1pS FB8ISqEklpUgvh6qqRdo3gx9WLUSt50JehivyXswj+oaoRzvqFR09OlF1jtA7eZwyApYdCGrJwt nNZjIKmXR/I7nTspeb0bg== X-Received: by 2002:a05:600c:628d:b0:493:c2ac:58f with SMTP id 5b1f17b1804b1-493decbf152mr1099655e9.8.1783334293621; Mon, 06 Jul 2026 03:38:13 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 18/49] docs/specs/fw_cfg: Document all architecture register layouts Date: Mon, 6 Jul 2026 11:37:21 +0100 Message-ID: <20260706103752.320511-19-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260706103752.320511-1-peter.maydell@linaro.org> References: <20260706103752.320511-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::331; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x331.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783334387352158501 We implement the fw_cfg device for more architectures and machines that we let on about in our documentation. Luckily most of the new ones (notably riscv and loongarch) have followed the straightforward layout that the Arm virt board picked. Restructure the documentation to present this as the "standard" layout, followed by the other layouts used by various other boards for historical reasons. This adds PA-RISC, SPARC, PPC and MIPS. Signed-off-by: Peter Maydell Reviewed-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20260529174639.451353-2-peter.maydell@linaro.org Reviewed-by: Michael S. Tsirkin --- docs/specs/fw_cfg.rst | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/docs/specs/fw_cfg.rst b/docs/specs/fw_cfg.rst index 31ae31576b..7e2fe0851d 100644 --- a/docs/specs/fw_cfg.rst +++ b/docs/specs/fw_cfg.rst @@ -84,15 +84,35 @@ increasing address order, similar to memcpy(). Register Locations ------------------ =20 +For a memory-mapped fw_cfg device, the standard register layout is: + + * base address : Data Register (64 bit) + * base address + 8 : Selector Register (16 bit) + * base address + 16 : DMA Address Register (64 bit) + +Some architectures or machines have a different layout for historical reas= ons: + x86, x86_64 * Selector Register IOport: 0x510 * Data Register IOport: 0x511 * DMA Address IOport: 0x514 =20 -Arm - * Selector Register address: Base + 8 (2 bytes) - * Data Register address: Base + 0 (8 bytes) - * DMA Address address: Base + 16 (8 bytes) +PA-RISC: + * base address : Selector Register (16 bit) + * base address + 4 : Data Register (8 bit) + +32-bit SPARC, PPC ``g3beige``, ``mac99``, ``prep``: + * base address : Selector Register (16 bit) + * base address + 2 : Data Register (8 bit) + +64-bit SPARC: + * base address : Selector Register (16 bit) + * base address + 1 : Data Register (8 bit) + +MIPS ``loongson3-virt`` machine: + * base address : Selector Register (16 bit) + * base address + 8 : Data Register (64 bit) + =20 ACPI Interface -------------- --=20 2.43.0 From nobody Sun Jul 26 11:01:48 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1783334462; cv=none; d=zohomail.com; s=zohoarc; b=AKb1XvfG4bcTXZVcq2s4kmHh50qAs4mn62vXogJ2SCmqTXVRSYv0zvYKgUexh0hKJ7lRirwJcbVN1G9gZoktIYPR2VcDTIgfzyHKiqwjc7Wea56Hkxk+XD3Zlz0v1K1Opzc89OXcZpQLrwtuUcgWXrwdmUeOebFGkPa282Pww/4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783334462; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=Ura28sdkKYPryMO+LtMRN/uw8MB+2Afo0UvbdUwSUV0=; b=bZWl1mZJBPgHuBzv8mO07p77Q2eU6yxcFf0dOCKNmwOH3/n7yW+fGUx20bfju4q6xjnrjkndcHdYBfGs6QMYtqxJfKzpZ7HoqcEMugpD7+30RORvjPwgTtL5/YvnAJOOfn3siV7gsxvgJiMDc8mwh8xeKG9ZM+OlE2GFYDqAiNA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783334462012612.1357967577542; Mon, 6 Jul 2026 03:41:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wggie-0007D6-OJ; Mon, 06 Jul 2026 06:38:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wggiS-00073S-Ej for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:22 -0400 Received: from mail-wm1-x32a.google.com ([2a00:1450:4864:20::32a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wggiP-0003Pr-2d for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:20 -0400 Received: by mail-wm1-x32a.google.com with SMTP id 5b1f17b1804b1-493bc8fda98so31423445e9.0 for ; Mon, 06 Jul 2026 03:38:15 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63b6f1bsm329501805e9.10.2026.07.06.03.38.13 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jul 2026 03:38:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783334295; x=1783939095; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=Ura28sdkKYPryMO+LtMRN/uw8MB+2Afo0UvbdUwSUV0=; b=VDtJYrsbeQTip2aJDhjdRS1uh83O//kOGZSjEf3Bc+k/VlPrLjmu008hvewM+N263Z X8IeGJ7TKxlsth6ML7kEjXk9WKtfL6P28lCLwJgC1sDwCAziIOhQdxJIdUBsBKU6pv94 Gjb/Fyg7X9w4cjnTd1tuM/ohkH5H4pX1M8ZtcPvqhSjbAv0GPbIqcIHngp5V6Lj4FaPO MH5QH/elBIChwEPWi/ql1fPOE0mUEjRgBNLQXqJHCmWkfYs/Jp9T6QvP2lzEK058VNgn dacAF8ly9HOG1X0SjSRRAgRAMl9xRnImoN78fxw5Hm+6BFlZDBg5appAwVMbTLO6jj0P UcgQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783334295; x=1783939095; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=Ura28sdkKYPryMO+LtMRN/uw8MB+2Afo0UvbdUwSUV0=; b=AYn+Xx58yLhrm4oI6YmkRkk7V3TSJMQcij4eyz5bfV0iQP483fQgjqUZ5ixqPvkzWu qvDh38nH5z9f5j1Zxa1tk3zCnUSf0OUQFPkPEcnqf7tak9LIlGbwUXGgMbuV3xnvbA4u dfietOJsdXNrOa2A2vBUHOXpfDD8XNSkLhQgevJxGJAJCxpoc7rey4HHeQ5V2pYBL1+8 yf3HONEO65XolY1suZcjQ78met5rtXgTkblhjohrq7yvkAGAA3/w4SW9++gPbHvkBLhu 58FwXkn3nvFhQ7suOeKs96eZcie6CLTDcWtWuJNjEhw24PktABPoGthlnNQ7vtgOQwyE 9tyw== X-Gm-Message-State: AOJu0YxtI+WRp/7S30wEQVzloaspago/DK0SN2umWXvM0b7sfY1aSUir OrGP3DUN0J1y1xCuYZM7zJ7vEEfLwb+tDjAeNEr4io0xk5SxxghMNIhOIOmCZLqseEyFsrw5nD2 v3BwW6G+B7w== X-Gm-Gg: AfdE7cnBq0ApJqoeqZJcjTvaxYlgltyKppsI2d0/aZ1VKOCwNPL9lgNJ7rhmsfYtLxo 3GDAmwmYhrdPOs/jsOtSZBBvY0IKgMI+5SIo99Ik0Y4kyq32ctMj6kF+3+1vRJESaFa1vpwJgYP 86nNtXVdtjYwie4LnNkJYXPdNFPreDQUEp1IhFg+D59xVhUuj5uLqOibM8jW3/RyW510eQseAit rDzM3taB2e32fPGAyuxXH88I0CISqixHW412lLu7vBHFiL1o8eSKP5eFuFk+WbWpYWvz0aqFbAi hQ87uhdYCcG6KN5CtbKnbmhFZHZu7g9IvwRSsEp5X0bxLe9/4h4wWa3jyXOA/P8CPpTZf0lM8fk cP6X1KmaFZkV0JPAEJ0wyAdlQ5RNMD2mR1YpJ7W3wajmrR2cuuliXZwj2aTTkRXLpVzPoenIXD/ ECM3lk4H1SPvXai9/WDpFy0zU7g/VOLFnwIVEeGhaf9Llads/BZgSmOYbzRBrEBdyriafQtQXO3 GOw4A2sAZSIWbkb4Fsv0g== X-Received: by 2002:a05:600c:5394:b0:492:7101:3d88 with SMTP id 5b1f17b1804b1-493d11f0ce5mr107854775e9.24.1783334294645; Mon, 06 Jul 2026 03:38:14 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 19/49] hw/nvram/fw_cfg: Enforce standard layout for fw_cfg_init_mem_dma() Date: Mon, 6 Jul 2026 11:37:22 +0100 Message-ID: <20260706103752.320511-20-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260706103752.320511-1-peter.maydell@linaro.org> References: <20260706103752.320511-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32a; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32a.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783334464004158500 Currently fw_cfg_init_mem_dma() allows the caller to customize the register layout, by specifying separately the offsets for control, data and DMA registers, plus the width of the data register. In practice, all the boards using this function specify the same standard layout: "base + 8, base, 8, base + 16", meaning that the data register is 8 bytes and the registers are data at offset 0, control/selector at offset 8, and DMA at offset 16. Allowing every board to be different is gratuitous and useless variation which leads to code in guest OSes having architecture ifdeffery to cope with it. Avoid potentially introducing any more of this by removing all the arguments from fw_cfg_init_mem_dma(), so that the callers only specify the base address. Signed-off-by: Peter Maydell Reviewed-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20260529174639.451353-3-peter.maydell@linaro.org Reviewed-by: Michael S. Tsirkin --- hw/arm/virt.c | 2 +- hw/loongarch/fw_cfg.c | 3 +-- hw/nvram/fw_cfg.c | 10 ++++------ hw/riscv/virt.c | 3 +-- include/hw/nvram/fw_cfg.h | 23 ++++++++++++++++++++--- 5 files changed, 27 insertions(+), 14 deletions(-) diff --git a/hw/arm/virt.c b/hw/arm/virt.c index d8d27f2ef6..abee62fcbc 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -1944,7 +1944,7 @@ static FWCfgState *create_fw_cfg(const VirtMachineSta= te *vms, AddressSpace *as) FWCfgState *fw_cfg; char *nodename; =20 - fw_cfg =3D fw_cfg_init_mem_dma(base + 8, base, 8, base + 16, as); + fw_cfg =3D fw_cfg_init_mem_dma(base, as); fw_cfg_add_i16(fw_cfg, FW_CFG_NB_CPUS, (uint16_t)ms->smp.cpus); =20 nodename =3D g_strdup_printf("/fw-cfg@%" PRIx64, base); diff --git a/hw/loongarch/fw_cfg.c b/hw/loongarch/fw_cfg.c index d2a79efbf7..4c976ce1e5 100644 --- a/hw/loongarch/fw_cfg.c +++ b/hw/loongarch/fw_cfg.c @@ -23,8 +23,7 @@ FWCfgState *virt_fw_cfg_init(ram_addr_t ram_size, Machine= State *ms) int max_cpus =3D ms->smp.max_cpus; int smp_cpus =3D ms->smp.cpus; =20 - fw_cfg =3D fw_cfg_init_mem_dma(VIRT_FWCFG_BASE + 8, VIRT_FWCFG_BASE, 8, - VIRT_FWCFG_BASE + 16, &address_space_memo= ry); + fw_cfg =3D fw_cfg_init_mem_dma(VIRT_FWCFG_BASE, &address_space_memory); fw_cfg_add_i16(fw_cfg, FW_CFG_MAX_CPUS, (uint16_t)max_cpus); fw_cfg_add_i64(fw_cfg, FW_CFG_RAM_SIZE, (uint64_t)ram_size); fw_cfg_add_i16(fw_cfg, FW_CFG_NB_CPUS, (uint16_t)smp_cpus); diff --git a/hw/nvram/fw_cfg.c b/hw/nvram/fw_cfg.c index 1d7d835421..59cf92293c 100644 --- a/hw/nvram/fw_cfg.c +++ b/hw/nvram/fw_cfg.c @@ -1088,13 +1088,11 @@ static FWCfgState *fw_cfg_init_mem_internal(hwaddr = ctl_addr, return s; } =20 -FWCfgState *fw_cfg_init_mem_dma(hwaddr ctl_addr, - hwaddr data_addr, uint32_t data_width, - hwaddr dma_addr, AddressSpace *dma_as) +FWCfgState *fw_cfg_init_mem_dma(hwaddr base_addr, AddressSpace *dma_as) { - assert(dma_addr && dma_as); - return fw_cfg_init_mem_internal(ctl_addr, data_addr, data_width, - dma_addr, dma_as); + assert(dma_as); + return fw_cfg_init_mem_internal(base_addr + 8, base_addr, 8, + base_addr + 16, dma_as); } =20 FWCfgState *fw_cfg_init_mem_nodma(hwaddr ctl_addr, hwaddr data_addr, diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c index b68067cfdd..bd9f77aad3 100644 --- a/hw/riscv/virt.c +++ b/hw/riscv/virt.c @@ -1109,8 +1109,7 @@ static FWCfgState *create_fw_cfg(const MachineState *= ms, hwaddr base) { FWCfgState *fw_cfg; =20 - fw_cfg =3D fw_cfg_init_mem_dma(base + 8, base, 8, base + 16, - &address_space_memory); + fw_cfg =3D fw_cfg_init_mem_dma(base, &address_space_memory); fw_cfg_add_i16(fw_cfg, FW_CFG_NB_CPUS, (uint16_t)ms->smp.cpus); =20 return fw_cfg; diff --git a/include/hw/nvram/fw_cfg.h b/include/hw/nvram/fw_cfg.h index 56f17a0bdc..45a3747908 100644 --- a/include/hw/nvram/fw_cfg.h +++ b/include/hw/nvram/fw_cfg.h @@ -309,9 +309,26 @@ FWCfgState *fw_cfg_init_io_dma(uint32_t iobase, uint32= _t dma_iobase, AddressSpace *dma_as); FWCfgState *fw_cfg_init_mem_nodma(hwaddr ctl_addr, hwaddr data_addr, unsigned data_width); -FWCfgState *fw_cfg_init_mem_dma(hwaddr ctl_addr, - hwaddr data_addr, uint32_t data_width, - hwaddr dma_addr, AddressSpace *dma_as); +/** + * fw_cfg_init_mem_dma: + * @base_addr: address to map the device at + * @as: the device will do DMA to/from this AddressSpace + * + * Create and map a fw_cfg device at the specified base address. + * + * This always creates a device with DMA support, and the "standard" + * register layout: + * - offset 0 : data, 64 bits + * - offset 8 : selector, 16 bits + * - offset 16 : DMA address, 64 bits + * + * The device will be created, configured and realized, and its + * memory regions for the registers will be mapped at the specified + * address. + * + * Returns the device object. + */ +FWCfgState *fw_cfg_init_mem_dma(hwaddr base_addr, AddressSpace *dma_as); =20 FWCfgState *fw_cfg_find(void); bool fw_cfg_dma_enabled(void *opaque); --=20 2.43.0 From nobody Sun Jul 26 11:01:48 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1783334561; cv=none; d=zohomail.com; s=zohoarc; b=PN6utpFOq4oRTRrUbzAcuNjIzB8Zuu61/pPJWF6DaNchDMGxHlM47XSrHdcmRYLTsDWmUBqTagutfTiG4UB/BpQ7Rs+8m76YI3osNft7KDbIn//uUC15bJeRWvpMcSFVDKLKRz1IthbHvLGOqWjZjJw/rn/qck5OqCviIVYpStg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783334561; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=v/UwCQS2eNQSRnaSr3MMhfV2p8lUEGh6xQ596ua5JSo=; b=Ta3AmoUwqegGAKL8X9INtFObCBIi+fQXsnvzNjoD5TDy0sYSyAOnjBGt9MbqLErrDBXQ4dmuAc3LnI42RfRDH0u03IWI69rGey8A77JgdZbKC9zVrPDOFaRZZxBmaAhc6gPD3RecoHLXl5W9WVLuXcGx90moOV56TuQSM8ACN2I= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783334561486513.12608797991; Mon, 6 Jul 2026 03:42:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wggip-0007UW-Dd; Mon, 06 Jul 2026 06:38:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wggiT-00076U-Qt for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:24 -0400 Received: from mail-wm1-x335.google.com ([2a00:1450:4864:20::335]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wggiQ-0003Qi-TR for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:21 -0400 Received: by mail-wm1-x335.google.com with SMTP id 5b1f17b1804b1-493c52cde9eso29627095e9.3 for ; Mon, 06 Jul 2026 03:38:17 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63b6f1bsm329501805e9.10.2026.07.06.03.38.14 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jul 2026 03:38:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783334296; x=1783939096; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=v/UwCQS2eNQSRnaSr3MMhfV2p8lUEGh6xQ596ua5JSo=; b=JK/1fXc3N9EWvseBdU7sQmEO9JtWVvgb19GvodPYZ9p13Z0Wf6t9EwaAoLrd4pDYH7 7ooF9SJyy0BXsYeqJaRw06sPPAV2UbKkFu/4OoeIlcUOiHWCaKJ6eAMMsK4CrhJBmI0M Gpoyda5YyornRgKIayCAqwX1D7ca7tE7rWHGcbukh8LYBLLB4BhQJJRO91+pW96NSuZt 7WM/YeWbF63s628EUgopu2TKCR4oEdqJxa9OC16xoq1t92e94uYYMxS2ax6cTJ034/8W nG4StvdW1HFWOkhrNknkWZ2K8oeO+gWXBVsRbgm0MpzYvKdvB+wrLLTvxS+7M58ao0LE jfEA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783334296; x=1783939096; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=v/UwCQS2eNQSRnaSr3MMhfV2p8lUEGh6xQ596ua5JSo=; b=rqLWLnswXJo8raiZ0dD7Bfg+MUBqaZznHQVNrsqyDCSa6cSZFNlKQRlvE73C8VucJC 2U5pebiWQva06R3uaGGxFIVij7gck/fIbfcwEKorLMvsX+L2+sE32sjJAJgCNceq0ksR xJRS7CU+Mkgy7U1QJ3BvA/oMsk9VaNxxum44cMB7qmUupvygREHdCBvljlje5piKmHpA UpxE60RfHgY81RXPdXqXYli/oiiuVLE/bB96C/rCckcwkCppZTj6YTlZaZvY9jF+vXOX 93eankQBN/wiP2UHRoYc1R0alRez7fcu7zBWYm9qtHoeI4pLUCkDvrHAcjKGn8lylnNW Tj/Q== X-Gm-Message-State: AOJu0Yxs6Lo+ad1GXXs/DWt1/DQiOf+pju7BG37bt4zjmQ64EQOmoYsT yIXc2wL0ZBP12Z+gCTRPcEMbgfEY3t2OpGmpU/J90aCqm+euq/R/jbksHBh3zymfQhBEuXy7Xbb ShHIBy3hPNQ== X-Gm-Gg: AfdE7ckqtBbXLxrS6hN9yJuTgn8tDNDioolR64QP47oggW7hoSeXPy4bIQ4O313YH+A CGJ4kQohRvNMWTV/m6x6NuRbMDPw50v8vtBdGXwXy286lukyVpQy4rjxbIHDr/DxBidv2YbawFB 3n6uEj1+AQhXxGSfVkFYDVlkoQHrCDTG7Lcc9R6ekpr1MSa6rPOT5AZ1aoPvShJx1mKYFicxcty kTNY+jMJAJlVAeBeqYuW32WlMBhDdCpzNkVE2IV8b+XUDCTydZqNWqzhFE/3oea4duTeewxesXA GeoX+UROpRsaJUPU0O79WMQ6VPoZAMFWavFBeJEBkjd6Mu/AB4fkZWT3uY1ctCpqFET4At7+56m 0QJ3HVSZxB+8TLWZjPV/HXyzSqCuR10nWB5C+t7CbBjEdthF4ePzJt4MMCWT1Za1fSrBY6ti1lc 343jD95KD6q6JxfeArSm4zyt+ZYUxvmfoMUcISOGv/kWIKt0KacqlUl99LnUiAPKcAMS+zcTnJ5 WcxheMXBZm3pAmSVxuRLg== X-Received: by 2002:a05:600c:37cd:b0:493:c82d:f3fb with SMTP id 5b1f17b1804b1-493d11f6d3fmr122048755e9.28.1783334296100; Mon, 06 Jul 2026 03:38:16 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 20/49] hw/nvram/fw_cfg: Enforce standard layout for x86 fw_cfg I/O ports Date: Mon, 6 Jul 2026 11:37:23 +0100 Message-ID: <20260706103752.320511-21-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260706103752.320511-1-peter.maydell@linaro.org> References: <20260706103752.320511-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::335; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x335.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783334562422158500 The fw_cfg_init_io_dma() function allows the caller to specify the base port number of the selector/data register and the base port number of the DMA address register separately. No caller actually uses this: they all pass in base + 4 for the dma_iobase. To reduce the risk of unnecessary variation in what different x86 machine types use as their fw_cfg register layout, remove the dma_iobase argument from fw_cfg_init_io_dma(), and have the function always use the same "DMA port is base port + 4" layout. Signed-off-by: Peter Maydell Reviewed-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20260529174639.451353-4-peter.maydell@linaro.org Reviewed-by: Michael S. Tsirkin --- hw/i386/fw_cfg.c | 3 +-- hw/i386/microvm.c | 3 +-- hw/i386/pc.c | 3 +-- hw/nvram/fw_cfg.c | 8 ++++---- include/hw/nvram/fw_cfg.h | 17 +++++++++++++++-- 5 files changed, 22 insertions(+), 12 deletions(-) diff --git a/hw/i386/fw_cfg.c b/hw/i386/fw_cfg.c index 2876490f06..d422302c1c 100644 --- a/hw/i386/fw_cfg.c +++ b/hw/i386/fw_cfg.c @@ -127,8 +127,7 @@ FWCfgState *fw_cfg_arch_create(MachineState *ms, const CPUArchIdList *cpus =3D mc->possible_cpu_arch_ids(ms); int nb_numa_nodes =3D ms->numa_state->num_nodes; =20 - fw_cfg =3D fw_cfg_init_io_dma(FW_CFG_IO_BASE, FW_CFG_IO_BASE + 4, - &address_space_memory); + fw_cfg =3D fw_cfg_init_io_dma(FW_CFG_IO_BASE, &address_space_memory); fw_cfg_add_i16(fw_cfg, FW_CFG_NB_CPUS, boot_cpus); =20 /* FW_CFG_MAX_CPUS is a bit confusing/problematic on x86: diff --git a/hw/i386/microvm.c b/hw/i386/microvm.c index 779741ec76..e7adab7d2e 100644 --- a/hw/i386/microvm.c +++ b/hw/i386/microvm.c @@ -320,8 +320,7 @@ static void microvm_memory_init(MicrovmMachineState *mm= s) e820_add_entry(0x100000000ULL, x86ms->above_4g_mem_size, E820_RAM); } =20 - fw_cfg =3D fw_cfg_init_io_dma(FW_CFG_IO_BASE, FW_CFG_IO_BASE + 4, - &address_space_memory); + fw_cfg =3D fw_cfg_init_io_dma(FW_CFG_IO_BASE, &address_space_memory); =20 fw_cfg_add_i16(fw_cfg, FW_CFG_NB_CPUS, machine->smp.cpus); fw_cfg_add_i16(fw_cfg, FW_CFG_MAX_CPUS, machine->smp.max_cpus); diff --git a/hw/i386/pc.c b/hw/i386/pc.c index 73a625327c..6d000e2dba 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -568,8 +568,7 @@ void xen_load_linux(PCMachineState *pcms) =20 assert(MACHINE(pcms)->kernel_filename !=3D NULL); =20 - fw_cfg =3D fw_cfg_init_io_dma(FW_CFG_IO_BASE, FW_CFG_IO_BASE + 4, - &address_space_memory); + fw_cfg =3D fw_cfg_init_io_dma(FW_CFG_IO_BASE, &address_space_memory); fw_cfg_add_i16(fw_cfg, FW_CFG_NB_CPUS, x86ms->boot_cpus); rom_set_fw(fw_cfg); =20 diff --git a/hw/nvram/fw_cfg.c b/hw/nvram/fw_cfg.c index 59cf92293c..f68191553b 100644 --- a/hw/nvram/fw_cfg.c +++ b/hw/nvram/fw_cfg.c @@ -1019,15 +1019,14 @@ static void fw_cfg_common_realize(DeviceState *dev,= Error **errp) qemu_add_machine_init_done_notifier(&s->machine_ready); } =20 -FWCfgState *fw_cfg_init_io_dma(uint32_t iobase, uint32_t dma_iobase, - AddressSpace *dma_as) +FWCfgState *fw_cfg_init_io_dma(uint32_t iobase, AddressSpace *dma_as) { DeviceState *dev; SysBusDevice *sbd; FWCfgIoState *ios; FWCfgState *s; MemoryRegion *iomem =3D get_system_io(); - bool dma_requested =3D dma_iobase && dma_as; + bool dma_requested =3D dma_as; =20 dev =3D qdev_new(TYPE_FW_CFG_IO); if (!dma_requested) { @@ -1048,7 +1047,8 @@ FWCfgState *fw_cfg_init_io_dma(uint32_t iobase, uint3= 2_t dma_iobase, /* 64 bits for the address field */ s->dma_as =3D dma_as; s->dma_addr =3D 0; - memory_region_add_subregion(iomem, dma_iobase, &s->dma_iomem); + /* DMA register ioport is always at base + 4 */ + memory_region_add_subregion(iomem, iobase + 4, &s->dma_iomem); } =20 return s; diff --git a/include/hw/nvram/fw_cfg.h b/include/hw/nvram/fw_cfg.h index 45a3747908..be3fb5f8aa 100644 --- a/include/hw/nvram/fw_cfg.h +++ b/include/hw/nvram/fw_cfg.h @@ -305,8 +305,21 @@ bool fw_cfg_add_file_from_generator(FWCfgState *s, Object *parent, const char *part, const char *filename, Error **errp); =20 -FWCfgState *fw_cfg_init_io_dma(uint32_t iobase, uint32_t dma_iobase, - AddressSpace *dma_as); +/** + * fw_cfg_init_io_dma: + * @iobase: x86 port number which is the base of the fw_cfg port range + * @dma_as: the device will do DMA to/from this AddressSpace + * + * Create a fw_cfg device and map it into the specified I/O port range. + * + * This creates a device with the x86 PC standard port I/O layout: + * - Selector Register IOport: @iobase + * - Data Register IOport: @iobase + 1 + * - DMA Address IOport: @iobase + 4 + * + * Returns the device object. + */ +FWCfgState *fw_cfg_init_io_dma(uint32_t iobase, AddressSpace *dma_as); FWCfgState *fw_cfg_init_mem_nodma(hwaddr ctl_addr, hwaddr data_addr, unsigned data_width); /** --=20 2.43.0 From nobody Sun Jul 26 11:01:48 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1783334491; cv=none; d=zohomail.com; s=zohoarc; b=FzB0vaHxzmoLFg65C+9DvMB7bi/Yrcc6frGPdBWzAFPuOlYOr75ViqW20VLvXdAIzzZfoDcWdk8tzg9RXiSAfWAppGRG8ze92cWESC6fqUZ+1G6OxBiccMJbH7W5vO4lsfGgFsYDGvRMY7OsP3oSVulD8s/U9TpJbxl5f5fuyR4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783334491; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=mEqVNkIeQWef5D3Dm101yBk+cfniIq8WOWmVgto3zPU=; b=XiR5s3unHgF1gfa3xtfvOOuZzETXNXL73eD2l5Re+m6pMPeLTIForrtswV05gIezd60rAiWtc7wCRkkrxR8px0RXmplEPMNbkCoXIkM0NfUHPkQHxHufe91olacpt1DoAmO9wLbjpWU3VJkWrjZ8ybzPWLvuZkV1gqSkw6HShlM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783334491779410.4511581678004; Mon, 6 Jul 2026 03:41:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wggir-0007Xf-KI; Mon, 06 Jul 2026 06:38:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wggiS-00073R-Ab for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:22 -0400 Received: from mail-wm1-x331.google.com ([2a00:1450:4864:20::331]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wggiQ-0003R0-S5 for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:20 -0400 Received: by mail-wm1-x331.google.com with SMTP id 5b1f17b1804b1-493ae59eca6so20659005e9.1 for ; Mon, 06 Jul 2026 03:38:17 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63b6f1bsm329501805e9.10.2026.07.06.03.38.16 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jul 2026 03:38:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783334297; x=1783939097; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=mEqVNkIeQWef5D3Dm101yBk+cfniIq8WOWmVgto3zPU=; b=nBOkPEV/yqREBAabv5wrhPDheCOHObOEJMflpR271CTc5o1mutU9vHKCPRsoYlpNv7 6yhCCJPdai2GYSri9dkO3en8QRbn7szEkgo9Z7ybKm+Bg1GzLRl7dniMIPLZz4ocI4ri Dr/o8oNdDzYd0oaj6dImIv38FSaoiTG17z6wZix1PnwS8ruYbWQ0kdPhNGTIKFviEPwe sbR6lmzDwcYBeCyOCioPKgdTXSuhBcgONm/hk+q4B6eB8apVSZfJzHHzjk+kXhsFPtMY 8y0QN/0cdbbNhRDd8Uvmj3p25ydt5niebQxFnWLtkv3JARYVsRu2FCQTedInCUmrfVsV YE1A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783334297; x=1783939097; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=mEqVNkIeQWef5D3Dm101yBk+cfniIq8WOWmVgto3zPU=; b=CVaO2AwHlpWCpGM80qEayPgg1sTi9dFJSKBZKndh0gBPNa4kLbHmgoVcsHezfewxSF LqTRZ2SB6A1gzwKKPNKc0kdYIN97uEZMlzfWE53jyKUCLuOFmBqxaPE0MHc5GZ7G4zOV BsP+uDqRTNNCD4QeZz0MrQ5JUatk7LbJ935LStEIgid+oCAXeDqAmqjQcQXXokINibdy DTqMG1jk9jmIFQ3ONpUl3kRnz432nW6Lt5b4NB3MtHP07myk3r4ulfTo/1aWMyImoG5w cDwD+IIv9G+E6S4WUrUoNLMREgJ7qg1Tc8sYMGyS4s1QWRSIReLP9O17UqdD7HVnbPK9 MKiw== X-Gm-Message-State: AOJu0YwRKxV9Lk9VGBtwuthZ5EoHBwhikVYtZO9oBqEzc1c3CSdWGUL/ HEwO8NSfwMvbpwEymolNR2K/Q2H6/parZfz96GKyHncnE6TdLMCr4ay9uliEN2Pq5MD/EApwdLL Rtf4d8dQs8g== X-Gm-Gg: AfdE7cnGDAYejeWd6CQVkThacLZ3uQQp0pC+PFzo0PlYIKaHxthPfa3riMtlMeP0zsU 6w94Sg42gEixjArGRAWCOq1cnggJMwatBLLGCIM0oi29k83lkdvAy4Xm1Tiow7CF791wqOhRqFs sFVKj/9kL+nDagXfOIenzCLp52hx/dSIs+KIC83pEe2gedBP5zdeBhBVL0dNCxULmnco3VN+FUy 7UoiZ6yt8swbhV6MQ0BPtlXdd/qZhK+OCyxN6aTsNArQFyrUiQKRBnMTpzF7laOmrlqdwak9JDm b+BSBgzNagyuvVTwg9yIIccqcVTTCwPwaBjvJs02CAaCxhJdlzTEfp/HawdjrvnTQvbaOIIzpTO UgZyi6CvJv7zDtbTEVeVi9lRrJpDtfHmi8EIoG0Qs2QJhczs1jeUQSG1H5PhQffqmFrYFe8OPry FPyWdYFQDnnij9MvdaQmfhUO4qOq+GjsiKnWMaZM5Ee+ZvgDMKzUYrM+PBSobi/2IlrOUyCKy/r CykXKQ1I4rWtA1Cowdguw== X-Received: by 2002:a05:600c:628b:b0:492:3237:ddf with SMTP id 5b1f17b1804b1-493d162bb31mr99509525e9.28.1783334296829; Mon, 06 Jul 2026 03:38:16 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 21/49] hw/nvram/fw_cfg: Remove support for I/O port fw_cfg without DMA Date: Mon, 6 Jul 2026 11:37:24 +0100 Message-ID: <20260706103752.320511-22-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260706103752.320511-1-peter.maydell@linaro.org> References: <20260706103752.320511-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::331; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x331.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783334494000158500 Currently fw_cfg_init_io_dma() allows the caller to pass a NULL dma_as argument, which causes it to create a fw_cfg without the DMA port or DMA support. None of the callers use this capability: they all pass &address_space_memory. We don't really want to leave the door open for some future x86 machine type which doesn't support DMA for the fw_cfg device, so remove this, and instead make the function assert that it has a non-NULL dma_as argument, like fw_cfg_init_mem_dma(). Signed-off-by: Peter Maydell Reviewed-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20260529174639.451353-5-peter.maydell@linaro.org Reviewed-by: Michael S. Tsirkin --- hw/nvram/fw_cfg.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/hw/nvram/fw_cfg.c b/hw/nvram/fw_cfg.c index f68191553b..a9d45adb2d 100644 --- a/hw/nvram/fw_cfg.c +++ b/hw/nvram/fw_cfg.c @@ -1026,12 +1026,10 @@ FWCfgState *fw_cfg_init_io_dma(uint32_t iobase, Add= ressSpace *dma_as) FWCfgIoState *ios; FWCfgState *s; MemoryRegion *iomem =3D get_system_io(); - bool dma_requested =3D dma_as; + + assert(dma_as); =20 dev =3D qdev_new(TYPE_FW_CFG_IO); - if (!dma_requested) { - qdev_prop_set_bit(dev, "dma_enabled", false); - } =20 object_property_add_child(OBJECT(qdev_get_machine()), TYPE_FW_CFG, OBJECT(dev)); --=20 2.43.0 From nobody Sun Jul 26 11:01:48 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1783334490; cv=none; d=zohomail.com; s=zohoarc; b=FZgBmfwUIOopKFCqkUM5BH1SdNogoT5L7aQZ/nWjfnMtKZ5QEkU/wzHesdklLEpuxD6kqyYEbq9ZsKpJe72qXD9TWbdZJNdaACUHrwnRjwlJ9IcmxGM6yKmiBRfmjZcS9htbPV5fd3pIcQQ0gwp84jgBQylxI/ZqGJkFngIfip8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783334490; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=mMkiwEUG4Wl0/WEutzF4slqN/GL92jnEWOIdJPN4nXk=; b=bvUe7AczsdwbX4TtM23eWnCTV8qVrmb8mBK/wY37l4qb1zojuxvp3zCwb6q0iAWI8XuvDhHGq3eHX0zvpHYFL2CXk6X+DzRi5INVMyMc4MO4M7Q3/6RqduhJhHvdfTqyR+wFDOL2n6E8Jph+firZG/9Ee6VjJHXAvOQcoPDk8mc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783334490757289.67230990329745; Mon, 6 Jul 2026 03:41:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wggie-0007D9-Oe; Mon, 06 Jul 2026 06:38:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wggiT-00076S-LU for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:24 -0400 Received: from mail-wm1-x330.google.com ([2a00:1450:4864:20::330]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wggiR-0003RD-DD for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:21 -0400 Received: by mail-wm1-x330.google.com with SMTP id 5b1f17b1804b1-493ce08a75bso11700425e9.1 for ; Mon, 06 Jul 2026 03:38:19 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63b6f1bsm329501805e9.10.2026.07.06.03.38.16 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jul 2026 03:38:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783334298; x=1783939098; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=mMkiwEUG4Wl0/WEutzF4slqN/GL92jnEWOIdJPN4nXk=; b=rJZAKyOMruq8OZ0VnSZ2CsHwpuatgTXC6Lmy6LX33XjklxtliCiq4FP4nCKdUf02GZ 8TmhhxaVPEWlAfJSrB+9ZrMzTld8JumNnZ/0QPR0JwG3HjlrW0a8yqpJ6n3SJZzYfHeV yu06D8Qz3pgfpQ4/MrOm0EXVR7CCJZg1a2xEFyqOl5MLX6YuBamnKhu0rUBGmkp8oIrF WW2cg0UWSbf6Vzt+YGi9FvxCwtcT46WPTbt/jRw2w8Zm6PbS1B5Hw8w/CWfnRczmw0/k XbgIp3Kb5LowwgHgFqRPJPb4EcJPWxLQJPkrjgfyPS4DrTakmAf0fSswAGaStMimpnlh ZKTQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783334298; x=1783939098; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=mMkiwEUG4Wl0/WEutzF4slqN/GL92jnEWOIdJPN4nXk=; b=jEVj9da4xguRufDUdf7H+fGmqzkGKJtjLhMPZPthFYVDHyqvFHd5gJBdryN81f+FmQ rUkDFnkosal2vVM1JPj5AKuxyiQdFFoeD/qeiAe+GjtVeR4ukfNgSHF/IHbVb/8WnyCN fduNo/iOQo9NUkfjzZmAzaTfeQ5xqeAppwh6L0q5Tv8eE8nBVOeQkiGUx3FaGQtzRuHE mJxf26KBZtXktr6EfaUtVXWIr2GhmAS6JgiFcaWg63KOMDkWr7Bl6CpwcBa/fxo+awJQ K1fwcBkgaxfUG6jT21B9b5XRcCfVjG3nYXHZTn//XOjsqoDOZC2E/yIH+gEHoSW/WyRC PS5Q== X-Gm-Message-State: AOJu0YwExit7WZRseTsJzfe+2E/l+/oOCFknVx8aPr+28xA06kaTN5It 4sdXTWyvhiRAtFw1fDeHcQ6+RAKZzBMpj+GSLSgJcHo0RHOGgmB0sjcfYwU7ZzIUMzXfRruBnQB IUanpvBPvAQ== X-Gm-Gg: AfdE7cmKaNImATKsbU/RxDbSHJ8qDUI6N6W4JTyPgiHBt+cUWdHUP+7t17AmM30p7u3 vQz/UBjyT4NRVJe7WgBwF0wMD099Lapb00v9kyGnPgJgAQD64X/LcHREd5ak0wGZ5FRxT8g9yZP py6D/OC5Znq95NGAGmdV6sg4wh684eOGDllxla8kwFGy42Jvva20/4sb2KeJCrmHQ543nmXrOI1 W+zb+8wz/5fBAV1hYxHWu0f22eV3hZIRz80z0Z+kWB4JSE8snKtmDngqNVotLlFe9zBOMkjKTmF Q0OpNH3BjByBz5LgxMaKJMzWBbCrHMOX95nE4y/f+zrL/d5URXXOZT16uM6lp1zw9u5RD0G25Yd AnP6CHtofNtrpFAPVDsspBwaQLOrUflEVP8v7w03TrjZtATxHwuLBd5ujNEBPv40ASckmO46KJ2 n5VkEz/MBZjxNi6QPjl2p6w6YhRc7atV6vnsDtPf8eDcCNv2Xl/O5ljihGJOvxW6JJ01mYpVXPR 6r78DxEsjA7GGUQTR/DrkBGr3uLHQvc X-Received: by 2002:a05:600c:190c:b0:493:c633:9cf1 with SMTP id 5b1f17b1804b1-493d3c17832mr92178385e9.3.1783334297674; Mon, 06 Jul 2026 03:38:17 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 22/49] hw/nvram/fw_cfg: Document fw_cfg_init_mem_nodma() Date: Mon, 6 Jul 2026 11:37:25 +0100 Message-ID: <20260706103752.320511-23-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260706103752.320511-1-peter.maydell@linaro.org> References: <20260706103752.320511-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::330; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x330.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783334492000158501 The last few commits have added doc comments for all the fw_cfg_init* functions except for fw_cfg_init_mem_nodma(). Fill in the gap by adding a doc comment for it. Signed-off-by: Peter Maydell Reviewed-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20260529174639.451353-6-peter.maydell@linaro.org Reviewed-by: Michael S. Tsirkin --- include/hw/nvram/fw_cfg.h | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/include/hw/nvram/fw_cfg.h b/include/hw/nvram/fw_cfg.h index be3fb5f8aa..b75858025f 100644 --- a/include/hw/nvram/fw_cfg.h +++ b/include/hw/nvram/fw_cfg.h @@ -320,6 +320,24 @@ bool fw_cfg_add_file_from_generator(FWCfgState *s, * Returns the device object. */ FWCfgState *fw_cfg_init_io_dma(uint32_t iobase, AddressSpace *dma_as); + +/** + * fw_cfg_init_mem_nodma: + * + * @ctl_addr: address of the selector register + * @data_addr: address of the data address + * @data_width: width of the data register in bytes + * + * Create a fw_cfg device without DMA support, and map its + * registers at the specified addresses. + * + * Do not use this function in code for a board type that didn't + * already support the fw_cfg device. All new board types should + * include DMA support and use the standard register layout -- use + * fw_cfg_init_mem_dma() instead. + * + * Returns the device object. + */ FWCfgState *fw_cfg_init_mem_nodma(hwaddr ctl_addr, hwaddr data_addr, unsigned data_width); /** --=20 2.43.0 From nobody Sun Jul 26 11:01:48 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1783334655; cv=none; d=zohomail.com; s=zohoarc; b=Y2oXeFaiEnyYHZWosHcoWgGQEVMMjGKEXx9ARSDJEmehjS7Eza9X3NAYwkbVXUvrdU2X2WaAoXxiWWRpFB97aWjj43tix4Nfa1823orfUdqzwpSFDxxTB2d8n4Ny6k7bBP9Uf3AnDg6oXX7vEOVQYMoclJPED+LjWuPhLa7x3Jk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783334655; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=umLdS5gBN/eDnp3kIhJOVCqi4IixifjbGJbrrXBV5Rw=; b=kLuJwoNfCJR0IKWFFzA+qF2j/gklxTEV6AUrPb7q9pTtlYp4yTTBGyu1+e+Wa8Q5nc71Vic25Ag6yEEM9vTR+o6l3YwP7PdbP0N8DLjCcUQ/okwI91XqjQVsED3sycVmB2xlVKke7LMkcbMrF6CK2SYnyzIHUlSecl76iyHy560= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783334655406681.0352163470824; Mon, 6 Jul 2026 03:44:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wggis-0007bG-6a; Mon, 06 Jul 2026 06:38:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wggiT-00076T-Md for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:24 -0400 Received: from mail-wm1-x332.google.com ([2a00:1450:4864:20::332]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wggiR-0003RQ-VT for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:21 -0400 Received: by mail-wm1-x332.google.com with SMTP id 5b1f17b1804b1-493c2c0b9a8so25871645e9.1 for ; Mon, 06 Jul 2026 03:38:19 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63b6f1bsm329501805e9.10.2026.07.06.03.38.17 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jul 2026 03:38:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783334298; x=1783939098; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=umLdS5gBN/eDnp3kIhJOVCqi4IixifjbGJbrrXBV5Rw=; b=Ae9rSSpJygK3uNxsYCw+81NPIJ/RIf90QNAFLlAU3U+g6yaoHSFrt+IQu03Fbqm8/I CcmgapKCSpMOJd+QlwxMge5dHIC7iLddSGNU52FbKBNu7piE6MG8AbpCz6lYJvxTmb/X 7FxkNWwwf/pja0/EhQw9P7gMaMc0TqhFoIeC+hO2tEfZ6CG6Q9drC4y14gamsmBqAgx6 1m2UDVeFS2r6UQLOwZwjpipw3eUVbuNiXvhYt2OgwnbZl5gxSABQeMPx1gEcrDrs3HCf 7IfKKQB+QjmeTZdHGl/axrXd+a21XiF2wdz3aZOaipW9szU+y2ZXqSBMsa+C+c+ge3A5 jvcA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783334298; x=1783939098; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=umLdS5gBN/eDnp3kIhJOVCqi4IixifjbGJbrrXBV5Rw=; b=LbTcDT8IzoDS1774YNGIyPqG2L7RAqIshdfUNhk/CyCUFmf/mWnZ+gd4yTx8W5VkNb /dJb3pYRqYDY2127waNVwJQ4ORvSMp2y/9qcHpgEeqOBCg9028XVshXeKN3S1VIng7Bt 0Ex1B9kSysK4KcMcthVRn0ntGgdLonchrlmKVcE/1vQOHmQTiqKa2nPNHU3kwohI8qYZ b5TLX76qRPvnZPoKDhl6fBWHmXDzAsKJLvsGlnB/vVrwytdyA2bXOtKQmBHzpfRjtqPn H3bYYCPJIcPNG2fw+lJ4TyhCQe3f0Cvj/B0lB8j7AUw+5/usc/si4s/dd2iFCNlthjXv gO+g== X-Gm-Message-State: AOJu0YwOjgj/ed1RRa6QMUkrQHiEQBTyHskSobjo9wDq8VobRuDgJuO0 nK1NuIrKC+71C8KlVfmMMRgDSNJvDu2yHuK7KNJhxSXpMxW9baCCTOVsmajcS3xQHxtR2NLsvo/ 7IIKgLIEUnQ== X-Gm-Gg: AfdE7cnSw+578imBTv8NJXNH665Gz02nCjVahFfez5mBYTZ3l4Gzm9Jo78fPSyeBtjb jHagQ8MshdJ+F3iPtxDj90fj0mz3H8wCMRgFSft2ZQnYRI79rI0nWgGWEDuKaR96pRpxbXk0Rwe NvbalfSUKlyHUniw4ckbMMtDNYZmN1TjcPKdNfFlUdz0siK2F+gLLmGKK5E4LH+3MDBXvMp+U34 UoR8V35ErAmz7De/xQH0HQay1Y3d4Gg3lG6s4OVeoeOTPFupzs5RpTSflr3uswOZSV06YbLJGOi 2HXnOcl0U0AggwTzuaDA6se02qrRKhX6wiRPzJ1Hh0jZHc10MLAaADUt1LfPf/ty7E2RqCOe6PQ L+vsc5SXD9S6rG+kcY3PGa5BWMtnWO2FVB7O9fiZxiKw76d5oknI2W2DsZ3GoSAxgBPJBk3lAUQ LF8U1UK5iKoW5NN+LWndD+shw+04mbn2+xsoYXZJ367yWIyH0b9gDayjPKi+EhzeIWZD9h5f2vL +wzBAVVfS4pflS/mKMImw== X-Received: by 2002:a05:600c:3110:b0:492:28be:6098 with SMTP id 5b1f17b1804b1-493d11d8025mr126177205e9.11.1783334298474; Mon, 06 Jul 2026 03:38:18 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 23/49] hw/misc/imx_ccm: Replace DPRINTF with trace events Date: Mon, 6 Jul 2026 11:37:26 +0100 Message-ID: <20260706103752.320511-24-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260706103752.320511-1-peter.maydell@linaro.org> References: <20260706103752.320511-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::332; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x332.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783334657183158500 Content-Type: text/plain; charset="utf-8" From: jack wang <163wangjack@gmail.com> Signed-off-by: jack wang <163wangjack@gmail.com> [PMM: trace include is just "trace.h"] Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- hw/misc/imx_ccm.c | 18 +++--------------- hw/misc/trace-events | 4 ++++ 2 files changed, 7 insertions(+), 15 deletions(-) diff --git a/hw/misc/imx_ccm.c b/hw/misc/imx_ccm.c index 9403c5daa3..9f34f9b7b3 100644 --- a/hw/misc/imx_ccm.c +++ b/hw/misc/imx_ccm.c @@ -14,18 +14,7 @@ #include "qemu/osdep.h" #include "hw/misc/imx_ccm.h" #include "qemu/module.h" - -#ifndef DEBUG_IMX_CCM -#define DEBUG_IMX_CCM 0 -#endif - -#define DPRINTF(fmt, args...) \ - do { \ - if (DEBUG_IMX_CCM) { \ - fprintf(stderr, "[%s]%s: " fmt , TYPE_IMX_CCM, \ - __func__, ##args); \ - } \ - } while (0) +#include "trace.h" =20 =20 uint32_t imx_ccm_get_clock_frequency(IMXCCMState *dev, IMXClk clock) @@ -37,7 +26,7 @@ uint32_t imx_ccm_get_clock_frequency(IMXCCMState *dev, IM= XClk clock) freq =3D klass->get_clock_frequency(dev, clock); } =20 - DPRINTF("(clock =3D %d) =3D %u\n", clock, freq); + trace_imx_ccm_get_clock_frequency(clock, freq); =20 return freq; } @@ -64,8 +53,7 @@ uint32_t imx_ccm_calc_pll(uint32_t pllreg, uint32_t base_= freq) freq =3D ((2 * (base_freq >> 10) * (mfi * mfd + mfn)) / (mfd * pd)) << 10; =20 - DPRINTF("(pllreg =3D 0x%08x, base_freq =3D %u) =3D %d\n", pllreg, base= _freq, - freq); + trace_imx_ccm_calc_pll(pllreg, base_freq, freq); =20 return freq; } diff --git a/hw/misc/trace-events b/hw/misc/trace-events index 99910fc068..3449ad9527 100644 --- a/hw/misc/trace-events +++ b/hw/misc/trace-events @@ -237,6 +237,10 @@ iotkit_secctl_s_write(uint32_t offset, uint64_t data, = unsigned size) "IoTKit Sec iotkit_secctl_ns_read(uint32_t offset, uint64_t data, unsigned size) "IoTK= it SecCtl NS regs read: offset 0x%x data 0x%" PRIx64 " size %u" iotkit_secctl_ns_write(uint32_t offset, uint64_t data, unsigned size) "IoT= Kit SecCtl NS regs write: offset 0x%x data 0x%" PRIx64 " size %u" =20 +# imx_ccm.c +imx_ccm_get_clock_frequency(uint32_t clock, uint32_t freq) "(clock =3D %u)= =3D %u" +imx_ccm_calc_pll(uint32_t pllreq, uint32_t base_freq, uint32_t freq) "(pll= reg =3D 0x%08x, base_freq =3D %u) =3D %u" + # imx6_ccm.c imx6_analog_get_periph_clk(uint32_t freq) "freq =3D %u Hz" imx6_analog_get_pll2_clk(uint32_t freq) "freq =3D %u Hz" --=20 2.43.0 From nobody Sun Jul 26 11:01:48 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1783334359; cv=none; d=zohomail.com; s=zohoarc; b=YdGKnZelebSqNHiFi4W2dlj1K+nvLQVtH2uEiWloX7dPB1QUwbHoE29jMabZl1QDQEbl7dGwYL7+X3JS7DxF19z9jKEKcdhicaXKNKO+tOUpcgO0cejedHDaGqKN5c/H1/iiKlWS22e4xVzxtPKFmlzLKD7TKkDzpq47kuorpgc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783334359; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=5+F9UmJYVVfNUxs32WT2PQRCUaAu3WmtNkJ31m9rOPw=; b=S5YBcnK4sOeRlgtWomV0ppUwHNS0yaAGpr9vtxU0SNQ5k+v3de5V4iz06AnBshJXN3RuiFuSjUflSUlXWflS4seaIUBi7KPFFxY2kNvb1sWA+QwkE1Uh98O/r8VLz6fLgUT2RmZkk8jG6VIekRRn5NXmR061eqULjtQ9xrsxJ04= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783334359126815.242130622993; Mon, 6 Jul 2026 03:39:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wggif-0007DX-Bw; Mon, 06 Jul 2026 06:38:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wggiW-00076i-7T for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:24 -0400 Received: from mail-wm1-x32b.google.com ([2a00:1450:4864:20::32b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wggiU-0003SM-Gi for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:24 -0400 Received: by mail-wm1-x32b.google.com with SMTP id 5b1f17b1804b1-493ba701891so22641875e9.3 for ; Mon, 06 Jul 2026 03:38:22 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63b6f1bsm329501805e9.10.2026.07.06.03.38.18 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jul 2026 03:38:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783334301; x=1783939101; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=5+F9UmJYVVfNUxs32WT2PQRCUaAu3WmtNkJ31m9rOPw=; b=V3KmuBgK3fS1Nfd8/xG7FFekIaLzG5T0/ulfAuoIfdOpjbbVzw8CL4LCBwUdpvBUFx 0AF2bdYEieSby++8Nahp6XYDZYlxbnLEHUNbO0tZUSapRIZloyuOGuZgU2eYF/+sWR9c Huv2iPR/WOVp2BWNA6MwGQCGB6T7wKCVr6YmMpz27mQgfQleRnnG3J6uWQ1kX2zycDR+ HAX3u5P2N8HmaNB2tjCsH/Apc0cW6l5X/AbyWTFpHOdooOE6m+RFhwqjP8H6eHDyKs0m Nwj8bDaexESYIPQJ1zZDRktV7I5giGcuL/OnalUGtWCUaZWc8OlIPTpT0JEYVrviFD5E Ca9w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783334301; x=1783939101; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=5+F9UmJYVVfNUxs32WT2PQRCUaAu3WmtNkJ31m9rOPw=; b=GnqFbv8XfVKQciGm4bcG0k2lMne4M95bTj4QaDspUxQyGIS2QOYxr1wR9WUld0hV9F bMih68q4YMuXedgAZzCEcaH6ifC4oEnoAAea13oVfqsAm1AwPtPSfGdQL0ynwtkZWU+P VdSsCpqDypMBVoeYTrFKvt3rgBSBvScbN6bsq3v2hUhYQGhxkGH8vAIQUrjg2ZC0xrQ5 tx7Uwjj5WMusV74YMFSFkGHS06nWqpwp8lKkECT549zzgTSQ6nkUP7lcCGXlz2J++Agq pftq0+6SMgTjgCaVzJOexIUcOb7Qhmo1bSrxyiDCOJY59hF3prZVaUt+b/pjQf4P2kCW SPAg== X-Gm-Message-State: AOJu0Yxp54SpMMVkQwLDd2irDf4kYj3ZBMOT/ZmCcCBTlhhX9BsRwc6C Ko8UOMLNuGiuvzVYG9VeYrSY5A/UqLWTgTYRDE0HMcS/anEO1QVX6W8e6HYcju7UoVmEXaFVqPO ZMp1A6ss7xg== X-Gm-Gg: AfdE7ckSqnaEMyX10Tl3p7H/uKqJfROxtO1o5Vj0xfZ5n9Tt6s3/wFrGDgksgJsGYpl MlkD1l8JXvNNGazf+idmlG1HfnigUKIbDtT/excQUJ2TRWu/mbYiXD5vAjRixH86pgDISlEm8i3 zSg/BbNxVL+UM8TrbEE/R7mL+s5/T5kVy1d9ugK8QwCeNu/YmUfMuZTDcAkA6mOgK3j9iXxyls4 FM6R1lTQB0hLyORhzmScFELkl01VHuEBB9TBQrfMoH23m1zXl4k1ore3xD80FxQhi12q4jX1bsQ /cPvEpV0WeHC+dFv6HTeWzz257ORS567GPb4gSD/MlQi986PQPMnlaB/lJhajgPTL3yFZjHmVcN 5cdkOjHIIzRsaJeeXchgfiiut0RG53cu9rr0cMnUg6KoEghDHvQ9m2f5w1M9BYzBdaQV3m7iFgE is7HnUn7sSIEMc5KTlY6BhKuaTj3YLtenjD0lF9xwmkzCQAXZbIpVo9McGBKsO1FaLCJZqjfOwv t0sdaNlo1WDk0SmtRmPsg== X-Received: by 2002:a05:600c:c4a5:b0:493:aab3:c09c with SMTP id 5b1f17b1804b1-493d11fa9abmr113902605e9.28.1783334300973; Mon, 06 Jul 2026 03:38:20 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 24/49] hw/misc/imx25_ccm: Replace DPRINTF with trace events Date: Mon, 6 Jul 2026 11:37:27 +0100 Message-ID: <20260706103752.320511-25-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260706103752.320511-1-peter.maydell@linaro.org> References: <20260706103752.320511-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32b; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32b.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783334361219158500 Content-Type: text/plain; charset="utf-8" From: jack wang <163wangjack@gmail.com> Signed-off-by: jack wang <163wangjack@gmail.com> [PMM: Removed incorrect change to a function prototype; use just "trace.h" for include] Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- hw/misc/imx25_ccm.c | 32 +++++++++----------------------- hw/misc/trace-events | 9 +++++++++ 2 files changed, 18 insertions(+), 23 deletions(-) diff --git a/hw/misc/imx25_ccm.c b/hw/misc/imx25_ccm.c index a6665d5535..a91b0be682 100644 --- a/hw/misc/imx25_ccm.c +++ b/hw/misc/imx25_ccm.c @@ -16,18 +16,8 @@ #include "migration/vmstate.h" #include "qemu/log.h" #include "qemu/module.h" +#include "hw/misc/trace.h" =20 -#ifndef DEBUG_IMX25_CCM -#define DEBUG_IMX25_CCM 0 -#endif - -#define DPRINTF(fmt, args...) \ - do { \ - if (DEBUG_IMX25_CCM) { \ - fprintf(stderr, "[%s]%s: " fmt , TYPE_IMX25_CCM, \ - __func__, ##args); \ - } \ - } while (0) =20 static const char *imx25_ccm_reg_name(uint32_t reg) { @@ -118,7 +108,7 @@ static uint32_t imx25_ccm_get_mpll_clk(IMXCCMState *dev) freq =3D imx_ccm_calc_pll(s->reg[IMX25_CCM_MPCTL_REG], CKIH_FREQ); } =20 - DPRINTF("freq =3D %u\n", freq); + trace_imx25_ccm_get_mpll_clk(freq); =20 return freq; } @@ -136,7 +126,7 @@ static uint32_t imx25_ccm_get_mcu_clk(IMXCCMState *dev) =20 freq =3D freq / (1 + EXTRACT(s->reg[IMX25_CCM_CCTL_REG], ARM_CLK_DIV)); =20 - DPRINTF("freq =3D %u\n", freq); + trace_imx25_ccm_get_mcu_clk(freq); =20 return freq; } @@ -149,7 +139,7 @@ static uint32_t imx25_ccm_get_ahb_clk(IMXCCMState *dev) freq =3D imx25_ccm_get_mcu_clk(dev) / (1 + EXTRACT(s->reg[IMX25_CCM_CCTL_REG], AHB_CLK_DIV)); =20 - DPRINTF("freq =3D %u\n", freq); + trace_imx25_ccm_get_ahb_clk(freq); =20 return freq; } @@ -160,7 +150,7 @@ static uint32_t imx25_ccm_get_ipg_clk(IMXCCMState *dev) =20 freq =3D imx25_ccm_get_ahb_clk(dev) / 2; =20 - DPRINTF("freq =3D %u\n", freq); + trace_imx25_ccm_get_ipg_clk(freq); =20 return freq; } @@ -168,7 +158,7 @@ static uint32_t imx25_ccm_get_ipg_clk(IMXCCMState *dev) static uint32_t imx25_ccm_get_clock_frequency(IMXCCMState *dev, IMXClk clo= ck) { uint32_t freq =3D 0; - DPRINTF("Clock =3D %d)\n", clock); + trace_imx25_ccm_get_clock_frequency(clock, freq); =20 switch (clock) { case CLK_NONE: @@ -186,7 +176,7 @@ static uint32_t imx25_ccm_get_clock_frequency(IMXCCMSta= te *dev, IMXClk clock) break; } =20 - DPRINTF("Clock =3D %d) =3D %u\n", clock, freq); + trace_imx25_ccm_get_clock_frequency(clock, freq); =20 return freq; } @@ -195,8 +185,6 @@ static void imx25_ccm_reset(DeviceState *dev) { IMX25CCMState *s =3D IMX25_CCM(dev); =20 - DPRINTF("\n"); - memset(s->reg, 0, IMX25_CCM_MAX_REG * sizeof(uint32_t)); s->reg[IMX25_CCM_MPCTL_REG] =3D 0x800b2c01; s->reg[IMX25_CCM_UPCTL_REG] =3D 0x84042800; @@ -238,8 +226,7 @@ static uint64_t imx25_ccm_read(void *opaque, hwaddr off= set, unsigned size) HWADDR_PRIx "\n", TYPE_IMX25_CCM, __func__, offset); } =20 - DPRINTF("reg[%s] =3D> 0x%" PRIx32 "\n", imx25_ccm_reg_name(offset >> 2= ), - value); + trace_imx25_ccm_read(imx25_ccm_reg_name(offset >> 2), value); =20 return value; } @@ -249,8 +236,7 @@ static void imx25_ccm_write(void *opaque, hwaddr offset= , uint64_t value, { IMX25CCMState *s =3D (IMX25CCMState *)opaque; =20 - DPRINTF("reg[%s] <=3D 0x%" PRIx32 "\n", imx25_ccm_reg_name(offset >> 2= ), - (uint32_t)value); + trace_imx25_ccm_write(imx25_ccm_reg_name(offset >> 2), value); =20 if (offset < 0x70) { /* diff --git a/hw/misc/trace-events b/hw/misc/trace-events index 3449ad9527..13f120d140 100644 --- a/hw/misc/trace-events +++ b/hw/misc/trace-events @@ -275,6 +275,15 @@ imx6_src_reset(void) "" imx7_src_read(const char *reg_name, uint32_t value) "reg[%s] =3D> 0x%" PRI= x32 imx7_src_write(const char *reg_name, uint32_t value) "reg[%s] <=3D 0x%" PR= Ix32 =20 +# imx25_ccm.c +imx25_ccm_get_mpll_clk(uint32_t freq) "freq =3D %u" +imx25_ccm_get_mcu_clk(uint32_t freq) "freq =3D %u" +imx25_ccm_get_ahb_clk(uint32_t freq) "freq =3D %u" +imx25_ccm_get_ipg_clk(uint32_t freq) "freq =3D %u" +imx25_ccm_get_clock_frequency(unsigned clock, uint32_t freq) "(clock =3D %= d) =3D %u" +imx25_ccm_read(const char *reg, uint32_t value) "reg[%s] =3D> 0x%" PRIx32 +imx25_ccm_write(const char *reg, uint32_t value) "reg[%s] <=3D 0x%" PRIx32 + # iotkit-sysinfo.c iotkit_sysinfo_read(uint64_t offset, uint64_t data, unsigned size) "IoTKit= SysInfo read: offset 0x%" PRIx64 " data 0x%" PRIx64 " size %u" iotkit_sysinfo_write(uint64_t offset, uint64_t data, unsigned size) "IoTKi= t SysInfo write: offset 0x%" PRIx64 " data 0x%" PRIx64 " size %u" --=20 2.43.0 From nobody Sun Jul 26 11:01:48 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1783334645; cv=none; d=zohomail.com; s=zohoarc; b=NQUB1H7D22FjdJtT1l4vSdA0SAdH21UqgRqdf1kjglxFMh87/huSvQvPcv71d3hh1tZ0l711mxjoV1g1eadSY4XuVFlJ29bsfo0Yt8hyLRogSU/cB4+kZ+HxWhhzhV3l8+5TIyEUUNtEeDRCO31qihRHUIwyiTcOjSyZAd9dXo0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783334645; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=y/0Zd7CUzH0PPeoSVODnw+EEXZ3iP23Jw7rMZzP5HjM=; b=JP8mqkta9lZdFXG97YLRNVI4H9IZWjLwP+6mTphhobTULusTsBLdoD0WW4XQ0fyGJFeYZe+Hwl1brhc8pkVJ9NzLxekh5pZff+wxWxobt9DcTbS+eLee9byhs8Y1K+ROFjDBJE3DSssRv2PwW47YK3Jn4+4WlhA+ppNPIig28Ok= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783334645643239.04095546590975; Mon, 6 Jul 2026 03:44:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wggif-0007E2-Uf; Mon, 06 Jul 2026 06:38:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wggiX-00078d-RO for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:28 -0400 Received: from mail-wm1-x332.google.com ([2a00:1450:4864:20::332]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wggiV-0003Sg-AK for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:24 -0400 Received: by mail-wm1-x332.google.com with SMTP id 5b1f17b1804b1-493d3135e9bso9791455e9.2 for ; Mon, 06 Jul 2026 03:38:22 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63b6f1bsm329501805e9.10.2026.07.06.03.38.21 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jul 2026 03:38:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783334302; x=1783939102; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=y/0Zd7CUzH0PPeoSVODnw+EEXZ3iP23Jw7rMZzP5HjM=; b=ISgee2/O2fHt+kQL2LcAtYx1B/xiS9y2P1YUXQH80OkpwuS3VJ6kPdRWMQjG7/YmyD BDI23yDwc/OR+5DNCR7eXJJo2CorCiI87t0INsbeuIVnLY02o32fqryNs6GlZDkV4/nM TIE0tyNBzbPGo6SUmwtokYMVliuEMYBeNnMBHuhUMgYherShqKkoh+bmv7aiopD/wzk5 1YEtnWrRjhlp6o27rPVhYHwLw67IO9WXEcNIOykbsdvK0d9BSuibWw8xiZA5y2pRURwm L7HXMiHf0ZeedN1nTwalnFI2nOU1WhRJ8niX7lGB/S2bD3/4zsbDBZxaeihg0+skKW/a YBgw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783334302; x=1783939102; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=y/0Zd7CUzH0PPeoSVODnw+EEXZ3iP23Jw7rMZzP5HjM=; b=bSvEJptadwdT7oRHGM2lrAazrLHzo3NSNNfkBDRPs2B1Jk7N87TWdDwqNjySoegcOY qSxIztAkk41WjGoXxuLI/Q5/P7BXJp889WSmbC0AchKjFnMbebH5rftWs1MwCZibHp6N GXeDm25Zl7JgW/Vd8iZtgZwMtBcgLPJ8AFPTCv/8B9b+YsRiGLNNoN4EgDO2YE78DGrr lxPoukBrz1LqoOxgkj86dWsIoKmzItxCk0+6pv5aZTx4KG6kHBl/87VcXSokVFeRpiGj jabaHCroP7ToxJdCl0s46qnZ9dn/q8lqQHaP8VgSICMLky3RLWCVXZbEVkgntFtXqPRn UYaA== X-Gm-Message-State: AOJu0Yz0/2n6/WdZOF8SgCINvGbVZOFPbjJrfX0st1vmG+FH/OIhnL0M GuUPc7qjcGg4CbH7lBan4O6A8rzxB30i2Fu3PAi0RFUx8E7Utqy7Ef3yUxleOqrl1lkNikSyHgC nJ4V6yX3fQQ== X-Gm-Gg: AfdE7cmM0+PCt13WwofYkX2yhYHF0p4NRS495NVDzinNxJENmyYkM+AcpFmyjxb1mYG +NwoaYDLI44cAHTPVXCZXzaRm/RRNBYiLJIK+gdPEFs9+/7LAjUx2uiQQ0af1KEdnhxkJiASKMU Qk2RPtdfHH2g4FWllmhDhI4DY/VAFC8glduTzlfY0mYN/N2XzjVNDokqfaBa929UB/ztm7WDCn4 c8sEuK3f+61Z+g/CrHurKRD+pRGDKfto+RJ0V6aoAZPUbM/n/jk46kcfaO/NkD20lsSNQH7BNd/ ia5YusSUwYSn7nf2k0wcO8c7lQLm7ynHBi0VY98WT8fb5XfrdKljbhy4VJlIJOq6LDTrV31Ki/b zuF9pt9Kf/Xc8Rkl7ScAeBYX5KLfQG05yJHvd977WPaZ36UOHKNOU3cZT+1BXAcr4A3Z+7MQWWA 0mwJ9ZPS4nZGjiVSSWTLx/1K689HNW2oMshWSxxlOkJDvYZPXQFVIUjSFiPZ+RFnCaRSWUVRhZY 4+5doMBuoPCu0HtpPzUhQ== X-Received: by 2002:a05:600c:4e92:b0:493:c337:db18 with SMTP id 5b1f17b1804b1-493d11d81a4mr124399575e9.16.1783334301957; Mon, 06 Jul 2026 03:38:21 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 25/49] hw/misc/imx31_ccm: Replace DPRINTF with trace events Date: Mon, 6 Jul 2026 11:37:28 +0100 Message-ID: <20260706103752.320511-26-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260706103752.320511-1-peter.maydell@linaro.org> References: <20260706103752.320511-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::332; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x332.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783334647166158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: jack wang <163wangjack@gmail.com> [PMM: Remove stray loss of a brace; use trace.h] Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- hw/misc/imx31_ccm.c | 33 +++++++++------------------------ hw/misc/trace-events | 10 ++++++++++ 2 files changed, 19 insertions(+), 24 deletions(-) diff --git a/hw/misc/imx31_ccm.c b/hw/misc/imx31_ccm.c index 339458e859..8d620711dd 100644 --- a/hw/misc/imx31_ccm.c +++ b/hw/misc/imx31_ccm.c @@ -16,21 +16,10 @@ #include "migration/vmstate.h" #include "qemu/log.h" #include "qemu/module.h" +#include "trace.h" =20 #define CKIH_FREQ 26000000 /* 26MHz crystal input */ =20 -#ifndef DEBUG_IMX31_CCM -#define DEBUG_IMX31_CCM 0 -#endif - -#define DPRINTF(fmt, args...) \ - do { \ - if (DEBUG_IMX31_CCM) { \ - fprintf(stderr, "[%s]%s: " fmt , TYPE_IMX31_CCM, \ - __func__, ##args); \ - } \ - } while (0) - static const char *imx31_ccm_reg_name(uint32_t reg) { static char unknown[20]; @@ -120,7 +109,7 @@ static uint32_t imx31_ccm_get_pll_ref_clk(IMXCCMState *= dev) freq =3D CKIH_FREQ; } =20 - DPRINTF("freq =3D %u\n", freq); + trace_imx31_ccm_get_pll_ref_clk(freq); =20 return freq; } @@ -133,7 +122,7 @@ static uint32_t imx31_ccm_get_mpll_clk(IMXCCMState *dev) freq =3D imx_ccm_calc_pll(s->reg[IMX31_CCM_MPCTL_REG], imx31_ccm_get_pll_ref_clk(dev)); =20 - DPRINTF("freq =3D %u\n", freq); + trace_imx31_ccm_get_mpll_clk(freq); =20 return freq; } @@ -150,7 +139,7 @@ static uint32_t imx31_ccm_get_mcu_main_clk(IMXCCMState = *dev) freq =3D imx31_ccm_get_mpll_clk(dev); } =20 - DPRINTF("freq =3D %u\n", freq); + trace_imx31_ccm_get_mcu_main_clk(freq); =20 return freq; } @@ -163,7 +152,7 @@ static uint32_t imx31_ccm_get_hclk_clk(IMXCCMState *dev) freq =3D imx31_ccm_get_mcu_main_clk(dev) / (1 + EXTRACT(s->reg[IMX31_CCM_PDR0_REG], MAX)); =20 - DPRINTF("freq =3D %u\n", freq); + trace_imx31_ccm_get_hclk_clk(freq); =20 return freq; } @@ -176,7 +165,7 @@ static uint32_t imx31_ccm_get_ipg_clk(IMXCCMState *dev) freq =3D imx31_ccm_get_hclk_clk(dev) / (1 + EXTRACT(s->reg[IMX31_CCM_PDR0_REG], IPG)); =20 - DPRINTF("freq =3D %u\n", freq); + trace_imx31_ccm_get_ipg_clk(freq); =20 return freq; } @@ -201,7 +190,7 @@ static uint32_t imx31_ccm_get_clock_frequency(IMXCCMSta= te *dev, IMXClk clock) break; } =20 - DPRINTF("Clock =3D %d) =3D %u\n", clock, freq); + trace_imx31_ccm_get_clock_frequency(clock, freq); =20 return freq; } @@ -210,8 +199,6 @@ static void imx31_ccm_reset(DeviceState *dev) { IMX31CCMState *s =3D IMX31_CCM(dev); =20 - DPRINTF("()\n"); - memset(s->reg, 0, sizeof(uint32_t) * IMX31_CCM_MAX_REG); =20 s->reg[IMX31_CCM_CCMR_REG] =3D 0x074b0b7d; @@ -244,8 +231,7 @@ static uint64_t imx31_ccm_read(void *opaque, hwaddr off= set, unsigned size) HWADDR_PRIx "\n", TYPE_IMX31_CCM, __func__, offset); } =20 - DPRINTF("reg[%s] =3D> 0x%" PRIx32 "\n", imx31_ccm_reg_name(offset >> 2= ), - value); + trace_imx31_ccm_read(imx31_ccm_reg_name(offset >> 2), value); =20 return (uint64_t)value; } @@ -255,8 +241,7 @@ static void imx31_ccm_write(void *opaque, hwaddr offset= , uint64_t value, { IMX31CCMState *s =3D (IMX31CCMState *)opaque; =20 - DPRINTF("reg[%s] <=3D 0x%" PRIx32 "\n", imx31_ccm_reg_name(offset >> 2= ), - (uint32_t)value); + trace_imx31_ccm_write(imx31_ccm_reg_name(offset >> 2), value); =20 switch (offset >> 2) { case IMX31_CCM_CCMR_REG: diff --git a/hw/misc/trace-events b/hw/misc/trace-events index 13f120d140..c9a868b3ef 100644 --- a/hw/misc/trace-events +++ b/hw/misc/trace-events @@ -284,6 +284,16 @@ imx25_ccm_get_clock_frequency(unsigned clock, uint32_t= freq) "(clock =3D %d) =3D %u" imx25_ccm_read(const char *reg, uint32_t value) "reg[%s] =3D> 0x%" PRIx32 imx25_ccm_write(const char *reg, uint32_t value) "reg[%s] <=3D 0x%" PRIx32 =20 +# imx31_ccm.c +imx31_ccm_get_mpll_clk(uint32_t freq) "freq =3D %u" +imx31_ccm_get_pll_ref_clk(uint32_t freq) "freq =3D %u" +imx31_ccm_get_mcu_main_clk(uint32_t freq) "freq =3D %u" +imx31_ccm_get_hclk_clk(uint32_t freq) "freq =3D %u" +imx31_ccm_get_ipg_clk(uint32_t freq) "freq =3D %u" +imx31_ccm_get_clock_frequency(unsigned clock, uint32_t freq) "(clock =3D %= u) =3D %u" +imx31_ccm_read(const char *reg, uint32_t value) "reg[%s] =3D> 0x%" PRIx32 +imx31_ccm_write(const char *reg, uint32_t value) "reg[%s] <=3D 0x%" PRIx32 + # iotkit-sysinfo.c iotkit_sysinfo_read(uint64_t offset, uint64_t data, unsigned size) "IoTKit= SysInfo read: offset 0x%" PRIx64 " data 0x%" PRIx64 " size %u" iotkit_sysinfo_write(uint64_t offset, uint64_t data, unsigned size) "IoTKi= t SysInfo write: offset 0x%" PRIx64 " data 0x%" PRIx64 " size %u" --=20 2.43.0 From nobody Sun Jul 26 11:01:48 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1783334372; cv=none; d=zohomail.com; s=zohoarc; b=jEpR+WbQwiGRPB81SUBJ/14mSyIXcjhu50RjzVcUSy+0xTNbQ2G67VUwWRcdCUj+abcDiS6trS76cdBaaTUGQD7OZUlW7Ld0BrNIurwQCP8TO6wOEnmDpdTKuX/FoHMvXS9u73fQ1MObY4Tr7N5RFUrTq7LQ9Wr9babyR1+Hr0M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783334372; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=Ao1n9F78AUEbECsnjWogvFkJsCih/kQbcPL26IQqPqc=; b=lcd8P0gUDLbUtyn6Q/83Z/2int06fyOU9e8j5EekV7THjI75SIC4jpn7BKo83NAcTIOVF2jMb9KYiB+uJWjnEMnvpcopD5ciQl/vPueq1AZdHmYI5nNcQ4S29b/fACwAD/zUswVBK6hCa4UARJ4XRl7gpqQgb2E0QQ+Sr3QWP/E= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783334372756887.5687417715295; Mon, 6 Jul 2026 03:39:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wggih-0007Ft-MG; Mon, 06 Jul 2026 06:38:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wggiY-00078h-NO for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:28 -0400 Received: from mail-wm1-x344.google.com ([2a00:1450:4864:20::344]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wggiW-0003Sz-GX for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:26 -0400 Received: by mail-wm1-x344.google.com with SMTP id 5b1f17b1804b1-493b779003fso14039525e9.3 for ; Mon, 06 Jul 2026 03:38:24 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63b6f1bsm329501805e9.10.2026.07.06.03.38.22 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jul 2026 03:38:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783334303; x=1783939103; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=Ao1n9F78AUEbECsnjWogvFkJsCih/kQbcPL26IQqPqc=; b=chKQ/NfVVmm0FyNk8hXj56COh55SVPzGDDBCIzdVe7MVCseHHGQHEUcoq/KzOJVBOk DXew9k9ic2c3MEl5HBt2JoD01vzTqQi7wWLOP9oTblXXe5pwfpdML9e2SKRJC5rG6EY/ 4/vTV56Oa24DUJOoc8cv6ELAqqVX4H8LPn16y/6KV+0uI9kYEktn8HCmSDyku36oEURf TXIy5f7H5kca76dNoQEMXPvarnpNbuXkdszyLGxkSPWT/1oyWgzIE3wtsxhWVqtdG8C0 cSvnDJE1aKSh5KrRwQEEl1HXmjc32voM4/RVv0GKSKb0mgGdHwgCIXk//OrCiQ9Nvags ZFVQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783334303; x=1783939103; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=Ao1n9F78AUEbECsnjWogvFkJsCih/kQbcPL26IQqPqc=; b=Jx38pccQSyCsNud4+78x93meYTkSIKY7Ul728FqPkAQb9h9394cwy5SQt2A/r/LUeu 69yymgRO0/y74gSfzJn0npEKxhaQYb0/cVwgoerEKL+RX3DjlO8n8uAvYEhHc2ZEVrct bsm9tN/6e1ov2VuvJXxQdNc7Kl7zaAI9tpy6mEloXNfHjivBw8dXgVpO0a2LEBHK/7Wo vsWRY7mx6T4TcflgcNAnbO7EvFN/xFNjnbKWmk7+xhs++qRnyYpVjZhCuyUY8zXto2VH Xp5W3IAj8zNe4SzaX8q4g+ICoJ5crPzTqv5bT9Ni4gWIWxbiCjYgxQLHMqbNFPHdpt2N zAPQ== X-Gm-Message-State: AOJu0Yx9yTSdHwE+y13xUS3ASUrY3HoDLALFEtffaPSdg/kIp2u752Uc 1NYNbHRcJgf6tiVJ7DHLZyt5BBZ74wq9/HYZ3YeRBWaZ6XSqKdNyyZr3peDxxwzJu+0pzRIQmjm pt2Gx4pWSIpSj X-Gm-Gg: AfdE7cnBqI4oPfeKuZeGTe01Ur0nfy5GRlhuc7BOd8hZ8KECLHZIIVmIzujKczJb1gx 589/y9EqbwrUBoe8Oj8wIeoT2ULqlxLfjTiIuPnFn7gKqXvmayGSz4KC67QQikCoktJ9dLhU/Yt lLo54iosQhUpeJCaQr1IE1m7tK/uslLREb4SrxCvRNgNHqRZa2N8EF2OQ7Z4C60vD2cCors84ZK VF2cirVpVgi2kPJwj5TYphEclSMw3NVAg9IB+J3ShJI6z7JiwGoHNuyjBnyw2X49TFdDEkd0INU Wz8y9ci6vok+JrHT/UDUFguFtas/sv1RjY16b4lZfFkfMHqANTAB3yl8+6inDRClp5SPaZpMw/J Tnu8PUCPlN4JaN+EkDJR6l9khpgJN7qipcfOl4AOh0ttWAO3n1FA/PfxddJ385QdiihEq8MBRWT A5QQtUc6rSF2kAJSvhy+iUFM4SSy6xhh8E8dlfsB2Wz7UIFmVE7+iK6ao9okpjCUZWlr8g6507l gy46K2j3dpaPYRXGLauQA== X-Received: by 2002:a05:600c:c4a6:b0:492:70f4:8d1e with SMTP id 5b1f17b1804b1-493d526d4admr79862905e9.11.1783334303018; Mon, 06 Jul 2026 03:38:23 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 26/49] target/arm/hvf: seed NO_RAW ID registers from isar.idregs[] on vCPU init Date: Mon, 6 Jul 2026 11:37:29 +0100 Message-ID: <20260706103752.320511-27-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260706103752.320511-1-peter.maydell@linaro.org> References: <20260706103752.320511-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::344; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x344.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783334373324158500 Content-Type: text/plain; charset="utf-8" From: Jason Wright Commit 887eaa8a29 ("target/arm: implement FEAT_RNG_TRAP for RNDR/RNDRRS") gave ID_AA64ISAR0_EL1 a readfn so the RNDR field can reflect SCR_EL3.TRNDR at read time, and marked the cpreg ARM_CP_NO_RAW in the system-emulation path. HVF then trips its hvf_arch_init_vcpu() assertion that no ID register in hvf_sreg_list[] is NO_RAW, aborting on boot on Apple Silicon: Assertion failed: (!(ri->type & ARM_CP_NO_RAW)), function hvf_arch_init_vcpu, file hvf.c, line 1441. Reproduce with: qemu-system-aarch64 -M virt,accel=3Dhvf -cpu host \ -nographic -display none -bios /dev/null Fix it the same way ID_AA64PFR0_EL1 already is: list HV_SYS_REG_ID_AA64ISAR0_EL1 in the SYNC_NO_RAW_REGS block in sysreg.c.inc so the assert loop skips it, and seed the vCPU's copy at init time. While here, unify how the three isar.idregs[]-backed ID registers are seeded. isar.idregs[] already holds QEMU's intended value for each (the host caps, probed once at realize via hv_vcpu_config_get_feature_reg(), plus any QEMU adjustment), so there is no need to read each register back from the vCPU first. Seed PFR0, ISAR0 and MMFR0 directly from isar.idregs[], dropping the two per-vCPU hv_vcpu_get_sys_reg() reads: - PFR0: take the GIC sysreg-interface bit from env->gicv3state, as the id_aa64pfr0_read() readfn does. Identical to the previous code whenever a GICv3 sysreg interface is present (the configuration HVF runs in practice); it differs only in that a vCPU with no GICv3 now reports ID_AA64PFR0_EL1.GIC =3D=3D 0 instead of inheriting the host's value, which matches the field's meaning. - ISAR0: no overlay is needed; HVF does not expose EL3, so SCR_EL3.TRNDR is never set and the readfn is constant. - MMFR0: still clamp PARANGE to the chosen IPA size, updating isar.idregs[] in place because the page-table walker and the ID_AA64MMFR0_EL1 cpreg resetvalue read PARANGE back from there. Resolves: https://gitlab.com/qemu-project/qemu/-/work_items/3533 Reported-by: Zenghui Yu Suggested-by: Peter Maydell Fixes: 887eaa8a29 ("target/arm: implement FEAT_RNG_TRAP for RNDR/RNDRRS") Signed-off-by: Jason Wright Reviewed-by: Richard Henderson Tested-by: Zenghui Yu Signed-off-by: Peter Maydell --- target/arm/hvf/hvf.c | 10 ++++------ target/arm/hvf/sysreg.c.inc | 2 +- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c index 8b902c6882..6310cfaf3e 100644 --- a/target/arm/hvf/hvf.c +++ b/target/arm/hvf/hvf.c @@ -1478,20 +1478,18 @@ int hvf_arch_init_vcpu(CPUState *cpu) arm_cpu->mp_affinity); assert_hvf_ok(ret); =20 - ret =3D hv_vcpu_get_sys_reg(cpu->accel->fd, HV_SYS_REG_ID_AA64PFR0_EL1= , &pfr); - assert_hvf_ok(ret); + pfr =3D GET_IDREG(&arm_cpu->isar, ID_AA64PFR0); pfr |=3D env->gicv3state ? (1 << 24) : 0; ret =3D hv_vcpu_set_sys_reg(cpu->accel->fd, HV_SYS_REG_ID_AA64PFR0_EL1= , pfr); assert_hvf_ok(ret); =20 - /* We're limited to underlying hardware caps, override internal versio= ns */ - ret =3D hv_vcpu_get_sys_reg(cpu->accel->fd, HV_SYS_REG_ID_AA64MMFR0_EL= 1, - &arm_cpu->isar.idregs[ID_AA64MMFR0_EL1_IDX]); + ret =3D hv_vcpu_set_sys_reg(cpu->accel->fd, HV_SYS_REG_ID_AA64ISAR0_EL= 1, + GET_IDREG(&arm_cpu->isar, ID_AA64ISAR0)); assert_hvf_ok(ret); =20 clamp_id_aa64mmfr0_parange_to_ipa_size(&arm_cpu->isar); ret =3D hv_vcpu_set_sys_reg(cpu->accel->fd, HV_SYS_REG_ID_AA64MMFR0_EL= 1, - arm_cpu->isar.idregs[ID_AA64MMFR0_EL1_IDX]); + GET_IDREG(&arm_cpu->isar, ID_AA64MMFR0)); assert_hvf_ok(ret); =20 if (!hvf_irqchip_in_kernel()) { diff --git a/target/arm/hvf/sysreg.c.inc b/target/arm/hvf/sysreg.c.inc index c11dbf274e..acd5a41364 100644 --- a/target/arm/hvf/sysreg.c.inc +++ b/target/arm/hvf/sysreg.c.inc @@ -89,13 +89,13 @@ DEF_SYSREG(HV_SYS_REG_MDCCINT_EL1, 2, 0, 0, 2, 0) DEF_SYSREG(HV_SYS_REG_MIDR_EL1, 3, 0, 0, 0, 0) DEF_SYSREG(HV_SYS_REG_MPIDR_EL1, 3, 0, 0, 0, 5) DEF_SYSREG(HV_SYS_REG_ID_AA64PFR0_EL1, 3, 0, 0, 4, 0) +DEF_SYSREG(HV_SYS_REG_ID_AA64ISAR0_EL1, 3, 0, 0, 6, 0) #endif =20 DEF_SYSREG(HV_SYS_REG_ID_AA64PFR1_EL1, 3, 0, 0, 4, 1) /* Add ID_AA64PFR2_EL1 here when HVF supports it */ DEF_SYSREG(HV_SYS_REG_ID_AA64DFR0_EL1, 3, 0, 0, 5, 0) DEF_SYSREG(HV_SYS_REG_ID_AA64DFR1_EL1, 3, 0, 0, 5, 1) -DEF_SYSREG(HV_SYS_REG_ID_AA64ISAR0_EL1, 3, 0, 0, 6, 0) DEF_SYSREG(HV_SYS_REG_ID_AA64ISAR1_EL1, 3, 0, 0, 6, 1) =20 #ifdef SYNC_NO_MMFR0 --=20 2.43.0 From nobody Sun Jul 26 11:01:48 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1783334677; cv=none; d=zohomail.com; s=zohoarc; b=M/gGOH1FT0tHOLIIQFU5a2+rlkVTmGdl2W3sLFRAeIALkncIM/uXA5pw7DpWx/zVhFGzXTQP/hgtEI0v3r38uGfmlwPdthybLsYNxFgXZhkFJpAiCFgyxneGzjRtMapAeCeXXg9tbW/VumBcpfLsk/4/bgFUsYjp1Z6Ry0T5xXI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783334677; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=8l3yST6GZrvLVJku6YOM2ND9IxJ3TA/gXvQHEv8TIoA=; b=cy2jJOuSPBnUGY3lpMdyu25R1B9ZIaqzPdVLqbagq2YazZ9WIAajxYrI8nSm+uERXEwgVGJkamJ1zYgg1lxrdjTUNHd24Z2ZMzNl7iJoQv5uicI6CjOytCGvfNkT7N3ofF/TJ5giQIsYJ/UO2aRhhqYeYuGsSLBJ8Gtm657So3U= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783334677816872.372403326302; Mon, 6 Jul 2026 03:44:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wggis-0007cS-Gt; Mon, 06 Jul 2026 06:38:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wggiZ-00078s-94 for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:29 -0400 Received: from mail-wm1-x335.google.com ([2a00:1450:4864:20::335]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wggiX-0003TA-Jg for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:27 -0400 Received: by mail-wm1-x335.google.com with SMTP id 5b1f17b1804b1-493d1e8aa46so14425325e9.0 for ; Mon, 06 Jul 2026 03:38:25 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63b6f1bsm329501805e9.10.2026.07.06.03.38.23 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jul 2026 03:38:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783334304; x=1783939104; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=8l3yST6GZrvLVJku6YOM2ND9IxJ3TA/gXvQHEv8TIoA=; b=hamHxj3g/NbP0kBBXpdzY4pDngitVDL+qXVaSfNHMLKKRcLw5D7bNLpEtCnFuIuNEF GEQ93ZImhcAM7ccFjZJMkj9NXHZz/HQM30CGO+qs6mg6puAWkegveZnMMc2IPuwJaDKX iyvSUXy1xmlb2q14sPW58wod9ngcod3+AYZeFzIyrP1AcfHHUBAKKVz9svnf/UT8U7/i srAABdHwuI+TzIwS8fN7g9CZpGMsZN5Lf3E8RSAgjqgGfk0lFBLSNWEtE0MiufN+Z/eA FKONSDDqM2HQz9hf4iO/4UrnR0W2IW/KQNrmyaa7DEsPx7RCJD2ZrGOLLqgUIFC8fbJz ZEqw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783334304; x=1783939104; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=8l3yST6GZrvLVJku6YOM2ND9IxJ3TA/gXvQHEv8TIoA=; b=G4+l7tUnGoZAvKlmbDwGhiEkUkJYUaq4XFLaBNxUQ+X/vTj/8ncxl1JVxE2AfMpykm JG06/jr+jGhgqcbDVdC2tlLGHv9otHyLnS8xL9Wv2iwZEjDh7LbowjD8hcE2CM09hi3K rt2fIG2PRj3yzjzAWUuTtelRt3Og8e5sDjdVHbtKBNxYtBuXvaJBGvBxegfpQnXeclCP vpurpfAJf2v2eCcaN7TQqMbY6ebO4IXf8cgNMm38kTVZkkbgSBuK0UsE75IfYND8p1VH 0wBHFecufFYQFtAjavo/ptcLctj/AEJTDdG6A3kPoSKmaXejVArcnX7qibRYxJZhGHpl yZWA== X-Gm-Message-State: AOJu0Yz91chmntDvriAtEigS+IU8jQ/3cik1FisVj3PJDSBnmPj0dl5J GGLNu5pS2Z6vL7nS9lwHyYYuRmrOgdPQ7UR09Qxk04APq0ULvBBCqbZbp/+nHAluqkhka24hkNJ 6j3c08b1nUA== X-Gm-Gg: AfdE7ck9Geh5Yr7PKDZmDxmamZ8tf5nkd824Spyi5YoHPHOSLqJYQFSXua2RhX/heao udKAfcQF1lC40kvcsF5gnzd1rBRiY85evaCuxZhPsm8RuJLPiOaoMcR6bywGKejWdp/oT0qN0Sw 2yAuRZdnxB89QB2jrWywl4yOg7qTruGrmyLteGbNZ4J+28Xpo7zxt6k/ID0DXPseAVET6VCIj94 tsj0Cou0WYts5/KrqC47GzuFFVBnBE1HkMH4ZJ0LX33Mz2lMTcEg/ZbxGX65/BBq7heoO+Pmr/p GAPbpVU+2nvRSxAeGYV2RU7kcuXxM2nO9em+jJCqizEq4VbHs5pLPoJp6fAsMWPNfhXex2S7bmi 0mRhkAMFsh/88mGA6rsFO0E5mGo6bwKZfOMaAv0qtPw3KZrPTVJzO2HudJSKqPG9HpFHQHNNX3A AlJ00dXseG/ydgNEsovif9EGeRPcxDwEneQoi+1N7UysL0KSFd3YXQMNP+oCOYTIfer+y0W/SUD fijMlHSubKSyTsNI9Gchw== X-Received: by 2002:a05:600c:8010:b0:493:bb2e:11a5 with SMTP id 5b1f17b1804b1-493d11d7e1emr111726935e9.15.1783334304088; Mon, 06 Jul 2026 03:38:24 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 27/49] hw/nvram: add load_image_to_fw_cfg_file() Date: Mon, 6 Jul 2026 11:37:30 +0100 Message-ID: <20260706103752.320511-28-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260706103752.320511-1-peter.maydell@linaro.org> References: <20260706103752.320511-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::335; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x335.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783334679311158500 From: Gerd Hoffmann Function is simliar to load_image_to_fw_cfg() but loads the image into a named fw_cfg file instead of fixed keys. Signed-off-by: Gerd Hoffmann Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20260521112806.504961-2-kraxel@redhat.com Signed-off-by: Peter Maydell --- hw/nvram/fw_cfg.c | 22 ++++++++++++++++++++++ include/hw/nvram/fw_cfg.h | 15 +++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/hw/nvram/fw_cfg.c b/hw/nvram/fw_cfg.c index a9d45adb2d..b057d870c0 100644 --- a/hw/nvram/fw_cfg.c +++ b/hw/nvram/fw_cfg.c @@ -1139,6 +1139,28 @@ void load_image_to_fw_cfg(FWCfgState *fw_cfg, uint16= _t size_key, fw_cfg_add_bytes(fw_cfg, data_key, data, size); } =20 +void load_image_to_fw_cfg_file(FWCfgState *fw_cfg, + const char *fw_cfg_name, + const char *image_name) +{ + GMappedFile *mapped_file; + GError *gerr =3D NULL; + + if (image_name =3D=3D NULL) { + return; + } + + mapped_file =3D g_mapped_file_new(image_name, false, &gerr); + if (!mapped_file) { + error_report("qemu: error reading %s: %s", + image_name, gerr->message); + exit(1); + } + fw_cfg_add_file(fw_cfg, fw_cfg_name, + g_mapped_file_get_contents(mapped_file), + g_mapped_file_get_length(mapped_file)); +} + static void fw_cfg_class_init(ObjectClass *klass, const void *data) { DeviceClass *dc =3D DEVICE_CLASS(klass); diff --git a/include/hw/nvram/fw_cfg.h b/include/hw/nvram/fw_cfg.h index b75858025f..20e2c7190e 100644 --- a/include/hw/nvram/fw_cfg.h +++ b/include/hw/nvram/fw_cfg.h @@ -399,4 +399,19 @@ void load_image_to_fw_cfg(FWCfgState *fw_cfg, uint16_t= size_key, uint16_t data_key, const char *image_name, bool try_decompress); =20 +/** + * load_image_to_fw_cfg_file() - Load an image file into an fw_cfg entry + * identified by fw_cfg file name. + * @fw_cfg: The firmware config instance to store the data in. + * @fw_cfg_name: The name of the fw_cfg (pseudo) file. + * @image_name: The name of the image file to load. If it is NULL, the + * function returns without doing anything. + * + * In case of failure, the function prints an error message to stderr and = the + * process exits with status 1. + */ +void load_image_to_fw_cfg_file(FWCfgState *fw_cfg, + const char *fw_cfg_name, + const char *image_name); + #endif --=20 2.43.0 From nobody Sun Jul 26 11:01:48 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1783334637; cv=none; d=zohomail.com; s=zohoarc; b=n4aLibDW03A52/72qnUoVnLugl0gP3uTwBO4zg5laGe+ndMXUz5mZjiiA9coX+dboemzMRqvbu/yI9Hz8d/LtMCpnj7hjlKDaOKzSURzZ73V0WwToZSSmgYUen/EUIbnPbrNUz44qq2jNrLWiqPkNK1hd6S+etc7HckWiS2vuIY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783334637; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=MxxnuxiMIN2CqwfRQVl/lbTh/vRKSNzXhCWUSEAG5pc=; b=aL78s2aleWsMVifs63L9WxpHXkFPcWrpOOZVePfwJ2ziCh6A9ey/pqeWvXYiaeeruMm0VMk1vww6Lp/Cg/imC8FCUwHJEzhH3ggVwsOhEjq4OGgaamkC5YYj8spWBRVK0sgK0tvwLaHG5aTuoY8XeSBggf4GBtEaou6BUHtljRk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783334637243499.9651933820372; Mon, 6 Jul 2026 03:43:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wggig-0007EM-J8; Mon, 06 Jul 2026 06:38:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wggiZ-00078t-So for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:29 -0400 Received: from mail-wm1-x333.google.com ([2a00:1450:4864:20::333]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wggiY-0003TQ-A6 for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:27 -0400 Received: by mail-wm1-x333.google.com with SMTP id 5b1f17b1804b1-493b1710405so17302795e9.2 for ; Mon, 06 Jul 2026 03:38:25 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63b6f1bsm329501805e9.10.2026.07.06.03.38.24 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jul 2026 03:38:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783334305; x=1783939105; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=MxxnuxiMIN2CqwfRQVl/lbTh/vRKSNzXhCWUSEAG5pc=; b=tr9xig357WYJBEDD9KxKEQ0S8RyyqWyft3n9Jex424ImoF7WLyChrZjEyd+mVhjeiP vNwijdt7UPamSCc6LAINyiFgXueORrDgXxl6wl7RnbxqByvHndwCh5MqD0d0oQ+59vBq xuAuMpoLK1kh88YdP2NaGq9C7XJ49i5DZ0NzEc5TeY4loGyFe7IlOHO5DsqZEjWCi9Bt QsdlavGhi+6Fers0CHsPy1chuDqg/1OyVNTMmEFG4NuB6T98z4ibECAp+7+JNGSfewN/ sdURWIK2D/d1PrNNFGzHfOoH9p5/n0Ia27ryr8rvz9wBCMH9S6rsbV/Tn2R89JeKxAnZ u78g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783334305; x=1783939105; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=MxxnuxiMIN2CqwfRQVl/lbTh/vRKSNzXhCWUSEAG5pc=; b=Hg7wUlsUpZbxlPeK9LLokiCp6m4pAfxPaPfi5xUbca0tRqf86Fj6QTbh5USbwya9vn aCFVPFhAFzATZMAD8GqfTTF0JO0cmocI+rtTARWSg3htmtDgwAWJdat/xzA1kixUcCzv rZ14mz3qh9Pnx9r4aJUpMLZX+CW6zR+cP6f1x1MXewQ6e+MWZxbbMzDn67Yx+AS5/Kh0 UW0C1n98zZcEqCPQbtOxpZmZGn8FHLMwCvwUeE+4IHLue6JYaPNHc86NyYKzi4ZMonVH TzVJa7SNI9cB6hPlHQJSZmQoG/71/6cs55XNMGKyNu0WzbyJGGLiQ8L1VgyiPQRxRK7D 8cew== X-Gm-Message-State: AOJu0YzF2jxaOWrg/J1lCV9hkPvp7VMn/t8RdPC/+YghpTUIzxW9A78Y y4d6LzFujK8qQyvLcA0T94AixxDHKOkl9OFVrzHJ2JmfBMK+v2kdBwTkKjigfQqtBxi1+vhLlxm 0ZvvRRv8nsA== X-Gm-Gg: AfdE7cmlFq0Zxq+rbD8jl4iWF/+6tpaBK39AjyElMT2zcEln3l0VtT1BuGz68qiGZ7F oeZF3LjjFZWhjBbcwI9DkWcLiLKpvkhxXFvoFNGOzn4MrIsR+DWjcv0Y/83STYYC0HCyx0ULFBo qkXgg5yJJqby+Wgf7BmYk9bkmv9mkW2OY5tOwSGrVTCrzSPXiz31fh+eqKb66Uk4qszR2uPt4AX rFE/tmTDh1TK0jVLzTyn1AGcWjC7Q9cKNvoZ/F/vtnrZeEszZmCyjxEReiNrjpL6CHjtoM5SWys 8fd/RD9+aMbnOEad2yVk4pQrN4hUmjhAReXm67bdc7uQ4c3Iixh8gJzieNH/52ne9BzCAVicPgd 5TWpCL1QT2UGUMXj3QGRxrwNvbVG7khKR88XTkDGJru0AW5MlWKr7dTewFO9UdUh4wHfDq/XNcG vHPzmbV1m+h4lSSJpR0SGYtJhDTUEbHOTh9g759p22WKFei6hAyLl3v24fcY83WB7mctbDRjDLT PVSuQ7GZ3KPlF5TFcnuAKnKOAWzFpUk X-Received: by 2002:a05:600c:3b10:b0:492:3e44:214b with SMTP id 5b1f17b1804b1-493d11d7373mr109022885e9.13.1783334304907; Mon, 06 Jul 2026 03:38:24 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 28/49] hw/i386: switch shim loading to load_image_to_fw_cfg_file Date: Mon, 6 Jul 2026 11:37:31 +0100 Message-ID: <20260706103752.320511-29-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260706103752.320511-1-peter.maydell@linaro.org> References: <20260706103752.320511-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::333; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x333.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783334639052158500 From: Gerd Hoffmann Use the new helper function instead of open-coding the shim image load. Signed-off-by: Gerd Hoffmann Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20260521112806.504961-3-kraxel@redhat.com Signed-off-by: Peter Maydell --- hw/i386/x86-common.c | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/hw/i386/x86-common.c b/hw/i386/x86-common.c index fde05fa7d7..8f9419e7d3 100644 --- a/hw/i386/x86-common.c +++ b/hw/i386/x86-common.c @@ -980,19 +980,8 @@ void x86_load_linux(X86MachineState *x86ms, fw_cfg_add_file(fw_cfg, "etc/boot/kernel", kernel, kernel_size); =20 if (machine->shim_filename) { - GMappedFile *mapped_file; - GError *gerr =3D NULL; - - mapped_file =3D g_mapped_file_new(machine->shim_filename, false, &= gerr); - if (!mapped_file) { - fprintf(stderr, "qemu: error reading shim %s: %s\n", - machine->shim_filename, gerr->message); - exit(1); - } - - fw_cfg_add_file(fw_cfg, "etc/boot/shim", - g_mapped_file_get_contents(mapped_file), - g_mapped_file_get_length(mapped_file)); + load_image_to_fw_cfg_file(fw_cfg, "etc/boot/shim", + machine->shim_filename); } =20 if (sev_enabled()) { --=20 2.43.0 From nobody Sun Jul 26 11:01:49 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1783334581; cv=none; d=zohomail.com; s=zohoarc; b=lADh5AuR/T5LbujORthK74GMdYiEyKwa+bJlzyebIlXWR4vR2q8Th0EuIsCUMow61Pu4IjlrtzE56sk3YgBOddgC7JEgb7ehA5cCn+sJXhQoVdnAmUDwQoGjnEJKfkfFrOD6pW7BOIgz2CMxVFcItagXE7fp/EFZuutZPv/H+pU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783334581; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=Psw5RQ7bn8RFZkWZ5A+Dxh+A3qWZNnUc6p+gvL5S8h4=; b=K2GpvAOMEOM5gl/RBRqZn+j3RaFLxNpgJwv5yvVetklaN95jb0KUeZOJrKIfwDDvaIFVE7p0ipijp7gKLz9K4usX3HFuudZYzNqzl6AGGF4Px21pKBB+ADyZMcLqiOEcU+MYqARU8Mh7J3nLTBS6mi+lwTcgErc/++BmL5lblnI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178333458148860.66865217652003; Mon, 6 Jul 2026 03:43:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wggig-0007EK-Gs; Mon, 06 Jul 2026 06:38:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wggia-000798-Qi for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:29 -0400 Received: from mail-wm1-x335.google.com ([2a00:1450:4864:20::335]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wggiZ-0003Tb-8o for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:28 -0400 Received: by mail-wm1-x335.google.com with SMTP id 5b1f17b1804b1-490cf3000f0so28927255e9.1 for ; Mon, 06 Jul 2026 03:38:26 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63b6f1bsm329501805e9.10.2026.07.06.03.38.25 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jul 2026 03:38:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783334306; x=1783939106; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=Psw5RQ7bn8RFZkWZ5A+Dxh+A3qWZNnUc6p+gvL5S8h4=; b=aD/854QI9lpp68gPm97VvszcTu8WCLVML6IfEsBceNcBfh+jbpqlzYukmUrqLq9vUg n2nhFLOTV2zHzxlpdeKFcKsbXYRTelrDoojseLth1rPCLHst9wEqPy8ix+hoPWQE7c7y pBBdaYQ+6uauKjD/xjmPWvLqQhV5UitEc739E6ekwJa7A/9++nxH3yRuBVwc7mSO3bRa 142w2teCkd5mj/FV056uCTjm9NHlhtbyNb87o1LDoXK46xVNIGf46LYVeIQCbrdq64qv gfWZAX1ckzZaSU4iXxCgHrhScU93BVZU1mhBYDPrp/yj6tmjU7LqOcQQLx+4aaZ64rbp 7AfA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783334306; x=1783939106; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=Psw5RQ7bn8RFZkWZ5A+Dxh+A3qWZNnUc6p+gvL5S8h4=; b=IwOacsjUIzA4YHEJ9RdT61ik1Ly6VEc8Y87SsaaAjexyh+q/twHKhSECehaiV4aNnM 92bfGrhDuOCDN1nYzVMSqfz/lq5Lw7QCrp4z4NJx3NkJ6Ehw9nOKTDjSlB37QmbuLAEN 3bbA/4hRsRVPBKqxkSDDpyHcCNyMcrq4CQYamomeNNafOKGLrR69jbSkmMLP2WGgQpBb VqbViOH00pOLdxyumoP+VzGRcmpvC+ryL5hTY6uQGc9MjJO6jOoOxVaG7o9YMRsBg8l9 wb261jVUv2x2FBOd4Yr5wW7OaSYhO9N28ZYLn1DmM2At+CZqLF30LiAw7LGGUZiDXmFJ 7ATQ== X-Gm-Message-State: AOJu0YzVGuGm5vppI1FioZ16+VHMPC27ts+UMUFEmn4SmFp5yJzqP8Lz cDic+5luEIuAmtEAu6GisZRuaDOUfVxe25D9Q/LRbTNfXpfPOMA7w2CQjOcHnM0ldM25Mj34p8x SfxnT0jPxjg== X-Gm-Gg: AfdE7clLCCmjojRlvB/hsly0MPBo0FnVmzjmvUdx2eNWnwRA8BLJ9UiRRX8gIWSgUA+ UaUnf9w3klOrqNvRVjyJIxLQKAjLY9yjc1OzbJku8uClJC96iaIkaYz4SNuwlgwoGoCjSnax7JP QpZcaqbDY29t2PP04hWEyNDiuFMD3fqFofbVPZ9h8zsP/Z+SEIV666FvpRMs29Mx1iAs9fndN20 eqDGlWng+32ubVUOBmkCk/gQclWnA8iP0yh9FlbXMlq1qkyDQDbywB2wi/ZZ5KhqNRtD4tLDvaW yq/Mqi5OFcNOAx4YFnr5HhlEU7RBC7FcgqzqM/TTp9y7hC7J3udGYcsJcXzuUb+9vNx8+T2/dFG +VYICclsD7wRwrY5BjfExJZx6j6LU0wvt19tX+uF3btrCHUzKptdjIcufxW8b6lffxqxWTSfIHK R4g1CdgGv8KEZ1gvqrW8fmpGSOPSHUifqUB37P1fM5zdE3dfTRGphd3CACYHRGr6QDANWG39y/o EMs+oI3a3GDkiT1yvZFOw== X-Received: by 2002:a05:600c:3054:b0:493:bc4a:e7d3 with SMTP id 5b1f17b1804b1-493d11fbcbdmr70545505e9.39.1783334305672; Mon, 06 Jul 2026 03:38:25 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 29/49] hw/arm: add support for shim loading Date: Mon, 6 Jul 2026 11:37:32 +0100 Message-ID: <20260706103752.320511-30-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260706103752.320511-1-peter.maydell@linaro.org> References: <20260706103752.320511-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::335; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x335.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783334582572158500 Content-Type: text/plain; charset="utf-8" From: Gerd Hoffmann Add support for direct kernel boot with shim to the arm platform. Signed-off-by: Gerd Hoffmann Message-id: 20260521112806.504961-4-kraxel@redhat.com Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- hw/arm/boot.c | 6 ++++++ include/hw/arm/boot.h | 1 + 2 files changed, 7 insertions(+) diff --git a/hw/arm/boot.c b/hw/arm/boot.c index 780b6be637..9b7553dde5 100644 --- a/hw/arm/boot.c +++ b/hw/arm/boot.c @@ -1161,6 +1161,11 @@ static void arm_setup_firmware_boot(ARMCPU *cpu, str= uct arm_boot_info *info) fw_cfg_add_string(fw_cfg, FW_CFG_CMDLINE_DATA, info->kernel_cmdline); } + + if (info->shim_filename) { + load_image_to_fw_cfg_file(fw_cfg, "etc/boot/shim", + info->shim_filename); + } } =20 /* @@ -1195,6 +1200,7 @@ void arm_load_kernel(ARMCPU *cpu, MachineState *ms, s= truct arm_boot_info *info) * doesn't support secure. */ assert(!(info->secure_board_setup && kvm_enabled())); + info->shim_filename =3D ms->shim_filename; info->kernel_filename =3D ms->kernel_filename; info->kernel_cmdline =3D ms->kernel_cmdline; info->initrd_filename =3D ms->initrd_filename; diff --git a/include/hw/arm/boot.h b/include/hw/arm/boot.h index a2e22bda8a..94386fdbea 100644 --- a/include/hw/arm/boot.h +++ b/include/hw/arm/boot.h @@ -39,6 +39,7 @@ void armv7m_load_kernel(ARMCPU *cpu, const char *kernel_f= ilename, /* arm_boot.c */ struct arm_boot_info { uint64_t ram_size; + const char *shim_filename; const char *kernel_filename; const char *kernel_cmdline; const char *initrd_filename; --=20 2.43.0 From nobody Sun Jul 26 11:01:49 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1783334417; cv=none; d=zohomail.com; s=zohoarc; b=VZCWCgSXjlheTElES4Kpze9HWMAiwh7PiGTfUSOnXrNcKWGyOilbPFHMRVdxdFQJRAyCz6H/l4fs18kqOwI9pCwAD+DGbIaqu1TPsLjer7wlyUUNJ/E0ipq1g2D7zmuynW3MKxp6CfDjbZeEj+gFv4qR9RhbiyZgOHkREH5hgKo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783334417; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=oT5S3GEKtizBkY8GbjowFd2v2R+00DKmaQ0uG/Z2jX0=; b=f+h0qRKBItFRmbV0VUB921f93hTl9LrKZHNomLX5wKqv6LZFvbCKKIIoiPSr2qprbz6EuzzD2uv2SrHdeCXzy+s32Fto0XbBfZyjnb6ow7MUrFEF0AI3Qr9za5a8Y8etarPzS6e5iVkzosQwCLR9SrGp29F9gOmyFFqsZzLpyiM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783334417560104.82527914095067; Mon, 6 Jul 2026 03:40:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wggih-0007FK-AH; Mon, 06 Jul 2026 06:38:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wggic-0007Ay-Ph for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:30 -0400 Received: from mail-wm1-x336.google.com ([2a00:1450:4864:20::336]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wggib-0003Ty-5c for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:30 -0400 Received: by mail-wm1-x336.google.com with SMTP id 5b1f17b1804b1-493b1710405so17303235e9.2 for ; Mon, 06 Jul 2026 03:38:28 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63b6f1bsm329501805e9.10.2026.07.06.03.38.25 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jul 2026 03:38:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783334308; x=1783939108; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=oT5S3GEKtizBkY8GbjowFd2v2R+00DKmaQ0uG/Z2jX0=; b=s0srTzHR0LEyPmKejAM1kESqDaCvLAOh3DXevVg9jsDwmyN0Pq/oZfhvlj8NKzRqdp ELwhPMrqMqZZCsLX8t22nvFYdfY1BiSkO+gbydosvIe/lZkILt1QS0lHd3fowxyoKM1/ WHbdeZdC2793aX1C3DLA2RZjI4hutf/n7pg/FJy+jYityoEowbhHcgIQmNBvOxHggRyT iZA6B3GUE/oPTPj+153dzOMtGmsmmfZepCDSOftfSoSN8XXukXdcZU3MsaKb7xmJQczP n0yWAbFBgywzmc9y/a56urhLSOt3Y4p0vkSeK0zuWmgTHZEG4ANRwFKay1z+mLGzIaHj t16A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783334308; x=1783939108; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=oT5S3GEKtizBkY8GbjowFd2v2R+00DKmaQ0uG/Z2jX0=; b=WLmvW9JRtq7tBbYSjwPSFzfepQyRSwAUga4eYJ/Nx2uunPmBN17J3Z/DGIqndunN47 RxrEkPSq5LagK+QbMhqJYs3jfRiE87hbv+ARgjEhknFY4KY2MOUsY2OafjzhDN1yGud5 R696KpkeLo3uDv0WwiGvs8BoD7qZEvEUGeivn2yd4cu5pXEbxaFubf43N2dModZXVaGN i99xxrVCQxgVHCFURjhl8k/6xaEFrtI8zOgjL4H/fBuugurraVbNB7Fd1ntn3nxh52y2 4Aft5e4JJV4FYhn4luuo/LC7mkobF/6EtUWjMOGv4psdClap0/0L5Vi8tmFsjAaM9io2 OwvQ== X-Gm-Message-State: AOJu0Ywq4iMe1U1Dtq8v2gzgVs9ugdxwFEA4xkPcIbR/4N4UxZo+4kdh 5ZbyvSsEy13d4c1uw5TWwFryIMSIKjdR+aLQKnnvrmMCvsUMIzpxSTlJjh/2z/1RnhUnqpC4z9j z9F0Gw4G4gQ== X-Gm-Gg: AfdE7cnWBQO/5PPHIbhNB26XQWlzyaBkx1+9+9xmHgsv4S0vEtvnOvSt8+WgH8geKeS JMyQBSVq+B2oxWocrMVRznZ8BoGFFCBiD2cHecCMtRhoLyrLlp1XKUpdYZCPQN+29vB+ILC05Ii PU999fXeDEBbI6ssGXfiU8JXkMjGCo3GrYYpi6Bzeux2jeOPJQpu6Gy7rwVuf3dM9e5Qzdzvgo2 MoeKPFthTyEKXtGVS6SavAkA1IjM9DeKrQPa6K00mkylarfocjGx4t+RJI5GyWtu2i3YRgUY9Wy vNAnXNUTASHTF+kQ8DCVj2dDWWJbfAo5taHRrn9e1pdlgjt5lCU00a1NaxkSSJ0Q4L4oUh2WVVD LzXOryXFdmDYauPuHbFrrKC3qg7EYWTyePNkeKN/6qmpYKSi5otPYeloLgIOYfn5E1kMYr1BTdm rQyLA2+9T5i1eI2uaiKEZtoqgiVvEkWwSUmU4kTyfOYUSVXwOSwcywz4tp9MCJ4K5o6MxXkk8xQ eDLUgpBFI4oe5lV5/zPKhD9M8fsXZfS X-Received: by 2002:a05:600c:34c2:b0:493:d9f7:a3cf with SMTP id 5b1f17b1804b1-493d9f7a46emr43559225e9.17.1783334307697; Mon, 06 Jul 2026 03:38:27 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 30/49] docs/system/arm: Document Zynq Buildroot boot Date: Mon, 6 Jul 2026 11:37:33 +0100 Message-ID: <20260706103752.320511-31-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260706103752.320511-1-peter.maydell@linaro.org> References: <20260706103752.320511-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::336; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x336.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, WEIRD_QUOTING=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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783334419579158500 Content-Type: text/plain; charset="utf-8" From: Bin Meng The Zynq board documentation only showed a generic direct kernel boot command. Add Buildroot ZC702 commands for booting through U-Boot proper with the generic loader and for direct Linux boot from the generated SD image. Signed-off-by: Bin Meng Acked-by: Alistair Francis Message-id: 20260628114925.418293-1-bin.meng@processmission.com Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- docs/system/arm/xlnx-zynq.rst | 54 ++++++++++++++++++++++++++++++----- 1 file changed, 47 insertions(+), 7 deletions(-) diff --git a/docs/system/arm/xlnx-zynq.rst b/docs/system/arm/xlnx-zynq.rst index aa37df2926..95538cd32f 100644 --- a/docs/system/arm/xlnx-zynq.rst +++ b/docs/system/arm/xlnx-zynq.rst @@ -30,16 +30,56 @@ The QEMU xilinx-zynq-a9 board supports the following de= vices: - DDR Memory - USB 2.0 x2 =20 -Running -""""""" -Direct Linux boot of a generic Arm upstream Linux kernel: +Running Buildroot ZC702 Images +"""""""""""""""""""""""""""""" + +Buildroot has a ZC702 defconfig. Buildroot 2026.05 release is tested at the +time of writing. From the Buildroot source tree: =20 .. code-block:: bash =20 - $ qemu-system-aarch64 -M xilinx-zynq-a9 \ - -dtb zynq-zc702.dtb -serial null -serial mon:stdio \ - -display none -m 1024 \ - -initrd rootfs.cpio.gz -kernel zImage + $ make zynq_zc702_defconfig + $ make + +The generated files are in ``output/images/``. The examples below use: + + * ``u-boot.bin`` + * ``uImage`` + * ``sdcard.img`` + +QEMU's SD card model requires a power-of-two image size. Work on a copy +of the Buildroot SD image and resize the copy, not the original output: + +.. code-block:: bash + + $ cp output/images/sdcard.img sdcard-qemu.img + $ qemu-img resize -f raw sdcard-qemu.img 128M + +To boot through the U-Boot image generated by Buildroot, use the generic +loader device to place the raw ``u-boot.bin`` at the address it was linked +for and start the CPU there. The ``zynq_zc702_defconfig`` U-Boot image is +U-Boot proper, not a Zynq boot ROM image, and is linked at ``0x04000000``: + +.. code-block:: bash + + $ qemu-system-arm -M xilinx-zynq-a9 -m 1G \ + -machine boot-mode=3Dsd \ + -display none -serial null -serial mon:stdio \ + -device loader,file=3Doutput/images/u-boot.bin,addr=3D0x04000000,cpu= -num=3D0 \ + -drive file=3Dsdcard-qemu.img,if=3Dsd,format=3Draw + +Direct Linux boot of the generated Buildroot image is also supported. The = Zynq +ZC702 DTB is generated by Buildroot and is located in +``output/images/zynq-zc702.dtb``. The kernel image is generated as a uImag= e: + +.. code-block:: bash + + $ qemu-system-arm -M xilinx-zynq-a9 -m 1G \ + -display none -serial null -serial mon:stdio \ + -kernel output/images/uImage \ + -dtb output/images/zynq-zc702.dtb \ + -append "console=3DttyPS0,115200 root=3D/dev/mmcblk0p2 rw rootwait" \ + -drive file=3Dsdcard-qemu.img,if=3Dsd,format=3Draw =20 For configuring the boot-mode provide the following on the command line: =20 --=20 2.43.0 From nobody Sun Jul 26 11:01:49 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1783334644; cv=none; d=zohomail.com; s=zohoarc; b=ZOPEeLBSzv8t7GbOMs2+JvK5kEF6r3JdCP7rpOUrFbQCBW+ONq0Y+ycpDb6373sz3lz6N053bfiFrcaY0gDDQhhEorEzPiIZaHs5XiaCIP7b6VgR2ZAdvNIEkbU+gKlnOI23LthjoEEXvTYBoHnlCKae1sxraIRL5it1//OmL/A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783334644; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=4RjLNTftRh30M6FTjqc2+2CITdHRghJxZsaj6MufO+4=; b=RhpPxg8i0KSjew3axOZeOfWWA7DV6ZC9cAnLLiDILsCIT2aZGZsP6xzEd9k4t/IxhxmW1qdxzB0hbqUOqpw7TsINOzJHve+GUDo5PiKUgEDGRYSfqA0U8RSSABCg293Y9xInxUrC9f0nVD0JPvtzRrjT+3oH8XfbfjHU5urcDlI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178333464467258.30906774345715; Mon, 6 Jul 2026 03:44:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wggig-0007EL-Hv; Mon, 06 Jul 2026 06:38:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wggie-0007D4-Fs for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:32 -0400 Received: from mail-wm1-x331.google.com ([2a00:1450:4864:20::331]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wggic-0003U9-Ce for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:32 -0400 Received: by mail-wm1-x331.google.com with SMTP id 5b1f17b1804b1-493b6f1b14bso11319105e9.0 for ; Mon, 06 Jul 2026 03:38:29 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63b6f1bsm329501805e9.10.2026.07.06.03.38.27 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jul 2026 03:38:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783334309; x=1783939109; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=4RjLNTftRh30M6FTjqc2+2CITdHRghJxZsaj6MufO+4=; b=yeYMFM3c2+ONOV+nCr3lm7jShHFrEIaqwYwZZMDQgOzvPZ2lMtxhansG5JH3rApO9F LCdkmPy4PI6d/KZtnJzw2IsmrRMY4pEfjyKhWZYwNMRkJWC81BgXplNYKCle3rdF8LqS zV5sfz8uArsAt16/yz+cwdJI9wh2bJ6wUABEVNRx392x/xPvVLCj982q0tT5m5FaZt/R VFk0WWIHRz87SDZDbUKK2Ql5iMrRF946JUWzYLnNm0x/f6B/316AbX5CoiapgWpYVLJb pAegx5LGeXDTRBq5hQQ8D/os8hX2eE/bvnpDg1QCR0xP4rSGmhQYZK8oiUY5vnUZx4pt TYAw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783334309; x=1783939109; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=4RjLNTftRh30M6FTjqc2+2CITdHRghJxZsaj6MufO+4=; b=kIhwOLcLxSaea3jsECnnqdyzpoojZPaIauyNzicb/z9PzY0cFgmHTqgh9mlIKBHeve XT26su4Y+KL/cTnTFEqyjyp70vIEvoduOWHWg/EjAVXVacxaov3RrVfD00djeCJ094hT cHTwQBRQsVnu1Lt0zLvlCsw3VDu7Dn8SxW5+DAt89Smgt/itgNtTXbLkmsatNyCEfi/c otEYvwmgM7cM7ohOZkyeKa1g3CmDhCZ9OW1AGXd0agI4YJpLuebEyAjAXN3oV4qLdafB x/mQB/sk+GB0pdBk0J8UK9xi300OoPZ41RiyRwFN+iY0wzyxD01aAyRzOT3FQAFPbz05 dc8g== X-Gm-Message-State: AOJu0YxroAodOQQ2FXoqyXUmEQAdgll9bc0x2Ma8cTlGoLfL/NkbI7mF MAuSLsNVa2CmoekOb4TQVqwcnPe541FI04fhG9S5ByC1JYuBevbi/jaLFZ6BimRIqO/GY2JbakX dvuMyQm25DQ== X-Gm-Gg: AfdE7clNP4uU2xflWzUyIcJZ1+avstC0a5r+9+QPgiCHvoI3jYzn0Q+ysf5D9ZCrXjI rtzchOmC/xnRg5Nuaq1e3lzyCPe2fidtcglDwySIr5mEdAQKS0Zhnvbrr0M3qXIYUNXwXpYRjqx omA1M7e2/DsbOGa99OGdVpZF1Ml2xJqGrVzQtTN7Yjo7vgGLzC+/K7kmcWLXIAhnZP9xKVjZ5PY N3LQh7626HVrxemMR4Q/plV0cqytPRUUcygMLRgBzs373bWB7mbzSw8yMddNmYzP3ChvywVIwpg UBWHgKhVRkLoK+SliKvTjPbn85aqWG8L/Y/orLnwKpsM9JS8BeZ2qMfQJMnh/VKn2Zl5zXtseyh pt+OxzomdtcFAgfKHwxTC2lqgFTslzFUyDp3KI0OsA2ejhp5DwEMOlNQxKhfYPYHvET+UKuZEBr 5ItbnyVdcWTy6npu3UA4FMiymyrxtlPj5VHplvXqVNaNu/jcSdspgjys9srElWOU86Wsn2woxK0 ShU6oJ5vadnSU91Crbrug== X-Received: by 2002:a05:600c:8284:b0:493:cbdc:7cd6 with SMTP id 5b1f17b1804b1-493d6604504mr77398555e9.7.1783334308765; Mon, 06 Jul 2026 03:38:28 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 31/49] target/arm: Implement FMOP4 (non-widening) for float32 Date: Mon, 6 Jul 2026 11:37:34 +0100 Message-ID: <20260706103752.320511-32-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260706103752.320511-1-peter.maydell@linaro.org> References: <20260706103752.320511-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::331; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x331.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783334645127158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260702204314.79224-2-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/cpu-features.h | 5 +++ target/arm/tcg/helper-sme-defs.h | 4 ++ target/arm/tcg/sme.decode | 12 +++++ target/arm/tcg/sme_helper.c | 76 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-sme.c | 29 ++++++++++++ target/arm/tcg/translate.h | 5 +++ target/arm/tcg/vec_internal.h | 8 ++++ 7 files changed, 139 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index de81c4f103..e480995cc6 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1585,6 +1585,11 @@ static inline bool isar_feature_aa64_ssve_fexpa(cons= t ARMISARegisters *id) return FIELD_EX64_IDREG(id, ID_AA64SMFR0, SFEXPA); } =20 +static inline bool isar_feature_aa64_sme_mop4(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64SMFR0, SMOP4); +} + static inline bool isar_feature_aa64_ssve_aes(const ARMISARegisters *id) { return FIELD_EX64_IDREG(id, ID_AA64SMFR0, AES); diff --git a/target/arm/tcg/helper-sme-defs.h b/target/arm/tcg/helper-sme-d= efs.h index 01aad4c231..9e1f09ce5b 100644 --- a/target/arm/tcg/helper-sme-defs.h +++ b/target/arm/tcg/helper-sme-defs.h @@ -355,3 +355,7 @@ DEF_HELPER_FLAGS_5(sme2_sel_b, TCG_CALL_NO_RWG, void, p= tr, ptr, ptr, i32, i32) DEF_HELPER_FLAGS_5(sme2_sel_h, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32, = i32) DEF_HELPER_FLAGS_5(sme2_sel_s, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32, = i32) DEF_HELPER_FLAGS_5(sme2_sel_d, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32, = i32) + +DEF_HELPER_FLAGS_5(sme_fmop4a_ss, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fp= st, i32) +DEF_HELPER_FLAGS_5(sme_fmop4s_ss, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fp= st, i32) +DEF_HELPER_FLAGS_5(sme_ah_fmop4s_ss, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= fpst, i32) diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index 3a65e1ad4b..5a3d47cdfe 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -1086,3 +1086,15 @@ LUTI4_s_4h 1100 0000 1001 101 idx:1 10 01 00 zn= :5 zd:5 &lut =20 LUTI4_s_4b 1100 0000 1001 101 1 00 00 00 ....0 zd:5 \ &lut zn=3D%zn_ax2 idx=3D0 + +# SME MOP4 Quarter-tile outer products + +&mop4 zad zn zm s:bool n:bool m:bool + +%mop4_zm 17:3 !function=3Dtimes_2_plus_16 +%mop4_zn 6:3 !function=3Dtimes_2 + +@mop4_o2 .... .... ... m:1 .... .... .. n:1 ... . s:1 .. zad:2 \ + &mop4 zm=3D%mop4_zm zn=3D%mop4_zn + +FMOP4_ss 1000 0000 000. ...0 0000 00.. ..0. 00.. @mop4_o2 diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index 685b6b46be..b08d91e6de 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -2601,3 +2601,79 @@ void HELPER(sme2_sel_d)(void *vd, void *vn, void *vm, } } } + +void sme_mop4(void *vza, void *vzn, void *vzm, void *fn_opaque, + uint32_t desc, size_t esize, + void (*fn)(void *, void *, void *, void *)) +{ + intptr_t oprsz =3D simd_maxsz(desc); + intptr_t dim =3D oprsz / 2; /* in bytes */ + bool nreg_m1 =3D extract32(desc, SIMD_DATA_SHIFT + 0, 1); + bool mreg_m1 =3D extract32(desc, SIMD_DATA_SHIFT + 1, 1); + intptr_t host_adj =3D HOST_BIG_ENDIAN ? 8 - esize : 0; + + for (int outprod =3D 0; outprod < 4; outprod++) { + bool row_hv =3D outprod & 2; + bool col_hv =3D outprod & 1; + intptr_t row_base =3D row_hv ? dim : 0; + intptr_t col_base =3D col_hv ? dim : 0; + void *op1 =3D vzn + (col_hv && nreg_m1 ? sizeof(ARMVectorReg) : 0); + void *op2 =3D vzm + (row_hv && mreg_m1 ? sizeof(ARMVectorReg) : 0); + + for (intptr_t row =3D 0; row < dim; row +=3D esize) { + intptr_t row_idx =3D row_base + row; + void *vza_row =3D vza + tile_vslice_offset(row_idx); + void *e1 =3D op1 + (row_idx ^ host_adj); + + for (intptr_t col =3D 0; col < dim; col +=3D esize) { + intptr_t col_idx =3D col_base + col; + void *e2 =3D op2 + (col_idx ^ host_adj); + void *e3 =3D vza_row + (col_idx ^ host_adj); + + fn(e3, e1, e2, fn_opaque); + } + } + } +} + +static void inner_fmop4a_ss(void *vd, void *vn, void *vm, void *vinfo) +{ + float32 *d =3D vd, *n =3D vn, *m =3D vm; + float_status *fpst =3D vinfo; + + *d =3D float32_muladd(*n, *m, *d, 0, fpst); +} + +void HELPER(sme_fmop4a_ss)(void *vza, void *vzn, void *vzm, + float_status *fpst, uint32_t desc) +{ + sme_mop4(vza, vzn, vzm, fpst, desc, sizeof(float32), inner_fmop4a_ss); +} + +static void inner_fmop4s_ss(void *vd, void *vn, void *vm, void *vinfo) +{ + float32 *d =3D vd, *n =3D vn, *m =3D vm; + float_status *fpst =3D vinfo; + + *d =3D float32_muladd(float32_chs(*n), *m, *d, 0, fpst); +} + +void HELPER(sme_fmop4s_ss)(void *vza, void *vzn, void *vzm, + float_status *fpst, uint32_t desc) +{ + sme_mop4(vza, vzn, vzm, fpst, desc, sizeof(float32), inner_fmop4s_ss); +} + +static void inner_ah_fmop4s_ss(void *vd, void *vn, void *vm, void *vinfo) +{ + float32 *d =3D vd, *n =3D vn, *m =3D vm; + float_status *fpst =3D vinfo; + + *d =3D float32_muladd(*n, *m, *d, float_muladd_negate_product, fpst); +} + +void HELPER(sme_ah_fmop4s_ss)(void *vza, void *vzn, void *vzm, + float_status *fpst, uint32_t desc) +{ + sme_mop4(vza, vzn, vzm, fpst, desc, sizeof(float32), inner_ah_fmop4s_s= s); +} diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index ff5554eefb..aab5eab9df 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -2002,3 +2002,32 @@ TRANS_FEAT(LUTI4_s_4h, aa64_sme2p1, do_lut_s4, a, ge= n_helper_sme2_luti4_4h) =20 TRANS_FEAT(LUTI4_s_4b, aa64_sme2p1_lutv2, do_lut_s4, a, gen_helper_sme2_luti4_4b) + +static bool do_mop4_fp(DisasContext *s, arg_mop4 *a, MemOp esz, + ARMFPStatusFlavour e_fpst, + gen_helper_gvec_3_ptr * const fns[3]) +{ + int svl =3D streaming_vec_reg_size(s); + uint32_t desc =3D simd_desc(svl, svl, (a->m << 1) | a->n); + int fns_idx =3D (a->s ? 1 + s->fpcr_ah : 0); + TCGv_ptr za, zn, zm, fpst; + + if (!sme_smza_enabled_check(s)) { + return true; + } + + za =3D get_tile(s, esz, a->zad); + zn =3D vec_full_reg_ptr(s, a->zn); + zm =3D vec_full_reg_ptr(s, a->zm); + fpst =3D fpstatus_ptr(e_fpst); + + fns[fns_idx](za, zn, zm, fpst, tcg_constant_i32(desc)); + return true; +} + +static gen_helper_gvec_3_ptr * const fmop4_ss[3] =3D { + gen_helper_sme_fmop4a_ss, + gen_helper_sme_fmop4s_ss, + gen_helper_sme_ah_fmop4s_ss +}; +TRANS_FEAT(FMOP4_ss, aa64_sme_mop4, do_mop4_fp, a, MO_32, FPST_ZA, fmop4_s= s) diff --git a/target/arm/tcg/translate.h b/target/arm/tcg/translate.h index 83b413ee36..a3d03159ad 100644 --- a/target/arm/tcg/translate.h +++ b/target/arm/tcg/translate.h @@ -268,6 +268,11 @@ static inline int times_2_plus_1(DisasContext *s, int = x) return x * 2 + 1; } =20 +static inline int times_2_plus_16(DisasContext *s, int x) +{ + return x * 2 + 16; +} + static inline int rsub_64(DisasContext *s, int x) { return 64 - x; diff --git a/target/arm/tcg/vec_internal.h b/target/arm/tcg/vec_internal.h index 77e5b01550..038a2a3439 100644 --- a/target/arm/tcg/vec_internal.h +++ b/target/arm/tcg/vec_internal.h @@ -547,4 +547,12 @@ void HELPER(NAME)(void *vd, void *vn, void *vm, = \ clear_tail(d, oprsz, simd_maxsz(desc)); = \ } =20 +/* + * Perform SME quarter-tile outer product. + * Iterate over ZAtile[] for esize, calling fn for each element. + */ +void sme_mop4(void *vza, void *vzn, void *vzm, void *fn_opaque, + uint32_t desc, size_t esize, + void (*fn)(void *, void *, void *, void *)); + #endif /* TARGET_ARM_VEC_INTERNAL_H */ --=20 2.43.0 From nobody Sun Jul 26 11:01:49 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1783334477; cv=none; d=zohomail.com; s=zohoarc; b=A2yAm1OCYQ+/olXV74qciwZbUfakFxwJaWa2XN1IHIYQ0qxU9NJr1LSW8bB97NTZj5CXJxGc1/EcezyaPwrYIL5XZExCAq9OWUUiv3ToIHXgDe8vg9VSSAZp7vx9m4PE4gSDomARMnyVb+5IAgEWzKv5S31mVjRg1ZSXBYnhrdA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783334477; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=Rs1VDjr5PB3VP0zb1dNRY2Ym5YO2bAgk5HVrjMi0WPk=; b=fd0b1SpcgH1OC/ILK/A4oQaRna32kmvAIy1TpAPxugEJIqsCjWQnd+kRpvmxB7USzlbZ4VHRpNZc6FbF4pXyuCS1/F7jiAszDTazMiKU1eqH3i16XyWGAGQIEOIjug67CIqVFshH/m52by4XPSoECKUBG5jsOyWzG5eE9k7VLGw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783334477729910.6741740278749; Mon, 6 Jul 2026 03:41:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wggis-0007e1-WD; Mon, 06 Jul 2026 06:38:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wggie-0007DF-Tj for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:32 -0400 Received: from mail-wm1-x330.google.com ([2a00:1450:4864:20::330]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wggid-0003UL-3t for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:32 -0400 Received: by mail-wm1-x330.google.com with SMTP id 5b1f17b1804b1-493b1710405so17303405e9.2 for ; Mon, 06 Jul 2026 03:38:30 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63b6f1bsm329501805e9.10.2026.07.06.03.38.28 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jul 2026 03:38:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783334310; x=1783939110; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=Rs1VDjr5PB3VP0zb1dNRY2Ym5YO2bAgk5HVrjMi0WPk=; b=dGAqekcJjLfjxzBN+vISZEHi1UiG93SLdzlwOGyMRTpJSDSn5M/V4SrzgEAR0h86Y2 /EOZn1MA//2TuSDwuNhCYyOvmr/zBKEdCHssyU8NfLTwqkJB+3EgFkpHhDgBgiXUy57A 0iLrD7no17vNnNTWKFi5kcpaZdun1JYh2ZaU0wSz8puMMdhk9kDYPPZfQfrwKADaaRMB 7qyc/Guv5tBzKqSYbEKUM6BNGp3MNU/U1r+SPqH6+8pFHlOiBSnjdqlGKLsJ5fsAZHfr VmReK6uvbsIS5DawmHTw2GmRB7qY4M+9ilKeOIxSACScF1SMbYHMgJPuYaMF++kj14VA BdZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783334310; x=1783939110; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=Rs1VDjr5PB3VP0zb1dNRY2Ym5YO2bAgk5HVrjMi0WPk=; b=sFrWTqTNaxEzvcbZ3QW/JhuDN2n5gySStOf7XcG5gAZaOe02Wi9jnzlyt1fVN0vt3r KlEuet87OSIoZVsKwuKqbrrQSfjvT3j7ay+ll4gkqF6c4cKrysbZHci3+BHUGAD+TA4/ xTckWhGNEtBcKaebmHH7o7nM1g3GRlZDuWvB3GA/jh0yFZO7Cl7gcG1N2q9MkysMssRP UzzYEEVlXCsTUA2xZBo6SegiG9j9tA87ODghKDupDHuzLgxL+KW/Imi/eTKv49EI2v7i X9pajHE7SJLKKLi2fugOuSivYvDaC+RVLgPxVey8qoYZdwNBirKARyDIB2OTsDGh5TFr gVww== X-Gm-Message-State: AOJu0YyXn2DAakbEpWJBFFTMYYE+VdpOds1bNcI7h98dBdh/Qb2rJ53q I4OyOEW+Wu9hE39w9peiOfZP0rziY4tDw9s3gZeSHKxEx5W+FcuWvcv2Hg76TbAmT8LbaOwQpSp iRrYpaE734A== X-Gm-Gg: AfdE7ck4t6tYgYlLqgyIkBICzV4xCAkbyePOfsOuBQDn4902IE1fkP8y8Ux5dsCOw7L ta/RHbAe/VJG1wjwX/MfG6NFIYwK7JvgyVV161HSq6WNBp3KUC3CPGgtyMAMhEUof+RnKhxttp5 gowARw9F2iMgAeMoFPmL8hfy99T+5yGC/ZMDKFyygrD6OG1k3yG7bvhC7mEEK6WHfy8lFqmKHZ5 8whrl4Kvu7upXUYNSW6mzVbFFiZIVouUNgIaDXLiUxpc1piFeT7PtCtA9DISe8lRjrckgNvq2sq ZgZdS/4sG/jUrsvk5qjDSj02UjXIAKmDnyuNCoQK0Mxcs4AelSrFP4mGS/aGoPgiWBipaf4z6gq s6cKYXcj0wiAg3oHZ72X3YpiQBSbkJmO2bK+/v4zkkOTiQ9CbMa8bSsfQo5ywC3lwu7l5GzFR8p WgHoLq07sXMoySBDoeftYqa2v43qN9hbnsx4XBj/u7ooN5m9y8mOAILdnWlsZUOjrgN/Hf+hkL/ BNk2eJIKHNPCLd0aG9kYyZJvo8c4YVJ X-Received: by 2002:a7b:cd13:0:b0:493:bc4a:9547 with SMTP id 5b1f17b1804b1-493d1204c74mr77508365e9.39.1783334309644; Mon, 06 Jul 2026 03:38:29 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 32/49] target/arm: Implement FMOP4 (non-widening) for float16 Date: Mon, 6 Jul 2026 11:37:35 +0100 Message-ID: <20260706103752.320511-33-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260706103752.320511-1-peter.maydell@linaro.org> References: <20260706103752.320511-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::330; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x330.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783334478096158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260702204314.79224-3-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/cpu-features.h | 5 ++++ target/arm/tcg/helper-sme-defs.h | 4 +++ target/arm/tcg/sme.decode | 3 +++ target/arm/tcg/sme_helper.c | 42 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-sme.c | 8 ++++++ 5 files changed, 62 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index e480995cc6..a1a4f37277 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1807,6 +1807,11 @@ isar_feature_aa64_sme_f16f16_or_f8f16(const ARMISARe= gisters *id) return isar_feature_aa64_sme_f16f16(id) || isar_feature_aa64_sme_f8f16= (id); } =20 +static inline bool isar_feature_aa64_sme_mop4_f16f16(const ARMISARegisters= *id) +{ + return isar_feature_aa64_sme_mop4(id) && isar_feature_aa64_sme_f16f16(= id); +} + /* * Feature tests for "does this exist in either 32-bit or 64-bit?" */ diff --git a/target/arm/tcg/helper-sme-defs.h b/target/arm/tcg/helper-sme-d= efs.h index 9e1f09ce5b..ec7389d2ae 100644 --- a/target/arm/tcg/helper-sme-defs.h +++ b/target/arm/tcg/helper-sme-defs.h @@ -356,6 +356,10 @@ DEF_HELPER_FLAGS_5(sme2_sel_h, TCG_CALL_NO_RWG, void, = ptr, ptr, ptr, i32, i32) DEF_HELPER_FLAGS_5(sme2_sel_s, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32, = i32) DEF_HELPER_FLAGS_5(sme2_sel_d, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32, = i32) =20 +DEF_HELPER_FLAGS_5(sme_fmop4a_hh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fp= st, i32) +DEF_HELPER_FLAGS_5(sme_fmop4s_hh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fp= st, i32) +DEF_HELPER_FLAGS_5(sme_ah_fmop4s_hh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= fpst, i32) + DEF_HELPER_FLAGS_5(sme_fmop4a_ss, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fp= st, i32) DEF_HELPER_FLAGS_5(sme_fmop4s_ss, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fp= st, i32) DEF_HELPER_FLAGS_5(sme_ah_fmop4s_ss, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= fpst, i32) diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index 5a3d47cdfe..227f3d7790 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -1094,7 +1094,10 @@ LUTI4_s_4b 1100 0000 1001 101 1 00 00 00 ..= ..0 zd:5 \ %mop4_zm 17:3 !function=3Dtimes_2_plus_16 %mop4_zn 6:3 !function=3Dtimes_2 =20 +@mop4_o1 .... .... ... m:1 .... .... .. n:1 ... . s:1 ... zad:1 \ + &mop4 zm=3D%mop4_zm zn=3D%mop4_zn @mop4_o2 .... .... ... m:1 .... .... .. n:1 ... . s:1 .. zad:2 \ &mop4 zm=3D%mop4_zm zn=3D%mop4_zn =20 +FMOP4_hh 1000 0001 000. ...0 0000 00.. ..0. 100. @mop4_o1 FMOP4_ss 1000 0000 000. ...0 0000 00.. ..0. 00.. @mop4_o2 diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index b08d91e6de..c4d149f7f7 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -2636,6 +2636,48 @@ void sme_mop4(void *vza, void *vzn, void *vzm, void = *fn_opaque, } } =20 +static void inner_fmop4a_hh(void *vd, void *vn, void *vm, void *vinfo) +{ + float16 *d =3D vd, *n =3D vn, *m =3D vm; + float_status *fpst =3D vinfo; + + *d =3D float16_muladd(*n, *m, *d, 0, fpst); +} + +void HELPER(sme_fmop4a_hh)(void *vza, void *vzn, void *vzm, + float_status *fpst, uint32_t desc) +{ + sme_mop4(vza, vzn, vzm, fpst, desc, sizeof(float16), inner_fmop4a_hh); +} + +static void inner_fmop4s_hh(void *vd, void *vn, void *vm, void *vinfo) +{ + float16 *d =3D vd, *n =3D vn, *m =3D vm; + float_status *fpst =3D vinfo; + + *d =3D float16_muladd(float16_chs(*n), *m, *d, 0, fpst); +} + +void HELPER(sme_fmop4s_hh)(void *vza, void *vzn, void *vzm, + float_status *fpst, uint32_t desc) +{ + sme_mop4(vza, vzn, vzm, fpst, desc, sizeof(float16), inner_fmop4s_hh); +} + +static void inner_ah_fmop4s_hh(void *vd, void *vn, void *vm, void *vinfo) +{ + float16 *d =3D vd, *n =3D vn, *m =3D vm; + float_status *fpst =3D vinfo; + + *d =3D float16_muladd(*n, *m, *d, float_muladd_negate_product, fpst); +} + +void HELPER(sme_ah_fmop4s_hh)(void *vza, void *vzn, void *vzm, + float_status *fpst, uint32_t desc) +{ + sme_mop4(vza, vzn, vzm, fpst, desc, sizeof(float16), inner_ah_fmop4s_h= h); +} + static void inner_fmop4a_ss(void *vd, void *vn, void *vm, void *vinfo) { float32 *d =3D vd, *n =3D vn, *m =3D vm; diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index aab5eab9df..d19cd274ac 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -2025,6 +2025,14 @@ static bool do_mop4_fp(DisasContext *s, arg_mop4 *a,= MemOp esz, return true; } =20 +static gen_helper_gvec_3_ptr * const fmop4_hh[3] =3D { + gen_helper_sme_fmop4a_hh, + gen_helper_sme_fmop4s_hh, + gen_helper_sme_ah_fmop4s_hh +}; +TRANS_FEAT(FMOP4_hh, aa64_sme_mop4_f16f16, + do_mop4_fp, a, MO_16, FPST_ZA_F16, fmop4_hh) + static gen_helper_gvec_3_ptr * const fmop4_ss[3] =3D { gen_helper_sme_fmop4a_ss, gen_helper_sme_fmop4s_ss, --=20 2.43.0 From nobody Sun Jul 26 11:01:49 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1783334541; cv=none; d=zohomail.com; s=zohoarc; b=VJigeCA6c/cTWT9Y8oWY/0K0adFINtFAhykLayqlAr28/VTUGnHes5CJLHZycFzkFB7kdLqduQO7m3zo7wK7usP1DM3J2XLZypA2JriZHS/0fsNe5CCoT/oSlS0MDEngqCvohh4RgwJNJNa3dGczDOKlzoGMoOubPOxhHWUX+PU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783334541; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=OZnBonC4QH+1tQ9Nd+N4BbfpyRgjS2deaEmDcHEFx44=; b=B/gPAWkEt0pNBQ/AgznpWqstlgRb3YW+hY4f5aSZL0Mn1FZlmJiqeYtqLk/Bu6i1oZGVXpB92rkcuLDAHL4og8d5PhHwCcr0JV4PG7r1pFJ+lngg9ZXKBNdknHMX0xNHaIMDNojJKtxMN3JtoryVXJleleH+M4wsPH8KNLXCkDg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783334541471633.5441555390913; Mon, 6 Jul 2026 03:42:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wggij-0007Hv-Ci; Mon, 06 Jul 2026 06:38:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wggif-0007E4-WE for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:34 -0400 Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wggie-0003Ue-0p for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:33 -0400 Received: by mail-wm1-x32c.google.com with SMTP id 5b1f17b1804b1-4921eed3fa2so19616225e9.0 for ; Mon, 06 Jul 2026 03:38:31 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63b6f1bsm329501805e9.10.2026.07.06.03.38.29 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jul 2026 03:38:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783334311; x=1783939111; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=OZnBonC4QH+1tQ9Nd+N4BbfpyRgjS2deaEmDcHEFx44=; b=GpVx9Mm5/jONnnDbkYwFiTc9ddZzoMPs+pzvJdSRbxcFGx/KRWmfyfBjBBdCP2jdvr sfSkzy2hcLCPLsNw5JV415seXaMOXG0c2kveT00s7mgNfEx8CnNoT3yUiIq2VjZHFBF1 cbIhH1BOaATnKQhQghLUB1GXb3AcRSC9KgTr3AYup9d7uwiT6hGUy/Ybn643mnFiC3a7 Bbo+ZcEal3rsO6yqD6avakxupt4m3grL89RzOK1nQAo8oAFJXj8m/EOW5BZQVUYcnTPg rblkuaTTwW++lC8xCHSZkqNkeZidSUPwJZ798RHcB2vRnEdNpgkJkZIOFxMr3kjJSEcV EWAg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783334311; x=1783939111; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=OZnBonC4QH+1tQ9Nd+N4BbfpyRgjS2deaEmDcHEFx44=; b=rAGvq1jDt9ppUbZmu4wzleKuQ+Isp6Z7/l20ilfYamtVQivOzRihcZVpA3ua7CP8Kj sZlA6RZzmXByjn8mTKN54BiA8hIyE1xwJdTabKeTS6FhFqz0skcko3q1yiC2wi24u2P/ sxMkJJM6NOWqg5LwOxUc+Bss++0xtRAYLW/b9o6zI7wPgHZ3pc5VqWC8SWu/HtVPWQXN iZcvSBIGbYMztz+fCK4CK1cXXQX0ZO1sHo6mu1XfAYMWRbF+AB1ICXarbha3Fc9BzNzX ZiCeNHlDB1QKNEBkHwZkjJD4YIBR31+80YzXKNc2WEbbTwAEanKS7Dilp8UfzPimseWQ dYIw== X-Gm-Message-State: AOJu0YyNjfadmNWd3qwabyRYl7J83OR05O5kKpxi+7JXc+M1y/8YQzQf E5kzEI5hO2Ufu9cte6IBHd+seHNpSnZty67vcbX7t4cl7LwZnHALags5mV10vtBlI4JbFKipmHb TE8ifacWSIg== X-Gm-Gg: AfdE7cnj5VKwFLYIpmSLAE2Azr4rrla/qxbk2BqvVl68SEWYKOkEpG23+JCovCS5gXV o95ArLh2/yd4/zfspRxC8jBwWydGInpm8o1TwW14w2ZbRdnO/eSY2EXVFN9IPpmWg7vDc1Ef5rh Ayc/35VUlDVgvfc/VOBJo9exhq6LKRFP4ik9YpYA2VSH+EKY8jocBZYHqZ4IaJM8obI8SM8uTPj laM1MUWKo0IZq1z92ps5d66KfZLPydpRp6sXYs1a15b7pZzVtHk8gt19ITwcxzPKDUJVV65KkBZ karvYEeO1cn/JugK59fOw/POaJvZGSxf8D/JfrcGPfxEVxbZC0taTNJD78OjCeAzNvyeClB2y+R HqomJFYK2mtcvOnJ84KR8IPIrPJMLN7JH7lhF3oX3MbJkBpoVj4hYpDnllBwpJr6PjIKb/diZTO /YGYlkF8xZIm9AVT+JICKNd0OPNibShK/dWatfLoSrbWZL7x6Z6VDUuBlu3vSmTrug4qDRUowkh 8GiSmCra/yDFXx+ThcfkQ== X-Received: by 2002:a05:600c:3f0a:b0:493:bfad:9d99 with SMTP id 5b1f17b1804b1-493d11db690mr104942445e9.13.1783334310515; Mon, 06 Jul 2026 03:38:30 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 33/49] target/arm: Implement FMOP4 (non-widening) for float64 Date: Mon, 6 Jul 2026 11:37:36 +0100 Message-ID: <20260706103752.320511-34-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260706103752.320511-1-peter.maydell@linaro.org> References: <20260706103752.320511-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32c; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32c.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783334542285158501 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260702204314.79224-4-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/cpu-features.h | 5 ++++ target/arm/tcg/helper-sme-defs.h | 4 +++ target/arm/tcg/sme.decode | 3 +++ target/arm/tcg/sme_helper.c | 42 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-sme.c | 8 ++++++ 5 files changed, 62 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index a1a4f37277..a07151e634 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1812,6 +1812,11 @@ static inline bool isar_feature_aa64_sme_mop4_f16f16= (const ARMISARegisters *id) return isar_feature_aa64_sme_mop4(id) && isar_feature_aa64_sme_f16f16(= id); } =20 +static inline bool isar_feature_aa64_sme_mop4_f64f64(const ARMISARegisters= *id) +{ + return isar_feature_aa64_sme_mop4(id) && isar_feature_aa64_sme_f64f64(= id); +} + /* * Feature tests for "does this exist in either 32-bit or 64-bit?" */ diff --git a/target/arm/tcg/helper-sme-defs.h b/target/arm/tcg/helper-sme-d= efs.h index ec7389d2ae..8a2ff88d49 100644 --- a/target/arm/tcg/helper-sme-defs.h +++ b/target/arm/tcg/helper-sme-defs.h @@ -363,3 +363,7 @@ DEF_HELPER_FLAGS_5(sme_ah_fmop4s_hh, TCG_CALL_NO_RWG, v= oid, ptr, ptr, ptr, fpst, DEF_HELPER_FLAGS_5(sme_fmop4a_ss, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fp= st, i32) DEF_HELPER_FLAGS_5(sme_fmop4s_ss, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fp= st, i32) DEF_HELPER_FLAGS_5(sme_ah_fmop4s_ss, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= fpst, i32) + +DEF_HELPER_FLAGS_5(sme_fmop4a_dd, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fp= st, i32) +DEF_HELPER_FLAGS_5(sme_fmop4s_dd, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fp= st, i32) +DEF_HELPER_FLAGS_5(sme_ah_fmop4s_dd, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= fpst, i32) diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index 227f3d7790..3b7d8e9430 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -1098,6 +1098,9 @@ LUTI4_s_4b 1100 0000 1001 101 1 00 00 00 ...= .0 zd:5 \ &mop4 zm=3D%mop4_zm zn=3D%mop4_zn @mop4_o2 .... .... ... m:1 .... .... .. n:1 ... . s:1 .. zad:2 \ &mop4 zm=3D%mop4_zm zn=3D%mop4_zn +@mop4_o3 .... .... ... m:1 .... .... .. n:1 ... . s:1 . zad:3 \ + &mop4 zm=3D%mop4_zm zn=3D%mop4_zn =20 FMOP4_hh 1000 0001 000. ...0 0000 00.. ..0. 100. @mop4_o1 FMOP4_ss 1000 0000 000. ...0 0000 00.. ..0. 00.. @mop4_o2 +FMOP4_dd 1000 0000 110. ...0 0000 00.. ..0. 1... @mop4_o3 diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index c4d149f7f7..81ec7ccfa1 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -2719,3 +2719,45 @@ void HELPER(sme_ah_fmop4s_ss)(void *vza, void *vzn, = void *vzm, { sme_mop4(vza, vzn, vzm, fpst, desc, sizeof(float32), inner_ah_fmop4s_s= s); } + +static void inner_fmop4a_dd(void *vd, void *vn, void *vm, void *vinfo) +{ + float64 *d =3D vd, *n =3D vn, *m =3D vm; + float_status *fpst =3D vinfo; + + *d =3D float64_muladd(*n, *m, *d, 0, fpst); +} + +void HELPER(sme_fmop4a_dd)(void *vza, void *vzn, void *vzm, + float_status *fpst, uint32_t desc) +{ + sme_mop4(vza, vzn, vzm, fpst, desc, sizeof(float64), inner_fmop4a_dd); +} + +static void inner_fmop4s_dd(void *vd, void *vn, void *vm, void *vinfo) +{ + float64 *d =3D vd, *n =3D vn, *m =3D vm; + float_status *fpst =3D vinfo; + + *d =3D float64_muladd(float64_chs(*n), *m, *d, 0, fpst); +} + +void HELPER(sme_fmop4s_dd)(void *vza, void *vzn, void *vzm, + float_status *fpst, uint32_t desc) +{ + sme_mop4(vza, vzn, vzm, fpst, desc, sizeof(float64), inner_fmop4s_dd); +} + +static void inner_ah_fmop4s_dd(void *vd, void *vn, void *vm, void *vinfo) +{ + float64 *d =3D vd, *n =3D vn, *m =3D vm; + float_status *fpst =3D vinfo; + + *d =3D float64_muladd(*n, *m, *d, float_muladd_negate_product, fpst); +} + +void HELPER(sme_ah_fmop4s_dd)(void *vza, void *vzn, void *vzm, + float_status *fpst, uint32_t desc) +{ + sme_mop4(vza, vzn, vzm, fpst, desc, sizeof(float64), inner_ah_fmop4s_d= d); +} diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index d19cd274ac..b6c49b9993 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -2039,3 +2039,11 @@ static gen_helper_gvec_3_ptr * const fmop4_ss[3] =3D= { gen_helper_sme_ah_fmop4s_ss }; TRANS_FEAT(FMOP4_ss, aa64_sme_mop4, do_mop4_fp, a, MO_32, FPST_ZA, fmop4_s= s) + +static gen_helper_gvec_3_ptr * const fmop4_dd[3] =3D { + gen_helper_sme_fmop4a_dd, + gen_helper_sme_fmop4s_dd, + gen_helper_sme_ah_fmop4s_dd +}; +TRANS_FEAT(FMOP4_dd, aa64_sme_mop4_f64f64, + do_mop4_fp, a, MO_64, FPST_ZA, fmop4_dd) --=20 2.43.0 From nobody Sun Jul 26 11:01:49 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1783334434; cv=none; d=zohomail.com; s=zohoarc; b=AvnyQOO3aofcnZ3GVFPKIgna/r6crk6EyVkZ7MElbjvRi4QTkTdfgJnCt052w/3U3HblFGEkEUpYS/7Wvy7Z9nFp6RlzmIAnWszIdhT/SPjkgotGTRTmoFemHwzlytOY71XzddYqaehtCoHDc+VXXFfxOHKU+B2CLrZbequtFp0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783334434; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=Pgsqydvu9sqRLWAJKvWtPpQxGrfm9SnVqtdBC2x5d1s=; b=Sx9aWCxfno+7G1LxPFV8TiV8lhOfPpp1B/3WxuN5YVIio22b7WK1IxQW0qZvgolkHNjQ9iAyNpFlyl4rzd5QzaHwvsjdQ6UR0RSY3IBW60CFr/+HRGEkjptXKDn3FcnQw1UVzBS7GejjSja04N+ERMe6bvLxi5N5EnV/OTo3rkY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783334434104472.2620487542198; Mon, 6 Jul 2026 03:40:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wggii-0007Hh-SY; Mon, 06 Jul 2026 06:38:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wggig-0007EN-HQ for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:34 -0400 Received: from mail-wm1-x32e.google.com ([2a00:1450:4864:20::32e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wggie-0003Ui-Mj for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:34 -0400 Received: by mail-wm1-x32e.google.com with SMTP id 5b1f17b1804b1-493b7612475so26287905e9.3 for ; Mon, 06 Jul 2026 03:38:32 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63b6f1bsm329501805e9.10.2026.07.06.03.38.30 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jul 2026 03:38:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783334311; x=1783939111; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=Pgsqydvu9sqRLWAJKvWtPpQxGrfm9SnVqtdBC2x5d1s=; b=yBKurZ5cdlcxC0HC8lCWJuN2GRamZoWzZWbqXGRl4113Qy7/IWFW+X36lbUQoWitbi mSpDIXJ+eu1zqjt92AB09rmQMO/WEwvnjy1XCvMy5OwGdG8TQC6YSn8VXgebfxxrvVtN 4g1eji61dI0bpGg94ny2KlnNXqk/rSv9dXzK7x/Fi8NSSbLTCAe5G5vV7Ui/GUIkDqA+ BUnX4KFvAI0ay5hkSxRpcga7kgiSPHYZQg5ngVn634MjX9PGKU/Ecj85z0kckLoZj8Mv QyCf7P6GwIq2d4W1qNSSUgFSkLkg9l6BV3zHUMPqM3a/WNSNcmFBV2S/KEoMElomv/s4 rG0g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783334311; x=1783939111; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=Pgsqydvu9sqRLWAJKvWtPpQxGrfm9SnVqtdBC2x5d1s=; b=cduuxgUE9z+eUXZGgKm389PbCm/WW2PZlAMUUIiCmmOTx9xz5pAgtrJfZdGMlzxGmS 0LC9gh25ue0+8kB+bFHKRhYmeproaBTytMohNrDNn1nBIcfWzdxHPm6myrbWuMBU5VJy BBMZYMVl6Ql0b4YT0ToRZX8G60NXO4gN5bqGp+KIagBlP1wvTo19VfTO2dZ2c3cwCXCv Ba61ZET6Uf8r2eXyz3TLfuNu/VeLwkKIgri7aWNJjlRKAhmUM5Q9JSh/YwZCQ0jmHA6i 45x4YvWFzcCkO8YAsIDGuJBdiAF4XByfkZR3hO/DljjS9w3wnWZaCTzNiNJ/ejpQugw3 Zeww== X-Gm-Message-State: AOJu0YyV1WxVceZp5QX5QmfZDef4dPZkfOPLFVKtM45oyDUB+xzwCB2V ARwFQPHKnFj7tjZuA7c/voE8EgmVYaDBH1AohtHWubCbXFijESFem85lQh03ZM/z3Ox7mggYu91 Bns767JaDCw== X-Gm-Gg: AfdE7cl++Ce4MDoevLAJsSkCQ0JSjY7LOn3r2h9liifevTJreBEX56SbqnpF/Ei4IYW AbHZ4/5IwmyZAdre/tmBNXVK74hGKVSdSilIUa7FhLNVd07WWt9dMUAAObqBWmLpgtaMCaJPLM4 MFU9XxH9yYR4q33FJCq4/4AVWf36YxMitvRY+FdMXzYw+awL9drigZZW7WLoOlNKXzuqcFjkwYq bxxIAY9WsIoXscU3R+Q5zaMQLKWr3mxS9ExZmgm3KXeJKoZBYUSOeCmInUZBg8a9gg76IZzEZpz k3EksWO6FVEPpwI6tYGice7qRz9uaA8+CRyn/J+hxOaZsvmq4filGaRYuOd5UCPQxAuP7i7HdIa aFp4f1Dzfy32wooO1jH/Am4y7qPd731rZhAFgRsU87OHDJ9ZPAbYl6rOcT06mhNxLNv+OrMTKuL ZBouWQ621njL9ISSTZIJ6tIGQQEWjQ25vyZmsAAMyKQfgKqDdVxw+bP3FGeXc8YVtM0QhHVHBWF 0+Dq5T4Ot+NcIIfp5zz4IBitL5jXbPg X-Received: by 2002:a05:600c:c0d1:20b0:493:cfc8:12e7 with SMTP id 5b1f17b1804b1-493d11f38e9mr84141875e9.25.1783334311323; Mon, 06 Jul 2026 03:38:31 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 34/49] target/arm: Implement BFMOP4 (non-widening) Date: Mon, 6 Jul 2026 11:37:37 +0100 Message-ID: <20260706103752.320511-35-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260706103752.320511-1-peter.maydell@linaro.org> References: <20260706103752.320511-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32e; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32e.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783334435695158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260702204314.79224-5-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/cpu-features.h | 5 ++++ target/arm/tcg/helper-sme-defs.h | 4 +++ target/arm/tcg/sme.decode | 1 + target/arm/tcg/sme_helper.c | 42 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-sme.c | 8 ++++++ 5 files changed, 60 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index a07151e634..b4138e976b 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1807,6 +1807,11 @@ isar_feature_aa64_sme_f16f16_or_f8f16(const ARMISARe= gisters *id) return isar_feature_aa64_sme_f16f16(id) || isar_feature_aa64_sme_f8f16= (id); } =20 +static inline bool isar_feature_aa64_sme_mop4_b16b16(const ARMISARegisters= *id) +{ + return isar_feature_aa64_sme_mop4(id) && isar_feature_aa64_sme_b16b16(= id); +} + static inline bool isar_feature_aa64_sme_mop4_f16f16(const ARMISARegisters= *id) { return isar_feature_aa64_sme_mop4(id) && isar_feature_aa64_sme_f16f16(= id); diff --git a/target/arm/tcg/helper-sme-defs.h b/target/arm/tcg/helper-sme-d= efs.h index 8a2ff88d49..05ccb0d1e2 100644 --- a/target/arm/tcg/helper-sme-defs.h +++ b/target/arm/tcg/helper-sme-defs.h @@ -367,3 +367,7 @@ DEF_HELPER_FLAGS_5(sme_ah_fmop4s_ss, TCG_CALL_NO_RWG, v= oid, ptr, ptr, ptr, fpst, DEF_HELPER_FLAGS_5(sme_fmop4a_dd, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fp= st, i32) DEF_HELPER_FLAGS_5(sme_fmop4s_dd, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fp= st, i32) DEF_HELPER_FLAGS_5(sme_ah_fmop4s_dd, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= fpst, i32) + +DEF_HELPER_FLAGS_5(sme_bfmop4a_hh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, f= pst, i32) +DEF_HELPER_FLAGS_5(sme_bfmop4s_hh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, f= pst, i32) +DEF_HELPER_FLAGS_5(sme_ah_bfmop4s_hh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr= , fpst, i32) diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index 3b7d8e9430..6021803ca0 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -1101,6 +1101,7 @@ LUTI4_s_4b 1100 0000 1001 101 1 00 00 00 ...= .0 zd:5 \ @mop4_o3 .... .... ... m:1 .... .... .. n:1 ... . s:1 . zad:3 \ &mop4 zm=3D%mop4_zm zn=3D%mop4_zn =20 +BFMOP4_hh 1000 0001 001. ...0 0000 00.. ..0. 100. @mop4_o1 FMOP4_hh 1000 0001 000. ...0 0000 00.. ..0. 100. @mop4_o1 FMOP4_ss 1000 0000 000. ...0 0000 00.. ..0. 00.. @mop4_o2 FMOP4_dd 1000 0000 110. ...0 0000 00.. ..0. 1... @mop4_o3 diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index 81ec7ccfa1..0de7dd84e5 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -2761,3 +2761,45 @@ void HELPER(sme_ah_fmop4s_dd)(void *vza, void *vzn, = void *vzm, { sme_mop4(vza, vzn, vzm, fpst, desc, sizeof(float64), inner_ah_fmop4s_d= d); } + +static void inner_bfmop4a_hh(void *vd, void *vn, void *vm, void *vinfo) +{ + bfloat16 *d =3D vd, *n =3D vn, *m =3D vm; + float_status *fpst =3D vinfo; + + *d =3D bfloat16_muladd(*n, *m, *d, 0, fpst); +} + +void HELPER(sme_bfmop4a_hh)(void *vza, void *vzn, void *vzm, + float_status *fpst, uint32_t desc) +{ + sme_mop4(vza, vzn, vzm, fpst, desc, sizeof(bfloat16), inner_bfmop4a_hh= ); +} + +static void inner_bfmop4s_hh(void *vd, void *vn, void *vm, void *vinfo) +{ + bfloat16 *d =3D vd, *n =3D vn, *m =3D vm; + float_status *fpst =3D vinfo; + + *d =3D bfloat16_muladd(bfloat16_chs(*n), *m, *d, 0, fpst); +} + +void HELPER(sme_bfmop4s_hh)(void *vza, void *vzn, void *vzm, + float_status *fpst, uint32_t desc) +{ + sme_mop4(vza, vzn, vzm, fpst, desc, sizeof(bfloat16), inner_bfmop4s_hh= ); +} + +static void inner_ah_bfmop4s_hh(void *vd, void *vn, void *vm, void *vinfo) +{ + bfloat16 *d =3D vd, *n =3D vn, *m =3D vm; + float_status *fpst =3D vinfo; + + *d =3D bfloat16_muladd(*n, *m, *d, float_muladd_negate_product, fpst); +} + +void HELPER(sme_ah_bfmop4s_hh)(void *vza, void *vzn, void *vzm, + float_status *fpst, uint32_t desc) +{ + sme_mop4(vza, vzn, vzm, fpst, desc, sizeof(bfloat16), inner_ah_bfmop4s= _hh); +} diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index b6c49b9993..f833975875 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -2025,6 +2025,14 @@ static bool do_mop4_fp(DisasContext *s, arg_mop4 *a,= MemOp esz, return true; } =20 +static gen_helper_gvec_3_ptr * const bfmop4_hh[3] =3D { + gen_helper_sme_bfmop4a_hh, + gen_helper_sme_bfmop4s_hh, + gen_helper_sme_ah_bfmop4s_hh +}; +TRANS_FEAT(BFMOP4_hh, aa64_sme_mop4_b16b16, + do_mop4_fp, a, MO_16, FPST_ZA, bfmop4_hh) + static gen_helper_gvec_3_ptr * const fmop4_hh[3] =3D { gen_helper_sme_fmop4a_hh, gen_helper_sme_fmop4s_hh, --=20 2.43.0 From nobody Sun Jul 26 11:01:49 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1783334384; cv=none; d=zohomail.com; s=zohoarc; b=Qshv6R2K7VL7SVf6dTyv+ETUsSINILhsl/b0IDfGKwe5H4z7ROD3hk/IpgbZx3kSwSPnliz/UDRyQeH7pZIjYZPyjH/bdwjzxvL8RDBDBvc2ZKFoFE6aY96pPwFwOyE10K0m6tjlPvfu91Lh0yqJC8yRJLttR1kV8Qvgk9eMu7c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783334384; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=A8R8dZlCN8WO6uXUoBiK2ihGrMytlRB4Ym4GCJaga+8=; b=LykfBZ3sxQn0VnwUlat8JjwG16A8vUKIxQxGSiPLqS455Fp5pFhnA/UEDeXboWuS6T8R4j6IonJEahHv4EPcDeqLAdPU+JGQ0H04Zuiz1plzxjj6vNgFMimlWM75K1egc5flHd9t4sOjF8F/YUXCvXfgd7FKd1pEY8avndZr5VI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783334384895905.1565870519363; Mon, 6 Jul 2026 03:39:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wggik-0007Ik-08; Mon, 06 Jul 2026 06:38:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wggih-0007Fb-Fz for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:35 -0400 Received: from mail-wm1-x333.google.com ([2a00:1450:4864:20::333]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wggif-0003V0-Iy for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:35 -0400 Received: by mail-wm1-x333.google.com with SMTP id 5b1f17b1804b1-493ba701891so22642885e9.3 for ; Mon, 06 Jul 2026 03:38:33 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63b6f1bsm329501805e9.10.2026.07.06.03.38.31 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jul 2026 03:38:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783334312; x=1783939112; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=A8R8dZlCN8WO6uXUoBiK2ihGrMytlRB4Ym4GCJaga+8=; b=b8jowHQeOxoy/UuKDHA9yNgQlQHphf/+NBJFrjW98cudN1Pgm1sutpMxDRzlaNIQfg qRxvSml+yNSxKjdpOi/cjOm/uwLZ3YJEu2AVHJWZXKjgWpPpTVukdzhA83gKKn+V2/y8 k4I3xKgcRWA8FWsnJdj29xLt8OlyN4ZCwKwAG24ln9AxhbIAJfvtpUJGr1EehpI+Sv+H SEgJwhI6WieJ/p5Ynv+s6tv8lCdbZdZvMVqPwYVwzCPQUTO6RCE16IZdFBbGw5+RmB+9 ouzyc5aE0qIuT/+ZVNOdDcfD7kakSQMZkohEhDaOy6UjzOo5TwFBLRNzLK5yE+QA+nOg MxOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783334312; x=1783939112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=A8R8dZlCN8WO6uXUoBiK2ihGrMytlRB4Ym4GCJaga+8=; b=q0JXjhtWanbJTR9ERavv2HHS0GKygs1vJiLFSBbeVbMufgUVAOknysZeKwu01hwoiF t3TONgNCKLYCxBbE5EJplqQr+dF5m2Wly6G5DszZPZREN0zLmXXqqL6ZkFflLODHzSgg 3E/4fY9kGL9rNAl4pWghMa4dZzYfIe/fQbWWvlMmpQRZc5NMG7vCw9cegUni9Pp8tg7o AM+iU/ck5qVcFA85bb//5KAtB7G1VfiyFtnw1fTm8tDRVQmdCARsjsbuFltoA5NlqRD5 wdK8TXxL7HTpPKx0GaCh4D8ys7W/9cV68OgqKEHtBIkLV3OCj138GRUIXxvug3D+mhyO tlsg== X-Gm-Message-State: AOJu0YzhJL7TmkioBA2xMqraYDGwzE497TS/BqXZqNNaMRhOzSBUnjS0 4Wj17CNK8eyXgzESnpCS9atKzpEBEMpl8jAriUwlCHeKWnRg2QyQN+nJNz6BB7q//jJcopr5on/ revG1tMtkPg== X-Gm-Gg: AfdE7cn8y0qPqKPRdJ0UhMJFKhxMtMkyg4FuySj9ZxFZX5m3UoALYF9Z0KAtueYDYfo mLHsjpMBwtfKLvL3Gb9EHtVcFPtAuHrnYTm6ZeEv6e1lxqrnGSWY33SnwXIICtAsj69UnK9w+L5 xOEsYhgwELOpKt9kYf6On+T2f53IrM9NpwaII9jJLNj6nQQpFd8x+heX13sZpAad224ib8xgcX1 +GosVVWtDZSOx6WQXtUgc/ZXZJvXZrT+0K1bjp/ujWOFpFZd7rRfwY7NShtoZBM1CFjA7D6z9cP i/zynPdRGr1bhTQ/tI+lF7hBSUiPXKbK1QZcHVFgPD3tAvpK6Wu+MhWBzA4JXpQqGZeAr3oPd8k I+gJ6uppwCVj9P0VCHhLr+UbqiNsLYgGtpBjIR0mHI8wKlt+stQrhHbUnkX3bnNLWRTc5e1trM2 +Sa698tywKYssiXH7OgTJh67dEzX8kf35xh5Q8CU0wBpal89kY2Qxc+2fUjD2JaogG6FB97k2mn OGbZMsmdklqcAQ7ZM14HvNRgxj7HJP4 X-Received: by 2002:a05:600d:6409:10b0:493:bc4a:c6b5 with SMTP id 5b1f17b1804b1-493d1644aafmr84702725e9.39.1783334312125; Mon, 06 Jul 2026 03:38:32 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 35/49] target/arm: Implement BFMOP4 (widening) Date: Mon, 6 Jul 2026 11:37:38 +0100 Message-ID: <20260706103752.320511-36-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260706103752.320511-1-peter.maydell@linaro.org> References: <20260706103752.320511-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::333; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x333.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783334385639158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260702204314.79224-6-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/tcg/helper-sme-defs.h | 4 ++ target/arm/tcg/sme.decode | 2 + target/arm/tcg/sme_helper.c | 84 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-sme.c | 16 ++++-- 4 files changed, 103 insertions(+), 3 deletions(-) diff --git a/target/arm/tcg/helper-sme-defs.h b/target/arm/tcg/helper-sme-d= efs.h index 05ccb0d1e2..0e4bb12b38 100644 --- a/target/arm/tcg/helper-sme-defs.h +++ b/target/arm/tcg/helper-sme-defs.h @@ -371,3 +371,7 @@ DEF_HELPER_FLAGS_5(sme_ah_fmop4s_dd, TCG_CALL_NO_RWG, v= oid, ptr, ptr, ptr, fpst, DEF_HELPER_FLAGS_5(sme_bfmop4a_hh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, f= pst, i32) DEF_HELPER_FLAGS_5(sme_bfmop4s_hh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, f= pst, i32) DEF_HELPER_FLAGS_5(sme_ah_bfmop4s_hh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr= , fpst, i32) + +DEF_HELPER_FLAGS_5(sme_bfmop4a_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, e= nv, i32) +DEF_HELPER_FLAGS_5(sme_bfmop4s_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, e= nv, i32) +DEF_HELPER_FLAGS_5(sme_ah_bfmop4s_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr= , env, i32) diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index 6021803ca0..12a3a61432 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -1105,3 +1105,5 @@ BFMOP4_hh 1000 0001 001. ...0 0000 00.. ..0. 10= 0. @mop4_o1 FMOP4_hh 1000 0001 000. ...0 0000 00.. ..0. 100. @mop4_o1 FMOP4_ss 1000 0000 000. ...0 0000 00.. ..0. 00.. @mop4_o2 FMOP4_dd 1000 0000 110. ...0 0000 00.. ..0. 1... @mop4_o3 + +BFMOP4_sh 1000 0001 000. ...0 0000 00.. ..0. 00.. @mop4_o2 diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index 0de7dd84e5..5a661ca616 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -2803,3 +2803,87 @@ void HELPER(sme_ah_bfmop4s_hh)(void *vza, void *vzn,= void *vzm, { sme_mop4(vza, vzn, vzm, fpst, desc, sizeof(bfloat16), inner_ah_bfmop4s= _hh); } + +static void inner_bfmop4a_sh(void *vd, void *vn, void *vm, void *vinfo) +{ + float32 *d =3D vd; + uint32_t *n =3D vn, *m =3D vm; + float_status *fpst =3D vinfo; + + *d =3D bfdotadd(*d, *n, *m, fpst); +} + +static void inner_ebf_bfmop4a_sh(void *vd, void *vn, void *vm, void *vinfo) +{ + float32 *d =3D vd; + uint32_t *n =3D vn, *m =3D vm; + float_status *fpst =3D vinfo; + + *d =3D bfdotadd_ebf(*d, *n, *m, fpst); +} + +void HELPER(sme_bfmop4a_sh)(void *vza, void *vzn, void *vzm, + CPUArchState *env, uint32_t desc) +{ + float_status fpst; + + sme_mop4(vza, vzn, vzm, &fpst, desc, sizeof(float32), + is_ebf(env, &fpst) ? inner_ebf_bfmop4a_sh + : inner_bfmop4a_sh); +} + +static void inner_bfmop4s_sh(void *vd, void *vn, void *vm, void *vinfo) +{ + float32 *d =3D vd; + uint32_t *n =3D vn, *m =3D vm; + float_status *fpst =3D vinfo; + + *d =3D bfdotadd(*d, *n ^ 0x80008000u, *m, fpst); +} + +static void inner_ebf_bfmop4s_sh(void *vd, void *vn, void *vm, void *vinfo) +{ + float32 *d =3D vd; + uint32_t *n =3D vn, *m =3D vm; + float_status *fpst =3D vinfo; + + *d =3D bfdotadd_ebf(*d, *n ^ 0x80008000u, *m, fpst); +} + +void HELPER(sme_bfmop4s_sh)(void *vza, void *vzn, void *vzm, + CPUArchState *env, uint32_t desc) +{ + float_status fpst; + + sme_mop4(vza, vzn, vzm, &fpst, desc, sizeof(float32), + is_ebf(env, &fpst) ? inner_ebf_bfmop4s_sh + : inner_bfmop4s_sh); +} + +static void inner_ah_bfmop4s_sh(void *vd, void *vn, void *vm, void *vinfo) +{ + float32 *d =3D vd; + uint32_t *n =3D vn, *m =3D vm; + float_status *fpst =3D vinfo; + + *d =3D bfdotadd(*d, bf16mop_ah_neg_adj_pair(*n, -1), *m, fpst); +} + +static void inner_ebf_ah_bfmop4s_sh(void *vd, void *vn, void *vm, void *vi= nfo) +{ + float32 *d =3D vd; + uint32_t *n =3D vn, *m =3D vm; + float_status *fpst =3D vinfo; + + *d =3D bfdotadd_ebf(*d, bf16mop_ah_neg_adj_pair(*n, -1), *m, fpst); +} + +void HELPER(sme_ah_bfmop4s_sh)(void *vza, void *vzn, void *vzm, + CPUArchState *env, uint32_t desc) +{ + float_status fpst; + + sme_mop4(vza, vzn, vzm, &fpst, desc, sizeof(float32), + is_ebf(env, &fpst) ? inner_ebf_ah_bfmop4s_sh + : inner_ah_bfmop4s_sh); +} diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index f833975875..df4a5c2125 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -2004,8 +2004,7 @@ TRANS_FEAT(LUTI4_s_4b, aa64_sme2p1_lutv2, do_lut_s4, = a, gen_helper_sme2_luti4_4b) =20 static bool do_mop4_fp(DisasContext *s, arg_mop4 *a, MemOp esz, - ARMFPStatusFlavour e_fpst, - gen_helper_gvec_3_ptr * const fns[3]) + int e_fpst, gen_helper_gvec_3_ptr * const fns[3]) { int svl =3D streaming_vec_reg_size(s); uint32_t desc =3D simd_desc(svl, svl, (a->m << 1) | a->n); @@ -2019,7 +2018,11 @@ static bool do_mop4_fp(DisasContext *s, arg_mop4 *a,= MemOp esz, za =3D get_tile(s, esz, a->zad); zn =3D vec_full_reg_ptr(s, a->zn); zm =3D vec_full_reg_ptr(s, a->zm); - fpst =3D fpstatus_ptr(e_fpst); + if (e_fpst >=3D 0) { + fpst =3D fpstatus_ptr(e_fpst); + } else { + fpst =3D tcg_env; + } =20 fns[fns_idx](za, zn, zm, fpst, tcg_constant_i32(desc)); return true; @@ -2055,3 +2058,10 @@ static gen_helper_gvec_3_ptr * const fmop4_dd[3] =3D= { }; TRANS_FEAT(FMOP4_dd, aa64_sme_mop4_f64f64, do_mop4_fp, a, MO_64, FPST_ZA, fmop4_dd) + +static gen_helper_gvec_3_ptr * const bfmop4_sh[3] =3D { + gen_helper_sme_bfmop4a_sh, + gen_helper_sme_bfmop4s_sh, + gen_helper_sme_ah_bfmop4s_sh +}; +TRANS_FEAT(BFMOP4_sh, aa64_sme_mop4, do_mop4_fp, a, MO_32, FPST_ENV, bfmop= 4_sh) --=20 2.43.0 From nobody Sun Jul 26 11:01:49 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1783334373; cv=none; d=zohomail.com; s=zohoarc; b=nhKbDIe8v2Ob3JcGDZ8v5VDSJtxrai9G+gNMNbfyUPsG8byCuz13K/BI61wCRWcbHfskIWGZjTtzJMdHCu5v0cI4mHQYeDbAg70ylEnB6WNVYsTEHcAgOhYomxIBpZ/gCnkk1GdQiBAhYYHSI6gjWaN+7cr3Hst1M+lVXf0A5us= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783334373; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=PTSki4fFjjWR5YtJRjEnLPihB0lD5gKYOdHO4vCIWUk=; b=Vr6cHWjrI7FAr1DT8X3WfqghVNBwuYsIvugBziDCPaV9Cn1ldZpuUBdbtti/ZL2a9ui4FwA0dRrmGy460gq22Xi38b1r7LdtjnfLth7B3J02pYo6SnB9uZx3h5YoWOn6Vzmz4pW+Ak+bVgLkfyQW7HWcDd4SAkVF39uNBJKRL0s= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783334373228883.4937748888341; Mon, 6 Jul 2026 03:39:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wggik-0007JT-Tj; Mon, 06 Jul 2026 06:38:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wggii-0007Gz-4E for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:36 -0400 Received: from mail-wm1-x333.google.com ([2a00:1450:4864:20::333]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wggig-0003V9-9k for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:35 -0400 Received: by mail-wm1-x333.google.com with SMTP id 5b1f17b1804b1-493c7902f47so16733325e9.1 for ; Mon, 06 Jul 2026 03:38:33 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63b6f1bsm329501805e9.10.2026.07.06.03.38.32 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jul 2026 03:38:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783334313; x=1783939113; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=PTSki4fFjjWR5YtJRjEnLPihB0lD5gKYOdHO4vCIWUk=; b=Ott/F7XYSjuPXiEbgNscseL/KKJCLO+E+NEq6cAi/Mqexkz+zWOAY+LrYuXwyBnHMK spB2uhlXVAjTuRh0UGnDI3DQwaPmHPNm9eJ2hKkYsPLE+y+WGtxx1dPywIZ7y26twY6s gpZmUidulbalHJRvsx9TWKAEPC2aj8WSFl9MQsLH65de3D96ybh8FbPs1YKoy+Fha2BW v1lu/j/l6D93RKq9GujXRaaRy8FEeAMMchIHOs6D7XArIoharZ/VIoeYepQ8i+oBoJW4 2TRMqcdOa4+QVQYakFlehLFihv4dVjYSMCx8rjkTd4ZPgx2/vVDMhHAoA6B68lYn8bjp Xi/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783334313; x=1783939113; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=PTSki4fFjjWR5YtJRjEnLPihB0lD5gKYOdHO4vCIWUk=; b=I5+d8e7gfvnFnfsni3dgO5cbh9MGKVBTRoGfa6oqg5Yn9cyYsq55tE92fdE86qqzcp fCWcb0D4+LjqJ+0CZ4g/gU1EIz3T0Mk1hkwl0B6Xs1ZLlFJqD+LIaK7QncyPkhcp0KnR aaCBG48G7gnXrvXF/HcojDmmiRgUsWUhlxX54UMOAe9eBxSlztARFpZpVRLHw9LA0OIb UwsQhN7ZJ/9lCZbxLGCPjB2vzt11KDYcO9dMUTNsKRuDZB69KbLAD033c3fhux6TbpPq CsCCs93FyJ6F8MjLekID6wt01SrWC6Sui1zVvwC/x/3aW9GXjyHRkealS0cO14GW1SdJ 27GA== X-Gm-Message-State: AOJu0YwoY/bYpqjRDM1Wh6EOlvg3mq90Z+8DLtNcAYO7dB4Q3Nu+D3ue kfdPZu6pxWJpdnhAGUF+RsI40ydDOB21Ex7pZhJIj410GixY4+ze2OUv4VOiREmP3PRXL5EkLP8 4FB2m/x9yMw== X-Gm-Gg: AfdE7clwklpM6Lh9G02dMZfEkoJLxeBnoVzp5P6A8DyQItKc1bffyUgbDiBCRFBRmUm gIi1vWErJYQtdLgz4txW3S6YMDrzfruScRW/HRakNY5fN6HkHdsCzXv0/yy2+fVy1gzkOnzI/MC WwChh+mddENwfzC+3JFmQZNtGLoY75t/rWJTTFtxToD3wUelirF8Sbwx6znhLumq3lwDvCwbXv8 5mvl7XcixyKq/T/5IeZJm8hZEsorsuiqD6Wqz6goFprmiNXthrh4A+HJ8Zgizep2PlX8Lj/wZzd xeZRDd14Awn8iHqlz8kskK/BDkPuQiV2HuB9D0EILa8dlKypeZZdwmU6nSnYvZAwEoUQnRpFTsL RkzMya23tvNdCrpuym7yzQC0FvKHTG/xK3yQGh5aJD9Pl9CsYS4COm0E92Oq+swNPFOoY6gRx/V vPs3kfNIJTtUDLb74LPXFiokD8x4f9dJ5/28K+O3OIgSdJ3qyK76udf2LW7Nt/bhQdTV83+qF3a b0aNbRoDC7w7J0hmJLoiCl52Trkqbn8 X-Received: by 2002:a05:600c:8b66:b0:493:bc4a:d5f5 with SMTP id 5b1f17b1804b1-493d11fdb52mr109037635e9.39.1783334312869; Mon, 06 Jul 2026 03:38:32 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 36/49] target/arm: Implement FMOP4 (widening, 2-way fp16 to fp32) Date: Mon, 6 Jul 2026 11:37:39 +0100 Message-ID: <20260706103752.320511-37-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260706103752.320511-1-peter.maydell@linaro.org> References: <20260706103752.320511-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::333; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x333.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783334375315158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260702204314.79224-7-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/tcg/helper-sme-defs.h | 4 +++ target/arm/tcg/sme.decode | 1 + target/arm/tcg/sme_helper.c | 51 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-sme.c | 7 +++++ 4 files changed, 63 insertions(+) diff --git a/target/arm/tcg/helper-sme-defs.h b/target/arm/tcg/helper-sme-d= efs.h index 0e4bb12b38..780b8f162a 100644 --- a/target/arm/tcg/helper-sme-defs.h +++ b/target/arm/tcg/helper-sme-defs.h @@ -375,3 +375,7 @@ DEF_HELPER_FLAGS_5(sme_ah_bfmop4s_hh, TCG_CALL_NO_RWG, = void, ptr, ptr, ptr, fpst DEF_HELPER_FLAGS_5(sme_bfmop4a_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, e= nv, i32) DEF_HELPER_FLAGS_5(sme_bfmop4s_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, e= nv, i32) DEF_HELPER_FLAGS_5(sme_ah_bfmop4s_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr= , env, i32) + +DEF_HELPER_FLAGS_5(sme_fmop4a_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, en= v, i32) +DEF_HELPER_FLAGS_5(sme_fmop4s_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, en= v, i32) +DEF_HELPER_FLAGS_5(sme_ah_fmop4s_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= env, i32) diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index 12a3a61432..ea9f459e38 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -1107,3 +1107,4 @@ FMOP4_ss 1000 0000 000. ...0 0000 00.. ..0. 00= .. @mop4_o2 FMOP4_dd 1000 0000 110. ...0 0000 00.. ..0. 1... @mop4_o3 =20 BFMOP4_sh 1000 0001 000. ...0 0000 00.. ..0. 00.. @mop4_o2 +FMOP4_sh 1000 0001 001. ...0 0000 00.. ..0. 00.. @mop4_o2 diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index 5a661ca616..123f459342 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -2887,3 +2887,54 @@ void HELPER(sme_ah_bfmop4s_sh)(void *vza, void *vzn,= void *vzm, is_ebf(env, &fpst) ? inner_ebf_ah_bfmop4s_sh : inner_ah_bfmop4s_sh); } + +static void inner_fmop4a_sh(void *vd, void *vn, void *vm, void *vinfo) +{ + float32 *d =3D vd; + uint32_t *n =3D vn, *m =3D vm; + CPUArchState *env =3D vinfo; + + *d =3D f16_dotadd(*d, *n, *m, + &env->vfp.fp_status[FPST_ZA_F16], + &env->vfp.fp_status[FPST_ZA]); +} + +void HELPER(sme_fmop4a_sh)(void *vza, void *vzn, void *vzm, + CPUArchState *env, uint32_t desc) +{ + sme_mop4(vza, vzn, vzm, env, desc, sizeof(float32), inner_fmop4a_sh); +} + +static void inner_fmop4s_sh(void *vd, void *vn, void *vm, void *vinfo) +{ + float32 *d =3D vd; + uint32_t *n =3D vn, *m =3D vm; + CPUArchState *env =3D vinfo; + + *d =3D f16_dotadd(*d, *n ^ 0x80008000u, *m, + &env->vfp.fp_status[FPST_ZA_F16], + &env->vfp.fp_status[FPST_ZA]); +} + +void HELPER(sme_fmop4s_sh)(void *vza, void *vzn, void *vzm, + CPUArchState *env, uint32_t desc) +{ + sme_mop4(vza, vzn, vzm, env, desc, sizeof(float32), inner_fmop4s_sh); +} + +static void inner_ah_fmop4s_sh(void *vd, void *vn, void *vm, void *vinfo) +{ + float32 *d =3D vd; + uint32_t *n =3D vn, *m =3D vm; + CPUArchState *env =3D vinfo; + + *d =3D f16_dotadd(*d, f16mop_ah_neg_adj_pair(*n, -1), *m, + &env->vfp.fp_status[FPST_ZA_F16], + &env->vfp.fp_status[FPST_ZA]); +} + +void HELPER(sme_ah_fmop4s_sh)(void *vza, void *vzn, void *vzm, + CPUArchState *env, uint32_t desc) +{ + sme_mop4(vza, vzn, vzm, env, desc, sizeof(float32), inner_ah_fmop4s_sh= ); +} diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index df4a5c2125..544a825595 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -2065,3 +2065,10 @@ static gen_helper_gvec_3_ptr * const bfmop4_sh[3] = =3D { gen_helper_sme_ah_bfmop4s_sh }; TRANS_FEAT(BFMOP4_sh, aa64_sme_mop4, do_mop4_fp, a, MO_32, FPST_ENV, bfmop= 4_sh) + +static gen_helper_gvec_3_ptr * const fmop4_sh[3] =3D { + gen_helper_sme_fmop4a_sh, + gen_helper_sme_fmop4s_sh, + gen_helper_sme_ah_fmop4s_sh +}; +TRANS_FEAT(FMOP4_sh, aa64_sme_mop4, do_mop4_fp, a, MO_32, FPST_ENV, fmop4_= sh) --=20 2.43.0 From nobody Sun Jul 26 11:01:49 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1783334430; cv=none; d=zohomail.com; s=zohoarc; b=cjTG3ONaAIy8GlCmLjFWygFWDH93BwRfCOp0Z1gmBB7v6ux3jlRwk/1gIGd0vVbtw6Cfs5S+5gRaVgEe6NQdRvGGrDGVVZYDZ24TUqRCYr5vO/yM0qVMy1hwuBG4QYRkrQSwci4JgYNLxtTg4zJOvuhyooUZaSC0DYWEJsSZbOY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783334430; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=gycfgN4ilMybUVWebBbS11Tu+/uThpasypGL0zVk09o=; b=cXpirZNAyjPaaD+OhJYh/rmO8Y/zb29RBxIM50jS5U8Hhpu4SQCCfdqYP0Um+06xGOBtTF8ZBzAbasgd3poHiIOgNn/Ykeu9QZX21Wk0zt8yYXfzNtp/xG5lNG79QEY3BrwSY/9mwFWoTYhr3ds5txTeo+PAHC7Cb39yGDGCwoU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783334430220533.1929496924528; Mon, 6 Jul 2026 03:40:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wggin-0007RE-Vq; Mon, 06 Jul 2026 06:38:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wggim-0007Mq-9E for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:40 -0400 Received: from mail-wm1-x330.google.com ([2a00:1450:4864:20::330]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wggih-0003VJ-4q for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:39 -0400 Received: by mail-wm1-x330.google.com with SMTP id 5b1f17b1804b1-493b6f1b14bso11319495e9.0 for ; Mon, 06 Jul 2026 03:38:34 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63b6f1bsm329501805e9.10.2026.07.06.03.38.32 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jul 2026 03:38:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783334314; x=1783939114; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=gycfgN4ilMybUVWebBbS11Tu+/uThpasypGL0zVk09o=; b=baBEoOkqw2mQ3SaXCoeG2xCNVzRhFQx9rWq9kF4eY7JCjaW7r3LujusdBbWYoByHg3 pY5+263ATmLs8nMbiUxSkv+pQyF1833H3LLdYj8qrkVyUtx7Sx6oYH5A4DEKDqI5CXRk WABreo3Wf8RYHMjW/U71zTwNJYgvdmZlEegPV/Z06KbcnPteH1fHLHW2geWNitT0VqOC /+05X8lCKmbsGa2WL2gDer2QZGGY4Sd85GuesrCiMkE47EWlHrfNcPn9/0+xvNLKz0Iv Vqj5EUl1roCEdZyhrIthfsY5Pu9Rj7gDZoidISwJo2BRef0s89C4JxnTRFGfCB1vVHkK qtWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783334314; x=1783939114; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=gycfgN4ilMybUVWebBbS11Tu+/uThpasypGL0zVk09o=; b=HyFQ78ZS2wTxONvueUpYNo+DBgiUPB7UbFEwA0jYwso9VsgbQzxua1uEFAz5oM0rI2 VquQzX6t4ABFAxzrvsVWlo/8mFUn+o6hY1bb8+nQeiKQTXk/v3UwN7PPH8nl/hQti6o+ bB2kB5tq0ecUmRlcU7X1+AhapHHR7REXY9KuhdQTifgc5u5Y2HPD++oMnxi6M6XsCLRT V5QdgN0jLsPmjOeHyG/zaAPvc0A0aqgot/n3xxZxGFofwSVXHHNtyL9OxQBLPfheuhQL cSS/cP/s1Ka/S1Swybp6rf5r8mgFubO1yYtZR3rhFeW49E+drTp1GQKOI/0AbQo664+o m4+g== X-Gm-Message-State: AOJu0YxTaxc+xTJorWOfqhuIL2CiVfp3jedNT6xbmyEhj46UGQckrNLF fi2ARQiUjChf5DBVfGyfOJg6IqjeZLl7ukf4cbvLuCiyLMikuvX/U2wvalW5QWiGb5ZE8OsNlRt VYBF5OGP1qw== X-Gm-Gg: AfdE7ckjz1GUV8a6CHKdvyqKn7kcfoylWVLHSQOFNJvIA63RxnOdyzI/FwUem+ChAOp MmR5l/kz5jxVxJp0YwOyL8G6yPiQtRoRqHWrfqUsbStczdxFpeUcfbX7pZ0y1XMdH26yenYa0dN 2kh3Su4T2TxS1c9IUlJvXnevHjV9h8wYUaWKu7jUqhKQUOSiuvlZILHcln0Zhfh4x1q2yup9qVx odhH0dESozPLOfoIuYAt5UiFs3LXMNQbljCzrdnxR4jRUoB0gSFtdUIm9kPGvyV30EtYluPpWKM ujC0cEymDkhDNC6y00jUCr9Y76r/S2d7STqhp5A3G1vJ0L0WkrC1VP4+c/fE+ukb7Tu58VdUd16 3hazO7uvhuJ2IkxXhxHMjlcn8zV9OYChB3oh3ByhOUUID+en1JMXkZjJcXHMbjdqIC66ZrLLFvK VvjfwLcALChj/91UUd8dmdXeHtohT6K+REMPBW/z99rPoOwiAMfTqRyXSmtrDw4/GS7JOjfQQnB Z4duhXlnFxxrUYOBo/wqg== X-Received: by 2002:a05:600c:4f81:b0:490:44eb:c1ea with SMTP id 5b1f17b1804b1-493d11f370bmr105569135e9.24.1783334313613; Mon, 06 Jul 2026 03:38:33 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 37/49] target/arm: Implement FMOP4 (widening, 4-way fp8 to fp32) Date: Mon, 6 Jul 2026 11:37:40 +0100 Message-ID: <20260706103752.320511-38-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260706103752.320511-1-peter.maydell@linaro.org> References: <20260706103752.320511-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::330; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x330.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783334431667158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260702204314.79224-8-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/cpu-features.h | 5 +++++ target/arm/tcg/fp8_helper.c | 16 ++++++++++++++++ target/arm/tcg/helper-fp8-defs.h | 2 ++ target/arm/tcg/sme.decode | 5 +++++ target/arm/tcg/translate-sme.c | 18 ++++++++++++++++++ 5 files changed, 46 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index b4138e976b..e577880ab0 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1822,6 +1822,11 @@ static inline bool isar_feature_aa64_sme_mop4_f64f64= (const ARMISARegisters *id) return isar_feature_aa64_sme_mop4(id) && isar_feature_aa64_sme_f64f64(= id); } =20 +static inline bool isar_feature_aa64_sme_mop4_f8f32(const ARMISARegisters = *id) +{ + return isar_feature_aa64_sme_mop4(id) && isar_feature_aa64_sme_f8f32(i= d); +} + /* * Feature tests for "does this exist in either 32-bit or 64-bit?" */ diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index 902e4b0ae9..f899a6cbf7 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -973,3 +973,19 @@ void HELPER(sme_fvdot_idx_hb)(void *vd, void *vn, void= *vm, } while (++i & 7); } while (i < elements); } + +static void inner_fmop4a_sb(void *vd, void *vn, void *vm, void *vinfo) +{ + float32 *d =3D vd; + uint32_t *n =3D vn, *m =3D vm; + FP8MulContext *ctx =3D vinfo; + + *d =3D f8dotadd_s(*n, *m, 4, *d, ctx); +} + +void HELPER(sme_fmop4a_sb)(void *vza, void *vzn, void *vzm, + CPUArchState *env, uint32_t desc) +{ + FP8MulContext ctx =3D fp8_mul_start(env, -1); + sme_mop4(vza, vzn, vzm, &ctx, desc, sizeof(float32), inner_fmop4a_sb); +} diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 126dcadf77..47f35a82dc 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -44,3 +44,5 @@ DEF_HELPER_FLAGS_7(sme_fmopa_hb, TCG_CALL_NO_RWG, void, p= tr, ptr, ptr, ptr, ptr, =20 DEF_HELPER_FLAGS_5(sme_fvdot_idx_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= env, i32) DEF_HELPER_FLAGS_5(sme_fvdot_idx_hb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= env, i32) + +DEF_HELPER_FLAGS_5(sme_fmop4a_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, en= v, i32) diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index ea9f459e38..b8b507d8fb 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -1101,6 +1101,9 @@ LUTI4_s_4b 1100 0000 1001 101 1 00 00 00 ...= .0 zd:5 \ @mop4_o3 .... .... ... m:1 .... .... .. n:1 ... . s:1 . zad:3 \ &mop4 zm=3D%mop4_zm zn=3D%mop4_zn =20 +@mop4_o2_s0 .... .... ... m:1 .... .... .. n:1 ... . ... zad:2 \ + &mop4 zm=3D%mop4_zm zn=3D%mop4_zn s=3D0 + BFMOP4_hh 1000 0001 001. ...0 0000 00.. ..0. 100. @mop4_o1 FMOP4_hh 1000 0001 000. ...0 0000 00.. ..0. 100. @mop4_o1 FMOP4_ss 1000 0000 000. ...0 0000 00.. ..0. 00.. @mop4_o2 @@ -1108,3 +1111,5 @@ FMOP4_dd 1000 0000 110. ...0 0000 00.. ..0. 1.= .. @mop4_o3 =20 BFMOP4_sh 1000 0001 000. ...0 0000 00.. ..0. 00.. @mop4_o2 FMOP4_sh 1000 0001 001. ...0 0000 00.. ..0. 00.. @mop4_o2 + +FMOP4A_sb 1000 0000 001. ...0 0000 00.. ..00 00.. @mop4_o2_s0 diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index 544a825595..386ded1b90 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -2072,3 +2072,21 @@ static gen_helper_gvec_3_ptr * const fmop4_sh[3] =3D= { gen_helper_sme_ah_fmop4s_sh }; TRANS_FEAT(FMOP4_sh, aa64_sme_mop4, do_mop4_fp, a, MO_32, FPST_ENV, fmop4_= sh) + +static bool do_mop4_fp8(DisasContext *s, arg_mop4 *a, MemOp esz, + gen_helper_gvec_3_ptr *fn) +{ + if (fpmr_access_check(s) && sme_smza_enabled_check(s)) { + int svl =3D streaming_vec_reg_size(s); + uint32_t desc =3D simd_desc(svl, svl, (a->m << 1) | a->n); + TCGv_ptr za =3D get_tile(s, esz, a->zad); + TCGv_ptr zn =3D vec_full_reg_ptr(s, a->zn); + TCGv_ptr zm =3D vec_full_reg_ptr(s, a->zm); + + fn(za, zn, zm, tcg_env, tcg_constant_i32(desc)); + } + return true; +} + +TRANS_FEAT(FMOP4A_sb, aa64_sme_mop4_f8f32, + do_mop4_fp8, a, MO_32, gen_helper_sme_fmop4a_sb) --=20 2.43.0 From nobody Sun Jul 26 11:01:49 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1783334637; cv=none; d=zohomail.com; s=zohoarc; b=Iuu0arl/somigM1gDD+0g50L2idZpUhv5mFehjREa00Hb59xEczYj15JHpJybXG7ut5ZewFDWCVkETUXoekmT9bau3xCpDa7gVR9r2/NqJgbT91STG60kSe64u531nWJWOHQVWHTeKNHHtBYR7oxz4yP8tPgZZHbmAcmlhEV65I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783334637; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=Fo+9pG3xZhFDHuvwy7kh0EKLAhh40YeZ9qlEBHYTK9w=; b=VVvHIYIfrJSmMPFMX/vzphbd+3B/IPojUsuS3AoJa6Xx2bNtGUuGBJSDk5/3B8trzPXSSfbedWfkDcxQdqvEf5x32h+Aw2fDGbzG2To+yyX1+OP4jyOIYQdDQoC3MVU2pBKHUzLDaIWUbNmjHFw/oZrtAo5YYOQq/lyvtSF6h6g= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783334637892329.27422831783576; Mon, 6 Jul 2026 03:43:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wggit-0007fA-C7; Mon, 06 Jul 2026 06:38:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wggim-0007NS-ON for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:40 -0400 Received: from mail-wm1-x331.google.com ([2a00:1450:4864:20::331]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wggih-0003VT-Pa for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:40 -0400 Received: by mail-wm1-x331.google.com with SMTP id 5b1f17b1804b1-493bab44440so14922065e9.0 for ; Mon, 06 Jul 2026 03:38:35 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63b6f1bsm329501805e9.10.2026.07.06.03.38.33 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jul 2026 03:38:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783334314; x=1783939114; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=Fo+9pG3xZhFDHuvwy7kh0EKLAhh40YeZ9qlEBHYTK9w=; b=TALztmN3D2+EdwIp4dwUkK90e1H5/5/ppBGtj6Meb7/HMZlfhBU0cOJp1hiwOVZGZz ZaDA6/efA5OsKMoc3dx0VF4YuRCS5qz6qVVh5BmLwyd9hhjJjcJ1N9ZfUAYMArYVZRLL sngCEv1n8IjFdwTcMbDBk7xb97vgYOjLmwiYmovlbyjQOi8qj3+NpWTKmFE4rEjuYbZ9 4KmcLc/bue6kFhfMJvWSc4dFhNxQzoWiXjUkQyDYX0hO6w1isSlJRTUFJHX9vI0XmpQz MeCEOofb2F50RQ9abfwB7G5flblJJT1fYlWReGAjf3NXyK2zJJswN4wjzt7K9QUa9Okm nheg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783334314; x=1783939114; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=Fo+9pG3xZhFDHuvwy7kh0EKLAhh40YeZ9qlEBHYTK9w=; b=lFg1ckMcEIKmZjz+TYN0SFetlbT18DsOXAAw0/y6V3JHsvWIujbGGtV3YoQQ+oG4+J gi+NyzKCZ3PLDaUVmG9kecAlV7Eg7641Vv+8cv6erQYoZEe3+gYmPpJy9zz7HxW2fAxj +DzzSqPI1i+p+m4AcK/VeOVo6ehXi418sULhB8E1P/ypdFpK3sSGl88XKeYHg7Kf7Zq8 CW4Uin3qqfodrrMIJR6h5oFkVsGtAXLJ4TLMPV6+yaRoRW4IkDNND6y4NJflhi3Tjbv5 IxUaSO4HODwIeJG7RpyakfWFm+Ew1IB6ouU3m66AXZrNTWhFvQLw5ibv3cpFyQHLqc43 jr9Q== X-Gm-Message-State: AOJu0YxY2YAbE6EF4/yCx8eV3v8Lg9ufzbXowrU/L+6zJ587Yi5ejprp X97tqxJaWbmudKX9iYve9j2tpDD7AhxlIa8DhtF6+46WfrFAjdMQ3A3cTFE3Lzjutxijoos2g9P TbqbREMLZ1A== X-Gm-Gg: AfdE7cmVckcnbgvEfVzlIis4fdMNwYmBX+3QA4QmUtfvw5Nymc2T731g4O+GQHfOoeA Fp10DBFe7hnQbkcIpF3UTe6ocqjL7/Qw1BslaSNmbbnAbU7bEZdk6Ut2tAA55jkZ7158kz0n5tX TsjLkbcqli88jXFvO1iLLfHIX+jbtym9kWded2GkvFMvzR9SpvV+N7iiktRfmemcLJiPqdAOg6Z wYFyQ5o4tJCOWVI/tRvoC9jYCkTWAb5h1YzMNUj1pqDw8xUhy3ge8F2MpUgnlV7knV/+LW3NHcQ X+wROhsWtJviafcRt5pOner56ZWOpoMdRBABOli5EoY2TRRh+f4YsnFc3G7D070gc+lM3lIBxA9 WKsVD211Vz+PLAzyr+cviFTY8h3lRmLWAySwTNNe0StOMVi1NlpNguVCIbI80S+6tRJ29MZQFcZ OAFDbyhw5QAzDUqef0t6LwSHcGcB7EOSWu7Zu+O+T77qUz6HN+qCUKuk66wWN1LZhKfbM21KmuK 1tnQVEEJQyZfp5T350Txg== X-Received: by 2002:a05:600c:3145:b0:493:cbdc:7cd2 with SMTP id 5b1f17b1804b1-493decb3dd3mr1301915e9.3.1783334314396; Mon, 06 Jul 2026 03:38:34 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 38/49] target/arm: Implement FMOP4A (widening, 2-way, FP8 to FP16) Date: Mon, 6 Jul 2026 11:37:41 +0100 Message-ID: <20260706103752.320511-39-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260706103752.320511-1-peter.maydell@linaro.org> References: <20260706103752.320511-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::331; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x331.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783334639143158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260702204314.79224-9-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/cpu-features.h | 5 +++++ target/arm/tcg/fp8_helper.c | 16 ++++++++++++++++ target/arm/tcg/helper-fp8-defs.h | 1 + target/arm/tcg/sme.decode | 3 +++ target/arm/tcg/translate-sme.c | 2 ++ 5 files changed, 27 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index e577880ab0..29b4f99aeb 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1827,6 +1827,11 @@ static inline bool isar_feature_aa64_sme_mop4_f8f32(= const ARMISARegisters *id) return isar_feature_aa64_sme_mop4(id) && isar_feature_aa64_sme_f8f32(i= d); } =20 +static inline bool isar_feature_aa64_sme_mop4_f8f16(const ARMISARegisters = *id) +{ + return isar_feature_aa64_sme_mop4(id) && isar_feature_aa64_sme_f8f16(i= d); +} + /* * Feature tests for "does this exist in either 32-bit or 64-bit?" */ diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index f899a6cbf7..4b046f5f26 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -989,3 +989,19 @@ void HELPER(sme_fmop4a_sb)(void *vza, void *vzn, void = *vzm, FP8MulContext ctx =3D fp8_mul_start(env, -1); sme_mop4(vza, vzn, vzm, &ctx, desc, sizeof(float32), inner_fmop4a_sb); } + +static void inner_fmop4a_hb(void *vd, void *vn, void *vm, void *vinfo) +{ + float16 *d =3D vd; + uint16_t *n =3D vn, *m =3D vm; + FP8MulContext *ctx =3D vinfo; + + *d =3D f8dotadd_h(*n, *m, 2, *d, ctx); +} + +void HELPER(sme_fmop4a_hb)(void *vza, void *vzn, void *vzm, + CPUArchState *env, uint32_t desc) +{ + FP8MulContext ctx =3D fp8_mul_start(env, 0xf); + sme_mop4(vza, vzn, vzm, &ctx, desc, sizeof(float16), inner_fmop4a_hb); +} diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 47f35a82dc..dedbd8541c 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -46,3 +46,4 @@ DEF_HELPER_FLAGS_5(sme_fvdot_idx_sb, TCG_CALL_NO_RWG, voi= d, ptr, ptr, ptr, env, DEF_HELPER_FLAGS_5(sme_fvdot_idx_hb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= env, i32) =20 DEF_HELPER_FLAGS_5(sme_fmop4a_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, en= v, i32) +DEF_HELPER_FLAGS_5(sme_fmop4a_hb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, en= v, i32) diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index b8b507d8fb..4b7a99e203 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -1101,6 +1101,8 @@ LUTI4_s_4b 1100 0000 1001 101 1 00 00 00 ...= .0 zd:5 \ @mop4_o3 .... .... ... m:1 .... .... .. n:1 ... . s:1 . zad:3 \ &mop4 zm=3D%mop4_zm zn=3D%mop4_zn =20 +@mop4_o1_s0 .... .... ... m:1 .... .... .. n:1 ... . .... zad:1 \ + &mop4 zm=3D%mop4_zm zn=3D%mop4_zn s=3D0 @mop4_o2_s0 .... .... ... m:1 .... .... .. n:1 ... . ... zad:2 \ &mop4 zm=3D%mop4_zm zn=3D%mop4_zn s=3D0 =20 @@ -1113,3 +1115,4 @@ BFMOP4_sh 1000 0001 000. ...0 0000 00.. ..0. 00= .. @mop4_o2 FMOP4_sh 1000 0001 001. ...0 0000 00.. ..0. 00.. @mop4_o2 =20 FMOP4A_sb 1000 0000 001. ...0 0000 00.. ..00 00.. @mop4_o2_s0 +FMOP4A_hb 1000 0000 001. ...0 0000 00.. ..00 100. @mop4_o1_s0 diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index 386ded1b90..b198c7c855 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -2090,3 +2090,5 @@ static bool do_mop4_fp8(DisasContext *s, arg_mop4 *a,= MemOp esz, =20 TRANS_FEAT(FMOP4A_sb, aa64_sme_mop4_f8f32, do_mop4_fp8, a, MO_32, gen_helper_sme_fmop4a_sb) +TRANS_FEAT(FMOP4A_hb, aa64_sme_mop4_f8f16, + do_mop4_fp8, a, MO_16, gen_helper_sme_fmop4a_hb) --=20 2.43.0 From nobody Sun Jul 26 11:01:49 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1783334581; cv=none; d=zohomail.com; s=zohoarc; b=A7QzYNHEp+RXxsisj2zoHwz7bDCkgwjxdkhyBddX2rtn9bpBWITJqAaq3s5J68O4w8h1hInglOGU8NFX7pOtp15usD/912TTGzdoLVdXvfvc2Ngj+255BJ5UydidVrppgQqR9BnRfDWFZivBxm2KgYmB7TaPJtzgycP9hPWQrps= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783334581; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=VHdBugLZUkVPDrBYTqD633IxuT9ll0hpLXYvZbK3TXQ=; b=DCDycHGXaDAY30FF+skoRdSMBVgvrTXpswRgaGc1AnveANp1bpToUj1VTGxYyYjHIdm372wSmq/pSEYe0yJ5Vr+s9Dczhgda91BVrMYXZ7pQ+P1cH5wt4iY2RePZcgOPyt9OxDHTmbrqTJ5JYGOj6+EQg9doG9BH9WIrLCas+P0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783334581048777.333371868861; Mon, 6 Jul 2026 03:43:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wggit-0007gN-Ty; Mon, 06 Jul 2026 06:38:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wggim-0007Nb-Nm for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:40 -0400 Received: from mail-wm1-x32a.google.com ([2a00:1450:4864:20::32a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wggij-0003Vy-CB for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:40 -0400 Received: by mail-wm1-x32a.google.com with SMTP id 5b1f17b1804b1-493b61b52b6so19449985e9.1 for ; Mon, 06 Jul 2026 03:38:36 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63b6f1bsm329501805e9.10.2026.07.06.03.38.34 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jul 2026 03:38:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783334316; x=1783939116; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=VHdBugLZUkVPDrBYTqD633IxuT9ll0hpLXYvZbK3TXQ=; b=XMrH98MG/jAwPF+xB6KTf6Crpn7ddyvgs1tjzK/oJ/XLN8a9qN5Hy8pn4sd3tQYmA8 SzpHIzcor2lOgQswhyz5tIbxpJ/+xd8N6kFV1MzOpHHA+rJg5e0zulhayojrAyVeCXL6 2z/emWb3yt5oGKzqvDxr14FCHqYhmKxIP8Q45vpeZ1VZ3KB8FCwRePO7eIyy7MW8VCY3 wa2qBX41hJNbRnuHzA6LXEBuIzNxqHdq8IKBRZlGep3Uqy8FRWRXPElru/nCyeRAe4Q6 AeOuRoTQWkbutRHkS7f0WOJ99QzFeR2FA5OU0WdNkO33X3xw/f4gnK4uv3FQtYJUwt4k 9qxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783334316; x=1783939116; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=VHdBugLZUkVPDrBYTqD633IxuT9ll0hpLXYvZbK3TXQ=; b=YqpKq8CNtUyPjj4I2v96GsBd4RR39SIMVqYyGXAy8Ymn0syr6HzEJUD17gZy3tAqi0 Pr17JmCMyfWKwRdHP9U328jdUWGKCx7JFdjZyi0m7AAnda+ESoCUKHLeigsFenqmOP0w IKkFeyiTJGdjX3HNJXu6efKpxZ750myVcy/gmVLhogMevmCZ1kObP8MGcDqtbSLqCjIt 8oo253uNZOGPa0maziT9k3yN/QjQpDZLXr/qT3dEuTHkS6pnximBYmstN67PxeT2xT65 BxuWG8PMPrmDw2xWicKrnrPe+rhZEQeYjQ1MazaZz2WIOWBKxo5TdPnIuRnuvE4x6p9q YC0A== X-Gm-Message-State: AOJu0YxPIYMKZFS+iEUo6qAb/2DJQ7cPcSjybOuj4bmp7spRdXXcAjNV amVvBp7lUsKpieZs3789+ukazGz5cc9VkS+ik2pqQB8ot73LOmrqDujEsRe5IAOD8TGIS2AAuwu GTpSitQUjPQ== X-Gm-Gg: AfdE7cm/SDFJRaVEDVi+eGqa38us1vAUCGiPzl4MiK7oN40sENet2iQCV4DRZTfM8Mh rHf+U5gahGurtcw15rRkPyIjExgjvNJ6p76r6JuSQnptAfHLrSXKjkgzi0qp+aVdP0Af16xVQ4z d5AiUwXSJmC8iR2AlbIbFDYTJpHEQsrBFFUUnTJKYIdy3SlViEtSewmP7I3GRR48Mib463bBDrM V+UxjhwrSz7M6K5z8giNwxDCu8Sc3+++xBzm4Ep85K1a664qs0PDRw/oc1jL0aeEteiE5zf3vXB JUMoDR8ivN6FrKMtgPgt7K3PWxQYFcKEDfn8ZOVFCqNXQ2MQ+noIyb76+ap447D4x97+4EGbTCw nDzmWkBJ7rEj11dOydW9sI3tmA+6tiRNE/UhWJ6F+l1F85gx6wmlaNw8bg3wBdOR203/bshPvhX a82s9MwRGqAXux1t0/IbfCzVHGaw0/cuCNzIkPbktEEWU+Y4nXwQD4HVvPwibABftZGnGgqodY+ P0Mim3NIA6WIkQ/RRZYNA== X-Received: by 2002:a05:600c:314f:b0:490:b7e6:bd1d with SMTP id 5b1f17b1804b1-493d11d8186mr110688915e9.16.1783334315754; Mon, 06 Jul 2026 03:38:35 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 39/49] target/arm: Implement SMOP4[AS] (2-way) Date: Mon, 6 Jul 2026 11:37:42 +0100 Message-ID: <20260706103752.320511-40-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260706103752.320511-1-peter.maydell@linaro.org> References: <20260706103752.320511-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32a; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32a.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783334582692158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260702204314.79224-10-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/tcg/helper-sme-defs.h | 3 +++ target/arm/tcg/sme.decode | 2 ++ target/arm/tcg/sme_helper.c | 16 ++++++++++++++++ target/arm/tcg/translate-sme.c | 18 ++++++++++++++++++ 4 files changed, 39 insertions(+) diff --git a/target/arm/tcg/helper-sme-defs.h b/target/arm/tcg/helper-sme-d= efs.h index 780b8f162a..ddf771e446 100644 --- a/target/arm/tcg/helper-sme-defs.h +++ b/target/arm/tcg/helper-sme-defs.h @@ -379,3 +379,6 @@ DEF_HELPER_FLAGS_5(sme_ah_bfmop4s_sh, TCG_CALL_NO_RWG, = void, ptr, ptr, ptr, env, DEF_HELPER_FLAGS_5(sme_fmop4a_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, en= v, i32) DEF_HELPER_FLAGS_5(sme_fmop4s_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, en= v, i32) DEF_HELPER_FLAGS_5(sme_ah_fmop4s_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= env, i32) + +DEF_HELPER_FLAGS_4(sme_smop4a_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) +DEF_HELPER_FLAGS_4(sme_smop4s_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index 4b7a99e203..20a2febd63 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -1116,3 +1116,5 @@ FMOP4_sh 1000 0001 001. ...0 0000 00.. ..0. 00= .. @mop4_o2 =20 FMOP4A_sb 1000 0000 001. ...0 0000 00.. ..00 00.. @mop4_o2_s0 FMOP4A_hb 1000 0000 001. ...0 0000 00.. ..00 100. @mop4_o1_s0 + +SMOP4_sh 1000 0000 000. ...0 1000 00.. ..0. 10.. @mop4_o2 diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index 123f459342..32fe867a3b 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -2938,3 +2938,19 @@ void HELPER(sme_ah_fmop4s_sh)(void *vza, void *vzn, = void *vzm, { sme_mop4(vza, vzn, vzm, env, desc, sizeof(float32), inner_ah_fmop4s_sh= ); } + +#define IMOP4_2WAY(NAME, OP, TYPED, TYPEN, TYPEM) \ +static void inner_##NAME(void *vd, void *vn, void *vm, void *vinfo) \ +{ \ + TYPEN *n =3D vn; TYPEM *m =3D vm; TYPED *d =3D vd; = \ + *d OP##=3D (TYPED)n[0] * m[0] + (TYPED)n[1] * m[1]; \ +} \ +void HELPER(sme_##NAME)(void *vza, void *vzn, void *vzm, uint32_t desc) \ +{ \ + sme_mop4(vza, vzn, vzm, NULL, desc, sizeof(TYPED), inner_##NAME); \ +} + +IMOP4_2WAY(smop4a_sh, +, int32_t, int16_t, int16_t) +IMOP4_2WAY(smop4s_sh, -, int32_t, int16_t, int16_t) + +#undef IMOP4_2WAY diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index b198c7c855..b948591dd3 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -2092,3 +2092,21 @@ TRANS_FEAT(FMOP4A_sb, aa64_sme_mop4_f8f32, do_mop4_fp8, a, MO_32, gen_helper_sme_fmop4a_sb) TRANS_FEAT(FMOP4A_hb, aa64_sme_mop4_f8f16, do_mop4_fp8, a, MO_16, gen_helper_sme_fmop4a_hb) + +static bool do_mop4_int(DisasContext *s, arg_mop4 *a, MemOp esz, + gen_helper_gvec_3 *fn) +{ + if (sme_smza_enabled_check(s)) { + int svl =3D streaming_vec_reg_size(s); + uint32_t desc =3D simd_desc(svl, svl, (a->m << 1) | a->n); + TCGv_ptr za =3D get_tile(s, esz, a->zad); + TCGv_ptr zn =3D vec_full_reg_ptr(s, a->zn); + TCGv_ptr zm =3D vec_full_reg_ptr(s, a->zm); + + fn(za, zn, zm, tcg_constant_i32(desc)); + } + return true; +} + +TRANS_FEAT(SMOP4_sh, aa64_sme_mop4, do_mop4_int, a, MO_32, + a->s ? gen_helper_sme_smop4s_sh : gen_helper_sme_smop4a_sh) --=20 2.43.0 From nobody Sun Jul 26 11:01:49 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1783334431; cv=none; d=zohomail.com; s=zohoarc; b=cueGqlGysKJLubCFIbklzw4rOgg/+/xg9Srparu2CPGlGQaHsNY828M00IyAqwNeu3TUN3Pl25LoKbNa+u+QFpk6g6B2KLBW3J6EHgLC1/ROFV5fCxvfaOUwWOE78mEI/OudUXFTf5Rg4kvr89X0aUpDmMyirlqLRIzyJDnpQdk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783334431; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=TO4k4EejLW8zuqEUQU8UnalfvHJeHl8H1oJ+uDmI3Z4=; b=aw/kCk2aMfXxLy1EUoanazZVPJ6mcdyuYkpdYZpq1IDamj6yvA+rVBT114huj2fWbgLpfN00W8VXad0MXlhd8lDXDLK5h+nOim9Iuyswkbh0pDJXSFVz1njiMCBgKTNu0ZokM6tC16PhQ61WbwL0M1VpIOu4TarWTOsYWG4rZaw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783334431421468.1429819071286; Mon, 6 Jul 2026 03:40:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wggiv-0007lX-6H; Mon, 06 Jul 2026 06:38:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wggin-0007Og-5C for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:41 -0400 Received: from mail-wm1-x329.google.com ([2a00:1450:4864:20::329]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wggik-0003WB-61 for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:40 -0400 Received: by mail-wm1-x329.google.com with SMTP id 5b1f17b1804b1-493c19bad03so26203585e9.2 for ; Mon, 06 Jul 2026 03:38:37 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63b6f1bsm329501805e9.10.2026.07.06.03.38.35 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jul 2026 03:38:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783334317; x=1783939117; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=TO4k4EejLW8zuqEUQU8UnalfvHJeHl8H1oJ+uDmI3Z4=; b=h5ZkFp/u7gbLvW0DRN8W6j2E1xjBHrrIp94Gvw5xReXgeXF836NnFxI1NJxNNXvPFf FBoBH6vdmBfFB5NM31d0qEMWODoUJKo3eSgcbrFQZSYP2PZBtsFSG3eg37PtXXRgNjef 6VjxIRovbqYy7hHgwkoQ8hDkvwO3ZjXaoiawYgnA0CQF61UjA7pnm+J063b7+MqKIEvJ JumkMYrOzN3FU8FQaFZkhWBRcs0/CDWLNPxgTHbY2ME8QkXMNGW+/z/u4eCi5J5EUszJ OSybVZdFkj2g/9/PbbVOtF8on1Ts1i8MwRabNq/9ZBI6QvtEsnQeZ6+SbKa1cXqY/2ev DK1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783334317; x=1783939117; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=TO4k4EejLW8zuqEUQU8UnalfvHJeHl8H1oJ+uDmI3Z4=; b=S1d9/0QbMjHyO2CQUa4WTFl1RqALYpWou7D55dYylndfRKCw1R/ty22Z3XIoq7PNJf 24HIjcAER4Es9XmWUrNP4eE52zTqmuQpNsOnr4W98WftDTw2Hexq7x6JkSSAgLClbGgr pLmwkjNpW6DrjT4MdIEu8lxFTZh0s9prdL0q7t0zs8yZKgzcOTugh4jWfragj/3mXnIX SvmYUzoTeSDpfruQPeMzphJ/L15vQ2Zg7zGdeWhKkS7IsFGG38V53+ilG6YjSBYg4WBt 3I7pMFXS/7v/zidc14KFcM9Jry9+/LIshiREbjpaa8EAq+IIMtViegoSBca1/F4WFGiE 0L+w== X-Gm-Message-State: AOJu0YwgPLiFq6bHj5ZVbeuJvVB1V9lKrR5AR3URYK+01kcSLrc/0qf5 S0nfEHcbLy2/FJqgKiRSbZpcLcK+BqnP2PSvwXwSoz7SGg7apQJYZmvSM9PDPGzrpILf9fDUS9q ELIX1M1OYdw== X-Gm-Gg: AfdE7cl1h0FnlMriDNlW3HuJn8WIURz6L0AXTuTyn8qg9QKb6CTqUnUbl+pX/NJyPFk 8Y1BTWfn+orQE8Cpacfslz1VocECVTqh+Egyj8LVe05XfiezNSaCTze/Rw9zEhiHx3rp+0tmqFY 2SFFqr7OKjlOpiP3bKos8D+z4uVjfDViSPns64e6bM4rwXDnUwJmdmtfjF/s5d/oi1ByYL/UBDz WMMHVNTwJYLS3q5sh0Me/jUlf2VpzpxlVvrHbJiHhLa8l6HuTcz/OXPW5hOVqtCAUrALKWo4G3j dTDrA1vibjccKQvxRm+F4ClYbmjlIPjvyQ2EqNnRQKMO7o7AZBnF1MRAhBz/l33TbnLNMHtqSWR 2fK5wybN78wOveXWEXqo3LuTcoYNWjHN6qvGU3/QjXuHPc6pf2NTLy1pF/dhJm8DMJCwqducbCn OSWze8ta23GGv0gcVyEmRq181oRB9Mi4eGeiZLSVB6+jOT1Z8oaVmY/0Oqd0LmURV9lyt9P3Lwe kbT/BkNfFRlIITlGV8PXQ== X-Received: by 2002:a05:600c:3e07:b0:493:da71:c1a7 with SMTP id 5b1f17b1804b1-493db005371mr27726805e9.0.1783334316615; Mon, 06 Jul 2026 03:38:36 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 40/49] target/arm: Implement SMOP4[AS] (4-way) Date: Mon, 6 Jul 2026 11:37:43 +0100 Message-ID: <20260706103752.320511-41-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260706103752.320511-1-peter.maydell@linaro.org> References: <20260706103752.320511-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::329; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x329.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783334431676158501 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260702204314.79224-11-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/cpu-features.h | 5 +++++ target/arm/tcg/helper-sme-defs.h | 4 ++++ target/arm/tcg/sme.decode | 2 ++ target/arm/tcg/sme_helper.c | 19 +++++++++++++++++++ target/arm/tcg/translate-sme.c | 4 ++++ 5 files changed, 34 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 29b4f99aeb..fb5ed25ad0 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1832,6 +1832,11 @@ static inline bool isar_feature_aa64_sme_mop4_f8f16(= const ARMISARegisters *id) return isar_feature_aa64_sme_mop4(id) && isar_feature_aa64_sme_f8f16(i= d); } =20 +static inline bool isar_feature_aa64_sme_mop4_i16i64(const ARMISARegisters= *id) +{ + return isar_feature_aa64_sme_mop4(id) && isar_feature_aa64_sme_i16i64(= id); +} + /* * Feature tests for "does this exist in either 32-bit or 64-bit?" */ diff --git a/target/arm/tcg/helper-sme-defs.h b/target/arm/tcg/helper-sme-d= efs.h index ddf771e446..070a1a2c1d 100644 --- a/target/arm/tcg/helper-sme-defs.h +++ b/target/arm/tcg/helper-sme-defs.h @@ -382,3 +382,7 @@ DEF_HELPER_FLAGS_5(sme_ah_fmop4s_sh, TCG_CALL_NO_RWG, v= oid, ptr, ptr, ptr, env, =20 DEF_HELPER_FLAGS_4(sme_smop4a_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) DEF_HELPER_FLAGS_4(sme_smop4s_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) +DEF_HELPER_FLAGS_4(sme_smop4a_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) +DEF_HELPER_FLAGS_4(sme_smop4s_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) +DEF_HELPER_FLAGS_4(sme_smop4a_dh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) +DEF_HELPER_FLAGS_4(sme_smop4s_dh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index 20a2febd63..16f86a9d2d 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -1118,3 +1118,5 @@ FMOP4A_sb 1000 0000 001. ...0 0000 00.. ..00 00= .. @mop4_o2_s0 FMOP4A_hb 1000 0000 001. ...0 0000 00.. ..00 100. @mop4_o1_s0 =20 SMOP4_sh 1000 0000 000. ...0 1000 00.. ..0. 10.. @mop4_o2 +SMOP4_sb 1000 0000 000. ...0 1000 00.. ..0. 00.. @mop4_o2 +SMOP4_dh 1010 0000 110. ...0 0000 00.. ..0. 1... @mop4_o3 diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index 32fe867a3b..11d9d509ec 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -2954,3 +2954,22 @@ IMOP4_2WAY(smop4a_sh, +, int32_t, int16_t, int16_t) IMOP4_2WAY(smop4s_sh, -, int32_t, int16_t, int16_t) =20 #undef IMOP4_2WAY + +#define IMOP4_4WAY(NAME, OP, TYPED, TYPEN, TYPEM) \ +static void inner_##NAME(void *vd, void *vn, void *vm, void *vinfo) \ +{ \ + TYPEN *n =3D vn; TYPEM *m =3D vm; TYPED *d =3D vd; = \ + *d OP##=3D (TYPED)n[0] * m[0] + (TYPED)n[1] * m[1] + \ + (TYPED)n[2] * m[2] + (TYPED)n[3] * m[3]; \ +} \ +void HELPER(sme_##NAME)(void *vza, void *vzn, void *vzm, uint32_t desc) \ +{ \ + sme_mop4(vza, vzn, vzm, NULL, desc, sizeof(TYPED), inner_##NAME); \ +} + +IMOP4_4WAY(smop4a_sb, +, int32_t, int8_t, int8_t) +IMOP4_4WAY(smop4s_sb, -, int32_t, int8_t, int8_t) +IMOP4_4WAY(smop4a_dh, +, int64_t, int16_t, int16_t) +IMOP4_4WAY(smop4s_dh, -, int64_t, int16_t, int16_t) + +#undef IMOP4_4WAY diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index b948591dd3..6f3806f4de 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -2110,3 +2110,7 @@ static bool do_mop4_int(DisasContext *s, arg_mop4 *a,= MemOp esz, =20 TRANS_FEAT(SMOP4_sh, aa64_sme_mop4, do_mop4_int, a, MO_32, a->s ? gen_helper_sme_smop4s_sh : gen_helper_sme_smop4a_sh) +TRANS_FEAT(SMOP4_sb, aa64_sme_mop4, do_mop4_int, a, MO_32, + a->s ? gen_helper_sme_smop4s_sb : gen_helper_sme_smop4a_sb) +TRANS_FEAT(SMOP4_dh, aa64_sme_mop4_i16i64, do_mop4_int, a, MO_64, + a->s ? gen_helper_sme_smop4s_dh : gen_helper_sme_smop4a_dh) --=20 2.43.0 From nobody Sun Jul 26 11:01:49 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1783334509; cv=none; d=zohomail.com; s=zohoarc; b=BHQDS/As/2Q4wMIrvmw635x036RADRH/D6YzntNvRnYI7cCGL23lLh3d4gI0xA843fSHZ6V9xfgru/veeI2SdOEUw00O5xZAtV4MMYToLhs68amWXI/Erkqp06tl7goUUOhKbU+4GdgZQI5V076nFZw6ckfL7f/GZEv2hWS0P0Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783334509; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=SzAZgvAhDLLRTgNUADlWm2n67mSAFWUklRqCzz3wzmU=; b=j8WV8xPtShWoawFQKbfZmb13Sz9ahh3zijv2X7RENg9OIHYdJyY8BO5PIyJk2bcFBBOXWHsdRHibVgoHo29d0oZthnLzcnjt9WjkTTyy3JSASQxnHQ8vU0o1hOwZITW16Kn8eujEEqFoher8t28ceawN+zWtYlLHirH33T3FW5g= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783334509835856.8734129256261; Mon, 6 Jul 2026 03:41:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wggir-0007W5-Bq; Mon, 06 Jul 2026 06:38:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wggin-0007R9-OL for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:41 -0400 Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wggik-0003WX-Vn for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:41 -0400 Received: by mail-wm1-x32c.google.com with SMTP id 5b1f17b1804b1-493c55d5c7aso27577375e9.1 for ; Mon, 06 Jul 2026 03:38:38 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63b6f1bsm329501805e9.10.2026.07.06.03.38.36 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jul 2026 03:38:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783334317; x=1783939117; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=SzAZgvAhDLLRTgNUADlWm2n67mSAFWUklRqCzz3wzmU=; b=oo5JICLvyixkyhFXMXXqImNRR3dwiGl4MtkRo7Ww0gikM5O1XaicccOBW1O/4zLfok iZjOCcGqrLIe8L6TggRw++yplNo6Wty9EOJc5xSgQp4epTJyZQAVz0JfRk+7LD9aml4w dA5RSndOOFIon3Z2ucOIjZd+bschjhQtWZEpN/bQmDZFB+azy0k98aFqWNnG59RUUgl3 sNsRM7t/7XTQH56Yx3MqgQYGeIflH2jLqlGwYAQtzLhkfOL5S8FQVpS19QpRfT7H+vWj ufaVSMOsq1O6UOcRtn7a2WTy87EMAS6mRMo8xGy/aDYt2PDY6N8ztoQ09IN6jTXpFScU KGyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783334317; x=1783939117; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=SzAZgvAhDLLRTgNUADlWm2n67mSAFWUklRqCzz3wzmU=; b=eQDxKSo4Tb8SxIPKQ4KA3sd3kH7FTU+5NiKVO3a8P8LSbKM/EEkSbTS44y9PprJiDF hhvq6GwOK7Cnv1RNXqu2JVyNyRkKFESlKffuhW/lDvOmvKmx4DMmWcqr1K5C7D/u7b3t a7nv8A2NrFzPTcDDzti2WrGyDrrQ+H2hFC7su5DPJdlgMAEnRRjmI51eWpwURmxhqG4K 9xn+lLQIQOM5IRTW2jwU2YzVwNplQAC223TfJEyWSNX9WmeLUlE/4UZ70esOKk7rBo9W lpkyAxUzj+/Ij4iRmSYIr119KB2v0SzARtCNXItS/AJmPi0vZkKB/hMw1lUJZvJYrg96 rXnA== X-Gm-Message-State: AOJu0YyeGGmE+zyKuq6gDw7o/X4qBZ2JvHnNnjrGlUBnul28w5sQVtf2 SfnX+XNFMuGcA7955hkB75D//neqmAfmNHn4ei9kwEIZ/939CG/lbKQOZbctMGgZYnIDTJaf8nk Mcvk3Obpz6Q== X-Gm-Gg: AfdE7ckKRoESfPPZeQn/28szwnDnFhnEbW/MDpVdmh9l2bOApghP4Tgzf0SriXDsG6g gRrsLXBFuOCuVsfi5EpqU7UubzE4w9IwIR8o3fRcIUUstaGz+Bff1ltpIV65YL5QRbZlb9JnfK+ 340fAbcRvdlA0thNtB2diMwTjfWqsBIPeSCBlgOgtp+zbgEu7kEUwIs6zFyY+BvNK4JyWueJuBo /v/iuCxgAxzqzohggZDAgzaEgwqFlsmX0AmqFhVono675vyx9uAkUtYWXQPlollQ28dPmPp3WSI bLCpi+BUY2wXVFvRaPV9N+9/wVGMr70onZHjutX16fGm0xbOt8zgo4YrEaIWd5PZlAS45CWG3AM w7I7ALwfseeh6yZhhcOx0cDO+xHJi3Imxz0FnWS3GON+NRAc+MUa+8SQFlOm9Dtp007OBmn+r3j 4P9awiHnDk2YoPZ8/tYGFxAjwoxb4xQMDi4tJ7WuCSVGEsUAz57p/JZkBup5N1XSyHY9enp+UXB /vqxeK3DrgZ08XkhDBMU/Gx01dTi/2r X-Received: by 2002:a05:600c:4a22:b0:493:c3e0:c4 with SMTP id 5b1f17b1804b1-493d11f1593mr69431615e9.22.1783334317534; Mon, 06 Jul 2026 03:38:37 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 41/49] target/arm: Implement SUMOP4[AS] Date: Mon, 6 Jul 2026 11:37:44 +0100 Message-ID: <20260706103752.320511-42-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260706103752.320511-1-peter.maydell@linaro.org> References: <20260706103752.320511-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32c; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32c.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783334512172158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260702204314.79224-12-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/tcg/helper-sme-defs.h | 5 +++++ target/arm/tcg/sme.decode | 3 +++ target/arm/tcg/sme_helper.c | 5 +++++ target/arm/tcg/translate-sme.c | 5 +++++ 4 files changed, 18 insertions(+) diff --git a/target/arm/tcg/helper-sme-defs.h b/target/arm/tcg/helper-sme-d= efs.h index 070a1a2c1d..3da40d9f33 100644 --- a/target/arm/tcg/helper-sme-defs.h +++ b/target/arm/tcg/helper-sme-defs.h @@ -386,3 +386,8 @@ DEF_HELPER_FLAGS_4(sme_smop4a_sb, TCG_CALL_NO_RWG, void= , ptr, ptr, ptr, i32) DEF_HELPER_FLAGS_4(sme_smop4s_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) DEF_HELPER_FLAGS_4(sme_smop4a_dh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) DEF_HELPER_FLAGS_4(sme_smop4s_dh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) + +DEF_HELPER_FLAGS_4(sme_sumop4a_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i= 32) +DEF_HELPER_FLAGS_4(sme_sumop4s_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i= 32) +DEF_HELPER_FLAGS_4(sme_sumop4a_dh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i= 32) +DEF_HELPER_FLAGS_4(sme_sumop4s_dh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i= 32) diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index 16f86a9d2d..aef3fae8db 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -1120,3 +1120,6 @@ FMOP4A_hb 1000 0000 001. ...0 0000 00.. ..00 10= 0. @mop4_o1_s0 SMOP4_sh 1000 0000 000. ...0 1000 00.. ..0. 10.. @mop4_o2 SMOP4_sb 1000 0000 000. ...0 1000 00.. ..0. 00.. @mop4_o2 SMOP4_dh 1010 0000 110. ...0 0000 00.. ..0. 1... @mop4_o3 + +SUMOP4_sb 1000 0000 001. ...0 1000 00.. ..0. 00.. @mop4_o2 +SUMOP4_dh 1010 0000 111. ...0 0000 00.. ..0. 1... @mop4_o3 diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index 11d9d509ec..5a9e3b8398 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -2972,4 +2972,9 @@ IMOP4_4WAY(smop4s_sb, -, int32_t, int8_t, int8_t) IMOP4_4WAY(smop4a_dh, +, int64_t, int16_t, int16_t) IMOP4_4WAY(smop4s_dh, -, int64_t, int16_t, int16_t) =20 +IMOP4_4WAY(sumop4a_sb, +, int32_t, int8_t, uint8_t) +IMOP4_4WAY(sumop4s_sb, -, int32_t, int8_t, uint8_t) +IMOP4_4WAY(sumop4a_dh, +, int64_t, int16_t, uint16_t) +IMOP4_4WAY(sumop4s_dh, -, int64_t, int16_t, uint16_t) + #undef IMOP4_4WAY diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index 6f3806f4de..fce07b2565 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -2114,3 +2114,8 @@ TRANS_FEAT(SMOP4_sb, aa64_sme_mop4, do_mop4_int, a, M= O_32, a->s ? gen_helper_sme_smop4s_sb : gen_helper_sme_smop4a_sb) TRANS_FEAT(SMOP4_dh, aa64_sme_mop4_i16i64, do_mop4_int, a, MO_64, a->s ? gen_helper_sme_smop4s_dh : gen_helper_sme_smop4a_dh) + +TRANS_FEAT(SUMOP4_sb, aa64_sme_mop4, do_mop4_int, a, MO_32, + a->s ? gen_helper_sme_sumop4s_sb : gen_helper_sme_sumop4a_sb) +TRANS_FEAT(SUMOP4_dh, aa64_sme_mop4_i16i64, do_mop4_int, a, MO_64, + a->s ? gen_helper_sme_sumop4s_dh : gen_helper_sme_sumop4a_dh) --=20 2.43.0 From nobody Sun Jul 26 11:01:49 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1783334707; cv=none; d=zohomail.com; s=zohoarc; b=USoU2G61TcFJXBG6gbBIWGCzrDhTtFR00VE9eYgHo42tIJRJSg04w/PT82V1ESuq0P85qXpVAtDV3BtnkiVRCRU5mHmunR9IP7KHDMk8IaXxK7NzPX7+iK6/QOGeUE75Hx1pNk+aQWyWXRbi3NKt/OPVH1ICI4pn67CEuPSgdYs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783334707; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=5VkK9k74ebQRJ38950Z9aIqi2wp8L5ul2wcu1BDzewM=; b=JmM3c8oIkKffx4UVXbHYn6JTzLB54HnnQN7o1lTWo8GC2sUX/cA5DqXPC1HCjQG2EfAgDVrhHlxWWd2jOXq4qhEWTDSa0JsaInEgVDVYTViUOVUZ0aIN7gtUtPI2AulHKT71lyeJti4IXIJLD0lnMHV1MfsbbHsX10xZgfEVSu0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783334707887156.01986843348834; Mon, 6 Jul 2026 03:45:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wggiu-0007iA-Po; Mon, 06 Jul 2026 06:38:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wggio-0007RL-08 for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:42 -0400 Received: from mail-wm1-x32a.google.com ([2a00:1450:4864:20::32a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wggil-0003Wl-Q3 for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:41 -0400 Received: by mail-wm1-x32a.google.com with SMTP id 5b1f17b1804b1-493ae59eca6so20662195e9.1 for ; Mon, 06 Jul 2026 03:38:39 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63b6f1bsm329501805e9.10.2026.07.06.03.38.37 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jul 2026 03:38:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783334318; x=1783939118; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=5VkK9k74ebQRJ38950Z9aIqi2wp8L5ul2wcu1BDzewM=; b=WFrP3v+xXM3tVdH+koPgYCMS4aRam2k6DgNzYrC7GQvrEMPvXBJrzIV+23VOxofmQZ wARgHpSLrzzdSG5jRzMBUqfXSjQKrLz6/3UB6KjKUNClwaQpFKh5JxP7toARy1knXgdJ iR0f5v/lXSKaB5gPNBypMGcBZWdMFC3EsQQ0uACguESjJHb4rnCKUcgezcMOQJc8cTlm fgCsoQT4Z0ixYIicoTDUAzwcW16448/sHKgJKFPfuEfDU49lCGgSGP2sGSsrscM61Uwh StzSM647Rkh2jJyb/NVUy0R+wh6QVIxVyHoeDsmIQGKDvqqFWNl+OZijDi9ikdSp3W5z FgrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783334318; x=1783939118; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=5VkK9k74ebQRJ38950Z9aIqi2wp8L5ul2wcu1BDzewM=; b=KDsc7tO8cPWUlpn+SbSOI5Moqvl8JJ3wkBUjiYpy8bthTtaB3qiVFwfHR3ALbkMshg iHrENALzRuzt7t4suCt4xPHDXuk8XQgl8+u2p68Cty4JK6+zr9E2HUWf5+sy/ymr1SyH 13CVtR5CtwCtn0MFm70aL8/78bNYhjrt/Kc6+BrpXNOkLQgyMBm671EHT7w0BtnfIsFQ 9N0w2uw5gXCOTNfULsjJvj402EqkCQhJZHyV+ySBtcMzHGi/ZrEZaw+osZOonLTEtpsk yX7dRhmTMt+pQVG+JH+DZglq/J87qQEI1xRF0u7HUWDHeE5YssQMcP9knoje6TwXkX8w 6YnA== X-Gm-Message-State: AOJu0YzVTkm0bnMWBHT63frDI9rPLoTUtDI6gVpIU7s7f9s2cLZG/KKV Gdt6U9sgfpsGe1+dnNpegSnRy+dvg8pW8pQinhUWnk0yoPlJFQRkDiimmgJZkL1aCzRHee+BBbD xNQL2C922Dw== X-Gm-Gg: AfdE7clnKl1afu6owm+kLx194lSEi/Oz/QVgFhpVVFs3MuSX6dxmz1l51N0zmK9bmB4 h5Gh9vapWtwsVl8j8CTva021H54gZFhe5KqJGxLRfBzLbidtVMQjKEu9Mg9+IvWu3yiSwjYQXpX 7udd6BiLLujppYK4z2b+UIMX/QXW3qxia5kQpFbUuzCbpxx13XPiP5i+0rIVqtb5E24hu/fL03q Qf8ldsCOQO1x1q2jhx0JJfRP+ZkOvVIuQcx65+3O1qciM2IkbVs3pCTNVqfp/bID5ZxMwNQBeLx ldtuEysbaHE0f5EfDBkMTm7ThbO3QD9n4yZfqRBxjcZtXvlzGE3nhIr1IzAs0THcAf38lAmmBi2 VybkgPDlV+ol4RtD6Tbe+DPZhA1AJ1DcSLdQ9n3Kazd1P28x0G/2A2kplZw3zmkF9h11zVckef7 sh4ohXvi6h+lFjH42JtPdFrqSwrbw2N4el0K/l6YzaMZdTD+AW7ooV4KZYMQ7tCVOSzTha3vFqN zBxYLld5mquo8DSVriMyw== X-Received: by 2002:a05:600c:19c7:b0:493:b3ba:84b4 with SMTP id 5b1f17b1804b1-493d11f5b11mr125569365e9.29.1783334318278; Mon, 06 Jul 2026 03:38:38 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 42/49] target/arm: Implement UMOP4[AS] (2-way) Date: Mon, 6 Jul 2026 11:37:45 +0100 Message-ID: <20260706103752.320511-43-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260706103752.320511-1-peter.maydell@linaro.org> References: <20260706103752.320511-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32a; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32a.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783334709507158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260702204314.79224-13-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/tcg/helper-sme-defs.h | 3 +++ target/arm/tcg/sme.decode | 2 ++ target/arm/tcg/sme_helper.c | 3 +++ target/arm/tcg/translate-sme.c | 3 +++ 4 files changed, 11 insertions(+) diff --git a/target/arm/tcg/helper-sme-defs.h b/target/arm/tcg/helper-sme-d= efs.h index 3da40d9f33..38b23690d1 100644 --- a/target/arm/tcg/helper-sme-defs.h +++ b/target/arm/tcg/helper-sme-defs.h @@ -382,6 +382,9 @@ DEF_HELPER_FLAGS_5(sme_ah_fmop4s_sh, TCG_CALL_NO_RWG, v= oid, ptr, ptr, ptr, env, =20 DEF_HELPER_FLAGS_4(sme_smop4a_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) DEF_HELPER_FLAGS_4(sme_smop4s_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) +DEF_HELPER_FLAGS_4(sme_umop4a_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) +DEF_HELPER_FLAGS_4(sme_umop4s_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) + DEF_HELPER_FLAGS_4(sme_smop4a_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) DEF_HELPER_FLAGS_4(sme_smop4s_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) DEF_HELPER_FLAGS_4(sme_smop4a_dh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index aef3fae8db..fbc85b8206 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -1118,6 +1118,8 @@ FMOP4A_sb 1000 0000 001. ...0 0000 00.. ..00 00= .. @mop4_o2_s0 FMOP4A_hb 1000 0000 001. ...0 0000 00.. ..00 100. @mop4_o1_s0 =20 SMOP4_sh 1000 0000 000. ...0 1000 00.. ..0. 10.. @mop4_o2 +UMOP4_sh 1000 0001 000. ...0 1000 00.. ..0. 10.. @mop4_o2 + SMOP4_sb 1000 0000 000. ...0 1000 00.. ..0. 00.. @mop4_o2 SMOP4_dh 1010 0000 110. ...0 0000 00.. ..0. 1... @mop4_o3 =20 diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index 5a9e3b8398..fd085850ed 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -2953,6 +2953,9 @@ void HELPER(sme_##NAME)(void *vza, void *vzn, void *v= zm, uint32_t desc) \ IMOP4_2WAY(smop4a_sh, +, int32_t, int16_t, int16_t) IMOP4_2WAY(smop4s_sh, -, int32_t, int16_t, int16_t) =20 +IMOP4_2WAY(umop4a_sh, +, int32_t, uint16_t, uint16_t) +IMOP4_2WAY(umop4s_sh, -, int32_t, uint16_t, uint16_t) + #undef IMOP4_2WAY =20 #define IMOP4_4WAY(NAME, OP, TYPED, TYPEN, TYPEM) \ diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index fce07b2565..a8fcb0630d 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -2110,6 +2110,9 @@ static bool do_mop4_int(DisasContext *s, arg_mop4 *a,= MemOp esz, =20 TRANS_FEAT(SMOP4_sh, aa64_sme_mop4, do_mop4_int, a, MO_32, a->s ? gen_helper_sme_smop4s_sh : gen_helper_sme_smop4a_sh) +TRANS_FEAT(UMOP4_sh, aa64_sme_mop4, do_mop4_int, a, MO_32, + a->s ? gen_helper_sme_umop4s_sh : gen_helper_sme_umop4a_sh) + TRANS_FEAT(SMOP4_sb, aa64_sme_mop4, do_mop4_int, a, MO_32, a->s ? gen_helper_sme_smop4s_sb : gen_helper_sme_smop4a_sb) TRANS_FEAT(SMOP4_dh, aa64_sme_mop4_i16i64, do_mop4_int, a, MO_64, --=20 2.43.0 From nobody Sun Jul 26 11:01:49 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1783334381; cv=none; d=zohomail.com; s=zohoarc; b=beeJ2AlJDNhv7lJjigHCLNhxBOLMUG+KaKW1qOQIF1wfqt2jjmJFzNUIognk0+2jB8XmUOpKk7zfAOcfQTFyneUrUijKgu6oxi+5V/R3Qo//GrZx1OnyArk27Oy5Q3jSertKcfnDiEoyMl+2GQfUB7DM2USH1+6qJsb6wvJ885g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783334381; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=u4Ubu5fLnvcD1Q+9KJ/USHZyKDfzCrXvumx3JNJFasw=; b=P6ozSz2dLzqDLF5w41ethvoJGGSMzDxlK2e6R/MSoZmTOaQtLwO3Kh0NLhF69srhZ8Q4HpZ4dSRL2n/nD28GzGeut1JURSRKgO59JYHb5lYcgZwEIKCa94WGsw2O9rxHcgEOWKfIxfHdZlObRkOE36Q/A2S2UjPuL/yPGSI4Fmk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783334381793399.20834528351475; Mon, 6 Jul 2026 03:39:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wggiv-0007nK-J6; Mon, 06 Jul 2026 06:38:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wggio-0007Rp-Kz for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:42 -0400 Received: from mail-wm1-x336.google.com ([2a00:1450:4864:20::336]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wggim-0003X8-TK for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:42 -0400 Received: by mail-wm1-x336.google.com with SMTP id 5b1f17b1804b1-493b27c7451so34830825e9.0 for ; Mon, 06 Jul 2026 03:38:40 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63b6f1bsm329501805e9.10.2026.07.06.03.38.38 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jul 2026 03:38:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783334319; x=1783939119; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=u4Ubu5fLnvcD1Q+9KJ/USHZyKDfzCrXvumx3JNJFasw=; b=kbmdytYFM0BJl6UM+FrKiMYY6yHuPNm2u+0kYITyvXUgX47vDsz4Vsc9+AMfb9YId2 UXRZcBy18bJ8+oJCz+X31eL/a2xQVVgJCdMy7zB1g1ZFzIVmU5iuxwf2h+F0cgCVxzE7 cKA4XPyyIF0Z6kjTKb3DFS6SkXPMDEKqrOpi6dH6+S5gHTpCd4h1VSuV90CJV/n6MNty 8l2Oq/p4aKjv8mHexnso4IvVOTeg49zU7TUXJFC4c4SOrTE3I5YLwh4MYwhIvaebvh1S AIwzePKxyxF5f6AgjHYgmhImU0wyfcI3ZFTV8GMuBbuz4iXehKOjUjvRi61YcskOPy7Q 63Fw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783334319; x=1783939119; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=u4Ubu5fLnvcD1Q+9KJ/USHZyKDfzCrXvumx3JNJFasw=; b=AGbvHwyuM5rdQbokn5G6LoSuvrG79C5HqicaGQNu9OEjVBNp2f53QBleLp5eunyQ5r 9CU3Ktv1WztJuP78F53lTGz9VbUOntr4qUXedhQ/Z1RqIbFMiHEkVxFrKufe41IrA/mA 37V/dJJqN5+k1fcdvAUIFLyiAQXgCnl+3dJeo4XW5MXirBASZyfDAf5DduxdAqdtkg+E Kp8JslMtjgQ53ICwQJMzscfTXSeYWGmatCCD16izrxv9ruES1XqxCeDjOuF40byl4TYg CjCLvbU60JITfuUACF0ypIRsFGg5k9UDpI72JH8WfRMceKEEemCcx07XqjNDibZ7ss8m gAMA== X-Gm-Message-State: AOJu0YyM/IFwHtOGLfAXPFEiWjhtnPrBTMFvhSECS9EjO9USZCLZ1EwF dRyh99bzHVzqCYhnNJZEPBetYUGYfWPfrJo0kZmPjjVYRIpH2RHbnwJZXahxlMXWhUE3JHtpedj vMH/6akAtAg== X-Gm-Gg: AfdE7cl790bkokIUrCU+WEYLmMKrv5CwuuEDrJ9uBsiWi2RhRn8GR0J9CuU13/OnkTz xoPLCGoVMPaNZglvptkbCh/yZPtm05nBNoXuBNf9GkgBO5seMvIXKzskyRn7wPHGvHcvbej2mZ1 d45QF1T8fblNyzzH8bUbvisQWkHTjzDaDaq4VuQlC5lXtttjE6ceBZ3cC2qfKCELZVi0VXUvGMy 7rYcfu/aJfVTmrOenPoAMuQNWOMjFpjH+ojS0z6Pf+Bg41I/B0pqPXxHEPJI5lpLXTMb4NkHL76 6bhdGJ/yXtessPdHssQRxllaq1qycxNXefnXPTDRzBnbMqh2jHACXUqQh5M7/6E5Szs/Lp7kDws ehJbGOUYWaGFb2IdTd4N2aOvNuX+KShDvvfohWcOmd8N5Vt0/KztL2zzVSUIXVFLCg7qtHz04LO xM0Tg/Jd7SklBy+eggb9JcTuaBjUZZruglk1PkuqK9dWHX9AOmFn+UGV/YDkgLtlZdlr8hYgL2k jTyO/90cBRYdLWBXWJfz763w4yDUHZC X-Received: by 2002:a05:600c:6986:b0:493:d117:18a8 with SMTP id 5b1f17b1804b1-493dece4a7bmr871225e9.9.1783334319375; Mon, 06 Jul 2026 03:38:39 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 43/49] target/arm: Implement UMOP4[AS] (4-way) Date: Mon, 6 Jul 2026 11:37:46 +0100 Message-ID: <20260706103752.320511-44-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260706103752.320511-1-peter.maydell@linaro.org> References: <20260706103752.320511-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::336; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x336.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783334383321158501 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260702204314.79224-14-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/tcg/helper-sme-defs.h | 5 +++++ target/arm/tcg/sme.decode | 3 +++ target/arm/tcg/sme_helper.c | 5 +++++ target/arm/tcg/translate-sme.c | 5 +++++ 4 files changed, 18 insertions(+) diff --git a/target/arm/tcg/helper-sme-defs.h b/target/arm/tcg/helper-sme-d= efs.h index 38b23690d1..60bc3c6e9b 100644 --- a/target/arm/tcg/helper-sme-defs.h +++ b/target/arm/tcg/helper-sme-defs.h @@ -394,3 +394,8 @@ DEF_HELPER_FLAGS_4(sme_sumop4a_sb, TCG_CALL_NO_RWG, voi= d, ptr, ptr, ptr, i32) DEF_HELPER_FLAGS_4(sme_sumop4s_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i= 32) DEF_HELPER_FLAGS_4(sme_sumop4a_dh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i= 32) DEF_HELPER_FLAGS_4(sme_sumop4s_dh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i= 32) + +DEF_HELPER_FLAGS_4(sme_umop4a_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) +DEF_HELPER_FLAGS_4(sme_umop4s_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) +DEF_HELPER_FLAGS_4(sme_umop4a_dh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) +DEF_HELPER_FLAGS_4(sme_umop4s_dh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index fbc85b8206..aca6a79be3 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -1125,3 +1125,6 @@ SMOP4_dh 1010 0000 110. ...0 0000 00.. ..0. 1.= .. @mop4_o3 =20 SUMOP4_sb 1000 0000 001. ...0 1000 00.. ..0. 00.. @mop4_o2 SUMOP4_dh 1010 0000 111. ...0 0000 00.. ..0. 1... @mop4_o3 + +UMOP4_sb 1000 0001 001. ...0 1000 00.. ..0. 00.. @mop4_o2 +UMOP4_dh 1010 0001 111. ...0 0000 00.. ..0. 1... @mop4_o3 diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index fd085850ed..f5fa69841d 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -2980,4 +2980,9 @@ IMOP4_4WAY(sumop4s_sb, -, int32_t, int8_t, uint8_t) IMOP4_4WAY(sumop4a_dh, +, int64_t, int16_t, uint16_t) IMOP4_4WAY(sumop4s_dh, -, int64_t, int16_t, uint16_t) =20 +IMOP4_4WAY(umop4a_sb, +, int32_t, uint8_t, uint8_t) +IMOP4_4WAY(umop4s_sb, -, int32_t, uint8_t, uint8_t) +IMOP4_4WAY(umop4a_dh, +, int64_t, uint16_t, uint16_t) +IMOP4_4WAY(umop4s_dh, -, int64_t, uint16_t, uint16_t) + #undef IMOP4_4WAY diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index a8fcb0630d..b14aac2c17 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -2122,3 +2122,8 @@ TRANS_FEAT(SUMOP4_sb, aa64_sme_mop4, do_mop4_int, a, = MO_32, a->s ? gen_helper_sme_sumop4s_sb : gen_helper_sme_sumop4a_sb) TRANS_FEAT(SUMOP4_dh, aa64_sme_mop4_i16i64, do_mop4_int, a, MO_64, a->s ? gen_helper_sme_sumop4s_dh : gen_helper_sme_sumop4a_dh) + +TRANS_FEAT(UMOP4_sb, aa64_sme_mop4, do_mop4_int, a, MO_32, + a->s ? gen_helper_sme_umop4s_sb : gen_helper_sme_umop4a_sb) +TRANS_FEAT(UMOP4_dh, aa64_sme_mop4_i16i64, do_mop4_int, a, MO_64, + a->s ? gen_helper_sme_umop4s_dh : gen_helper_sme_umop4a_dh) --=20 2.43.0 From nobody Sun Jul 26 11:01:49 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1783334675; cv=none; d=zohomail.com; s=zohoarc; b=Ju4VmhlpG4WCSnLw26npu+KkSGSXy/NUMEASYzsXjsDj18dpEppUBFvbgSrOOi9DTVhXU72q3JUAk5MWT+YbtQTsH8PoHohYduhLj8YLatcGUbn9pgrHQrrEl5uhxA4ua2WIpipMUBAmc7SAJQFWCWoukYbxXH7rjdjMnlP7P/E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783334675; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=8k8eqVcYkRAHjMMhhMtpbFzS2zs5ffXVgQxhGMJdJEM=; b=gEu1OyVsm/I5JLxs4d0wMz1avpHklALh1tBgQlQM22HrE+DGmeB9mS9JAM4+nauZfrw67uTybIw/c9AUX3v7J3gGSzUh6FiY8loZyIBat1GYrHk+Pt4pXdsvDT+BoDa5vvb3vCEFEn7WuLtL4fvMdMZ0iIckvatLC5wiDvknk/8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17833346755771004.5462750381402; Mon, 6 Jul 2026 03:44:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wggj0-00085a-Bl; Mon, 06 Jul 2026 06:38:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wggiq-0007Vx-64 for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:44 -0400 Received: from mail-wm1-x334.google.com ([2a00:1450:4864:20::334]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wggin-0003XW-N3 for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:43 -0400 Received: by mail-wm1-x334.google.com with SMTP id 5b1f17b1804b1-493ba701891so22644065e9.3 for ; Mon, 06 Jul 2026 03:38:41 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63b6f1bsm329501805e9.10.2026.07.06.03.38.39 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jul 2026 03:38:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783334320; x=1783939120; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=8k8eqVcYkRAHjMMhhMtpbFzS2zs5ffXVgQxhGMJdJEM=; b=rpDTAkJH3i/bM7IXFcivNReoL9/kUYs4k2H3F7gp31BuJiX/Nvwj0OnSsTfYSGHWqx bDO8BVrtCOZ8n10cd8byE49ndyCnkqRd6NqEJhSzF1azX0CYJSisUPHDMTiPuFGJaO4y bvEkvdpJ7bgPHuYofFYI3qht5RT5fCtJss+AJ+/uO3sEF6AF3ScSoRazg2MMtEELsWmf 4B1xfvX6a9lzadEcFpC7d8I0bkNHoHNT8Ehu32wFjTZiaR6u/T8a941ZMrXuZwmmKm1k +cOyeseagpbrcTqrcMA3MGlwCEOHvHdtbEMzYb+qGNpZ6rSoV8hrzHjzUglweGrTvyTY iEHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783334320; x=1783939120; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=8k8eqVcYkRAHjMMhhMtpbFzS2zs5ffXVgQxhGMJdJEM=; b=lIMK1q2mHN7z0jwQ8JnM6iUMiK0sBfowXKZX2dayfG+N44JV14rfKQu1U5ExA/N2Fm 8VcwxbwyMd0NfHQlFQj/E92Wcluturtcc9hJ+plMqcl+37hgvwQtzEFFQdXMFm6EG8+k XXNUmBSsRvnOT60WhktlajiLrd8asHCFAKGwTSr77uEqF6ezSvQNfIPDRsrOk/G0v5MY p4gXE5BAZRzjd7W9myaI2yVs8KePGr3qFz8GSNtzsaUO3nAWrNYEflHZdEaGDKwvqWnl PYApBlPA3T9f22zE/EFJO/bQMM8yuOKT3r4TurVJraNcXet5cAUUrNiupTUrkC+Kmzph EpPw== X-Gm-Message-State: AOJu0YxZJugdxQTI94NAsE/T/GeKe3ZneNaf67Zat2paxTyNcRIHOpHZ jGoraEBZ4BMQEcFMSvqyAAg1fwVyvbF/UNL3QNjo8oRy1UAhq6vh0PGgiSwZcCFtZi3ptMyBH8K 9vjJ+k/e8Ag== X-Gm-Gg: AfdE7ck7uncxvhW9JHC3dRiq1QOG4tz5j5dnMKDNq+eMQQO3Ceq3iRuAhMKCVSgLER0 FB29R4oG6jofFgW6KTTwG/ZiXUy3rUPQv2GABeQ+aHokcIlT629WMNOxv+o4a352mPhTl6mvZiA qDstrnyfBgxY43FJGzC+qUDkw34FLPw2uaZQfcXwP5OOVEsc0O/YBO+JHhoTCubjeufB5d/DQ2t tZzW7rPuu68i5fvAJlduggbW6pmXUKEhDrrzWVGfYTH2n2+bZrCx/FlJ0aZBEcyqKbbMNY0wWj9 OLp/1cB/ZD+XGu0/vmy+MHq9mwzNG5jRaLA1i9xmxdeh81iS+JJqgi4vDmDLOROfXk6xyOzFwLV Ro/XfYosYxr3c5Kuipc/vNQel2dOYB/MsVx4hgOLOYwFF5Bnd/UPwnDX7oVJ8QaAA0Xb1I846tT XS/SrUk6vK3XhX/tZeXg+HAzAKvUoYAdM279aVwOGoq4n4YC6LQOewvPXFmLkXOWBoHKJbDEW8z gibVM+SxkGlKV1ct/Tbng== X-Received: by 2002:a05:600c:19d2:b0:493:a96b:fa0b with SMTP id 5b1f17b1804b1-493de00875amr11045705e9.24.1783334320153; Mon, 06 Jul 2026 03:38:40 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 44/49] target/arm: Implement USMOP4[AS] Date: Mon, 6 Jul 2026 11:37:47 +0100 Message-ID: <20260706103752.320511-45-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260706103752.320511-1-peter.maydell@linaro.org> References: <20260706103752.320511-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::334; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x334.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783334677359158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260702204314.79224-15-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/tcg/helper-sme-defs.h | 5 +++++ target/arm/tcg/sme.decode | 3 +++ target/arm/tcg/sme_helper.c | 5 +++++ target/arm/tcg/translate-sme.c | 5 +++++ 4 files changed, 18 insertions(+) diff --git a/target/arm/tcg/helper-sme-defs.h b/target/arm/tcg/helper-sme-d= efs.h index 60bc3c6e9b..7fc7129e54 100644 --- a/target/arm/tcg/helper-sme-defs.h +++ b/target/arm/tcg/helper-sme-defs.h @@ -399,3 +399,8 @@ DEF_HELPER_FLAGS_4(sme_umop4a_sb, TCG_CALL_NO_RWG, void= , ptr, ptr, ptr, i32) DEF_HELPER_FLAGS_4(sme_umop4s_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) DEF_HELPER_FLAGS_4(sme_umop4a_dh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) DEF_HELPER_FLAGS_4(sme_umop4s_dh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) + +DEF_HELPER_FLAGS_4(sme_usmop4a_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i= 32) +DEF_HELPER_FLAGS_4(sme_usmop4s_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i= 32) +DEF_HELPER_FLAGS_4(sme_usmop4a_dh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i= 32) +DEF_HELPER_FLAGS_4(sme_usmop4s_dh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i= 32) diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index aca6a79be3..53e7e67feb 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -1128,3 +1128,6 @@ SUMOP4_dh 1010 0000 111. ...0 0000 00.. ..0. 1.= .. @mop4_o3 =20 UMOP4_sb 1000 0001 001. ...0 1000 00.. ..0. 00.. @mop4_o2 UMOP4_dh 1010 0001 111. ...0 0000 00.. ..0. 1... @mop4_o3 + +USMOP4_sb 1000 0001 000. ...0 1000 00.. ..0. 00.. @mop4_o2 +USMOP4_dh 1010 0001 110. ...0 0000 00.. ..0. 1... @mop4_o3 diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index f5fa69841d..23bb816b6a 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -2985,4 +2985,9 @@ IMOP4_4WAY(umop4s_sb, -, int32_t, uint8_t, uint8_t) IMOP4_4WAY(umop4a_dh, +, int64_t, uint16_t, uint16_t) IMOP4_4WAY(umop4s_dh, -, int64_t, uint16_t, uint16_t) =20 +IMOP4_4WAY(usmop4a_sb, +, int32_t, uint8_t, int8_t) +IMOP4_4WAY(usmop4s_sb, -, int32_t, uint8_t, int8_t) +IMOP4_4WAY(usmop4a_dh, +, int64_t, uint16_t, int16_t) +IMOP4_4WAY(usmop4s_dh, -, int64_t, uint16_t, int16_t) + #undef IMOP4_4WAY diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index b14aac2c17..dcc4690fba 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -2127,3 +2127,8 @@ TRANS_FEAT(UMOP4_sb, aa64_sme_mop4, do_mop4_int, a, M= O_32, a->s ? gen_helper_sme_umop4s_sb : gen_helper_sme_umop4a_sb) TRANS_FEAT(UMOP4_dh, aa64_sme_mop4_i16i64, do_mop4_int, a, MO_64, a->s ? gen_helper_sme_umop4s_dh : gen_helper_sme_umop4a_dh) + +TRANS_FEAT(USMOP4_sb, aa64_sme_mop4, do_mop4_int, a, MO_32, + a->s ? gen_helper_sme_usmop4s_sb : gen_helper_sme_usmop4a_sb) +TRANS_FEAT(USMOP4_dh, aa64_sme_mop4_i16i64, do_mop4_int, a, MO_64, + a->s ? gen_helper_sme_usmop4s_dh : gen_helper_sme_usmop4a_dh) --=20 2.43.0 From nobody Sun Jul 26 11:01:49 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1783334404; cv=none; d=zohomail.com; s=zohoarc; b=aCj88QxXgRjKAD6uWU2EG57lwlIiyEzdF2iNgOlbczum7UCl/8YibID+nZRAaJqRnWqYtOLtrAgDF1BYPrpSJ8/IHsgpYtAXYbVB4I8zpSIZJiNSqTxu8Ga6BAr1d4khGrEgIpRqkwaGj/tcf+rwLTKhvpO+D3EcMMGSZ/2qXs0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783334404; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=F4FecMS9cYuiefvro8EfTSYY+87Ud/V+uwe0L9x0kOw=; b=lMVcpUHm8LfMMyBkWcca/GkDcMxkS8QpwHry//wwy6/2WDGN2Y2wtqqs7w/+hyeM2F4QlEj6CqB/TIGpJAMLcCtWObPDtO+oSL7WCW2A+MvMkoHDhzkYfj5aKAbVziQ8UfguAr1TssP/FGQ3YZ8/+mCAdzRGA+yK71IMajgPEoA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783334404399901.2701385144717; Mon, 6 Jul 2026 03:40:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wggiw-0007qr-E9; Mon, 06 Jul 2026 06:38:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wggiq-0007WM-OT for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:45 -0400 Received: from mail-wm1-x329.google.com ([2a00:1450:4864:20::329]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wggip-0003Xz-0u for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:44 -0400 Received: by mail-wm1-x329.google.com with SMTP id 5b1f17b1804b1-493c00f74baso17404915e9.0 for ; Mon, 06 Jul 2026 03:38:42 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63b6f1bsm329501805e9.10.2026.07.06.03.38.40 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jul 2026 03:38:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783334321; x=1783939121; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=F4FecMS9cYuiefvro8EfTSYY+87Ud/V+uwe0L9x0kOw=; b=fkp809Yre4Fm2Afg9AHT+6zOM5NPGVAqxu0xPfzX971AD00WJzSAZtsmraWw8brTUi 8QiHVKedZlZivhbBRyyXkwKLNjcQFjSRjqEE9FbpdumTOTe2JGzgAg0e7c0qnMKPiS/x BCL5cdMbltWUNFTXq/AYugDR/wbrWLUeMXY8YkLoj+GNGqF0DL0Co2G7qoYrQy6TiM6n Vxvdf/dkaiJTSyPPTB5zVloZ+kPUXVCJ0WGHcOpl9wzIla2PuVnnLWNwiVfVQxtT0B+B txRMhQm4sOpt/S/n2gQMl/NPlEbo/3eggaEX8jEsZr59YpRSAHTqJnjNE0cVkUiQVwXm eENA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783334321; x=1783939121; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=F4FecMS9cYuiefvro8EfTSYY+87Ud/V+uwe0L9x0kOw=; b=AGu28gLvQxuM2Qj2noUnAng/ENNfmJx4xndqxWjO86W5LJ7CuvSEMYFdGN5Beqv7Jy Fb+KRw8JpCW4kXcWX4K2dEi3jDcu5iEZYtY5dZ1esFT0EXt9NS2INwLFEjooZMSM1H3H PLFlnK2wPFuWeTHDkLma4QZh3U+34PJHE9D1eeFlz3bjwXp307LOghogKgMZxZyb0KEh dR+AIGSR1p1Fen7L70Tqps/ecrWtcBSzbO4F6J4aPEljiCUGP3IdLM9fXVympoAOyaxE ynYtrSVO2gKuDaiU8RZMaE+rd4bJXiIFP7Iy5HgsITJyhSYEOj7vM/GgBjNNFTBg3UqL qW2A== X-Gm-Message-State: AOJu0Yzfb3rFyVIr1ZJTgiYeYzBNwlDX2/H9RQPRtuOa6N8t6JLDbcQD jeO1EkaOHgug33GAVZbyhV5MEHtaumlq2mojfufc3G8NCFesFIr/VUuI28hJdq6ZJxg0nqLcwBV gyCNDfIJ9Ig== X-Gm-Gg: AfdE7ckwNT6LSPorXSBrCfgNcdA7xySfp3alO127vyYZwMOtuRVmP0U5ZETGoLmjhlW x30mGm2YG98Rn9Fq6L70buXXsJxrieTuqH55jyYsgpclcQMpKs8+i2/P5UIfSR0klmYVQ/rcLCG pGRPVM7RC4RXiA/oo/u7WklUXLSlr4FYIvRx1uIBgPDCjwDU23p/D6bjfLa+qK3X2t/xMMgz1H0 8/0XK9yBcdoDxtyBH3y/gq4OLbETa9hbZWlSqwI39rZTwQ9bnw/jufYo6JZHdBoEuD4kC9FlxXR KfT/ew1UfVhfW3fMWl8BRxbuuWgECg/zVPZ7Bgd48YNpNfZYSiTKufgu9bmKsjsLSWUWLepzqTH mU9TL7fgBmfu+NEQCGs/rV3v3ecSqs0KP4Op1kmcgLKp+zcSgsvFJKsiQ/+6yDj2Io9CWguGDEM 52Fv2wZJQL4jmem5jPU7pFLvOzKQ4Dy0UKSnCMS40J3NGU0GjnD0HXQvbA1kgqTmXamm9wtj0/4 o9GnKeXL0CV26kGIgmKJQ== X-Received: by 2002:a05:600c:800f:b0:493:d078:796 with SMTP id 5b1f17b1804b1-493d11dea05mr105303715e9.17.1783334321615; Mon, 06 Jul 2026 03:38:41 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 45/49] target/arm: Enable FEAT_SME_MOP4 for -cpu max Date: Mon, 6 Jul 2026 11:37:48 +0100 Message-ID: <20260706103752.320511-46-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260706103752.320511-1-peter.maydell@linaro.org> References: <20260706103752.320511-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::329; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x329.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783334405591158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260702204314.79224-16-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- docs/system/arm/emulation.rst | 1 + linux-user/aarch64/elfload.c | 1 + target/arm/tcg/cpu64.c | 1 + 3 files changed, 3 insertions(+) diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index 2864e25294..4f413d69ef 100644 --- a/docs/system/arm/emulation.rst +++ b/docs/system/arm/emulation.rst @@ -175,6 +175,7 @@ the following architecture extensions: - FEAT_SME_F8F32 (SME2 ZA-targeting FP8 multiply-accumulate, dot product, = and outer product to single-precision instructions) - FEAT_SME_I16I64 (16-bit to 64-bit integer widening outer product instruc= tions) - FEAT_SME_LUTv2 (Lookup table instructions with 4-bit indices and 8-bit e= lements) +- FEAT_SME_MOP4 (Quarter-tile outer product instructions) - FEAT_SSVE_AES (Streaming SVE Mode Advanced Encryption Standard and 128-b= it polynomial multiply long instructions) - FEAT_SSVE_FEXPA (Streaming FEXPA instruction) - FEAT_SSVE_FP8DOT2 (SVE2 FP8 2-way dot product to half-precision instruct= ions in Streaming SVE mode) diff --git a/linux-user/aarch64/elfload.c b/linux-user/aarch64/elfload.c index 850bfb8666..64e25a04e3 100644 --- a/linux-user/aarch64/elfload.c +++ b/linux-user/aarch64/elfload.c @@ -176,6 +176,7 @@ abi_ulong get_elf_hwcap(CPUState *cs) GET_FEATURE_ID(aa64_ssve_aes, ARM_HWCAP_A64_SME_AES); GET_FEATURE_ID(aa64_ssve_fexpa, ARM_HWCAP_A64_SME_SFEXPA); GET_FEATURE_ID(aa64_fprcvt, ARM_HWCAP_A64_FPRCVT); + GET_FEATURE_ID(aa64_sme_mop4, ARM_HWCAP_A64_SME_SMOP4); =20 return hwcaps; } diff --git a/target/arm/tcg/cpu64.c b/target/arm/tcg/cpu64.c index e0d701a85c..8a3ebf6321 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -1385,6 +1385,7 @@ void aarch64_max_tcg_initfn(Object *obj) =20 t =3D GET_IDREG(isar, ID_AA64SMFR0); t =3D FIELD_DP64(t, ID_AA64SMFR0, SFEXPA, 1); /* FEAT_SSVE_FEXPA */ + t =3D FIELD_DP64(t, ID_AA64SMFR0, SMOP4, 1); /* FEAT_SME_MOP4 */ t =3D FIELD_DP64(t, ID_AA64SMFR0, AES, 1); /* FEAT_SSVE_AES */ t =3D FIELD_DP64(t, ID_AA64SMFR0, SF8DP2, 1); /* FEAT_SSVE_FP8DOT2 */ t =3D FIELD_DP64(t, ID_AA64SMFR0, SF8DP4, 1); /* FEAT_SSVE_FP8DOT4 */ --=20 2.43.0 From nobody Sun Jul 26 11:01:49 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1783334361; cv=none; d=zohomail.com; s=zohoarc; b=MNvpoOjVGxxBZRog8hvDLY/UPUxbczZ7xSR6YSY3uIPyPzftHDEq5Z50N5Hx+xcdPwZe7E+FeNO9jJmksEfUjOd9abHQBjgV0o8LKGaOgopL4F73p5w+eq/ZTK10BBLicBt1jFI3NyQd/MqHnkoyxAsJiMhxw/gp5J+eYgseZT4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783334361; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=h3zKbeOUy0//eA+lqxN4zelg5d7YipXLxoq22N2Boq0=; b=SU38MUFW/fmNwNb7Bnkj+aG8WSwA08oIoYLkK8+XbNIrFPbNTEzwT9VDcfstdKKAR7FGHm7QUIXf5WdCnyI1s7XMTdK2YkIfB17ICnhYkiOhhCNZMFVltHN8P/LOjwiB3xh4coXIjU41iHDEiOUYre3MJaZ4TlcL2GQVazwM0YY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783334361770880.8269063172655; Mon, 6 Jul 2026 03:39:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wggix-0007ty-19; Mon, 06 Jul 2026 06:38:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wggis-0007cP-F8 for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:46 -0400 Received: from mail-wm1-x32f.google.com ([2a00:1450:4864:20::32f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wggip-0003YH-VQ for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:46 -0400 Received: by mail-wm1-x32f.google.com with SMTP id 5b1f17b1804b1-493c1950518so19029815e9.1 for ; Mon, 06 Jul 2026 03:38:43 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63b6f1bsm329501805e9.10.2026.07.06.03.38.41 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jul 2026 03:38:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783334322; x=1783939122; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=h3zKbeOUy0//eA+lqxN4zelg5d7YipXLxoq22N2Boq0=; b=GgVqSxpYPnZt9ZIa4jnCAn6INxlj6GwhcVCN9kPfWLeHCeoEaTQqGCx4/vwtTWbx2C j4gvZVD8S8Ce5vKHIdRZKVJk7YE6H0PoqkvdrttjELA2aCtG8Lp+Lry4xzxtcmJvA7wG esJLgXrKl2PCvbkTaWW8fX48tuLLPsAOgV7+f6E5vWSOSVUWpXToQa4Y5c+NKL3+IeSt RnA/1IeFIrONIs0+fLr5ADH0m5NFi1oekGKutijD2RecK9oSh3ySXN3TLqkakf933x5y 327pxcANiDLxN+E0pUd6FSKLyhqm2o4NinaGG3eUlQwH8t0Exzmi+n8AB+Nz0dOydYm4 qz5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783334322; x=1783939122; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=h3zKbeOUy0//eA+lqxN4zelg5d7YipXLxoq22N2Boq0=; b=NnhWe8XgoEaaXfs/cH1zJyv81pRfJ5QMNFDt2HA3DXuUBp6ky2nzy4G6QI6z5CUcNx fGbWgDpiuAVbK9pDIFvTZ73QcDXaXcbG/DjNdVjJ0P0Db5OsMu76M0Al60XZyoNhvDgs GrWGw313srA84w9/t7TWbT9nMjqL4TYKJSjD2vUI0vLNFp8E6SjLKUtNJ7Wd9n1ACkfl N/aco6K2huDwcXbeESgJSkASHsg2hKZrEWYq+LppxkpzzOSWc6yQg9LQYAWKcpn+Q6EX 76d5g+3jNHRU9krfIzDnuoEUq1o6H4cRR/+eD4TrSfu53N+1sZBIewS/uIgG4oTCM+TZ gzHQ== X-Gm-Message-State: AOJu0Yxel7thp0Qh6s35CuPem2o37Lcn8/++gHS//PovCtGotOmA5h+p BzBsNvoyPhnLXiPetcOEoKpKlLdW0/gLWBAvaQN6c79BU/d2AwJym82EdTS2y6tm3SlYEA7qkNn 6NIOOBIjT+Q== X-Gm-Gg: AfdE7cmK/5yaGtamVnx3qoGFPRLKr16aL4Teg7SCi4IlaPyUkLVAJzGEWGyfN2xNwJh GEtblQTk20BnWZFkQHyBFP1TU3ppq2wQUeYIG9YXJri4bsZFrloWj85W20ELV1v78buqjho41pb MDzfeofBO2c1dQcuI4Sp9j79e0YI36tUNADb1zh9Z6NhrVuuCi8NcYBQpI7W7PtXA0NmoinK/Iv GGU2KiyYPNpq/Vq4JuUDChu3OBaK0u5W9xOR03in4zMmom1DRX4xnWJFVQc1fjCQ2rJegz773nV lAbeAjGd+omqLLpwXFSaoXntJb2wVDp8iyaiqgPXCm5RVnMZlcBTlBXLBYGI2m0Biw+mQnTs5xl BuFAvawx4e1OGGvL57eGc981PiWPI6KVJwLohXnktehL/6V8NCVnStCgRoKLXYTi9rB7k+Mi2Ex 6hoxLu8ri09El7R21FSTcXCXjmWQVT1Ajq61fn0HZxWEr5sTYca+DVrkm2KDhScwq3NSzwD5vwc ajQYyIxxjpJg7Nlv/l5yg== X-Received: by 2002:a05:600c:8b12:b0:493:b698:9247 with SMTP id 5b1f17b1804b1-493dececcd3mr746745e9.14.1783334322479; Mon, 06 Jul 2026 03:38:42 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 46/49] target/arm: Separate out Neon from VFP access checks Date: Mon, 6 Jul 2026 11:37:49 +0100 Message-ID: <20260706103752.320511-47-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260706103752.320511-1-peter.maydell@linaro.org> References: <20260706103752.320511-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32f; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32f.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783334363573158500 Content-Type: text/plain; charset="utf-8" Currently we use vfp_access_check() for AArch32 VFP and Neon instructions. This is not quite right: * there are optional CPACR.ASEDIS and HCPTR.TASE controls that allow trapping of just the Neon and not VFP instructions * Neon instructions are supposed to report a slightly different syndrome in HCR when they trap to AArch32 EL2 As a preliminary refactor so we have somewhere we can make this distinction, separate out Neon access checks into a separate neon_access_check(), which initially just calls vfp_access_check(). The set of insns this needs to cover are those described in section E1.3.9 of the DDI0487M.b Arm ARM. For us this corresponds to everything in neon-dp.decode and neon-ls.decode and thus in translate-neon.c, plus three insns that we handle in translate-vfp.c: - VDUP (general-purpose register) - VMOV (general-purpose register to scalar) byte and halfword - VMOV (scalar to general-purpose register) byte and halfword (which are the ones in that file with ARM_FEATURE_NEON checks). Signed-off-by: Peter Maydell Reviewed-by: Richard Henderson Message-id: 20260702184019.3431139-2-peter.maydell@linaro.org --- target/arm/tcg/translate-a32.h | 1 + target/arm/tcg/translate-neon.c | 74 ++++++++++++++++----------------- target/arm/tcg/translate-vfp.c | 33 +++++++++++---- 3 files changed, 62 insertions(+), 46 deletions(-) diff --git a/target/arm/tcg/translate-a32.h b/target/arm/tcg/translate-a32.h index a8df364171..1023cddab5 100644 --- a/target/arm/tcg/translate-a32.h +++ b/target/arm/tcg/translate-a32.h @@ -33,6 +33,7 @@ void load_reg_var(DisasContext *s, TCGv_i32 var, int reg); void arm_gen_condlabel(DisasContext *s); bool vfp_access_check(DisasContext *s); bool vfp_access_check_m(DisasContext *s, bool skip_context_update); +bool neon_access_check(DisasContext *s); void read_neon_element32(TCGv_i32 dest, int reg, int ele, MemOp memop); void read_neon_element64(TCGv_i64 dest, int reg, int ele, MemOp memop); void write_neon_element32(TCGv_i32 src, int reg, int ele, MemOp memop); diff --git a/target/arm/tcg/translate-neon.c b/target/arm/tcg/translate-neo= n.c index e3c7d9217b..50a44511d9 100644 --- a/target/arm/tcg/translate-neon.c +++ b/target/arm/tcg/translate-neon.c @@ -135,7 +135,7 @@ static bool do_neon_ddda(DisasContext *s, int q, int vd= , int vn, int vm, return false; } =20 - if (!vfp_access_check(s)) { + if (!neon_access_check(s)) { return true; } =20 @@ -165,7 +165,7 @@ static bool do_neon_ddda_env(DisasContext *s, int q, in= t vd, int vn, int vm, return false; } =20 - if (!vfp_access_check(s)) { + if (!neon_access_check(s)) { return true; } =20 @@ -197,7 +197,7 @@ static bool do_neon_ddda_fpst(DisasContext *s, int q, i= nt vd, int vn, int vm, return false; } =20 - if (!vfp_access_check(s)) { + if (!neon_access_check(s)) { return true; } =20 @@ -249,7 +249,7 @@ static bool trans_VCADD(DisasContext *s, arg_VCADD *a) return false; } =20 - if (!vfp_access_check(s)) { + if (!neon_access_check(s)) { return true; } =20 @@ -319,7 +319,7 @@ static bool trans_VFML(DisasContext *s, arg_VFML *a) return false; } =20 - if (!vfp_access_check(s)) { + if (!neon_access_check(s)) { return true; } =20 @@ -413,7 +413,7 @@ static bool trans_VFML_scalar(DisasContext *s, arg_VFML= _scalar *a) return false; } =20 - if (!vfp_access_check(s)) { + if (!neon_access_check(s)) { return true; } =20 @@ -506,7 +506,7 @@ static bool trans_VLDST_multiple(DisasContext *s, arg_V= LDST_multiple *a) return false; } =20 - if (!vfp_access_check(s)) { + if (!neon_access_check(s)) { return true; } =20 @@ -617,7 +617,7 @@ static bool trans_VLD_all_lanes(DisasContext *s, arg_VL= D_all_lanes *a) } } =20 - if (!vfp_access_check(s)) { + if (!neon_access_check(s)) { return true; } =20 @@ -714,7 +714,7 @@ static bool trans_VLDST_single(DisasContext *s, arg_VLD= ST_single *a) return false; } =20 - if (!vfp_access_check(s)) { + if (!neon_access_check(s)) { return true; } =20 @@ -798,7 +798,7 @@ static bool do_3same(DisasContext *s, arg_3same *a, GVe= cGen3Fn fn) return false; } =20 - if (!vfp_access_check(s)) { + if (!neon_access_check(s)) { return true; } =20 @@ -1076,7 +1076,7 @@ static bool do_vector_2sh(DisasContext *s, arg_2reg_s= hift *a, GVecGen2iFn *fn) return false; } =20 - if (!vfp_access_check(s)) { + if (!neon_access_check(s)) { return true; } =20 @@ -1126,7 +1126,7 @@ static bool do_2shift_narrow_64(DisasContext *s, arg_= 2reg_shift *a, return false; } =20 - if (!vfp_access_check(s)) { + if (!neon_access_check(s)) { return true; } =20 @@ -1177,7 +1177,7 @@ static bool do_2shift_narrow_32(DisasContext *s, arg_= 2reg_shift *a, return false; } =20 - if (!vfp_access_check(s)) { + if (!neon_access_check(s)) { return true; } =20 @@ -1302,7 +1302,7 @@ static bool do_vshll_2sh(DisasContext *s, arg_2reg_sh= ift *a, return false; } =20 - if (!vfp_access_check(s)) { + if (!neon_access_check(s)) { return true; } =20 @@ -1392,7 +1392,7 @@ static bool do_fp_2sh(DisasContext *s, arg_2reg_shift= *a, return false; } =20 - if (!vfp_access_check(s)) { + if (!neon_access_check(s)) { return true; } =20 @@ -1436,7 +1436,7 @@ static bool do_1reg_imm(DisasContext *s, arg_1reg_imm= *a, return false; } =20 - if (!vfp_access_check(s)) { + if (!neon_access_check(s)) { return true; } =20 @@ -1499,7 +1499,7 @@ static bool do_prewiden_3d(DisasContext *s, arg_3diff= *a, return false; } =20 - if (!vfp_access_check(s)) { + if (!neon_access_check(s)) { return true; } =20 @@ -1606,7 +1606,7 @@ static bool do_narrow_3d(DisasContext *s, arg_3diff *= a, return false; } =20 - if (!vfp_access_check(s)) { + if (!neon_access_check(s)) { return true; } =20 @@ -1696,7 +1696,7 @@ static bool do_long_3d(DisasContext *s, arg_3diff *a, return false; } =20 - if (!vfp_access_check(s)) { + if (!neon_access_check(s)) { return true; } =20 @@ -1967,7 +1967,7 @@ static bool trans_VMULL_P_3d(DisasContext *s, arg_3di= ff *a) return false; } =20 - if (!vfp_access_check(s)) { + if (!neon_access_check(s)) { return true; } =20 @@ -2041,7 +2041,7 @@ static bool do_2scalar(DisasContext *s, arg_2scalar *= a, return false; } =20 - if (!vfp_access_check(s)) { + if (!neon_access_check(s)) { return true; } =20 @@ -2139,7 +2139,7 @@ static bool do_2scalar_fp_vec(DisasContext *s, arg_2s= calar *a, return false; } =20 - if (!vfp_access_check(s)) { + if (!neon_access_check(s)) { return true; } =20 @@ -2236,7 +2236,7 @@ static bool do_vqrdmlah_2sc(DisasContext *s, arg_2sca= lar *a, return false; } =20 - if (!vfp_access_check(s)) { + if (!neon_access_check(s)) { return true; } =20 @@ -2307,7 +2307,7 @@ static bool do_2scalar_long(DisasContext *s, arg_2sca= lar *a, return false; } =20 - if (!vfp_access_check(s)) { + if (!neon_access_check(s)) { return true; } =20 @@ -2451,7 +2451,7 @@ static bool trans_VEXT(DisasContext *s, arg_VEXT *a) return false; } =20 - if (!vfp_access_check(s)) { + if (!neon_access_check(s)) { return true; } =20 @@ -2520,7 +2520,7 @@ static bool trans_VTBL(DisasContext *s, arg_VTBL *a) return false; } =20 - if (!vfp_access_check(s)) { + if (!neon_access_check(s)) { return true; } =20 @@ -2555,7 +2555,7 @@ static bool trans_VDUP_scalar(DisasContext *s, arg_VD= UP_scalar *a) return false; } =20 - if (!vfp_access_check(s)) { + if (!neon_access_check(s)) { return true; } =20 @@ -2591,7 +2591,7 @@ static bool do_zip_uzp(DisasContext *s, arg_2misc *a, return false; } =20 - if (!vfp_access_check(s)) { + if (!neon_access_check(s)) { return true; } =20 @@ -2660,7 +2660,7 @@ static bool do_vmovn(DisasContext *s, arg_2misc *a, return false; } =20 - if (!vfp_access_check(s)) { + if (!neon_access_check(s)) { return true; } =20 @@ -2724,7 +2724,7 @@ static bool trans_VSHLL(DisasContext *s, arg_2misc *a) return false; } =20 - if (!vfp_access_check(s)) { + if (!neon_access_check(s)) { return true; } =20 @@ -2764,7 +2764,7 @@ static bool trans_VCVT_B16_F32(DisasContext *s, arg_2= misc *a) return false; } =20 - if (!vfp_access_check(s)) { + if (!neon_access_check(s)) { return true; } =20 @@ -2804,7 +2804,7 @@ static bool trans_VCVT_F16_F32(DisasContext *s, arg_2= misc *a) return false; } =20 - if (!vfp_access_check(s)) { + if (!neon_access_check(s)) { return true; } =20 @@ -2850,7 +2850,7 @@ static bool trans_VCVT_F32_F16(DisasContext *s, arg_2= misc *a) return false; } =20 - if (!vfp_access_check(s)) { + if (!neon_access_check(s)) { return true; } =20 @@ -2900,7 +2900,7 @@ static bool do_2misc_vec(DisasContext *s, arg_2misc *= a, GVecGen2Fn *fn) return false; } =20 - if (!vfp_access_check(s)) { + if (!neon_access_check(s)) { return true; } =20 @@ -3028,7 +3028,7 @@ static bool do_2misc(DisasContext *s, arg_2misc *a, N= eonGenOneOpFn *fn) return false; } =20 - if (!vfp_access_check(s)) { + if (!neon_access_check(s)) { return true; } =20 @@ -3232,7 +3232,7 @@ static bool trans_VSWP(DisasContext *s, arg_2misc *a) return false; } =20 - if (!vfp_access_check(s)) { + if (!neon_access_check(s)) { return true; } =20 @@ -3305,7 +3305,7 @@ static bool trans_VTRN(DisasContext *s, arg_2misc *a) return false; } =20 - if (!vfp_access_check(s)) { + if (!neon_access_check(s)) { return true; } =20 diff --git a/target/arm/tcg/translate-vfp.c b/target/arm/tcg/translate-vfp.c index 8d9d1ab877..6f6b234c9a 100644 --- a/target/arm/tcg/translate-vfp.c +++ b/target/arm/tcg/translate-vfp.c @@ -303,6 +303,17 @@ bool vfp_access_check(DisasContext *s) } } =20 +/* + * Access check for Neon; this is for instructions which can be + * trapped by CPACR.ASEDIS and HCPTR.TASE. Support for those traps + * is optional and we currently do not implement them, so this + * is identical to a VFP access check for now. + */ +bool neon_access_check(DisasContext *s) +{ + return vfp_access_check(s); +} + static bool trans_VSEL(DisasContext *s, arg_VSEL *a) { uint32_t rd, rn, rm; @@ -620,15 +631,17 @@ static bool trans_VMOV_to_gp(DisasContext *s, arg_VMO= V_to_gp *a) { /* VMOV scalar to general purpose register */ TCGv_i32 tmp; + bool insn_is_neon =3D false; =20 /* * SIZE =3D=3D MO_32 is a VFP instruction; otherwise NEON. MVE has * all sizes, whether the CPU has fp or not. */ if (!dc_isar_feature(aa32_mve, s)) { - if (a->size =3D=3D MO_32 - ? !dc_isar_feature(aa32_fpsp_v2, s) - : !arm_dc_feature(s, ARM_FEATURE_NEON)) { + insn_is_neon =3D a->size !=3D MO_32; + if (insn_is_neon + ? !arm_dc_feature(s, ARM_FEATURE_NEON) + : !dc_isar_feature(aa32_fpsp_v2, s)) { return false; } } @@ -644,7 +657,7 @@ static bool trans_VMOV_to_gp(DisasContext *s, arg_VMOV_= to_gp *a) } } =20 - if (!vfp_access_check(s)) { + if (!(insn_is_neon ? neon_access_check(s) : vfp_access_check(s))) { return true; } =20 @@ -665,15 +678,17 @@ static bool trans_VMOV_from_gp(DisasContext *s, arg_V= MOV_from_gp *a) { /* VMOV general purpose register to scalar */ TCGv_i32 tmp; + bool insn_is_neon =3D false; =20 /* * SIZE =3D=3D MO_32 is a VFP instruction; otherwise NEON. MVE has * all sizes, whether the CPU has fp or not. */ if (!dc_isar_feature(aa32_mve, s)) { - if (a->size =3D=3D MO_32 - ? !dc_isar_feature(aa32_fpsp_v2, s) - : !arm_dc_feature(s, ARM_FEATURE_NEON)) { + insn_is_neon =3D a->size !=3D MO_32; + if (insn_is_neon + ? !arm_dc_feature(s, ARM_FEATURE_NEON) + : !dc_isar_feature(aa32_fpsp_v2, s)) { return false; } } @@ -689,7 +704,7 @@ static bool trans_VMOV_from_gp(DisasContext *s, arg_VMO= V_from_gp *a) } } =20 - if (!vfp_access_check(s)) { + if (!(insn_is_neon ? neon_access_check(s) : vfp_access_check(s))) { return true; } =20 @@ -736,7 +751,7 @@ static bool trans_VDUP(DisasContext *s, arg_VDUP *a) size =3D 2; } =20 - if (!vfp_access_check(s)) { + if (!neon_access_check(s)) { return true; } =20 --=20 2.43.0 From nobody Sun Jul 26 11:01:49 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1783334522; cv=none; d=zohomail.com; s=zohoarc; b=cUc7+c6ukt3Esjapp62DCbFyQC2ik6objm53S2G74R+NtHR4+E7kQ8sPpkkDN+2nHr1S8ATWPpx54AXUfqGtePdHUIDvI7vXslDcsLW6kMwRZJaibPWWwEVZBwwyIcN7ovwJ/YQhNj05gRqm38tT832wMWHJZToXdPsWBN0l7aU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783334522; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=R7PJftppVr1IHdKZiJeYYAXnb9UTupGaY68HGzluVjE=; b=kmD8PxwHlvsAOFQFiOBrP+LmUCj4ITj9ic3EtqHYEFkA6oGkT6ezp6KNOu7Sri8/tmRWrJtrib+yT0lMf9lJKM2acUyHcmPSur9/Tfy0Qwl49NHMvQXmrje6RaXdKwsMZNbE154MnnzqPfmRtwKzklHrByXpG24MNJjsqxTmgHE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783334522639872.3787274628115; Mon, 6 Jul 2026 03:42:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wggiv-0007lp-8v; Mon, 06 Jul 2026 06:38:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wggis-0007eP-W1 for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:47 -0400 Received: from mail-wm1-x334.google.com ([2a00:1450:4864:20::334]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wggiq-0003YW-Jp for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:46 -0400 Received: by mail-wm1-x334.google.com with SMTP id 5b1f17b1804b1-493bb510ce4so21476865e9.1 for ; Mon, 06 Jul 2026 03:38:44 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63b6f1bsm329501805e9.10.2026.07.06.03.38.42 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jul 2026 03:38:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783334323; x=1783939123; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=R7PJftppVr1IHdKZiJeYYAXnb9UTupGaY68HGzluVjE=; b=mUUHq5duMcgpDblKF+rt/WTo27v6gLickbC2ppcJCYqYNHVbL2aYGIF/EkwAsTQ20C 5DNWEMwz5yoV/GJ6bW/pHjiS8u3hFVK8eMuyN6MJkrz4h1s5K+VFbHSxKBBTnRY1h/SQ +Iyk9nbISW9RIS14hqdk3n5TzUuCxk+vluvfRFa+RCKtHj7dwr7/bJYpTzT/zgA28Y2R Mt9CuvV5emlJkTcAICDMHIk/5cFLkhNxi0zDtBs7z0dXFWU3KFKLpehgfbo04eGu+fEK IaYYoUbKhGZRXTFiYpHjwvboZjof/QF7lIZ/DXOJDS3PAplbb9+cYD8bfregTysVi2XN DRvA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783334323; x=1783939123; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=R7PJftppVr1IHdKZiJeYYAXnb9UTupGaY68HGzluVjE=; b=mhzRatUYxKTVmfwk/+5j0/W31w7lfuwyeKeXfYGgKW0XMS3BasJbRnnux8ZN5bnUg9 htfoaFF5fZa4KMUDyBZFre0xmN0RrGvggKJyNafW8dASKxrZHtvsLA+yyIxT7NRhFOjx BtLA6m8WzyzwqnaSIxB8JyYRFxG06OQj4X8e7rKmUVVkSOAc//zvMJBZ3dJxUelwa3P8 Ely5mC+rp9q7zxTKtKOWf8zsOi+yPwhz2KQzf2W8pn9AvhAQWikq81DaB+Du4BCkgInc GLkIIn7m+PW+TTPIIdVmHeMDsRwfhJhyjFq/36lLuiRvNCTA97zR/AqJZZFf4Ekd4UDR tneA== X-Gm-Message-State: AOJu0YxknPVx5gmR7cJg4ECie7Xaf+vm/mB1jUUb0KCdR+MJTYCSvNeP Q6mJIMYy31JA5J+B5/bcFnZoQcEJQKkyFK3u91S12O8Vhar80/mq9QeVXK5EXl2Ne4C+QD3nm93 L+tH581v9mQ== X-Gm-Gg: AfdE7ckqUPNJofo21Hz6TTIcWQUMau+w83xhQunawvsIOhiigL+KiVftHaLg1xHXA28 C4kaAlpkfLhrngT0CfuyGUUZvDHoir92KRZWLIE3XyiPI7NuRVDJ9E5ehkAj42jCIeEst94WyhZ fZp5rBVWb12lGH4q0o4YcCuBiofpdCk0t3y2Wfepb81IdA8FU9wtwcCV2nkkd9Eycm1NgH53iAu 1y7eKR0TYFpRtqFEvAMjbe86hI8gebIWndgtEMWikQdzHafydG0Fn/ln4apeTF/BNpZ4wOS2iou 93UEmjR7gUire6oHypPLPrVnGPqAWnANj9KaCyKTgUNjj35M2ntTP+MGWJHeyTyFiMknG/ID4AG EErYeZ0dpFcXzwW1ruEDZogI6CGconL0+c/EI/qpvjKLRIyopPaOUofZqnCYBxX6yro4M4bLDuw aWpndXys3KfelfXZzBhMq6ISLG74ic5G/KT3tZ0Qfj9xVN+wEyUWEkKkYzb09KELMkbOjywQzg8 leRx4msJTiHffghA7AVlQ== X-Received: by 2002:a05:600c:a305:b0:493:d1e0:a4f1 with SMTP id 5b1f17b1804b1-493d1e0a802mr80481415e9.0.1783334323199; Mon, 06 Jul 2026 03:38:43 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 47/49] target/arm: Separate syndrome functions for A32 and A64 Date: Mon, 6 Jul 2026 11:37:50 +0100 Message-ID: <20260706103752.320511-48-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260706103752.320511-1-peter.maydell@linaro.org> References: <20260706103752.320511-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::334; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x334.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783334524442158500 Content-Type: text/plain; charset="utf-8" Currently we have one syn_fp_access_trap() which we use for fp traps from A64 and from VFP and Neon A32. This means that A64 has to specify arguments that are always fixed for it (coproc and is_16bit) and A32 can't specify arguments it needs to (TA). Split it up into syn_a64_fp_access_trap() and syn_a32_fp_access_trap(). This is a refactor with no behavioural change. Signed-off-by: Peter Maydell Reviewed-by: Richard Henderson Message-id: 20260702184019.3431139-3-peter.maydell@linaro.org --- target/arm/syndrome.h | 28 ++++++++++++++++++++++------ target/arm/tcg/translate-a64.c | 2 +- target/arm/tcg/translate-vfp.c | 2 +- 3 files changed, 24 insertions(+), 8 deletions(-) diff --git a/target/arm/syndrome.h b/target/arm/syndrome.h index 0eb54c15ce..2a6fa903f2 100644 --- a/target/arm/syndrome.h +++ b/target/arm/syndrome.h @@ -345,21 +345,37 @@ static inline uint32_t syn_cp15_rrt_trap(int cv, int = cond, int opc1, int crm, =20 /* * ISS encoding for an exception from an access to a register of - * instruction resulting from the FPEN or TFP traps. + * instruction resulting from the FPEN or TFP traps. Note that + * the TA and COPROC fields are only valid when an AArch32 insn + * traps to AArch32 EL2; they are RES0 for traps to AArch64. */ -FIELD(FP_ISS, COPROC, 0, 4) /* ARMv7 only */ +FIELD(FP_ISS, COPROC, 0, 4) +FIELD(FP_ISS, TA, 5, 1) FIELD(FP_ISS, COND, 20, 4) FIELD(FP_ISS, CV, 24, 1) =20 -static inline uint32_t syn_fp_access_trap(int cv, int cond, bool is_16bit, - int coproc) +static inline uint32_t syn_a64_fp_access_trap(int cv, int cond) { - /* AArch32 FP trap or any AArch64 FP/SIMD trap: TA =3D=3D 0 */ + /* AArch64 FP/SIMD trap: TA and coproc are RES0, insn is 64 bits */ uint32_t res =3D syn_set_ec(0, EC_ADVSIMDFPACCESSTRAP); - res =3D FIELD_DP32(res, SYNDROME, IL, !is_16bit); + res =3D FIELD_DP32(res, SYNDROME, IL, 1); =20 res =3D FIELD_DP32(res, FP_ISS, CV, cv); res =3D FIELD_DP32(res, FP_ISS, COND, cond); + + return res; +} + +static inline uint32_t syn_a32_fp_access_trap(int cv, int cond, + int ta, int coproc) +{ + /* AArch32 VFP or Neon trap: TA and coproc valid, insn is 64 bits */ + uint32_t res =3D syn_set_ec(0, EC_ADVSIMDFPACCESSTRAP); + res =3D FIELD_DP32(res, SYNDROME, IL, 1); + + res =3D FIELD_DP32(res, FP_ISS, CV, cv); + res =3D FIELD_DP32(res, FP_ISS, COND, cond); + res =3D FIELD_DP32(res, FP_ISS, TA, ta); res =3D FIELD_DP32(res, FP_ISS, COPROC, coproc); =20 return res; diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 69648ad94b..1780490065 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -1439,7 +1439,7 @@ static bool fp_access_check_only(DisasContext *s) s->fp_access_checked =3D -1; =20 gen_exception_insn_el(s, 0, EXCP_UDEF, - syn_fp_access_trap(1, 0xe, false, 0), + syn_a64_fp_access_trap(1, 0xe), s->fp_excp_el); return false; } diff --git a/target/arm/tcg/translate-vfp.c b/target/arm/tcg/translate-vfp.c index 6f6b234c9a..7474973952 100644 --- a/target/arm/tcg/translate-vfp.c +++ b/target/arm/tcg/translate-vfp.c @@ -228,7 +228,7 @@ static bool vfp_access_check_a(DisasContext *s, bool ig= nore_vfp_enabled) * this field to 0xA. */ int coproc =3D arm_dc_feature(s, ARM_FEATURE_V8) ? 0 : 0xa; - uint32_t syn =3D syn_fp_access_trap(1, 0xe, false, coproc); + uint32_t syn =3D syn_a32_fp_access_trap(1, 0xe, 0, coproc); =20 gen_exception_insn_el(s, 0, EXCP_UDEF, syn, s->fp_excp_el); return false; --=20 2.43.0 From nobody Sun Jul 26 11:01:49 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1783334361; cv=none; d=zohomail.com; s=zohoarc; b=LTXBe/2yZi1hNIsKuKn2WFg2/FOIZ6iZGDFpY0QbwG9F7E6X/2c0+JgyEeszzR0ZK9JsdS3fc+BbywfW5iiyiA8iQNaVfdiYThH0XpXYs1TPM9c37UuA3k1l5nc6c3FfqymeA9iSeqaksw69AXdgOwv7qhrO8t+fv1Ny4Ng8Sf4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783334361; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=+HGGi78nOgcc1s1Jm/jQsAwrzyDeNhseqGOufhXnQzs=; b=DZkW0cXJDMf+HEuY/78XPRASv82hJrcsz4CfnWlBNcFxeOxYGhCo2iKMQ0/84QMmZLWL3SHgv1pcz03Vwat6QljYjIe0R+g39mmfAEwbIAf2oC77TIAxEmmKuQMN14Hm7Z2yEdeyxymlpiFVRlllw/zkTY22fyKw+m2ZYr4QVr0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783334361862603.3627383591759; Mon, 6 Jul 2026 03:39:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wggiz-000848-OI; Mon, 06 Jul 2026 06:38:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wggix-0007uk-4I for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:51 -0400 Received: from mail-wm1-x343.google.com ([2a00:1450:4864:20::343]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wggis-0003ZG-BO for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:50 -0400 Received: by mail-wm1-x343.google.com with SMTP id 5b1f17b1804b1-493b691cb44so19843355e9.0 for ; Mon, 06 Jul 2026 03:38:45 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63b6f1bsm329501805e9.10.2026.07.06.03.38.43 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jul 2026 03:38:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783334325; x=1783939125; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=+HGGi78nOgcc1s1Jm/jQsAwrzyDeNhseqGOufhXnQzs=; b=DSaH9pHN3oIg3AW+6fOEsfFrx0zRCF/IN/As4xWeCF9ws5ExR0JKHcXtrILrF0RAwL u5pPsQVSBOIE3bxrfjLrX6xge+GMFk2t3WHxuzl/sqk1NCj0dWHZ/nQ87naHpI83JQ80 hmrLFbvf52f18fB///8oyQXirAjvYI3zEY2kGncTJH1QigMT7tWMsUEM3jsilpwGboym PGS0a3DKA8KmfkCsDmyaNb04mkm72tK1863mVOiyfSh6sqKvvQfPNn3icgnbK305L2hC kDkZKi306IpQTQ7aZ6T62nP+VtKR4gKNNu32NsAA84I7tU+uRkQLyj1fz5nNjc48Jz2D yd2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783334325; x=1783939125; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=+HGGi78nOgcc1s1Jm/jQsAwrzyDeNhseqGOufhXnQzs=; b=s963js0WPwUGneXcrJw7lup23Ucf617TiitmeFR0I81cZFrS8bPyvc9JJ/gYUKYZuV 6eknTYjX/y0F7MyoQRcfTWcZmDExfFgD946MIvCLDfUMKxBDyfYDDMUyaIx+g+maW9sw peP34hc4H2nTrMD3wctr7ATwSAaBqN7L7RbI48I3lYy9gpND4vzxWurJTCge7eslqPEJ J9MCPaOgKd4A9IL51KOMa/4U0mO/VRDWwKLtLmKbQaqtNDHXfWGHi2mQf4W4oawyGpMd hh67S9YbND6zO+iJoBobq/91bFbMEamkHCBcv6AXoiVFdMxMP4PL6xo7AGG4wiYAEv8F 4GOA== X-Gm-Message-State: AOJu0Ywjsch/yry6T68Cez0D+scgIDLsChbnznXdlkN+jEGDp2EP4dEI BZC8czTB3tuV1kZ6zWgrd0LalA2TXJie5b5dKDJnULSHyvSSOIdc7dcErItSvp1ktoUBdwHuGsW mLNuKF7e7Q9h4 X-Gm-Gg: AfdE7ckFmAfBK9DjteQP546rv8c+Fh8MPFPpK9kXrKTRr/bx32ccUIjCwnCRW24Ogud dKm+QD6h4+8xoR9mIAgISrXhlxnF32n1lwx/MKNK3/ZqG5zLzIq5yde5n4+TvilRFxvLy81BGs2 SSWHBOjpYUzz8BL1eRhlbAioWlrm3Kv3DRtD0s37DDDmTHfcfn2j9KyZp+/X09oai3aCUo6ZN4Q jcfXjST6c1ZwsJuW27kacnHf0pS3aermUIwbMEDaZf0w2nd6ydiwrtivlVre6K2hL0qaESLYiC0 NMD9u/88sMcZhMj9+Gz6ADy/oDzyfD9877FXjOsv3wmvfmFy7ueC/Mi9EVbxUrFKYpDWT/iiQRt y0XhAQ56CgSgxUGWGIjH1prySk1PL9Wf+CLBvFFAJs1EW137+YkI1iIg792U6FbQ1HHiXUbXyVh UgnyOK02OuG3m3Quy5bW0FCpuwV8DqsW3msTDq1ddiF1SKlRV73tCmLwa8XVYvWEGpTUfgWS5gw CJY0XYDAKu3AkDl+FjB7V9uzg8huYhs X-Received: by 2002:a05:600c:198d:b0:493:bb6b:5bb5 with SMTP id 5b1f17b1804b1-493d11db4c1mr113865365e9.13.1783334324794; Mon, 06 Jul 2026 03:38:44 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 48/49] target/arm: Report correct syndrome to AArch32 EL2 for trapped Neon/VFP insns Date: Mon, 6 Jul 2026 11:37:51 +0100 Message-ID: <20260706103752.320511-49-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260706103752.320511-1-peter.maydell@linaro.org> References: <20260706103752.320511-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::343; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x343.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783334363524158500 Content-Type: text/plain; charset="utf-8" When an AArch32 Neon or VFP insn is trapped to AArch64 EL2, bits [19:0] of the syndrome in ESR_EL2 are RES0. However, when it is trapped to AArch32 EL2, the HSR syndrome information defines some extra fields: [5] : TA [3:0] : coproc where the TA bit is 1 for a trapped Neon insn and 0 for a trapped VFP insn, and the coproc field is 0b1010 when TA is 0, and 0 when TA is 1. We attempted to address this in commit fa33eead ("target/arm: Add coproc parameter to syn_fp_access_trap"), but got it wrong: we thought the RES0 condition was "is v8A" rather than "is EL2 AArch32", and we made all insns be TA=3D0 coproc =3D 0b1010 rather than only the VFP ones. Correct the condition we use to decide the coproc and TA fields. We set these fields unconditionally; later on in arm_cpu_do_interrupt_aarch64() we will squash them to zero if we are taking the exception to AArch64. NB: there is some disagreement between different revisions of the Arm ARM about the exact handling of 'coproc': * the v8A Arm ARM text says coproc is 0b1010 when TA is 1 * the v8A Arm ARM pseudocode in AArch32_CheckFPAdvSIMDTrap() sets coproc to 0b1010 when TA is 0 * the v7A Arm ARM text says coproc is 0b1010 when TA is 0 * the v7A Arm ARM pseudocode sets coproc to 0b1010 when TA is 0 The v7A Arm ARM pseudocode also disagrees with the v7A text, v8A text and v8A pseudocode in only setting TA to 1 for traps caused by HCPTR.TASE; the others set Ta for all trapped AdvSIMD insns (i.e. including traps caused by HCPTR.TCP10). We assume that the v8A pseudocode is incorrect about coproc (as it is the odd one out) and that the v7A pseudocode is incorrect about when TA is set (again, as it is the odd one out). Resolves: https://gitlab.com/qemu-project/qemu/-/work_items/1153 Signed-off-by: Peter Maydell Reviewed-by: Richard Henderson Message-id: 20260702184019.3431139-4-peter.maydell@linaro.org --- target/arm/tcg/translate-vfp.c | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/target/arm/tcg/translate-vfp.c b/target/arm/tcg/translate-vfp.c index 7474973952..6e944a0322 100644 --- a/target/arm/tcg/translate-vfp.c +++ b/target/arm/tcg/translate-vfp.c @@ -216,19 +216,20 @@ static void gen_update_fp_context(DisasContext *s) * whether VFP is enabled via FPEXC.EN: this should be true for FMXR/FMRX * accesses to FPSID, FPEXC, MVFR0, MVFR1, MVFR2, and false for all other = insns. */ -static bool vfp_access_check_a(DisasContext *s, bool ignore_vfp_enabled) +static bool vfp_access_check_a(DisasContext *s, bool ignore_vfp_enabled, + bool is_neon) { if (s->fp_excp_el) { /* - * The full syndrome is only used for HSR when HCPTR traps: - * For v8, when TA=3D=3D0, coproc is RES0. - * For v7, any use of a Floating-point instruction or access - * to a Floating-point Extension register that is trapped to - * Hyp mode because of a trap configured in the HCPTR sets - * this field to 0xA. + * The full syndrome is only used for HSR when HCPTR traps. + * When trapping to AArch64, the TA and coproc fields are RES0 + * (we will squash them in arm_cpu_do_interrupt_aarch64()). + * When trapping to AArch32: + * - for VFP insns, TA=3D0 and coproc =3D 0b1010 + * - for Neon insns, TA=3D1 and coproc =3D 0 */ - int coproc =3D arm_dc_feature(s, ARM_FEATURE_V8) ? 0 : 0xa; - uint32_t syn =3D syn_a32_fp_access_trap(1, 0xe, 0, coproc); + int coproc =3D is_neon ? 0 : 0xa; + uint32_t syn =3D syn_a32_fp_access_trap(1, 0xe, is_neon, coproc); =20 gen_exception_insn_el(s, 0, EXCP_UDEF, syn, s->fp_excp_el); return false; @@ -299,7 +300,7 @@ bool vfp_access_check(DisasContext *s) if (arm_dc_feature(s, ARM_FEATURE_M)) { return vfp_access_check_m(s, false); } else { - return vfp_access_check_a(s, false); + return vfp_access_check_a(s, false, false); } } =20 @@ -311,7 +312,11 @@ bool vfp_access_check(DisasContext *s) */ bool neon_access_check(DisasContext *s) { - return vfp_access_check(s); + if (arm_dc_feature(s, ARM_FEATURE_M)) { + return vfp_access_check_m(s, false); + } else { + return vfp_access_check_a(s, false, true); + } } =20 static bool trans_VSEL(DisasContext *s, arg_VSEL *a) @@ -822,7 +827,7 @@ static bool trans_VMSR_VMRS(DisasContext *s, arg_VMSR_V= MRS *a) * Call vfp_access_check_a() directly, because we need to tell * it to ignore FPEXC.EN for some register accesses. */ - if (!vfp_access_check_a(s, ignore_vfp_enabled)) { + if (!vfp_access_check_a(s, ignore_vfp_enabled, false)) { return true; } =20 --=20 2.43.0 From nobody Sun Jul 26 11:01:49 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1783334675; cv=none; d=zohomail.com; s=zohoarc; b=iIGUP+RqSvDKnJLDezdxmQlKt9ecOJeruz93dvqNbBYYKXj3lUNs2d3jZWW8Ajmqwm0Ofr3+I/aSdp3nP/S/FXRZscSYReHrQ90CDW7hIggGFJuk/deROgf2bIPWio2YC2Cfa/NX0Pon3ZMl33IjvEmLBd8ml+xrqduUZjB8Wvk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783334675; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=f6BbcDDKx2H9TudLgPlsJB+75Qouq7sCxl4giWNaOBw=; b=ZKd9e1n8ZxKuvhV7NldVc9XT+NHcI+Krx8OzuDjlAAlnObAM31np484oTcPGjEXpw0VP/P810Z8GvMr76PE/63+YTRk2dA8x+NLPtzvDgFScVxDDxyeFaH3Lv4YCJXit+MbuYxZqiUPBOVqCDHVVJg1xlzPmnGCgZ3MPM1mJBrc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783334675578748.9579376333816; Mon, 6 Jul 2026 03:44:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wggj0-000869-NK; Mon, 06 Jul 2026 06:38:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wggix-0007wQ-FO for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:51 -0400 Received: from mail-wm1-x329.google.com ([2a00:1450:4864:20::329]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wggit-0003Zv-Cq for qemu-devel@nongnu.org; Mon, 06 Jul 2026 06:38:51 -0400 Received: by mail-wm1-x329.google.com with SMTP id 5b1f17b1804b1-493ae59eca6so20663175e9.1 for ; Mon, 06 Jul 2026 03:38:46 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63b6f1bsm329501805e9.10.2026.07.06.03.38.44 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jul 2026 03:38:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783334326; x=1783939126; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=f6BbcDDKx2H9TudLgPlsJB+75Qouq7sCxl4giWNaOBw=; b=eaxoOf06wxr58dt/EwVSM3m8wxdExfIB130gEsdY15rtKr4nQx69fpgpG8Dv2bd5FI CdmTGjxObSyKc1l56bWn1oX7wfVAPKBxZvO9mysFpCTG+1nxCWpq+rN+UQM7ane0fXmH OieeKEoMcWKcgAyNgKqfx3v7dwfciXubFJtRe0tWhYyLxG8phAvcO017vz0bPSTQeXB6 P17z8bOPDTCWYcQ1dSShoO0ha8LvIxTkzcmqXI4XAckZgHM/nfyRkBh/djZD1NU0HlO9 cKsbcqwkGVfF2k6R1cxJNY213FDdEaOZFin16Q2L+LRHzPLwDu1BbIAnPbKVhkckWSF0 33kw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783334326; x=1783939126; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=f6BbcDDKx2H9TudLgPlsJB+75Qouq7sCxl4giWNaOBw=; b=IH4Eb3bUUU7abzyakkVMerLwyM2Hkkf7xPkKFsoGiE7XhXsuKOwlNZO9zskuBg27Tu l0pm9ukqChgh3wgXWozymJcYr9ZhnF4drjgLjWjEuRbKkfiLVlT1g6A7FGtS91ikMHI1 zwTB/eZqS547J9gThoJzCu79h19tTIiOtAYsyXY32mEg6U4WLGtBrNuzMUpk2LJGTuVv 2P1nXiP8RT5WOHC3VD+1TFA9b/tBx8lCf4S5MEXJrlDp5k05/N9XyEH6eI/iKg7fnma9 8kB3N1iT0LF9OYsgMeFmdSQBwIQWbyQWi2i5QC8ttlZzMb2EXxv8luIXU3hS5rx/GFRE onkQ== X-Gm-Message-State: AOJu0Yzrjm81iWXXQl60yGhoMeQEh+dfhHMGH0yJDuYV9Z9qtbBcnzEU FVYt964PIzjCZKpTQCZ85nPvjMPrIcc9mD87fWoi95R2ASwFj01O+wdYPH4i5xYEicldPpUzIMP +3GGi2BtvNw== X-Gm-Gg: AfdE7cmwrw/zHEsucOq9dfzY/D15X8nd8c187hkLOFNH/+jEpVFnERQcQkgs5x492YP s1/ZJLP+bYZUsO6gWLCkY847iYTAwQZAUynFd0KoCOzWuIrasQqVPcTEV+AeZ/loCHFx/qi5wjr mAUYog9cHmtBdrEMPQc2MGK0vQxNaV/kVE7TfHmD79Cm1H7GuJmIYqFZrvgZYPNIRAQEpmqqvCC 8o7LQWE0zqw7mdD0TqoS9JppZLahX60uOSL+gTfSSIZtB7gKp1/QyRKlLpTRhZyCHbvhFkowVzv +oE63Jr/TJrcpFAgiWXtAeDBu+ESXtBQC+IcUaZznv1nUf/e9gj490gkoCAJ2uiUdgFFVfv3Cv1 HifJkD0p6HrGbaFaaZmrucmG+zsjXjqMinGrvXknXs6qGDxJXydrMUX+WZnFkea7zPFwOBYxyMO apTxn/YN+bAvhiaQZl+AK0wq714j4WmgeAUUFOTbb7VK+0PqlcRUsdcE2ggcS/8hLydwkGP3ekf s6YG4OO0paNfFgiaQH7Vg== X-Received: by 2002:a05:600c:620e:b0:493:a893:1200 with SMTP id 5b1f17b1804b1-493d2c2fbc4mr104734635e9.5.1783334325861; Mon, 06 Jul 2026 03:38:45 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 49/49] target/arm: Define fields for NSACR Date: Mon, 6 Jul 2026 11:37:52 +0100 Message-ID: <20260706103752.320511-50-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260706103752.320511-1-peter.maydell@linaro.org> References: <20260706103752.320511-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::329; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x329.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783334677348158500 Content-Type: text/plain; charset="utf-8" Currently we handle cp15.nsacr with raw bit numbers in the few places we need to work with it. We're about to add some more uses of this field, so define its fields with the FIELD macro and use the macros in the places that were previously using bit numbers. Signed-off-by: Peter Maydell Reviewed-by: Richard Henderson Message-id: 20260702184019.3431139-5-peter.maydell@linaro.org --- target/arm/cpu.c | 2 +- target/arm/helper.c | 10 +++++----- target/arm/internals.h | 8 ++++++++ 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/target/arm/cpu.c b/target/arm/cpu.c index 62335b8294..787e4dc7ab 100644 --- a/target/arm/cpu.c +++ b/target/arm/cpu.c @@ -779,7 +779,7 @@ void arm_emulate_firmware_reset(CPUState *cpustate, int= target_el) /* Put CPU into non-secure state */ env->cp15.scr_el3 |=3D SCR_NS; /* Set NSACR.{CP11,CP10} so NS can access the FPU */ - env->cp15.nsacr |=3D 3 << 10; + env->cp15.nsacr |=3D R_NSACR_CP10_MASK | R_NSACR_CP11_MASK; } =20 if (have_el2 && target_el < 2) { diff --git a/target/arm/helper.c b/target/arm/helper.c index 93e3d8b575..af45234ad2 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -590,7 +590,7 @@ static void cpacr_write(CPUARMState *env, const ARMCPRe= gInfo *ri, * is 0 then CPACR.{CP11,CP10} ignore writes and read as 0b00. */ if (arm_feature(env, ARM_FEATURE_EL3) && !arm_el_is_aa64(env, 3) && - !arm_is_secure(env) && !extract32(env->cp15.nsacr, 10, 1)) { + !arm_is_secure(env) && !FIELD_EX32(env->cp15.nsacr, NSACR, CP10)) { mask =3D R_CPACR_CP11_MASK | R_CPACR_CP10_MASK; value =3D (value & ~mask) | (env->cp15.cpacr_el1 & mask); } @@ -607,7 +607,7 @@ static uint64_t cpacr_read(CPUARMState *env, const ARMC= PRegInfo *ri) uint64_t value =3D env->cp15.cpacr_el1; =20 if (arm_feature(env, ARM_FEATURE_EL3) && !arm_el_is_aa64(env, 3) && - !arm_is_secure(env) && !extract32(env->cp15.nsacr, 10, 1)) { + !arm_is_secure(env) && !FIELD_EX32(env->cp15.nsacr, NSACR, CP10)) { value =3D ~(R_CPACR_CP11_MASK | R_CPACR_CP10_MASK); } return value; @@ -4105,7 +4105,7 @@ static void cptr_el2_write(CPUARMState *env, const AR= MCPRegInfo *ri, * is 0 then HCPTR.{TCP11,TCP10} ignore writes and read as 1. */ if (arm_feature(env, ARM_FEATURE_EL3) && !arm_el_is_aa64(env, 3) && - !arm_is_secure(env) && !extract32(env->cp15.nsacr, 10, 1)) { + !arm_is_secure(env) && !FIELD_EX32(env->cp15.nsacr, NSACR, CP10)) { uint64_t mask =3D R_HCPTR_TCP11_MASK | R_HCPTR_TCP10_MASK; value =3D (value & ~mask) | (env->cp15.cptr_el[2] & mask); } @@ -4121,7 +4121,7 @@ static uint64_t cptr_el2_read(CPUARMState *env, const= ARMCPRegInfo *ri) uint64_t value =3D env->cp15.cptr_el[2]; =20 if (arm_feature(env, ARM_FEATURE_EL3) && !arm_el_is_aa64(env, 3) && - !arm_is_secure(env) && !extract32(env->cp15.nsacr, 10, 1)) { + !arm_is_secure(env) && !FIELD_EX32(env->cp15.nsacr, NSACR, CP10)) { value |=3D R_HCPTR_TCP11_MASK | R_HCPTR_TCP10_MASK; } return value; @@ -10075,7 +10075,7 @@ int fp_exception_el(CPUARMState *env, int cur_el) */ if ((arm_feature(env, ARM_FEATURE_EL3) && !arm_el_is_aa64(env, 3) && cur_el <=3D 2 && !arm_is_secure_below_el3(env))) { - if (!extract32(env->cp15.nsacr, 10, 1)) { + if (!FIELD_EX32(env->cp15.nsacr, NSACR, CP10)) { /* FP insns act as UNDEF */ return cur_el =3D=3D 2 ? 2 : 1; } diff --git a/target/arm/internals.h b/target/arm/internals.h index fcce3804f3..a50290383d 100644 --- a/target/arm/internals.h +++ b/target/arm/internals.h @@ -135,6 +135,14 @@ FIELD(CPACR_EL1, FPEN, 20, 2) FIELD(CPACR_EL1, SMEN, 24, 2) FIELD(CPACR_EL1, TTA, 28, 1) /* matches CPACR.TRCDIS */ =20 +/* Bit definitions for NSACR (AArch32 only) */ +FIELD(NSACR, CP10, 10, 1) +FIELD(NSACR, CP11, 11, 1) +FIELD(NSACR, NSD32DIS, 14, 1) /* v7; RES0 in v8 */ +FIELD(NSACR, NSASEDIS, 15, 1) +FIELD(NSACR, RFR, 19, 1) /* v7; RES0 in v8 */ +FIELD(NSACR, NSTRCDIS, 20, 1) + /* Bit definitions for HCPTR (AArch32 only) */ FIELD(HCPTR, TCP10, 10, 1) FIELD(HCPTR, TCP11, 11, 1) --=20 2.43.0