From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747628024; cv=none; d=zohomail.com; s=zohoarc; b=kqo13Kp7gLJCDf44VY6aakRNGee28OmGwIEBAQ5iXFhOEPZqP5ZjAEL1+muz/siUAkbrWNjj1PDoZh1PCCWeWvXEqfgmfIbIBUZIGS1Qn/oY9YHp9hwRkd6JIk4fMbQHnEUyJtdDA+H03YYIMlI+rPD+XsQqNLRXdVCy6CvYF7I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747628024; h=Content-Transfer-Encoding:Cc:Cc: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; bh=P6JJI4ooRSsyyt0Tzy9/ReM0MFaAWn7bzyEKD90/3cI=; b=BZvVj5YLfDea1FVXWOb7VvlQFzD2WWcp/5THLI71/lPUpMoA8fT3YyzVzHWvS5/pkyNNQadVQq22a6aMY/+nPQvXkxVE1i0PeLgOn58fqBoXeMOtwmVhlBSS+uAMhommzVcw6tBszcy51IwTgV28kDs2nXzKvATCICgGf7FGCN8= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747628024944842.8329628231062; Sun, 18 May 2025 21:13:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGrsh-0002f3-5A; Mon, 19 May 2025 00:13:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGrmR-0004ic-AL for qemu-devel@nongnu.org; Mon, 19 May 2025 00:07:12 -0400 Received: from mail-pl1-x62c.google.com ([2607:f8b0:4864:20::62c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGrmP-00044Y-GG for qemu-devel@nongnu.org; Mon, 19 May 2025 00:07:10 -0400 Received: by mail-pl1-x62c.google.com with SMTP id d9443c01a7336-22d95f0dda4so42457195ad.2 for ; Sun, 18 May 2025 21:07:09 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.07.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:07:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627628; x=1748232428; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=P6JJI4ooRSsyyt0Tzy9/ReM0MFaAWn7bzyEKD90/3cI=; b=HGYIpp9K2gJmAOBmFPurbtoHSI7eJmYSbscf/wrUX9h5kmnrueeUAloMrbv/mjyzu9 4ZGrIHprRgHfsLrg+XIQ7p5P1sWiep/E8WT3mITtdeoRUdMVLo1qEevIzxD0f7pT6+CI +Bof+aU1Tu2RaFXX+1N32OEmaCgzr5FJRNzIqL/L20eb8PRXAwl8glq4skRuhasz2jjx G1w1Zt088PGuafRJ6Gal7EMrAXnTfgwAVcY6HwbwRxM3wXXRC1No03BJJMV86gwgce5D Eiv0Vub29KJa7f5GQ1qzrQmSzyNiSGuHngl1XHIsztUkPKtX3Nlsbxta9WSncUwT9eJ0 co6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627628; x=1748232428; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=P6JJI4ooRSsyyt0Tzy9/ReM0MFaAWn7bzyEKD90/3cI=; b=khxbwO1Ok8G6calV4bV6S2uKPdFDk6LagEav/BtqZyZty0pJLeRj3CSJcjG7h8Y0Tk 4zHUCcclKSUBaU9JpFJKfL88NWvjGW42GH0MbbrFi0yBiYiFY5pqUZGeAAE+Os/kQxTg Ia4XHqU+vnA/yU+BtrUjoNL/toLJ0EtLN0sIKFeo3w58JaD0PKguA04OBXQYYPiCQp3F n+Zjk1L8G9QAcMInKyKevvoTd2FLt9gJ9G8bDKmXBLsuxK5KzLtkjrdiM0Qm9Y4uXoBs htiKMAIHo7uv1BNAXjsCo1AqgaNiVIGI2mpMIocZzS2ekSyU5jwIbZo4T5lgeKzyP57K xdGw== X-Gm-Message-State: AOJu0YwIwsRfVEVuT+qewTS8cjIHA+MHzCalwtoFjNDSqD9n+q4Ub2EE HYn/yTV3+6Pam9CBtT8bLI5OvAa3hKwWk5vgoOG/Ey3hZk8H4zboigLLOEuTFg== X-Gm-Gg: ASbGncvfQtmp5VbQvhOT46GT58EO/20O6wcG+y/C+AS98oR1+byqxnHcnaaQnd4k2ik Wrsd35yTZHgBTXhOXNELteEFZkCGpbnxv22Q/axF8fovzAG8aaVEpw6AvH3OaMVqKWN+7QMiuUr vrINbyjW7HBoPrTjO0qbnaLoOp7WEdRbmVhcF7cfcdsqgVWSVHqG8KxCRJjsKKFK5pAvoFujXkV orQdLPAaau+qmXJNJMM5zO8qsrF9mia6ep2xuhmPN3COtZbkTLeHE4U1c35Uk1QNiFuWfZa+QiC egWmMLtSv+elZ/vALa8mQnhhRUPcg0sa+DVpu/mFRPijsvSVwUAGimDWJ/rE5GzDHP+SRD3n1G4 gJGjdn27YYjNKrhCQI9jRMS09fIobYxMgOLdp2GDSF7OZBWYFm1XU7/eL X-Google-Smtp-Source: AGHT+IErVI4K+2Cd8mxzRbdmrQiEi0kY9smnHcILaZWoMLm3FCyJ9HMO6fQCZ2gDTDmYvX7tE3dmvQ== X-Received: by 2002:a17:903:19c4:b0:224:1935:d9a3 with SMTP id d9443c01a7336-231d4512038mr186516095ad.21.1747627627602; Sun, 18 May 2025 21:07:07 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Sunil V L , Daniel Henrique Barboza , Alistair Francis Subject: [PULL 01/56] hw/riscv/virt: Add the BDF of IOMMU to RISCVVirtState structure Date: Mon, 19 May 2025 14:04:58 +1000 Message-ID: <20250519040555.3797167-2-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62c; envelope-from=alistair23@gmail.com; helo=mail-pl1-x62c.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747628026894116600 Content-Type: text/plain; charset="utf-8" From: Sunil V L When the IOMMU is implemented as a PCI device, its BDF is created locally in virt.c. However, the same BDF is also required in virt-acpi-build.c to support ACPI. Therefore, make this information part of the global RISCVVirtState structure so that it can be accessed outside of virt.c as well. Signed-off-by: Sunil V L Reviewed-by: Daniel Henrique Barboza Message-ID: <20250322043139.2003479-2-sunilvl@ventanamicro.com> Signed-off-by: Alistair Francis --- include/hw/riscv/virt.h | 1 + hw/riscv/virt.c | 1 + 2 files changed, 2 insertions(+) diff --git a/include/hw/riscv/virt.h b/include/hw/riscv/virt.h index 48a14bea2e..7b4c2c8b7d 100644 --- a/include/hw/riscv/virt.h +++ b/include/hw/riscv/virt.h @@ -63,6 +63,7 @@ struct RISCVVirtState { const MemMapEntry *memmap; struct GPEXHost *gpex_host; OnOffAuto iommu_sys; + uint16_t pci_iommu_bdf; }; =20 enum { diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c index be1bf0f646..5958ad1f7d 100644 --- a/hw/riscv/virt.c +++ b/hw/riscv/virt.c @@ -1117,6 +1117,7 @@ static void create_fdt_iommu(RISCVVirtState *s, uint1= 6_t bdf) qemu_fdt_setprop_cells(fdt, pci_node, "iommu-map", 0, iommu_phandle, 0, bdf, bdf + 1, iommu_phandle, bdf + 1, 0xffff - bdf); + s->pci_iommu_bdf =3D bdf; } =20 static void finalize_fdt(RISCVVirtState *s) --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747627670; cv=none; d=zohomail.com; s=zohoarc; b=g+JXG2XQV4Xjquf9hkY817FsbxRhVJDPHbwbmpjDdIXT6PPgLoeJgGM86rajtw8CrK3/u7mOlz9RObfOkGXhXaQbTUGYmatlyUDK0VwoqxnZwmI0EYujpYWvHmST7xwYpcOvtj70RpRZGmiwqWpbFFjFF/kUgAxqZ33HUF8Og5s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747627670; h=Content-Transfer-Encoding:Cc:Cc: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; bh=r5C5gvbFcMnRIuSXrPTRGKO/UvIsswQe1PqV9iglJ8E=; b=OhcqTxV8BF7WixCQZxZ/9oHToh47P5jszXn778Gz0DZUiHfIDA4V030TWWhyUSMLiPR+aDtarMMPhyccxoAfZkkulUSXliPIbjpBGJTbu2rYjoa785gURsCpBusL6IiYBBXjActpUOUn/FBRewMA3nJSv8oiUmi3hufa8uUWto0= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747627670741656.2442679461353; Sun, 18 May 2025 21:07:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGrmi-0004jU-E4; Mon, 19 May 2025 00:07:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGrmV-0004is-Fa for qemu-devel@nongnu.org; Mon, 19 May 2025 00:07:17 -0400 Received: from mail-pl1-x632.google.com ([2607:f8b0:4864:20::632]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGrmS-00044j-Kk for qemu-devel@nongnu.org; Mon, 19 May 2025 00:07:14 -0400 Received: by mail-pl1-x632.google.com with SMTP id d9443c01a7336-231d4679580so21974565ad.1 for ; Sun, 18 May 2025 21:07:12 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.07.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:07:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627631; x=1748232431; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=r5C5gvbFcMnRIuSXrPTRGKO/UvIsswQe1PqV9iglJ8E=; b=aK+8WgfrhELFXcI64rfWvNi3YYU4LIboRumLzdcmWVaILZCQqx7YqA03Y6gx24FD2U 2BhlEH6C5hRKND6HwjkmovafBMEOG6Hv0SIbrKf0DDmB3Ft8ufXSM29BaA4gJ1Ld82B6 tgKXQjH8dpQh1eI903woW1ECEtk3m/bnDL37kyDXjp617aipLfzT763KZt6+G25MU4pu BOkmHu7bHKdmx6udF+Xx8AoFp1twwrsYvTXQgQpeNDDnCLmSflQuEXwjzoLwdo/jrFOD 2eapnoyiSYCP9uRnw0d76j8cin5H2ABW/1dksetMDNdugvx51hkIOAvRkF/W0CGtfUUI TPRg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627631; x=1748232431; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=r5C5gvbFcMnRIuSXrPTRGKO/UvIsswQe1PqV9iglJ8E=; b=Xh1iNveySQ8nHKgePcNYC/vS+UNdGM+zfFVKtpnRp6rGy8NuUQmP3/e1BQSrmHe//F ejejSPxNV5kVERB8sy/JFln2lgOjJ6FTk1LtgDJdcSyMm7AIwGkpYjpKL7I1g8px+h+m lCcveI7XwhQ7aSl7ZIsgtNWBGGco5H8PoVTis+p3F7N79ACOR+VVaZjpi6j2zrJU2qCQ RisrqhGrZANNd/rDh80RnGJ1BMjYMf3u+iRg5tiNg0SfitgCpvd/Morm+xBTBdozC3ad ZKO/4uDQLKftdwMbnGeTAfQQlNtJt41TZJN0iq/VQ2wxrWrlza3FGbMNzoyOBrSRdelx w0Ww== X-Gm-Message-State: AOJu0Yz9msKvrUgY9ZR9Rp+m+YoAsMBKdbwwR+J4dTCetCTVIh/hVvG7 nS6kndNSFKrBOZqHLtnq+u/wP4mWKG3xC/tpqN0DnFovIyGUQ5kt6YxdLhfCJQ== X-Gm-Gg: ASbGncvgnV0IFpuussqJnge//+5a+AhxUSo1DFScJQDlIM96NyzQkTDB61WHSPnvLt1 B9Mni0PT4+nbCardaji2nrhJWEFyJ/rcxUcJPXW+8MOTbMDM11F2CE3v3OesvmsMZrWVNtcEdIW qL/chhRv12vqlkdVST1fnmV9md7/u81FFhTNQVySWYLI35HqfR33Dlqayc5fR/7OSKCYA2JDhdD q5AtekrO4K1+UELhsUvPlzYKYxUhGJ3pc+vSZe1UQfRjJZMX8Seme4wNxTSfTq9y6fqkGFXZIXv QwKRes2exzciRjvvuA1ef0qE+f3el/MSn+j5NumqAtfSdo5TKvg1OUgDBf8rj+cZtreJs3FfC+A 7WSZMGRTfHg2nYoyhEZ6ku2a5bQVKMtnvFQbJZ/M35FucNvp7ZAGyQmiCg4cJx42p2F8= X-Google-Smtp-Source: AGHT+IGlNLSuL2Y6S/NobeJ68ilfdCP8vTz0Bvz5kfvvqnwLc6+1trm/4QT6qCkLc4J9EkQQ4vBVGA== X-Received: by 2002:a17:903:18f:b0:224:249f:9734 with SMTP id d9443c01a7336-231d43d9a1fmr169883105ad.4.1747627630581; Sun, 18 May 2025 21:07:10 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Sunil V L , Daniel Henrique Barboza , Alistair Francis Subject: [PULL 02/56] hw/riscv/virt-acpi-build: Add support for RIMT Date: Mon, 19 May 2025 14:04:59 +1000 Message-ID: <20250519040555.3797167-3-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::632; envelope-from=alistair23@gmail.com; helo=mail-pl1-x632.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747627671649116600 Content-Type: text/plain; charset="utf-8" From: Sunil V L RISC-V IO Mapping Table (RIMT) is a new static ACPI table used to communicate IOMMU information to the OS. Add support for creating this table when the IOMMU is present. The specification is frozen and available at [1]. [1] - https://github.com/riscv-non-isa/riscv-acpi-rimt/releases/download/v0= .99/rimt-spec.pdf Signed-off-by: Sunil V L Reviewed-by: Daniel Henrique Barboza Message-ID: <20250322043139.2003479-3-sunilvl@ventanamicro.com> Signed-off-by: Alistair Francis --- hw/riscv/virt-acpi-build.c | 215 +++++++++++++++++++++++++++++++++++++ 1 file changed, 215 insertions(+) diff --git a/hw/riscv/virt-acpi-build.c b/hw/riscv/virt-acpi-build.c index 1ad6800508..1eef2fb4eb 100644 --- a/hw/riscv/virt-acpi-build.c +++ b/hw/riscv/virt-acpi-build.c @@ -198,6 +198,32 @@ acpi_dsdt_add_uart(Aml *scope, const MemMapEntry *uart= _memmap, aml_append(scope, dev); } =20 +/* + * Add DSDT entry for the IOMMU platform device. + * ACPI ID for IOMMU is defined in the section 6.2 of RISC-V BRS spec. + * https://github.com/riscv-non-isa/riscv-brs/releases/download/v0.8/riscv= -brs-spec.pdf + */ +static void acpi_dsdt_add_iommu_sys(Aml *scope, const MemMapEntry *iommu_m= emmap, + uint32_t iommu_irq) +{ + uint32_t i; + + Aml *dev =3D aml_device("IMU0"); + aml_append(dev, aml_name_decl("_HID", aml_string("RSCV0004"))); + aml_append(dev, aml_name_decl("_UID", aml_int(0))); + + Aml *crs =3D aml_resource_template(); + aml_append(crs, aml_memory32_fixed(iommu_memmap->base, + iommu_memmap->size, AML_READ_WRITE)= ); + for (i =3D iommu_irq; i < iommu_irq + 4; i++) { + aml_append(crs, aml_interrupt(AML_CONSUMER, AML_EDGE, AML_ACTIVE_L= OW, + AML_EXCLUSIVE, &i, 1)); + } + + aml_append(dev, aml_name_decl("_CRS", crs)); + aml_append(scope, dev); +} + /* * Serial Port Console Redirection Table (SPCR) * Rev: 1.10 @@ -450,6 +476,9 @@ static void build_dsdt(GArray *table_data, } =20 acpi_dsdt_add_uart(scope, &memmap[VIRT_UART0], UART0_IRQ); + if (virt_is_iommu_sys_enabled(s)) { + acpi_dsdt_add_iommu_sys(scope, &memmap[VIRT_IOMMU_SYS], IOMMU_SYS_= IRQ); + } =20 if (socket_count =3D=3D 1) { virtio_acpi_dsdt_add(scope, memmap[VIRT_VIRTIO].base, @@ -602,6 +631,187 @@ static void build_madt(GArray *table_data, acpi_table_end(linker, &table); } =20 +#define ID_MAPPING_ENTRY_SIZE 20 +#define IOMMU_ENTRY_SIZE 40 +#define RISCV_INTERRUPT_WIRE_OFFSSET 40 +#define ROOT_COMPLEX_ENTRY_SIZE 20 +#define RIMT_NODE_OFFSET 48 + +/* + * ID Mapping Structure + */ +static void build_rimt_id_mapping(GArray *table_data, uint32_t source_id_b= ase, + uint32_t num_ids, uint32_t dest_id_base) +{ + /* Source ID Base */ + build_append_int_noprefix(table_data, source_id_base, 4); + /* Number of IDs */ + build_append_int_noprefix(table_data, num_ids, 4); + /* Destination Device ID Base */ + build_append_int_noprefix(table_data, source_id_base, 4); + /* Destination IOMMU Offset */ + build_append_int_noprefix(table_data, dest_id_base, 4); + /* Flags */ + build_append_int_noprefix(table_data, 0, 4); +} + +struct AcpiRimtIdMapping { + uint32_t source_id_base; + uint32_t num_ids; +}; +typedef struct AcpiRimtIdMapping AcpiRimtIdMapping; + +/* Build the rimt ID mapping to IOMMU for a given PCI host bridge */ +static int rimt_host_bridges(Object *obj, void *opaque) +{ + GArray *idmap_blob =3D opaque; + + if (object_dynamic_cast(obj, TYPE_PCI_HOST_BRIDGE)) { + PCIBus *bus =3D PCI_HOST_BRIDGE(obj)->bus; + + if (bus && !pci_bus_bypass_iommu(bus)) { + int min_bus, max_bus; + + pci_bus_range(bus, &min_bus, &max_bus); + + AcpiRimtIdMapping idmap =3D { + .source_id_base =3D min_bus << 8, + .num_ids =3D (max_bus - min_bus + 1) << 8, + }; + g_array_append_val(idmap_blob, idmap); + } + } + + return 0; +} + +static int rimt_idmap_compare(gconstpointer a, gconstpointer b) +{ + AcpiRimtIdMapping *idmap_a =3D (AcpiRimtIdMapping *)a; + AcpiRimtIdMapping *idmap_b =3D (AcpiRimtIdMapping *)b; + + return idmap_a->source_id_base - idmap_b->source_id_base; +} + +/* + * RISC-V IO Mapping Table (RIMT) + * https://github.com/riscv-non-isa/riscv-acpi-rimt/releases/download/v0.9= 9/rimt-spec.pdf + */ +static void build_rimt(GArray *table_data, BIOSLinker *linker, + RISCVVirtState *s) +{ + int i, nb_nodes, rc_mapping_count; + size_t node_size, iommu_offset =3D 0; + uint32_t id =3D 0; + g_autoptr(GArray) iommu_idmaps =3D g_array_new(false, true, + sizeof(AcpiRimtIdMapping)= ); + + AcpiTable table =3D { .sig =3D "RIMT", .rev =3D 1, .oem_id =3D s->oem_= id, + .oem_table_id =3D s->oem_table_id }; + + acpi_table_begin(&table, table_data); + + object_child_foreach_recursive(object_get_root(), + rimt_host_bridges, iommu_idmaps); + + /* Sort the ID mapping by Source ID Base*/ + g_array_sort(iommu_idmaps, rimt_idmap_compare); + + nb_nodes =3D 2; /* RC, IOMMU */ + rc_mapping_count =3D iommu_idmaps->len; + /* Number of RIMT Nodes */ + build_append_int_noprefix(table_data, nb_nodes, 4); + + /* Offset to Array of RIMT Nodes */ + build_append_int_noprefix(table_data, RIMT_NODE_OFFSET, 4); + build_append_int_noprefix(table_data, 0, 4); /* Reserved */ + + iommu_offset =3D table_data->len - table.table_offset; + /* IOMMU Device Structure */ + build_append_int_noprefix(table_data, 0, 1); /* Type - IOMMU*/ + build_append_int_noprefix(table_data, 1, 1); /* Revision */ + node_size =3D IOMMU_ENTRY_SIZE; + build_append_int_noprefix(table_data, node_size, 2); /* Length */ + build_append_int_noprefix(table_data, 0, 2); /* Reserved */ + build_append_int_noprefix(table_data, id++, 2); /* ID */ + if (virt_is_iommu_sys_enabled(s)) { + /* Hardware ID */ + build_append_int_noprefix(table_data, 'R', 1); + build_append_int_noprefix(table_data, 'S', 1); + build_append_int_noprefix(table_data, 'C', 1); + build_append_int_noprefix(table_data, 'V', 1); + build_append_int_noprefix(table_data, '0', 1); + build_append_int_noprefix(table_data, '0', 1); + build_append_int_noprefix(table_data, '0', 1); + build_append_int_noprefix(table_data, '4', 1); + /* Base Address */ + build_append_int_noprefix(table_data, + s->memmap[VIRT_IOMMU_SYS].base, 8); + build_append_int_noprefix(table_data, 0, 4); /* Flags */ + } else { + /* Hardware ID */ + build_append_int_noprefix(table_data, '0', 1); + build_append_int_noprefix(table_data, '0', 1); + build_append_int_noprefix(table_data, '1', 1); + build_append_int_noprefix(table_data, '0', 1); + build_append_int_noprefix(table_data, '0', 1); + build_append_int_noprefix(table_data, '0', 1); + build_append_int_noprefix(table_data, '1', 1); + build_append_int_noprefix(table_data, '4', 1); + + build_append_int_noprefix(table_data, 0, 8); /* Base Address */ + build_append_int_noprefix(table_data, 1, 4); /* Flags */ + } + + build_append_int_noprefix(table_data, 0, 4); /* Proximity Domain= */ + build_append_int_noprefix(table_data, 0, 2); /* PCI Segment numb= er */ + /* PCIe B/D/F */ + if (virt_is_iommu_sys_enabled(s)) { + build_append_int_noprefix(table_data, 0, 2); + } else { + build_append_int_noprefix(table_data, s->pci_iommu_bdf, 2); + } + /* Number of interrupt wires */ + build_append_int_noprefix(table_data, 0, 2); + /* Interrupt wire array offset */ + build_append_int_noprefix(table_data, RISCV_INTERRUPT_WIRE_OFFSSET, 2); + + /* PCIe Root Complex Node */ + build_append_int_noprefix(table_data, 1, 1); /* Type */ + build_append_int_noprefix(table_data, 1, 1); /* Revision */ + node_size =3D ROOT_COMPLEX_ENTRY_SIZE + + ID_MAPPING_ENTRY_SIZE * rc_mapping_count; + build_append_int_noprefix(table_data, node_size, 2); /* Length */ + build_append_int_noprefix(table_data, 0, 2); /* Reserved */ + build_append_int_noprefix(table_data, id++, 2); /* ID */ + build_append_int_noprefix(table_data, 0, 4); /* Flags */ + build_append_int_noprefix(table_data, 0, 2); /* Reserved */ + /* PCI Segment number */ + build_append_int_noprefix(table_data, 0, 2); + /* ID mapping array offset */ + build_append_int_noprefix(table_data, ROOT_COMPLEX_ENTRY_SIZE, 2); + /* Number of ID mappings */ + build_append_int_noprefix(table_data, rc_mapping_count, 2); + + /* Output Reference */ + AcpiRimtIdMapping *range; + + /* ID mapping array */ + for (i =3D 0; i < iommu_idmaps->len; i++) { + range =3D &g_array_index(iommu_idmaps, AcpiRimtIdMapping, i); + if (virt_is_iommu_sys_enabled(s)) { + range->source_id_base =3D 0; + } else { + range->source_id_base =3D s->pci_iommu_bdf + 1; + } + range->num_ids =3D 0xffff - s->pci_iommu_bdf; + build_rimt_id_mapping(table_data, range->source_id_base, + range->num_ids, iommu_offset); + } + + acpi_table_end(linker, &table); +} + /* * ACPI spec, Revision 6.5+ * 5.2.16 System Resource Affinity Table (SRAT) @@ -679,6 +889,11 @@ static void virt_acpi_build(RISCVVirtState *s, AcpiBui= ldTables *tables) acpi_add_table(table_offsets, tables_blob); build_rhct(tables_blob, tables->linker, s); =20 + if (virt_is_iommu_sys_enabled(s) || s->pci_iommu_bdf) { + acpi_add_table(table_offsets, tables_blob); + build_rimt(tables_blob, tables->linker, s); + } + acpi_add_table(table_offsets, tables_blob); spcr_setup(tables_blob, tables->linker, s); =20 --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747628091; cv=none; d=zohomail.com; s=zohoarc; b=f+O327op2e0GFXhb7pz3VnF1CTipxNe0P7K5qc85gmMsmfSmQ+3i2jehGCwObbaOhOxq+Z9B8e/pbursaXwqAtuP5YwWjBW0Ro80BJJ8YkW51GgLAvyjMMjA17jAjyUkjKH2fWeTUiIcFhAlihevB4o6jJPoU4YdN9dTHFbf2K0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747628091; h=Content-Type:Content-Transfer-Encoding:Cc:Cc: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; bh=yTIvHcAFACQpxbEMKQQmOLfJuML6Aq0ZlBGdT+L1BSU=; b=iEKsvQ8z6v585zY65F+P1iw7MDqqOHgusHMR+6/ePdoRJx9tjdJmhLfSoT3dkGgZrqPfL34MEEiSR+e2i5zRpoPmvGSKMaTmgIGfCd+BFgNn1cDDW9DCYaXH784mYkC0ETM2coNL2YLY+eW9Gb1WxkBt9RaA3zrzyFqifvQc7WE= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747628091539606.0980915352329; Sun, 18 May 2025 21:14:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGrsc-0002cP-7l; Mon, 19 May 2025 00:13:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGrmZ-0004j9-G0; Mon, 19 May 2025 00:07:21 -0400 Received: from mail-pg1-x530.google.com ([2607:f8b0:4864:20::530]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGrmX-00044s-ER; Mon, 19 May 2025 00:07:18 -0400 Received: by mail-pg1-x530.google.com with SMTP id 41be03b00d2f7-b26ee6be1ecso1638717a12.0; Sun, 18 May 2025 21:07:15 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.07.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:07:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627634; x=1748232434; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=yTIvHcAFACQpxbEMKQQmOLfJuML6Aq0ZlBGdT+L1BSU=; b=KZZHIFoqqoNl0nGzs4UxyHdmp/NSm1RiWsz+/cWhWip6LPH+uEvdGjTi6+tYPyFDyu Mh7ChvJvvj2cVt7E/sM7S8Vweq5EW6jVl64Y3mxMJ7/oVjY5uRpXSFTYsyzL48l24QUN ZZVE7bxwTFqs49fAqtVtnqrmOFhkUg2Z+irTTELrrXQzIVyQw09KcQisK4laq9nrOk96 6WNkF5LiEWzj/gMWgWN8Hrfwbp+2OxXXEBqQg7vEVUdt3mHBolAe9XV5TjdTo1IFL2hp pjyK0AItqMAD2NdoDybEOJjuPY8QE4md2mP5CwxOvAsYtfO+vN8giwUJKc7p7k+Mou8E 4ZWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627634; x=1748232434; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=yTIvHcAFACQpxbEMKQQmOLfJuML6Aq0ZlBGdT+L1BSU=; b=Uz1UC75NlDvFcbkxXZDQxCmh+hAYVQwdp9QiPmPP9F4YsWN09b0B/ABNpfe00L2d7v 6eMGy/V3VUqVk9+AMQ/Ys4uR8AS2Ah2/Ve0021hIcCRn9m1pkiUwF3zdo0tswkHQWxhP KHDuPbrtU1NvyIoG/rdnj+NABYbbsTarYNzu7L/GyezC5o8UppAULEdEyow1aiJYUOak O19HAI1HVt0m5MQzYFsCNAxaM27c2iqJZTQpP7tkliEoDDSUg5j4G8uEf/nZ+A8juZKc 0zqgkXBvvgRFjAtCxiFeq2OGfFMtEdTqcEyK/SsRH6uL5SiRdRe138muVwpNQdiaWrFu SxUw== X-Forwarded-Encrypted: i=1; AJvYcCWCBnbah34NB+RwvjhA08aCWRxm75EjFfdOVBNlnJnVWY689IsZfraQIe21e1t+TSkg3uP2QK/AbZfi+w==@nongnu.org X-Gm-Message-State: AOJu0Yy+QhrnU+ibJ8K2FIEYppCc4R1Iz0b3BTVu3ZeIBXxrw9KcPlvi 6dLBhI5WcbCDvIltapcUfB5OC/Nli0CBEVl2soe0OeLnV1QZSCpcWROlLJoAEw== X-Gm-Gg: ASbGncu1z1B9+UdG9lORSl6fr4oawZdrqiLSX2wQ9IWIAtEu8K8CEP3EIwm0K4j5l2r ReOJP6XvttUopH7K+fGfhmfv3qBrFvbVG1//egayktO58on7wxLmvFTXqYjt4qPSlnm5JFPeE7R ecN0H7ExL2Vecu1G4vKNnAbBjblbO9H9c03BXUkcQHhy3Z/yxGUWVXTYF/W3UhGJ0eJ2bVKXXfV Zu8MHIy8I6vtwflT1XTJa8VPvBD24vvSC1yRRvwgMcM1EviuEdpVjQuLCk6EiyRcXXtsJAzjTgd xCQ+HhA5kM3Zi18T+J97NoWfOsEvDnX9Ntad7fAHOcUD9tchA5U+EYsJkD5mCzJyeQMMTw/0lhM tjiD+V1/gVIt8HfdYasGemB6braylQPKeUjpo3yg0KsfPDXQCG7+8heVrXO90llhMB6M= X-Google-Smtp-Source: AGHT+IHVZyQRDYIxJyiL91I/9mVazjNn5i+tqrvUZoeyS1x9XaXQgc1SdC06ZmFkm4oEak8DIcL3PQ== X-Received: by 2002:a17:903:228b:b0:224:1157:6d26 with SMTP id d9443c01a7336-231de352994mr150114505ad.4.1747627634355; Sun, 18 May 2025 21:07:14 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, =?UTF-8?q?Lo=C3=AFc=20Lefort?= , Alistair Francis , Daniel Henrique Barboza , =?UTF-8?q?LIU=20Zhiwei=C2=A0?= , qemu-stable@nongnu.org Subject: [PULL 03/56] target/riscv: pmp: don't allow RLB to bypass rule privileges Date: Mon, 19 May 2025 14:05:00 +1000 Message-ID: <20250519040555.3797167-4-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::530; envelope-from=alistair23@gmail.com; helo=mail-pg1-x530.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747628093982116600 From: Lo=C3=AFc Lefort When Smepmp is supported, mseccfg.RLB allows bypassing locks when writing C= SRs but should not affect interpretation of actual PMP rules. This is not the case with the current implementation where pmp_hart_has_pri= vs calls pmp_is_locked which implements mseccfg.RLB bypass. This commit implements the correct behavior by removing mseccfg.RLB bypass = from pmp_is_locked. RLB bypass when writing CSRs is implemented by adding a new pmp_is_readonly function that calls pmp_is_locked and check mseccfg.RLB. pmp_write_cfg and pmpaddr_csr_write are changed to use this new function. Signed-off-by: Lo=C3=AFc Lefort Reviewed-by: Alistair Francis Reviewed-by: Daniel Henrique Barboza Reviewed-by: LIU Zhiwei=C2=A0 Message-ID: <20250313193011.720075-2-loic@rivosinc.com> Signed-off-by: Alistair Francis Cc: qemu-stable@nongnu.org --- target/riscv/pmp.c | 43 +++++++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/target/riscv/pmp.c b/target/riscv/pmp.c index c13a117e3f..d8e2949aaf 100644 --- a/target/riscv/pmp.c +++ b/target/riscv/pmp.c @@ -46,11 +46,6 @@ static inline uint8_t pmp_get_a_field(uint8_t cfg) */ static inline int pmp_is_locked(CPURISCVState *env, uint32_t pmp_index) { - /* mseccfg.RLB is set */ - if (MSECCFG_RLB_ISSET(env)) { - return 0; - } - if (env->pmp_state.pmp[pmp_index].cfg_reg & PMP_LOCK) { return 1; } @@ -63,6 +58,15 @@ static inline int pmp_is_locked(CPURISCVState *env, uint= 32_t pmp_index) return 0; } =20 +/* + * Check whether a PMP is locked for writing or not. + * (i.e. has LOCK flag and mseccfg.RLB is unset) + */ +static int pmp_is_readonly(CPURISCVState *env, uint32_t pmp_index) +{ + return pmp_is_locked(env, pmp_index) && !MSECCFG_RLB_ISSET(env); +} + /* * Count the number of active rules. */ @@ -91,39 +95,38 @@ static inline uint8_t pmp_read_cfg(CPURISCVState *env, = uint32_t pmp_index) static bool pmp_write_cfg(CPURISCVState *env, uint32_t pmp_index, uint8_t = val) { if (pmp_index < MAX_RISCV_PMPS) { - bool locked =3D true; + bool readonly =3D true; =20 if (riscv_cpu_cfg(env)->ext_smepmp) { /* mseccfg.RLB is set */ if (MSECCFG_RLB_ISSET(env)) { - locked =3D false; + readonly =3D false; } =20 /* mseccfg.MML is not set */ - if (!MSECCFG_MML_ISSET(env) && !pmp_is_locked(env, pmp_index))= { - locked =3D false; + if (!MSECCFG_MML_ISSET(env) && !pmp_is_readonly(env, pmp_index= )) { + readonly =3D false; } =20 /* mseccfg.MML is set */ if (MSECCFG_MML_ISSET(env)) { /* not adding execute bit */ if ((val & PMP_LOCK) !=3D 0 && (val & PMP_EXEC) !=3D PMP_E= XEC) { - locked =3D false; + readonly =3D false; } /* shared region and not adding X bit */ if ((val & PMP_LOCK) !=3D PMP_LOCK && (val & 0x7) !=3D (PMP_WRITE | PMP_EXEC)) { - locked =3D false; + readonly =3D false; } } } else { - if (!pmp_is_locked(env, pmp_index)) { - locked =3D false; - } + readonly =3D pmp_is_readonly(env, pmp_index); } =20 - if (locked) { - qemu_log_mask(LOG_GUEST_ERROR, "ignoring pmpcfg write - locked= \n"); + if (readonly) { + qemu_log_mask(LOG_GUEST_ERROR, + "ignoring pmpcfg write - read only\n"); } else if (env->pmp_state.pmp[pmp_index].cfg_reg !=3D val) { /* If !mseccfg.MML then ignore writes with encoding RW=3D01 */ if ((val & PMP_WRITE) && !(val & PMP_READ) && @@ -525,14 +528,14 @@ void pmpaddr_csr_write(CPURISCVState *env, uint32_t a= ddr_index, uint8_t pmp_cfg =3D env->pmp_state.pmp[addr_index + 1].cfg_reg; is_next_cfg_tor =3D PMP_AMATCH_TOR =3D=3D pmp_get_a_field(pmp_= cfg); =20 - if (pmp_is_locked(env, addr_index + 1) && is_next_cfg_tor) { + if (pmp_is_readonly(env, addr_index + 1) && is_next_cfg_tor) { qemu_log_mask(LOG_GUEST_ERROR, - "ignoring pmpaddr write - pmpcfg + 1 locked\= n"); + "ignoring pmpaddr write - pmpcfg+1 read only= \n"); return; } } =20 - if (!pmp_is_locked(env, addr_index)) { + if (!pmp_is_readonly(env, addr_index)) { if (env->pmp_state.pmp[addr_index].addr_reg !=3D val) { env->pmp_state.pmp[addr_index].addr_reg =3D val; pmp_update_rule_addr(env, addr_index); @@ -543,7 +546,7 @@ void pmpaddr_csr_write(CPURISCVState *env, uint32_t add= r_index, } } else { qemu_log_mask(LOG_GUEST_ERROR, - "ignoring pmpaddr write - locked\n"); + "ignoring pmpaddr write - read only\n"); } } else { qemu_log_mask(LOG_GUEST_ERROR, --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747628057; cv=none; d=zohomail.com; s=zohoarc; b=KnmyBpufUlfqiPg9LZVwVB2CQsir3/oYZNJd0pUMMQhlmOVQ+drnQys+3oRQpblAtfqhI+5IqC+yfrzxchFJbswXiLs+RA3ly8V4FPfYBWFPZfk6Lpu6W4Y5NukQD+oZ6Qq1pUi0bT9UUwlwOSae4NNXmYJSTS2sH+88msUzuqA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747628057; h=Content-Type:Content-Transfer-Encoding:Cc:Cc: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; bh=tXBhzTWpJ1Fn/A81GjUvhAo2o2EtkxBbSGZOC7qOGx4=; b=CR787jbh5f2PFreda449UM2snAGXMsrnk6mItubYubDJ4peqaVazFmp2NCTYXPOtJi8Dk9xiB713RgmSaOBCMNWRaoGGkvlSYpPVT1s+IADX7YvqfIaw/T4loNOSVhCzwOZ9+x6LCheP+d9FTaY5U7ymfvZal4zCAY3BJqUkhGM= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747628057781243.92678329196985; Sun, 18 May 2025 21:14:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGrtF-000310-5K; Mon, 19 May 2025 00:14:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGrmc-0004jC-S6; Mon, 19 May 2025 00:07:23 -0400 Received: from mail-pl1-x62c.google.com ([2607:f8b0:4864:20::62c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGrmb-000457-4N; Mon, 19 May 2025 00:07:22 -0400 Received: by mail-pl1-x62c.google.com with SMTP id d9443c01a7336-2322f8afe02so4399185ad.2; Sun, 18 May 2025 21:07:19 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.07.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:07:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627638; x=1748232438; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=tXBhzTWpJ1Fn/A81GjUvhAo2o2EtkxBbSGZOC7qOGx4=; b=KAHlNkjHjX+yVigfjQ0wbVOM9bvVQkMpR6VZQUV8htB9Aptio1kauq5wYtKfhkvCoi DbKc5Er2ekthDE9LntrYhmlUYJk4ROjrFzvtDUrKrjxrVHfuRJlk2cD5sXp12EiIXn6/ zHUZgTp+roP9UUJMqBtEJ7hHteFtAMStt5uiB2EEGjBC8NHLYZLwJtsAHEQUmGDmtqrh j9Q0abzjiA+8S4qYNT9Z2Mdn1hRHZ7Z8n8WRoS4H0S0ppiHz+anw06aIMFJ59qCImWyE d2emPcSEhpGx1J5hAvynABuxIUCPv/OzgFRF3CwCgf6me2HIbNMQm26G6bHamD5KXgNr mf7w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627638; x=1748232438; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=tXBhzTWpJ1Fn/A81GjUvhAo2o2EtkxBbSGZOC7qOGx4=; b=gk1xNH+o+5+KVPZq1/1O26/HWqGWaAHkDCQX10IEGanEjVQ2yos59+TtwX5Y1J8kzp NgBnFWM6a4/bFLU1acEDmu6FK42jgkrUdAb7OjHI9KahPwQiLBcy//FWbEB4ZvasiXxF WIEOzYww6vMdVcN+Nb3zAueiCHO8NGWUCCBvjK7G636ad/i4aKpCDxSBWNZzRufRW6s0 kuWEwhBFX1r7HsgCho/f8dQ2gOVZhemi6fQKUXoyaDovoWHkG5rvo8G7OGE1YJWZ5Fx9 EnbS2j/OwEaXr80iseZyADa9qkZm5ApSMpgVet9J11UKaxlTMt5Ngy7bMtJWy9y9DalO I6ww== X-Forwarded-Encrypted: i=1; AJvYcCXCBFnKgR+UQre0zv8GLG8OEm9y6icmfutXnWiwLfIIH2d6bP/TZ+YPR9wrgadBGtQh+lmgk/xgqzmEjA==@nongnu.org X-Gm-Message-State: AOJu0YwtNGjoEySSFJzpFU8QClo0SOItEfeGfO9v3jRin1sx83FcI8DV 4USEQ/furxk9s+ZvBgAB4vkm+OAlufFTwrR1do0qszVwfcDVME4a7d3SN7w/bQ== X-Gm-Gg: ASbGnctn2c9TOR6IJ0XO9fjedBB1pQqj9/FtCXILkfY6ed1sQNFj1E7dhb7zFwb0jHH LB4mxqJOW815ALu0yD2Q0kK7zBqAOfCi035SQckwqyL36lDXW1WmB4+pRF1Wfp8TEQyQU7nLpLK DZxhZgksH9sV8n/alpHEMud3/CBtNlHnrj63ifKAfgH9ZiCrzuKRBeV7oEEVuQe0DFVY6AluMfQ LhDowFVGuQPbFmlcOCOuIPqj35r9l5iByjjJ/5njLswu8/hKDErUSttWzWnTfhVAveQELmWCRau yrPhnNAd25JYly8+tOrReaefz5gQ/YySP+u9m5iGJzOGB3WlJUaU4TCGV0Ina5XzaxOm96FyvRq 2pLEdo6tMiH/XK7TpbsRk1w3i/qhztmVOAftHFsBB/14EWEQ+57hd7h99 X-Google-Smtp-Source: AGHT+IGhtYIuPLK8xgeav4tk0tmYHmUIFbC9BG1XLSnM4Pp8PF3Db4vVIfASQfGR1Yf0I2TF6LVOIA== X-Received: by 2002:a17:903:41cc:b0:22e:1791:2e5a with SMTP id d9443c01a7336-231d459a551mr195418735ad.35.1747627637939; Sun, 18 May 2025 21:07:17 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, =?UTF-8?q?Lo=C3=AFc=20Lefort?= , Daniel Henrique Barboza , Alistair Francis , LIU Zhiwei , qemu-stable@nongnu.org Subject: [PULL 04/56] target/riscv: pmp: move Smepmp operation conversion into a function Date: Mon, 19 May 2025 14:05:01 +1000 Message-ID: <20250519040555.3797167-5-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62c; envelope-from=alistair23@gmail.com; helo=mail-pl1-x62c.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747628059327116600 From: Lo=C3=AFc Lefort Signed-off-by: Lo=C3=AFc Lefort Reviewed-by: Daniel Henrique Barboza Reviewed-by: Alistair Francis Reviewed-by: LIU Zhiwei Message-ID: <20250313193011.720075-3-loic@rivosinc.com> Signed-off-by: Alistair Francis Cc: qemu-stable@nongnu.org --- target/riscv/pmp.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/target/riscv/pmp.c b/target/riscv/pmp.c index d8e2949aaf..3afa16917e 100644 --- a/target/riscv/pmp.c +++ b/target/riscv/pmp.c @@ -32,6 +32,15 @@ static bool pmp_write_cfg(CPURISCVState *env, uint32_t a= ddr_index, uint8_t val); static uint8_t pmp_read_cfg(CPURISCVState *env, uint32_t addr_index); =20 +/* + * Convert the PMP permissions to match the truth table in the Smepmp spec. + */ +static inline uint8_t pmp_get_smepmp_operation(uint8_t cfg) +{ + return ((cfg & PMP_LOCK) >> 4) | ((cfg & PMP_READ) << 2) | + (cfg & PMP_WRITE) | ((cfg & PMP_EXEC) >> 2); +} + /* * Accessor method to extract address matching type 'a field' from cfg reg */ @@ -356,16 +365,6 @@ bool pmp_hart_has_privs(CPURISCVState *env, hwaddr add= r, const uint8_t a_field =3D pmp_get_a_field(env->pmp_state.pmp[i].cfg_reg); =20 - /* - * Convert the PMP permissions to match the truth table in the - * Smepmp spec. - */ - const uint8_t smepmp_operation =3D - ((env->pmp_state.pmp[i].cfg_reg & PMP_LOCK) >> 4) | - ((env->pmp_state.pmp[i].cfg_reg & PMP_READ) << 2) | - (env->pmp_state.pmp[i].cfg_reg & PMP_WRITE) | - ((env->pmp_state.pmp[i].cfg_reg & PMP_EXEC) >> 2); - if (((s + e) =3D=3D 2) && (PMP_AMATCH_OFF !=3D a_field)) { /* * If the PMP entry is not off and the address is in range, @@ -384,6 +383,9 @@ bool pmp_hart_has_privs(CPURISCVState *env, hwaddr addr, /* * If mseccfg.MML Bit set, do the enhanced pmp priv check */ + const uint8_t smepmp_operation =3D + pmp_get_smepmp_operation(env->pmp_state.pmp[i].cfg_reg= ); + if (mode =3D=3D PRV_M) { switch (smepmp_operation) { case 0: --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747628777; cv=none; d=zohomail.com; s=zohoarc; b=TnRPLV4ogjsYL55USQX/ARos8uc0GEvv8t6f7Qf7e1zh2zxMwaUetGZ7MjiptsSm1OFjSO288p/BT+BdhkusDGjfU7xUzHs6s648Qy0Yt7eQGzs4gvRe5+Kacf7HPQs6pJeuyyw+lsFTCOEa7LAwY4kJTlPdRBn9mHFgfaAxAso= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747628777; h=Content-Type:Content-Transfer-Encoding:Cc:Cc: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; bh=yphhlPS9biEieFLOj3eoHey74pP4qWULE21z6B5e0ew=; b=fvLYqnQWkgISkJw7x+Lzn/r9o0irD4I0xDv4B5gtWGGhlXs0BFA0fg5hfSd44ryvNUTZBK31hOH8ZQOBTCIU98NNJXk3SpJxd47JwMB+qN92jUwaCSbaIzqwqVrkkA7Gi4pAjDF4k400BdILp8WnfqzaZ228OcsoMhavMuFk0Rc= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747628777405118.77228673563445; Sun, 18 May 2025 21:26:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGs3K-0000ba-9s; Mon, 19 May 2025 00:24:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGrmf-0004jb-AZ; Mon, 19 May 2025 00:07:28 -0400 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGrmd-00045J-Iu; Mon, 19 May 2025 00:07:25 -0400 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-231e8553248so18879615ad.1; Sun, 18 May 2025 21:07:22 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.07.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:07:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627641; x=1748232441; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=yphhlPS9biEieFLOj3eoHey74pP4qWULE21z6B5e0ew=; b=QJSfTuQ70z6jrVWmrlXDXSYWw8hXZ75GIGYknF90Y4z6/oaG5x/T3eKct8k3+Uv55y cpeCKfAFJjOauRgg89UAm2XDR4Ro+SimzDAxa0wYXe/sM0UAiZPxtXV2LbYX9xuEJ5vg g16zIICGVg3FiDnP5EFjbdbpsDbgr9Fd4vs3BEk5jZeaEJElhqpY+WaGHvQ766dLhIy7 SmPwr8dIaf7kWy+jpuDuCMKJ5jpWf/PQMCsJ4Oatt+GlJR8w6MRdBSkjVRgU5iGfcQP6 rXEWKpYz582mYf2TLQuoZzhUpZ7dnP2N8b1SiuN4DBJ8DYtr/kuzb6P+0LlQG2DCrmxQ owgg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627641; x=1748232441; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=yphhlPS9biEieFLOj3eoHey74pP4qWULE21z6B5e0ew=; b=GZCElpHRZuwxZSg9tUZUHlI/FXW6k6feaUsA4vQZsbiJHq6vcmYn1lML12LFzkEkj0 svYMitcOap80vgal7+Gy9Sy+VJ0rvtewb+SHw0TfT08twLoY9I4jieerCDS4P9ms+qFd C7kJtYtjBiuQHWjMRKyD9M/t/pVmXhhW4E9LjGF5CgYPYbP5LFGcl3hcnhP4BRpnqlXo V64tmEpAj5OsaEpjhJEQitbdFOnBiPUPRGff0BsCwkv8dA7ay0uDLs+xyQsRxuGboxkw 621HagDarM8+HOtbgO6661tBrADFm8y3OZX9BdGgDuFgZekzcJX5B37vw00lal5ZZ86Q IHqg== X-Forwarded-Encrypted: i=1; AJvYcCUb4Zvp7qDavlpaRFGcq5MKUjH6k+aRLT63BdwET2DZ2bFpxz8QHm5MZkCJ2TM0TQdBLIcwAeDdl69dsQ==@nongnu.org X-Gm-Message-State: AOJu0YzKBNHv9f4OX6NdnkwWZr+1q5db7eCx6bjVxnWTxfLlTklA5NXY JvKMKvMenVC8FmeQeA29EQEoJlZX71V8hdqIQrtIDCWjvrFFgaRaqYUNoaEVNg== X-Gm-Gg: ASbGncv9mK7lqrm7WFCXUwmH69VIRQpqBt0C9pqUdUC/CqGmUKiMdCwGV6UoR8gfkoN XNcKgpboYd14u0GAsREKL2+YqVhA1ERMKtG+NrPuoplIoKUy3CyOybHzqYN+BlXIEzTVOKchYRi 8uNdnUtm7Yf562cQGdWgioYwvxx9Z3dGPohYS+v+0awrr+GY/rk44L2PKAY6P6v/uXNFQGQip4b 8eLJwLNC7i+6XnO9Kmlh/Ing4juRg6x2OBlfLksNuPADjinAOwz3FKLBhzTx0Y8UUjSmeH+80FY U4oWg7NBhl22kVjoahee9Kb5xCrFt7Mf87MLao3hl3pLPzjkY4jjPRof/6YCyIcXqynTDhAiDhQ kUPkavW+ysJxjdjcxMjoamvNc+eWLOjjFr3HTJ7RD8acrwh/awmxJ2+D6 X-Google-Smtp-Source: AGHT+IF2SbYzmKD4t2kfiJHwg8vFDp1BaIPMU9eTFNos2vaxug5Vm8cSNMY2x3QhZW+oviLaXegBTg== X-Received: by 2002:a17:903:40d0:b0:22e:847b:5bbd with SMTP id d9443c01a7336-231de370cebmr165048535ad.32.1747627641437; Sun, 18 May 2025 21:07:21 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, =?UTF-8?q?Lo=C3=AFc=20Lefort?= , Daniel Henrique Barboza , LIU Zhiwei , Alistair Francis , qemu-stable@nongnu.org Subject: [PULL 05/56] target/riscv: pmp: fix checks on writes to pmpcfg in Smepmp MML mode Date: Mon, 19 May 2025 14:05:02 +1000 Message-ID: <20250519040555.3797167-6-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::634; envelope-from=alistair23@gmail.com; helo=mail-pl1-x634.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747628779159116600 From: Lo=C3=AFc Lefort With Machine Mode Lockdown (mseccfg.MML) set and RLB not set, checks on pmp= cfg writes would match the wrong cases of Smepmp truth table. The existing code allows writes for the following cases: - L=3D1, X=3D0: cases 8, 10, 12, 14 - L=3D0, RWX!=3DWX: cases 0-2, 4-6 This leaves cases 3, 7, 9, 11, 13, 15 for which writes are ignored. From the Smepmp specification: "Adding a rule with executable privileges th= at either is M-mode-only or a locked Shared-Region is not possible (...)" This description matches cases 9-11, 13 of the truth table. This commit implements an explicit check for these cases by using pmp_get_epmp_operation to convert between PMP configuration and Smepmp truth table cases. Signed-off-by: Lo=C3=AFc Lefort Reviewed-by: Daniel Henrique Barboza Reviewed-by: LIU Zhiwei Message-ID: <20250313193011.720075-4-loic@rivosinc.com> Signed-off-by: Alistair Francis Cc: qemu-stable@nongnu.org --- target/riscv/pmp.c | 79 +++++++++++++++++++++++++--------------------- 1 file changed, 43 insertions(+), 36 deletions(-) diff --git a/target/riscv/pmp.c b/target/riscv/pmp.c index 3afa16917e..8fc313990a 100644 --- a/target/riscv/pmp.c +++ b/target/riscv/pmp.c @@ -76,6 +76,44 @@ static int pmp_is_readonly(CPURISCVState *env, uint32_t = pmp_index) return pmp_is_locked(env, pmp_index) && !MSECCFG_RLB_ISSET(env); } =20 +/* + * Check whether `val` is an invalid Smepmp config value + */ +static int pmp_is_invalid_smepmp_cfg(CPURISCVState *env, uint8_t val) +{ + /* No check if mseccfg.MML is not set or if mseccfg.RLB is set */ + if (!MSECCFG_MML_ISSET(env) || MSECCFG_RLB_ISSET(env)) { + return 0; + } + + /* + * Adding a rule with executable privileges that either is M-mode-only + * or a locked Shared-Region is not possible + */ + switch (pmp_get_smepmp_operation(val)) { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 12: + case 14: + case 15: + return 0; + case 9: + case 10: + case 11: + case 13: + return 1; + default: + g_assert_not_reached(); + } +} + /* * Count the number of active rules. */ @@ -104,44 +142,13 @@ static inline uint8_t pmp_read_cfg(CPURISCVState *env= , uint32_t pmp_index) static bool pmp_write_cfg(CPURISCVState *env, uint32_t pmp_index, uint8_t = val) { if (pmp_index < MAX_RISCV_PMPS) { - bool readonly =3D true; - - if (riscv_cpu_cfg(env)->ext_smepmp) { - /* mseccfg.RLB is set */ - if (MSECCFG_RLB_ISSET(env)) { - readonly =3D false; - } - - /* mseccfg.MML is not set */ - if (!MSECCFG_MML_ISSET(env) && !pmp_is_readonly(env, pmp_index= )) { - readonly =3D false; - } - - /* mseccfg.MML is set */ - if (MSECCFG_MML_ISSET(env)) { - /* not adding execute bit */ - if ((val & PMP_LOCK) !=3D 0 && (val & PMP_EXEC) !=3D PMP_E= XEC) { - readonly =3D false; - } - /* shared region and not adding X bit */ - if ((val & PMP_LOCK) !=3D PMP_LOCK && - (val & 0x7) !=3D (PMP_WRITE | PMP_EXEC)) { - readonly =3D false; - } - } - } else { - readonly =3D pmp_is_readonly(env, pmp_index); - } - - if (readonly) { + if (pmp_is_readonly(env, pmp_index)) { qemu_log_mask(LOG_GUEST_ERROR, "ignoring pmpcfg write - read only\n"); - } else if (env->pmp_state.pmp[pmp_index].cfg_reg !=3D val) { - /* If !mseccfg.MML then ignore writes with encoding RW=3D01 */ - if ((val & PMP_WRITE) && !(val & PMP_READ) && - !MSECCFG_MML_ISSET(env)) { - return false; - } + } else if (pmp_is_invalid_smepmp_cfg(env, val)) { + qemu_log_mask(LOG_GUEST_ERROR, + "ignoring pmpcfg write - invalid\n"); + } else { env->pmp_state.pmp[pmp_index].cfg_reg =3D val; pmp_update_rule_addr(env, pmp_index); return true; --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747628034; cv=none; d=zohomail.com; s=zohoarc; b=WswGvZCCubonJ01Ja5zNnSymz67CAKs97jds1vI1mvb8rE+yiskVGmXSOqtSYknToAEHLN5m4kX8Uf3FoUShCSrhD3L/GM3SYFCX6QpoairH8NRC5JGiBmlpRxSzYBTboclgTn4M+5xFb+R6r0AW9Af7bamZ5aCHaGaAPe922Qg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747628034; h=Content-Type:Content-Transfer-Encoding:Cc:Cc: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; bh=eQ8oK567cL4InAUCLjpcMcBvYiQLXRFYVbtoODZATfI=; b=O+53ZGQP7G3XdDxK05J0m5BJl2tKeRQmJk/hq/ESVXGOd1OchXOG0zwm9Yhup5S3/yZJNgN0WUqYaUZdLNe0Mgrp4JbxRsxkZClNrj9thXbIeQa21nNjIX8fNI0BTQJ7GheK2BPN5E/dsUToHM6OBreuPCBEpjGMSx5e/2m5zMo= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747628034189974.7600121792303; Sun, 18 May 2025 21:13:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGrsk-0002gk-JA; Mon, 19 May 2025 00:13:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGrmk-0004kC-Fe for qemu-devel@nongnu.org; Mon, 19 May 2025 00:07:33 -0400 Received: from mail-pj1-x1029.google.com ([2607:f8b0:4864:20::1029]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGrmg-00045c-Pa for qemu-devel@nongnu.org; Mon, 19 May 2025 00:07:28 -0400 Received: by mail-pj1-x1029.google.com with SMTP id 98e67ed59e1d1-30ed99132abso752409a91.3 for ; Sun, 18 May 2025 21:07:26 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.07.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:07:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627645; x=1748232445; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=eQ8oK567cL4InAUCLjpcMcBvYiQLXRFYVbtoODZATfI=; b=ZFOJwxFRF7tDSEo90iCHdp8ixY9FcBGrj2sJs1XAtDDOhXcWiT1RR8S8WCFyZWzvby wJW3ZEch4U6xnwhg7GCxRE0nd1gaVmw5IqOnv6Sa+/XCGaYQFBEeQ6MFX4QHe+kctFYs BEHDwgJIi/Jov/fnyrDg0UryjLQ86oUnW/T6rM/uHknle8X9PdZeakJHKhKh3WFfkkwc uV/cgPCfMJIm96JFZomOOuBXezDyvSt9DfWd9le06MF4gsMnIe6KffEQLBoH6H7GVPs7 C4gQM5Izscqc/LzULa8/vRDzhJXJCFIKnc+Sd5wbqNUl6bjKpOaUqrd5ZNiSBqrJ0TRE Go7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627645; x=1748232445; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=eQ8oK567cL4InAUCLjpcMcBvYiQLXRFYVbtoODZATfI=; b=e6fGHvPBrvzPhmVk9ZDi+j9Cen/X9Qti2aa/VL9+b9VwwdK37w7PVEMRdS2kslqClx IrQ526QEvUGXIFp838tesf/Tf2GUk2RIy2hKPdYSbZX4kJ0fn9AnwsRzfN3k6nsw/LhU NEogj8vAfhdC63WrRbE+MkLij3vFO0MtCj2Sl+tmmckimH3O/rWgEQRNYHKMxrbPVTSB rRjSOyKH3kBdnEJhnjwDsVe4BVX/eHQtGYspehttBN5xd4r7LvaLQagnTSyvPW13p3GW niRM61Z+FHhduo9YMVuRpUVhU+YjvR1J51NtRM1+rYjjdBfv1VFy0JYDw5JqhyJPkufq 3vrA== X-Gm-Message-State: AOJu0YylSvQsrg9qKLnMifahOniYebwc6y5YHHG2BFOEtftfOLJTOYYu nM58VwhbtDuEKCAanFxUQd23q26Jqz4fkYQKrxvjF7nvC4VrxGkK59NwJB/NQA== X-Gm-Gg: ASbGncvWYlQLPfJFZ9TUR/eAubhhEv+zLg6IX8M8MukuNnpVjbesEJePp0Vs4rS3nI+ 1vuI5B6L+PvGxs88kRDcHOS3onqt3iWSIcuE1HXQ9mBdwGa+RriGt6TH27c23MnMkExJ0qlJlNV 8/Uwc5iO4XXKjPM46z9FaWbvy5T2TZNrzIUcdU4bWN39Fb1T56qxPVEo320l4Mf5dvuQZBOcqF2 h1Ek5JK+zZ4cj+LXCylDpA/Vp48NAongHIE1WMCczJoqk6b9Ud15PwBQSUy/kQ4B1RKotMvuG8p SNuyaow68gOjmtV9qoF2XiFy1goDI8DITkmcSi7Zjb7naoNiPkqdFwuHRI4LI+XT5ilvg/CD6q/ 7gaZXkb8qY+3klYfUXIpVk8tKVCI4bkMpkuAVM+I7lf5V4nMDnJw3UH8s X-Google-Smtp-Source: AGHT+IGVOZWfhn2SIfXo1tf+oMj5+2825n7mGdgRmxejbaGH5S2f9xhJsJLeE7BHwf/6TbBYUkc3+A== X-Received: by 2002:a17:902:c948:b0:22f:c91f:d05f with SMTP id d9443c01a7336-231d45c99c7mr173264435ad.46.1747627644713; Sun, 18 May 2025 21:07:24 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, =?UTF-8?q?Lo=C3=AFc=20Lefort?= , Daniel Henrique Barboza , Alistair Francis , LIU Zhiwei Subject: [PULL 06/56] target/riscv: pmp: exit csr writes early if value was not changed Date: Mon, 19 May 2025 14:05:03 +1000 Message-ID: <20250519040555.3797167-7-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1029; envelope-from=alistair23@gmail.com; helo=mail-pj1-x1029.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747628035103116600 From: Lo=C3=AFc Lefort Signed-off-by: Lo=C3=AFc Lefort Reviewed-by: Daniel Henrique Barboza Reviewed-by: Alistair Francis Reviewed-by: LIU Zhiwei Message-ID: <20250313193011.720075-5-loic@rivosinc.com> Signed-off-by: Alistair Francis --- target/riscv/pmp.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/target/riscv/pmp.c b/target/riscv/pmp.c index 8fc313990a..4070e21ea3 100644 --- a/target/riscv/pmp.c +++ b/target/riscv/pmp.c @@ -142,6 +142,11 @@ static inline uint8_t pmp_read_cfg(CPURISCVState *env,= uint32_t pmp_index) static bool pmp_write_cfg(CPURISCVState *env, uint32_t pmp_index, uint8_t = val) { if (pmp_index < MAX_RISCV_PMPS) { + if (env->pmp_state.pmp[pmp_index].cfg_reg =3D=3D val) { + /* no change */ + return false; + } + if (pmp_is_readonly(env, pmp_index)) { qemu_log_mask(LOG_GUEST_ERROR, "ignoring pmpcfg write - read only\n"); @@ -529,6 +534,11 @@ void pmpaddr_csr_write(CPURISCVState *env, uint32_t ad= dr_index, bool is_next_cfg_tor =3D false; =20 if (addr_index < MAX_RISCV_PMPS) { + if (env->pmp_state.pmp[addr_index].addr_reg =3D=3D val) { + /* no change */ + return; + } + /* * In TOR mode, need to check the lock bit of the next pmp * (if there is a next). @@ -545,14 +555,12 @@ void pmpaddr_csr_write(CPURISCVState *env, uint32_t a= ddr_index, } =20 if (!pmp_is_readonly(env, addr_index)) { - if (env->pmp_state.pmp[addr_index].addr_reg !=3D val) { - env->pmp_state.pmp[addr_index].addr_reg =3D val; - pmp_update_rule_addr(env, addr_index); - if (is_next_cfg_tor) { - pmp_update_rule_addr(env, addr_index + 1); - } - tlb_flush(env_cpu(env)); + env->pmp_state.pmp[addr_index].addr_reg =3D val; + pmp_update_rule_addr(env, addr_index); + if (is_next_cfg_tor) { + pmp_update_rule_addr(env, addr_index + 1); } + tlb_flush(env_cpu(env)); } else { qemu_log_mask(LOG_GUEST_ERROR, "ignoring pmpaddr write - read only\n"); --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747627708; cv=none; d=zohomail.com; s=zohoarc; b=anxabtZqoJh3gP4dLzmTLZSOSb6fcztoRghCyC3LH/7BbXrpVf6yIyfb2iTt6VLXUh77E6hWG+FvYwR7zSrpx0Pz3866iTYOXgV0tsUKIY114HC2h+CIUUfynT0UkGugx7tQUxHQROZPkHFF/XsFJh7XvomTsKVTdTL0HPLBlgM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747627708; h=Content-Type:Content-Transfer-Encoding:Cc:Cc: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; bh=6w4QEmVsDfk2xWldFPm61oyaPQk8pJz+xLAC04XqHF8=; b=krv+BN/RMtP1KBmSLy5vYRHcQm9gJ6yay+uutoUO0KRGXVjUNpT2vhpRZmxIBy7St1cPFhFVpyUtGEYK90sAFGWfBcDxz2mBOYmy7JsCVar0Uv0ur40hNpumLvnu6Qos1o/xOlohdqSsP/x3RP3Cm9BSO3/jrPNxOdSF54PgczM= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17476277087581017.2554496241227; Sun, 18 May 2025 21:08:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGrmy-0004lv-8T; Mon, 19 May 2025 00:07:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGrml-0004kE-WF for qemu-devel@nongnu.org; Mon, 19 May 2025 00:07:33 -0400 Received: from mail-pl1-x62c.google.com ([2607:f8b0:4864:20::62c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGrmk-00047Q-8J for qemu-devel@nongnu.org; Mon, 19 May 2025 00:07:31 -0400 Received: by mail-pl1-x62c.google.com with SMTP id d9443c01a7336-2322dc5c989so4517725ad.3 for ; Sun, 18 May 2025 21:07:29 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.07.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:07:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627648; x=1748232448; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=6w4QEmVsDfk2xWldFPm61oyaPQk8pJz+xLAC04XqHF8=; b=ZNiOe/vJoQUVqe4d7D3XehD//F+ET21cVFlWcm+05Rc6AZv16zhaYkEBKbN5xisSwZ rZhOYlD8Rt1hWW5e+w3L3vEHqS6Q+ezDFDe/qdFR5aNqPVWmwos4x+Co6xLZxFNWLU78 01Xr/oUEw4YrflR6nCnmecqC0cY9M7SKwxRBDjUFfmx0y40/wPlLCXAOoZXw8TebNtI0 rb/j+HQ3THTi96OhHm3SC5oTR7oMSJLqmgFfXEtRHdvJg16frzP5EN3B06ivqB0JYB94 fLxvufMKxY5GkdRCo4KNLPHGxdEJVrJm9Z9H+sGnT/Lq2/zGjah+oxE5hZMHcQdXJgaJ dJUw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627648; x=1748232448; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=6w4QEmVsDfk2xWldFPm61oyaPQk8pJz+xLAC04XqHF8=; b=lbXvthsAg/2npZVoV82MWnRGS+uXUfzOqenEklDNsVxMJXzapBQkQDkzSvS7+SLSiH UNYWGa1fWvBwiSl+84i8nTM7TPBj2MfmBpxWD8fOFcoHpB9zpghWO7apRAPe7yCqw0uD ovF5rI98oZm0H4t1yZ+cfzuhq21BFo4h6feJR9/dh8g/t6wchvWxvlzbGF6GAQzMEst8 ht3HjtIPHbBnBwqTE64C7cPKNwjfKt/k8+ZS05wyFFoPX4Rf+WSuw/yV/wQK98Xn+VcD JmQyEFFKHJ4A+39qDWlrE60qBN5FEKFuJQMiMafqIa0nQVQSsBS04FVz5CAVgdljqSVv BfTA== X-Gm-Message-State: AOJu0YzJ/U3PbrZJRrekpbGoyKrJhPx72IF4wpOayDJm1NVzQic7XHJ4 DHy1hycZSwOR5DofbUKSWWzdydHdNh25Z1GLLNI/b1OEk10nyfyJCtvj9GofLg== X-Gm-Gg: ASbGncuwlhwk0ibLkLSQaUQkw/g/2T/zVluTrGy0o/fNiCFM36qss40RQDzfRiYVJ/N yyy+3GOa6AAv5CBPlKeJusF+6f/y7vIjjZ33tRw9XejsySxry5YJ4Gsm6xlOmDw1tQCtZRmjCbK VpQps4evc2kyAe7DqOsjjpLCoMiqrsxCZTq4YDfdd27EkooWHRCRuYlwBMaWvCYTvQW/HtanW1B EVuqhKmQIR2/Bm9VOghu0eiWMkZIGd5EXwhpjexZVWe7L4tkXQx9ProEvBAoy2zpsMPq8IWeFz0 30OMZZC2E7orvL09v1n+elany3CkB1s37VSBIIo84sSimCI2PEOU20Bvv6yr7XxAl7ErFHuHG7C bhd5a6c4YhocKm+7jvU9KRXjE9t5016kB8dVB0TLTVCjevFFNTjxI0LCU X-Google-Smtp-Source: AGHT+IG6g54EThRXihL1Hlm2HbvKSN1wl9sH9ce7T6nz+Y3ubn0Hg+N6UXbFqH2NQKjCFsmZLb/SiQ== X-Received: by 2002:a17:903:1a68:b0:22f:c568:e691 with SMTP id d9443c01a7336-231de3149ddmr162049745ad.21.1747627647995; Sun, 18 May 2025 21:07:27 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, =?UTF-8?q?Lo=C3=AFc=20Lefort?= , Daniel Henrique Barboza , Alistair Francis , LIU Zhiwei Subject: [PULL 07/56] target/riscv: pmp: remove redundant check in pmp_is_locked Date: Mon, 19 May 2025 14:05:04 +1000 Message-ID: <20250519040555.3797167-8-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62c; envelope-from=alistair23@gmail.com; helo=mail-pl1-x62c.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747627709809116600 From: Lo=C3=AFc Lefort Remove useless check in pmp_is_locked, the function will return 0 in either case. Signed-off-by: Lo=C3=AFc Lefort Reviewed-by: Daniel Henrique Barboza Reviewed-by: Alistair Francis Reviewed-by: LIU Zhiwei Message-ID: <20250313193011.720075-6-loic@rivosinc.com> Signed-off-by: Alistair Francis --- target/riscv/pmp.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/target/riscv/pmp.c b/target/riscv/pmp.c index 4070e21ea3..5af295e410 100644 --- a/target/riscv/pmp.c +++ b/target/riscv/pmp.c @@ -59,11 +59,6 @@ static inline int pmp_is_locked(CPURISCVState *env, uint= 32_t pmp_index) return 1; } =20 - /* Top PMP has no 'next' to check */ - if ((pmp_index + 1u) >=3D MAX_RISCV_PMPS) { - return 0; - } - return 0; } =20 --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747628982; cv=none; d=zohomail.com; s=zohoarc; b=mIuVR5Gp83uuTP6ERgoBoQu2HH4Kff/sLDTsuEQJAgN67zQPUYbPW7coPe4CTttv/h0ktT+ZCujK2P/XBLR3mjLU0D47fH1MnEH51uk1Rlmb/4cwx54KohI4lTv9HGB4pAjC7Xqpd/nTLgJ8wLfuG4Flh55v4ZNuDav6LQnny60= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747628982; h=Content-Transfer-Encoding:Cc:Cc: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; bh=rggzpdMUrHNwNxBv+iEOiObpk29ti4W1c5FCtuSivXw=; b=aBzW787KQF1TBCIZ98THn+mpF25RtQEmVa3regGr2t70JjzePNh3FCUlwbPRAr1WTHZoomujlEA+LyhgkWAibXKtDs+QVlyg0wWRLgw74pkHbJJiwX2hih5iWCPKFWe285GLXizwfe0yP+1CTw2UYgjSJvK1AkrDt2atPltWEZo= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747628982640493.4340163981461; Sun, 18 May 2025 21:29:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGs3P-0000dX-CF; Mon, 19 May 2025 00:24:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGrmq-0004l3-9O for qemu-devel@nongnu.org; Mon, 19 May 2025 00:07:39 -0400 Received: from mail-pl1-x636.google.com ([2607:f8b0:4864:20::636]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGrmn-00048S-Mw for qemu-devel@nongnu.org; Mon, 19 May 2025 00:07:35 -0400 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-231d4679580so21975995ad.1 for ; Sun, 18 May 2025 21:07:32 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.07.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:07:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627651; x=1748232451; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=rggzpdMUrHNwNxBv+iEOiObpk29ti4W1c5FCtuSivXw=; b=MoQu4OA8XYZhMkNC5OPXaqiBEq8IUkv9FRXCUh0Aj1CWdWcLh/GYVvpeptOKcCEn6J KFccCXdB2f2woCxHvPenGYydgi8LxRQ32BcmRqIgIJl/enD23P1eOknLkqXmptiIQOk7 FhaH0ga3E1weFTimA5Dc+wtsuFoWnuux1L74ygyudb3gOmig10x6tJtbe+Jr0UysUeH7 EoR9hNDF8l+Nicf3FkjniWG/ezvdEcOyWWyo9HXMAjBQ5BMgO+vd+83BohoenmzyfhDl QOurYQpt/Dd1y0X0tkbblacVMQjaT3QH8Mzs6pUQxcP3XCywzue7CzSbf547xgEjknJU Hj0Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627651; x=1748232451; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=rggzpdMUrHNwNxBv+iEOiObpk29ti4W1c5FCtuSivXw=; b=EC1/Yhym3cCFpx9mr0lZ3/oMUWAOptMoMap1FESbqbAtmiNwePvSVxN7Kio7j5GyK7 TrfiNMsNuNDi8AZyzQ5EsBRMAeNdxjmCqsqnEsUk9fo+1m9iwpe0/FriBCUX9FiRoJ5V 2usqAIW6Zqr4kmG6LKg/HaAU8hh6MULqXdtM7vtN52v9BTW/TJzaH7xXTSd9jic3bc7o zn/V7SYKmvyCXjIqAd1Vw5nNnqKE9r9IZGC0OotHYUMK10TPoabz7W1Hf5u5JifTpQHL YkdCJa0oVSdiByU0TkCYLjR8BAknzUFK32DZXNFV919CdP7vgoX4BBPSlqCSACwNZEOy fJlQ== X-Gm-Message-State: AOJu0YzUgq1/Zo0lyc5M6JvAZF0VoQhy/tLPmfC8TDZQZSLt2cPdxqWx dAwaNUf3cJ3pzubJtxqtT19K8qCTSVSCME/fr+7mS579pQXBbibLqhNQ4eYb6A== X-Gm-Gg: ASbGncvCmS0UVNOSwvLIQTpEQGYEIwZ7UmdhO+0hdKEbFl8RWcJM1xfy5HXYJROSJo3 r2zIkdFBRc27nB0W0S77YDvbVJjJ4Iw3b97I7TFSLZtIPWSCRBqaKGodX8H6u3XhYtrli0gSStn VPASpzyiNAqCTK57QEi0kmTTRYKV6DfiEEBY0SOw/WQ11PxtR70+QpSvEveVaB9y0GphDXUtJhP Hr1hQXglKrqQrTMZVA3H6cgWa6DNawOBIvN4zTkNhXWiaNsfBiIB2qZZc5ox+nnsYnPqGd30mg5 3A9d+kH76ZMEEv9x2JxpucCzOSCvyXHlvSfgaEHuaNVRlegqV1yyMxKRUUDUmoe6QxLvHs8k9sL rf9507X4dCmEA2qH0GvTLw37UmW0Qp9F8MWsJLxwdbcz8pFuoQkhjyRRWCzMhnxrMJjA= X-Google-Smtp-Source: AGHT+IFBszUxiitPJpEk7oQbx1kE+eo3ikh0RNQyTRDmi0K9Xoedvv9CyvmhGOuHCDkhdAdlLQWRrw== X-Received: by 2002:a17:903:2f4c:b0:231:bbbe:3c85 with SMTP id d9443c01a7336-231d45a9b69mr178095115ad.38.1747627651102; Sun, 18 May 2025 21:07:31 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Paolo Savini , Daniel Henrique Barboza , Alistair Francis Subject: [PULL 08/56] Generate strided vector loads/stores with tcg nodes. Date: Mon, 19 May 2025 14:05:05 +1000 Message-ID: <20250519040555.3797167-9-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::636; envelope-from=alistair23@gmail.com; helo=mail-pl1-x636.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747628983207116600 Content-Type: text/plain; charset="utf-8" From: Paolo Savini This commit improves the performance of QEMU when emulating strided vector loads and stores by substituting the call for the helper function with the generation of equivalent TCG operations. Signed-off-by: Paolo Savini Reviewed-by: Daniel Henrique Barboza Message-ID: <20250312155547.289642-2-paolo.savini@embecosm.com> Signed-off-by: Alistair Francis --- target/riscv/insn_trans/trans_rvv.c.inc | 323 ++++++++++++++++++++---- 1 file changed, 273 insertions(+), 50 deletions(-) diff --git a/target/riscv/insn_trans/trans_rvv.c.inc b/target/riscv/insn_tr= ans/trans_rvv.c.inc index b9883a5d32..7079f758ad 100644 --- a/target/riscv/insn_trans/trans_rvv.c.inc +++ b/target/riscv/insn_trans/trans_rvv.c.inc @@ -802,32 +802,286 @@ GEN_VEXT_TRANS(vlm_v, MO_8, vlm_v, ld_us_mask_op, ld= _us_mask_check) GEN_VEXT_TRANS(vsm_v, MO_8, vsm_v, st_us_mask_op, st_us_mask_check) =20 /* - *** stride load and store + * MAXSZ returns the maximum vector size can be operated in bytes, + * which is used in GVEC IR when vl_eq_vlmax flag is set to true + * to accelerate vector operation. + */ +static inline uint32_t MAXSZ(DisasContext *s) +{ + int max_sz =3D s->cfg_ptr->vlenb << 3; + return max_sz >> (3 - s->lmul); +} + +static inline uint32_t get_log2(uint32_t a) +{ + uint32_t i =3D 0; + for (; a > 0;) { + a >>=3D 1; + i++; + } + return i; +} + +typedef void gen_tl_ldst(TCGv, TCGv_ptr, tcg_target_long); + +/* + * Simulate the strided load/store main loop: + * + * for (i =3D env->vstart; i < env->vl; env->vstart =3D ++i) { + * k =3D 0; + * while (k < nf) { + * if (!vm && !vext_elem_mask(v0, i)) { + * vext_set_elems_1s(vd, vma, (i + k * max_elems) * esz, + * (i + k * max_elems + 1) * esz); + * k++; + * continue; + * } + * target_ulong addr =3D base + stride * i + (k << log2_esz); + * ldst(env, adjust_addr(env, addr), i + k * max_elems, vd, ra); + * k++; + * } + * } + */ +static void gen_ldst_stride_main_loop(DisasContext *s, TCGv dest, uint32_t= rs1, + uint32_t rs2, uint32_t vm, uint32_t = nf, + gen_tl_ldst *ld_fn, gen_tl_ldst *st_= fn, + bool is_load) +{ + TCGv addr =3D tcg_temp_new(); + TCGv base =3D get_gpr(s, rs1, EXT_NONE); + TCGv stride =3D get_gpr(s, rs2, EXT_NONE); + + TCGv i =3D tcg_temp_new(); + TCGv i_esz =3D tcg_temp_new(); + TCGv k =3D tcg_temp_new(); + TCGv k_esz =3D tcg_temp_new(); + TCGv k_max =3D tcg_temp_new(); + TCGv mask =3D tcg_temp_new(); + TCGv mask_offs =3D tcg_temp_new(); + TCGv mask_offs_64 =3D tcg_temp_new(); + TCGv mask_elem =3D tcg_temp_new(); + TCGv mask_offs_rem =3D tcg_temp_new(); + TCGv vreg =3D tcg_temp_new(); + TCGv dest_offs =3D tcg_temp_new(); + TCGv stride_offs =3D tcg_temp_new(); + + uint32_t max_elems =3D MAXSZ(s) >> s->sew; + + TCGLabel *start =3D gen_new_label(); + TCGLabel *end =3D gen_new_label(); + TCGLabel *start_k =3D gen_new_label(); + TCGLabel *inc_k =3D gen_new_label(); + TCGLabel *end_k =3D gen_new_label(); + + MemOp atomicity =3D MO_ATOM_NONE; + if (s->sew =3D=3D 0) { + atomicity =3D MO_ATOM_NONE; + } else { + atomicity =3D MO_ATOM_IFALIGN_PAIR; + } + + mark_vs_dirty(s); + + tcg_gen_addi_tl(mask, (TCGv)tcg_env, vreg_ofs(s, 0)); + + /* Start of outer loop. */ + tcg_gen_mov_tl(i, cpu_vstart); + gen_set_label(start); + tcg_gen_brcond_tl(TCG_COND_GE, i, cpu_vl, end); + tcg_gen_shli_tl(i_esz, i, s->sew); + /* Start of inner loop. */ + tcg_gen_movi_tl(k, 0); + gen_set_label(start_k); + tcg_gen_brcond_tl(TCG_COND_GE, k, tcg_constant_tl(nf), end_k); + /* + * If we are in mask agnostic regime and the operation is not unmasked= we + * set the inactive elements to 1. + */ + if (!vm && s->vma) { + TCGLabel *active_element =3D gen_new_label(); + /* (i + k * max_elems) * esz */ + tcg_gen_shli_tl(mask_offs, k, get_log2(max_elems << s->sew)); + tcg_gen_add_tl(mask_offs, mask_offs, i_esz); + + /* + * Check whether the i bit of the mask is 0 or 1. + * + * static inline int vext_elem_mask(void *v0, int index) + * { + * int idx =3D index / 64; + * int pos =3D index % 64; + * return (((uint64_t *)v0)[idx] >> pos) & 1; + * } + */ + tcg_gen_shri_tl(mask_offs_64, mask_offs, 3); + tcg_gen_add_tl(mask_offs_64, mask_offs_64, mask); + tcg_gen_ld_i64((TCGv_i64)mask_elem, (TCGv_ptr)mask_offs_64, 0); + tcg_gen_rem_tl(mask_offs_rem, mask_offs, tcg_constant_tl(8)); + tcg_gen_shr_tl(mask_elem, mask_elem, mask_offs_rem); + tcg_gen_andi_tl(mask_elem, mask_elem, 1); + tcg_gen_brcond_tl(TCG_COND_NE, mask_elem, tcg_constant_tl(0), + active_element); + /* + * Set masked-off elements in the destination vector register to 1= s. + * Store instructions simply skip this bit as memory ops access me= mory + * only for active elements. + */ + if (is_load) { + tcg_gen_shli_tl(mask_offs, mask_offs, s->sew); + tcg_gen_add_tl(mask_offs, mask_offs, dest); + st_fn(tcg_constant_tl(-1), (TCGv_ptr)mask_offs, 0); + } + tcg_gen_br(inc_k); + gen_set_label(active_element); + } + /* + * The element is active, calculate the address with stride: + * target_ulong addr =3D base + stride * i + (k << log2_esz); + */ + tcg_gen_mul_tl(stride_offs, stride, i); + tcg_gen_shli_tl(k_esz, k, s->sew); + tcg_gen_add_tl(stride_offs, stride_offs, k_esz); + tcg_gen_add_tl(addr, base, stride_offs); + /* Calculate the offset in the dst/src vector register. */ + tcg_gen_shli_tl(k_max, k, get_log2(max_elems)); + tcg_gen_add_tl(dest_offs, i, k_max); + tcg_gen_shli_tl(dest_offs, dest_offs, s->sew); + tcg_gen_add_tl(dest_offs, dest_offs, dest); + if (is_load) { + tcg_gen_qemu_ld_tl(vreg, addr, s->mem_idx, MO_LE | s->sew | atomic= ity); + st_fn((TCGv)vreg, (TCGv_ptr)dest_offs, 0); + } else { + ld_fn((TCGv)vreg, (TCGv_ptr)dest_offs, 0); + tcg_gen_qemu_st_tl(vreg, addr, s->mem_idx, MO_LE | s->sew | atomic= ity); + } + /* + * We don't execute the load/store above if the element was inactive. + * We jump instead directly to incrementing k and continuing the loop. + */ + if (!vm && s->vma) { + gen_set_label(inc_k); + } + tcg_gen_addi_tl(k, k, 1); + tcg_gen_br(start_k); + /* End of the inner loop. */ + gen_set_label(end_k); + + tcg_gen_addi_tl(i, i, 1); + tcg_gen_mov_tl(cpu_vstart, i); + tcg_gen_br(start); + + /* End of the outer loop. */ + gen_set_label(end); + + return; +} + + +/* + * Set the tail bytes of the strided loads/stores to 1: + * + * for (k =3D 0; k < nf; ++k) { + * cnt =3D (k * max_elems + vl) * esz; + * tot =3D (k * max_elems + max_elems) * esz; + * for (i =3D cnt; i < tot; i +=3D esz) { + * store_1s(-1, vd[vl+i]); + * } + * } */ -typedef void gen_helper_ldst_stride(TCGv_ptr, TCGv_ptr, TCGv, - TCGv, TCGv_env, TCGv_i32); +static void gen_ldst_stride_tail_loop(DisasContext *s, TCGv dest, uint32_t= nf, + gen_tl_ldst *st_fn) +{ + TCGv i =3D tcg_temp_new(); + TCGv k =3D tcg_temp_new(); + TCGv tail_cnt =3D tcg_temp_new(); + TCGv tail_tot =3D tcg_temp_new(); + TCGv tail_addr =3D tcg_temp_new(); + + TCGLabel *start =3D gen_new_label(); + TCGLabel *end =3D gen_new_label(); + TCGLabel *start_i =3D gen_new_label(); + TCGLabel *end_i =3D gen_new_label(); + + uint32_t max_elems_b =3D MAXSZ(s); + uint32_t esz =3D 1 << s->sew; + + /* Start of the outer loop. */ + tcg_gen_movi_tl(k, 0); + tcg_gen_shli_tl(tail_cnt, cpu_vl, s->sew); + tcg_gen_movi_tl(tail_tot, max_elems_b); + tcg_gen_add_tl(tail_addr, dest, tail_cnt); + gen_set_label(start); + tcg_gen_brcond_tl(TCG_COND_GE, k, tcg_constant_tl(nf), end); + /* Start of the inner loop. */ + tcg_gen_mov_tl(i, tail_cnt); + gen_set_label(start_i); + tcg_gen_brcond_tl(TCG_COND_GE, i, tail_tot, end_i); + /* store_1s(-1, vd[vl+i]); */ + st_fn(tcg_constant_tl(-1), (TCGv_ptr)tail_addr, 0); + tcg_gen_addi_tl(tail_addr, tail_addr, esz); + tcg_gen_addi_tl(i, i, esz); + tcg_gen_br(start_i); + /* End of the inner loop. */ + gen_set_label(end_i); + /* Update the counts */ + tcg_gen_addi_tl(tail_cnt, tail_cnt, max_elems_b); + tcg_gen_addi_tl(tail_tot, tail_cnt, max_elems_b); + tcg_gen_addi_tl(k, k, 1); + tcg_gen_br(start); + /* End of the outer loop. */ + gen_set_label(end); + + return; +} =20 static bool ldst_stride_trans(uint32_t vd, uint32_t rs1, uint32_t rs2, - uint32_t data, gen_helper_ldst_stride *fn, - DisasContext *s) + uint32_t data, DisasContext *s, bool is_load) { - TCGv_ptr dest, mask; - TCGv base, stride; - TCGv_i32 desc; + if (!s->vstart_eq_zero) { + return false; + } =20 - dest =3D tcg_temp_new_ptr(); - mask =3D tcg_temp_new_ptr(); - base =3D get_gpr(s, rs1, EXT_NONE); - stride =3D get_gpr(s, rs2, EXT_NONE); - desc =3D tcg_constant_i32(simd_desc(s->cfg_ptr->vlenb, - s->cfg_ptr->vlenb, data)); + TCGv dest =3D tcg_temp_new(); =20 - tcg_gen_addi_ptr(dest, tcg_env, vreg_ofs(s, vd)); - tcg_gen_addi_ptr(mask, tcg_env, vreg_ofs(s, 0)); + uint32_t nf =3D FIELD_EX32(data, VDATA, NF); + uint32_t vm =3D FIELD_EX32(data, VDATA, VM); + + /* Destination register and mask register */ + tcg_gen_addi_tl(dest, (TCGv)tcg_env, vreg_ofs(s, vd)); + + /* + * Select the appropriate load/tore to retrieve data from the vector + * register given a specific sew. + */ + static gen_tl_ldst * const ld_fns[4] =3D { + tcg_gen_ld8u_tl, tcg_gen_ld16u_tl, + tcg_gen_ld32u_tl, tcg_gen_ld_tl + }; + + static gen_tl_ldst * const st_fns[4] =3D { + tcg_gen_st8_tl, tcg_gen_st16_tl, + tcg_gen_st32_tl, tcg_gen_st_tl + }; + + gen_tl_ldst *ld_fn =3D ld_fns[s->sew]; + gen_tl_ldst *st_fn =3D st_fns[s->sew]; + + if (ld_fn =3D=3D NULL || st_fn =3D=3D NULL) { + return false; + } =20 mark_vs_dirty(s); =20 - fn(dest, mask, base, stride, tcg_env, desc); + gen_ldst_stride_main_loop(s, dest, rs1, rs2, vm, nf, ld_fn, st_fn, is_= load); + + tcg_gen_movi_tl(cpu_vstart, 0); + + /* + * Set the tail bytes to 1 if tail agnostic: + */ + if (s->vta !=3D 0 && is_load) { + gen_ldst_stride_tail_loop(s, dest, nf, st_fn); + } =20 finalize_rvv_inst(s); return true; @@ -836,16 +1090,6 @@ static bool ldst_stride_trans(uint32_t vd, uint32_t r= s1, uint32_t rs2, static bool ld_stride_op(DisasContext *s, arg_rnfvm *a, uint8_t eew) { uint32_t data =3D 0; - gen_helper_ldst_stride *fn; - static gen_helper_ldst_stride * const fns[4] =3D { - gen_helper_vlse8_v, gen_helper_vlse16_v, - gen_helper_vlse32_v, gen_helper_vlse64_v - }; - - fn =3D fns[eew]; - if (fn =3D=3D NULL) { - return false; - } =20 uint8_t emul =3D vext_get_emul(s, eew); data =3D FIELD_DP32(data, VDATA, VM, a->vm); @@ -853,7 +1097,7 @@ static bool ld_stride_op(DisasContext *s, arg_rnfvm *a= , uint8_t eew) data =3D FIELD_DP32(data, VDATA, NF, a->nf); data =3D FIELD_DP32(data, VDATA, VTA, s->vta); data =3D FIELD_DP32(data, VDATA, VMA, s->vma); - return ldst_stride_trans(a->rd, a->rs1, a->rs2, data, fn, s); + return ldst_stride_trans(a->rd, a->rs1, a->rs2, data, s, true); } =20 static bool ld_stride_check(DisasContext *s, arg_rnfvm* a, uint8_t eew) @@ -871,23 +1115,13 @@ GEN_VEXT_TRANS(vlse64_v, MO_64, rnfvm, ld_stride_op,= ld_stride_check) static bool st_stride_op(DisasContext *s, arg_rnfvm *a, uint8_t eew) { uint32_t data =3D 0; - gen_helper_ldst_stride *fn; - static gen_helper_ldst_stride * const fns[4] =3D { - /* masked stride store */ - gen_helper_vsse8_v, gen_helper_vsse16_v, - gen_helper_vsse32_v, gen_helper_vsse64_v - }; =20 uint8_t emul =3D vext_get_emul(s, eew); data =3D FIELD_DP32(data, VDATA, VM, a->vm); data =3D FIELD_DP32(data, VDATA, LMUL, emul); data =3D FIELD_DP32(data, VDATA, NF, a->nf); - fn =3D fns[eew]; - if (fn =3D=3D NULL) { - return false; - } =20 - return ldst_stride_trans(a->rd, a->rs1, a->rs2, data, fn, s); + return ldst_stride_trans(a->rd, a->rs1, a->rs2, data, s, false); } =20 static bool st_stride_check(DisasContext *s, arg_rnfvm* a, uint8_t eew) @@ -1169,17 +1403,6 @@ GEN_LDST_WHOLE_TRANS(vs8r_v, 8) *** Vector Integer Arithmetic Instructions */ =20 -/* - * MAXSZ returns the maximum vector size can be operated in bytes, - * which is used in GVEC IR when vl_eq_vlmax flag is set to true - * to accelerate vector operation. - */ -static inline uint32_t MAXSZ(DisasContext *s) -{ - int max_sz =3D s->cfg_ptr->vlenb * 8; - return max_sz >> (3 - s->lmul); -} - static bool opivv_check(DisasContext *s, arg_rmrr *a) { return require_rvv(s) && --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747628781; cv=none; d=zohomail.com; s=zohoarc; b=esaKwFgkcbnnaq4COAsu0f6cv3RO32SvjwBAJ3CWIeHgmfwr1VHEaTFvgeDlBOIfTDbJFwk4yu5QJDVid0mGCAkjEzHkLM6/DxFQRuPw8F5Mz4fgUuwMlV/FeqvrFB2C+ezK1CEVw2+mgIYLzSzlGE/qI/YuqHkv7BOLXfiEIus= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747628781; h=Content-Transfer-Encoding:Cc:Cc: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; bh=AcTSIVF8fD22KtdcMyyIobQ8uv5lgIlmowtqHalYg9s=; b=QO6b/UnUm+P6as73PfpIBu1D2uPkYLNAw7Dx2Q1ZC++WfKTQ+iwBDM2Eftav/sG0Cpz0rjhu+lf1TMEVGgfg+bggPZZD30z5xRGfAtP7+oQzhYsXhikusu504frpY+K06TcfkWW1U8ycYdm2fC+4wZjARFn0HtK6fxTGDwHgPe0= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747628781956107.76115754930322; Sun, 18 May 2025 21:26:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGs3J-0000b6-Ob; Mon, 19 May 2025 00:24:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGrmr-0004l5-RO for qemu-devel@nongnu.org; Mon, 19 May 2025 00:07:40 -0400 Received: from mail-pg1-x530.google.com ([2607:f8b0:4864:20::530]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGrmp-00048s-E1 for qemu-devel@nongnu.org; Mon, 19 May 2025 00:07:36 -0400 Received: by mail-pg1-x530.google.com with SMTP id 41be03b00d2f7-b061a06f127so2580937a12.2 for ; Sun, 18 May 2025 21:07:35 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.07.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:07:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627654; x=1748232454; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=AcTSIVF8fD22KtdcMyyIobQ8uv5lgIlmowtqHalYg9s=; b=C+eD6nqhwZFLgk8ZjMaDMkSehvmImT+/S4XZzyWrXP44u9CJoAbRSA7CaHJqS8zRD0 quO2FFpv1Ikn7ci7n2Q27bi1ELnm+b93dBW/sCbNuTvTYIY3PJvM6keXHK4xie9KoLZK +1/+f6FH4IQpczk0n39svRS13P61foKayWQSgouo0/ErjVjNkl7owmKSrjS48OCOW16T Ojt3hWhd5niw00HzdxmQVW1q5VBV0vYHjJ4BZYL891TwOjC0FwlsoJMkXGeHYAPcTo+H RrvBR8hgqc0Cm7A7iwn21abupYuJ8fZidSiWqj5Soy7KzDs6rjrjEQPEQ4wTQPdt7pKo Ltkg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627654; x=1748232454; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=AcTSIVF8fD22KtdcMyyIobQ8uv5lgIlmowtqHalYg9s=; b=ISU7pUYP7c1+iip1YNx/iduUHrb+gtsEe7/nE08dpFUGsWr2NVlpicNzb3xB8WYKSe tn3InLmrYZ6TDrxZU/rW/7GvIX8iZYhi6Ci6o0N2dy93CfwUleXvJJveKC9rp1RKLBpK 9SMbrEoR7/KvQJALoHO190Thvn9o8TEg5UB4MZ48OXSKA3vbM1OhuAfM6iehODOLHFD5 Qeyx6B8iK+Rad95Z5fiSySP+hCulgMsTxpcxWbE3s2e7fThUsv3JmMfRrinHaVcArAaJ poU4UkQcrN3GuXrWjDrGhN9R4nUNSnJooG/QuMnqgvwllESsfGBqdgYKI1a8HRp+Zva7 EhFA== X-Gm-Message-State: AOJu0YzuLW3zEnv+WL2JtvmVhaPXzM/sNwx6Pa1p81V8RWHiCRxqMLKz xrFdvK5BgcQnVWIOb1gThQXhsKXVf6sM/dfvdQ49gITMKutplNxcCRA1Cx3lzg== X-Gm-Gg: ASbGncsXRMSnZb/OTg4w9z+Q6liKHEmI3OWfnuKL4ip9Nkf5/YzlyOw3jWQ8xaY8miz sJ7OsKUrbj8tch8tSKiZ3qfGQ4UevvyhXx+f2e15W2Oq5zGJao/831Xt6bWCx2C0UylrtWRMb0E AjgxFt3UAnuAoi8UBpP7eqBIVX9oJyAZQoP/IHEAHYmztyiMsSrFHk8DFzJ4WacgzBThafMwQeN 0xWB3LiSeNzhybF0V4FVtxmA3lavSiqU8o/od5808AS/JV5n04c4CpLYdbbujzLKaELBhq4tik7 cMt+ZWGEgmGW0BotBXnvErDTzDyupHhe7ddsdBqWBM2B7zRx1oyT8m9zWnOGTC/czRVVDRTavUu vUiHesOGHsTh1z18SwT8tdXkH//wMUp+Axg4pGJpdivwE1JTz72YJwpW3 X-Google-Smtp-Source: AGHT+IHH3JArvwsDD+ieQaiWntf1kCuSLrGexKAK94DWbXN7N6KJXRgcVqUhjA0/xnvXaH6Ve39R+Q== X-Received: by 2002:a17:903:17cc:b0:22e:5389:67fb with SMTP id d9443c01a7336-231d43d9bedmr151572665ad.7.1747627653788; Sun, 18 May 2025 21:07:33 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Sebastian Huber , Alistair Francis Subject: [PULL 09/56] hw/misc: Add MPFS system reset support Date: Mon, 19 May 2025 14:05:06 +1000 Message-ID: <20250519040555.3797167-10-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::530; envelope-from=alistair23@gmail.com; helo=mail-pg1-x530.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747628783561116600 Content-Type: text/plain; charset="utf-8" From: Sebastian Huber Signed-off-by: Sebastian Huber Acked-by: Alistair Francis Message-ID: <20250319061342.26435-2-sebastian.huber@embedded-brains.de> Signed-off-by: Alistair Francis --- hw/misc/mchp_pfsoc_sysreg.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/hw/misc/mchp_pfsoc_sysreg.c b/hw/misc/mchp_pfsoc_sysreg.c index bfa78d3d2f..f47c835f80 100644 --- a/hw/misc/mchp_pfsoc_sysreg.c +++ b/hw/misc/mchp_pfsoc_sysreg.c @@ -27,7 +27,9 @@ #include "hw/irq.h" #include "hw/sysbus.h" #include "hw/misc/mchp_pfsoc_sysreg.h" +#include "system/runstate.h" =20 +#define MSS_RESET_CR 0x18 #define ENVM_CR 0xb8 #define MESSAGE_INT 0x118c =20 @@ -56,6 +58,11 @@ static void mchp_pfsoc_sysreg_write(void *opaque, hwaddr= offset, { MchpPfSoCSysregState *s =3D opaque; switch (offset) { + case MSS_RESET_CR: + if (value =3D=3D 0xdead) { + qemu_system_reset_request(SHUTDOWN_CAUSE_GUEST_RESET); + } + break; case MESSAGE_INT: qemu_irq_lower(s->irq); break; --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747627729; cv=none; d=zohomail.com; s=zohoarc; b=F/mwuShDoNFF+SK9JPdBUDpsvZwypFrefrVcfPLVzLFpFzN6aKVJ34Yaw0lvrO8x82RF8u1DRDF6h7caTP00IM4738fApP28blMAfC99ATls0DsJ+uqNgFec2XnaV/T+L8ZS2NUeCcFdedUmt3ZT3Ja7J1YbnjEJdQ9qH9ZJJ40= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747627729; h=Content-Transfer-Encoding:Cc:Cc: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; bh=zsKoSChLOgf9IXWkPW+gBtADC5q1GRWfNKybDJ3aAWQ=; b=RCO7fPXNqupSSsuURZ9UdKoLv3YqpRlpV6DR6z51ZF9C6XwxOgYGEdF5F4m/uQUfg83Kowtqw0+CylDiXJfN7+3sKl/cY05U+IV6CVGF+JOXWAlwHTbGb1unTZY/CfftcyLlJnCntcyKPrxQ7fHnMPThq+bF0wIWymHbXohrHaQ= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747627729309934.8709083274782; Sun, 18 May 2025 21:08:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGrnE-0004xK-R7; Mon, 19 May 2025 00:08:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGrmv-0004lt-As for qemu-devel@nongnu.org; Mon, 19 May 2025 00:07:41 -0400 Received: from mail-pg1-x531.google.com ([2607:f8b0:4864:20::531]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGrmt-00049Q-J0 for qemu-devel@nongnu.org; Mon, 19 May 2025 00:07:41 -0400 Received: by mail-pg1-x531.google.com with SMTP id 41be03b00d2f7-7fd35b301bdso4433542a12.2 for ; Sun, 18 May 2025 21:07:37 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.07.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:07:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627656; x=1748232456; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=zsKoSChLOgf9IXWkPW+gBtADC5q1GRWfNKybDJ3aAWQ=; b=D5r7RZsMp0SMf3mb2lyMr8krJs/ABzkAVB+GSIzpJpXREq+pcfPqk3LSW+jVBqO3Rb sgeqcUzumn4PtIIyh5hp5RAIHsKM2hYCYbJsCIcq7AwiRZW5zwQ51fwqwxSPa9D0kb28 ZCYZAdhfbefgrsoXpyyG2iQhYa/d65hj5txitWQ1PRbOAyzvsuMKAQTuqWIYEFtAbnQM k/8HxFxhv24UYcrZvuel5rk6Qn9CT88yt09GKtJ2CwYsQxExNGK8aFhj6j1SrhP38VDv jHDOsPWCl+5FgE7yPFNcejinXwQ9WlYgIF78ksYiPkd7TBS6ZSNt6ODZHeUF/dhHvpa5 YY/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627656; x=1748232456; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=zsKoSChLOgf9IXWkPW+gBtADC5q1GRWfNKybDJ3aAWQ=; b=Z7JyvCfe9leNBx5tV0GjTcgwggQq1+gQcRZLbCWzu/6t+woogxgGtfIUA5z/h3PSgH zkErb6vnIK8O5lbtBeyL2OBRkrXByy8GW3COi/UjSFxLPwAmZRFkcnoTfUwHVKckO273 1eQQ4odAUg8h+h2P8SHPUo8kzmWSCOWMwLE/BYqUsjNqEHPU43Z4ao4WU0eOPFRUYnM5 d6t3Pa3uUGTLO/9uIS0+6NDn6k9ow/4QXcLcGdmMu+/iirQBEJtVNnpcWTuAYEl91bgF okUMV6fv/5EPeOq4rye/ZgJ9Wr1MEVtrDNwugIeqDi8P+6MBqM5tq9LiCq9W54UF3VAm PMfw== X-Gm-Message-State: AOJu0YxINooMFl8dEAxk9rm4r/LSXNvMbxilgN1ZSfNOABQn4T+8T70P oK6c0sBgDal8E0ftlsYivgow3D389gC6ZvzmIjtHOHhnJhcm5RA8j2TT8lRfTQ== X-Gm-Gg: ASbGncuUW9iNepnkquTqSNRZaoRyVPJqR0hYeVe4kWkcA7aFH4OzunX2cR5lW4Nb+5X h4mElhRseTsSodOgsI6cj/P2B6sDWN0+Trw8nfeBRdTs8hWW2R+No562/Dy55IsQ9ijCaVcci43 XFCGYL1Ip3KZZVsFGgRpRSf6AjfbL1c9DFfYeWlGPa1p5hoRQSqmNlt7K5IJRtRVRBKtX1NeiA0 kYDvhwkr74mxUj3ZMHmljts2mEO2FNWj9f7jmb6EqKJvzfHsH6anDkPn40vTw74lTbIjPLnhW/0 pJMWCpd4KbeB4dFXrWiKRAUWLZ6cmsDAKS+6jDPSeH8IH3gCyPVFYwnsUHzAC8Jftqdnckn3Mx0 1FiJTTdGEiGnRrZ34yvLra7MfdVqeZqfVT8Ie6n0syZbaqUUG30kZry81 X-Google-Smtp-Source: AGHT+IEb2u61/bsK4ij3F3u0eIjtE+N/nrQ1XXcYgyC1b7vol+gRE7yExMvg3Tbit2bWwK8y50Gb8w== X-Received: by 2002:a17:902:f78c:b0:215:7421:262 with SMTP id d9443c01a7336-231de35f13fmr188046155ad.12.1747627656601; Sun, 18 May 2025 21:07:36 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Sebastian Huber , Alistair Francis Subject: [PULL 10/56] hw/riscv: More flexible FDT placement for MPFS Date: Mon, 19 May 2025 14:05:07 +1000 Message-ID: <20250519040555.3797167-11-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::531; envelope-from=alistair23@gmail.com; helo=mail-pg1-x531.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747627729963116600 Content-Type: text/plain; charset="utf-8" From: Sebastian Huber If the kernel entry is in the high DRAM area, place the FDT into this area. Signed-off-by: Sebastian Huber Reviewed-by: Alistair Francis Message-ID: <20250319061342.26435-3-sebastian.huber@embedded-brains.de> Signed-off-by: Alistair Francis --- hw/riscv/microchip_pfsoc.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/hw/riscv/microchip_pfsoc.c b/hw/riscv/microchip_pfsoc.c index e39ee657cd..6bb44e3ac5 100644 --- a/hw/riscv/microchip_pfsoc.c +++ b/hw/riscv/microchip_pfsoc.c @@ -626,8 +626,15 @@ static void microchip_icicle_kit_machine_init(MachineS= tate *machine) kernel_entry =3D boot_info.image_low_addr; =20 /* Compute the fdt load address in dram */ - fdt_load_addr =3D riscv_compute_fdt_addr(memmap[MICROCHIP_PFSOC_DR= AM_LO].base, - memmap[MICROCHIP_PFSOC_DRAM= _LO].size, + hwaddr kernel_ram_base =3D memmap[MICROCHIP_PFSOC_DRAM_LO].base; + hwaddr kernel_ram_size =3D memmap[MICROCHIP_PFSOC_DRAM_LO].size; + + if (kernel_entry - kernel_ram_base >=3D kernel_ram_size) { + kernel_ram_base =3D memmap[MICROCHIP_PFSOC_DRAM_HI].base; + kernel_ram_size =3D mem_high_size; + } + + fdt_load_addr =3D riscv_compute_fdt_addr(kernel_ram_base, kernel_r= am_size, machine, &boot_info); riscv_load_fdt(fdt_load_addr, machine->fdt); =20 --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747628662; cv=none; d=zohomail.com; s=zohoarc; b=dP1kNoVuF6LGdHuiCVUvCHwIdzJTcEESEVscGVPJf0Ju7q5tJiYHDWxyujeog+nDNpT3KX7GzCU8nhwLqla5wOONpgrLb4b21bi7m4ab24H6lz3z0wff+JGtQ9WZtpdlHvNoSpg9hyYy2KaMhLK70s1Sv5i6iEKA0apxbhLPbhE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747628662; h=Content-Transfer-Encoding:Cc:Cc: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; bh=NZ33rutGsbxPMjM9pnehuUNs+p/NJdxcEzcKEdKerGU=; b=Si+tVOxJpwbB1BN5lVgimzTyDU72CHgMXPaVYu/Tq+Rd9YiJcvvFtAL4x2nKDHUQOqYG2cHAQ6RnW8+6kjRw13Dl3oveNCDB52t+VUa4akYvde2IXgj2jLeC7oZSTLWjPCgxPULHlarAeMoKxEZTtbdYpw3kHD3raXb/RwcELuA= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747628662080692.226932870544; Sun, 18 May 2025 21:24:22 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGs2p-0000Pc-Uj; Mon, 19 May 2025 00:24:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGrmw-0004m3-U8 for qemu-devel@nongnu.org; Mon, 19 May 2025 00:07:43 -0400 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGrmv-00049p-12 for qemu-devel@nongnu.org; Mon, 19 May 2025 00:07:42 -0400 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-23035b3edf1so31814145ad.3 for ; Sun, 18 May 2025 21:07:40 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.07.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:07:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627659; x=1748232459; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=NZ33rutGsbxPMjM9pnehuUNs+p/NJdxcEzcKEdKerGU=; b=lX1gdTI27pjl6yTji7fchVXXieLoWRjt8MSBIDaaVBjtnP6vgwZKLw91vCe3/culbN NNNGsFu+afOHvEP/oVkD+uJsjmmw/M+NCZHEYAQMUhDvBK5LBbtWJ7PdKIXPn+QpTy5G UU6o6sknaH55m0XAX99TA+d17IpK0rfqq9SRh4eOu4hXNqKYpxXejL0z1bLzjmpTdLKo BSrMCLl79BWuCyzumjHn1795WaMqf0yiq1lo1DpAnY6MEdO60+OFJrdLeEddWSzlI9BO jkWfLVQslH3BDGfA2af59am1ZrkNLQii/5yLakOk6OwkutbY9sXFBqRyMstlCvsG5+9g slcA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627659; x=1748232459; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=NZ33rutGsbxPMjM9pnehuUNs+p/NJdxcEzcKEdKerGU=; b=jtRVEQOl2fm+TArru3j7toqGn4ww9DE3KXAgIXYccSFJvy1FGLwWaHOstiNu+qURyF XKsxsk9htzNw83A42kRjRFNOjJmtCxog0txsv0oi2GHzaVecYAAfwYBcwtfx2J7XQIbG g8CTe+RR6Rtjyu3HFOFLmK/Qd8uoHaMCVER37aDkq4G1suGVf7GNw5DAiD1RQ02qIdsi mw184IjGl0PjcMcG3nZqZmBQ1aovsd5HDsEgE4xke6vkMVXJX/Kjw1Tzp/plgRoCjNYw mLNj9zRkiBwRsZfn+S71ZdSJRHVOMtk+Ll6brQ2rTcv1wZsxO2L6HmqUgw5t8LFKS2ya g6ig== X-Gm-Message-State: AOJu0YxVlMBSS7NCZYsUdQtFsfDBQqb7sSyPqQcHL/VdyB6ZW4XIREjK RipAMEYpkp87XKAlxjugERF4JIu03tq2fQr5zK4b3VgQkwYQe5Tieglq2hJgBQ== X-Gm-Gg: ASbGncvEpslHu+SwMKPcwrqKMhV1E1vy9k7rQf9oR8qmsuKu3nO9xF4nctvkRDG5K78 XgYhMVDzJLrdMZd1DfguIAqa7KXbFyNE+jXzAB2AUt4E/WVKr0z+PIni9E29ogglZCF9G1BwK48 rfvp3aGkypH6RqMqXqukQ324EbJhGSwS4DW0a1B7394IzdSZ0PYmT+opMUtQrR/CEQZ62LoXFkW 7b/+pkHX9wKhb9ImA6Ltxl3bhFxojJz/hn0X+yM+qniURH9jOAvgBg++33OkLxNtCdX/kgpAFWl TxYhnp5yxnbcfxEvCiapO5/q/PVhUXNxT9fIbhZS/uUw7Xxm+Qj5l75AwmAvBzSDojv/S19Mqmy 9p0wszY/g4Icv+HyGeId4njaL+zyGncAboNbhs0SgLwBl8N+NtOx6WZ5e X-Google-Smtp-Source: AGHT+IF+kxuk5YO/dYQUxeC7HZHz3aI6q3kU47TpY+TRTIBmRwGLMjUu4NfPGd6oRYCDnvA1b6cdrw== X-Received: by 2002:a17:902:c951:b0:22f:d47e:c6dd with SMTP id d9443c01a7336-231d439e08cmr145225575ad.13.1747627659305; Sun, 18 May 2025 21:07:39 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Sebastian Huber , Alistair Francis Subject: [PULL 11/56] hw/riscv: Make FDT optional for MPFS Date: Mon, 19 May 2025 14:05:08 +1000 Message-ID: <20250519040555.3797167-12-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::634; envelope-from=alistair23@gmail.com; helo=mail-pl1-x634.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747628663712116600 Content-Type: text/plain; charset="utf-8" From: Sebastian Huber Real-time kernels such as RTEMS or Zephyr may use a static device tree built into the kernel image. Do not require to use the -dtb option if -kernel is used for the microchip-icicle-kit machine. Issue a warning if no device tree is provided by the user since the machine does not generate one. Signed-off-by: Sebastian Huber Reviewed-by: Alistair Francis Message-ID: <20250319061342.26435-4-sebastian.huber@embedded-brains.de> Signed-off-by: Alistair Francis --- hw/riscv/microchip_pfsoc.c | 56 +++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/hw/riscv/microchip_pfsoc.c b/hw/riscv/microchip_pfsoc.c index 6bb44e3ac5..b8a8d5251d 100644 --- a/hw/riscv/microchip_pfsoc.c +++ b/hw/riscv/microchip_pfsoc.c @@ -516,7 +516,6 @@ static void microchip_icicle_kit_machine_init(MachineSt= ate *machine) uint64_t mem_low_size, mem_high_size; hwaddr firmware_load_addr; const char *firmware_name; - bool kernel_as_payload =3D false; target_ulong firmware_end_addr, kernel_start_addr; uint64_t kernel_entry; uint64_t fdt_load_addr; @@ -589,25 +588,12 @@ static void microchip_icicle_kit_machine_init(Machine= State *machine) * * This ensures backwards compatibility with how we used to expose -bi= os * to users but allows them to run through direct kernel booting as we= ll. - * - * When -kernel is used for direct boot, -dtb must be present to provi= de - * a valid device tree for the board, as we don't generate device tree. */ =20 - if (machine->kernel_filename && machine->dtb) { - int fdt_size; - machine->fdt =3D load_device_tree(machine->dtb, &fdt_size); - if (!machine->fdt) { - error_report("load_device_tree() failed"); - exit(1); - } - + if (machine->kernel_filename) { firmware_name =3D RISCV64_BIOS_BIN; firmware_load_addr =3D memmap[MICROCHIP_PFSOC_DRAM_LO].base; - kernel_as_payload =3D true; - } - - if (!kernel_as_payload) { + } else { firmware_name =3D BIOS_FILENAME; firmware_load_addr =3D RESET_VECTOR; } @@ -617,7 +603,7 @@ static void microchip_icicle_kit_machine_init(MachineSt= ate *machine) &firmware_load_addr, = NULL); =20 riscv_boot_info_init(&boot_info, &s->soc.u_cpus); - if (kernel_as_payload) { + if (machine->kernel_filename) { kernel_start_addr =3D riscv_calc_kernel_start_addr(&boot_info, firmware_end_addr= ); =20 @@ -625,19 +611,33 @@ static void microchip_icicle_kit_machine_init(Machine= State *machine) true, NULL); kernel_entry =3D boot_info.image_low_addr; =20 - /* Compute the fdt load address in dram */ - hwaddr kernel_ram_base =3D memmap[MICROCHIP_PFSOC_DRAM_LO].base; - hwaddr kernel_ram_size =3D memmap[MICROCHIP_PFSOC_DRAM_LO].size; - - if (kernel_entry - kernel_ram_base >=3D kernel_ram_size) { - kernel_ram_base =3D memmap[MICROCHIP_PFSOC_DRAM_HI].base; - kernel_ram_size =3D mem_high_size; + if (machine->dtb) { + int fdt_size; + machine->fdt =3D load_device_tree(machine->dtb, &fdt_size); + if (!machine->fdt) { + error_report("load_device_tree() failed"); + exit(1); + } + + /* Compute the FDT load address in DRAM */ + hwaddr kernel_ram_base =3D memmap[MICROCHIP_PFSOC_DRAM_LO].bas= e; + hwaddr kernel_ram_size =3D memmap[MICROCHIP_PFSOC_DRAM_LO].siz= e; + + if (kernel_entry - kernel_ram_base >=3D kernel_ram_size) { + kernel_ram_base =3D memmap[MICROCHIP_PFSOC_DRAM_HI].base; + kernel_ram_size =3D mem_high_size; + } + + fdt_load_addr =3D riscv_compute_fdt_addr(kernel_ram_base, kern= el_ram_size, + machine, &boot_info); + riscv_load_fdt(fdt_load_addr, machine->fdt); + } else { + warn_report_once("The QEMU microchip-icicle-kit machine does n= ot " + "generate a device tree, so no device tree is= " + "being provided to the guest."); + fdt_load_addr =3D 0; } =20 - fdt_load_addr =3D riscv_compute_fdt_addr(kernel_ram_base, kernel_r= am_size, - machine, &boot_info); - riscv_load_fdt(fdt_load_addr, machine->fdt); - /* Load the reset vector */ riscv_setup_rom_reset_vec(machine, &s->soc.u_cpus, firmware_load_a= ddr, memmap[MICROCHIP_PFSOC_ENVM_DATA].base, --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747627696; cv=none; d=zohomail.com; s=zohoarc; b=jvfci2aohahYmglzqbZ0xKLx5ZN39rh9H7CLW7oP+22/xMlPDS9eiHzzFVcQOvUgypivluTitypuRtAmWm8jzfz+5ZYAJg5r544GqOFWKlP3vmV8rCFIXMw5Gxwp3HUKIy6SVnNHlfrQgbjPAO7MBc7ICSJ60foK0icpirqHbac= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747627696; h=Content-Transfer-Encoding:Cc:Cc: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; bh=UDrVd2WWk3SFniHGi6MKc7UY2YxFUpUMKaQa30I15no=; b=TYim/4uKYygd4EsJLf8DVwB+nj22FgwMM07SQtynW5xOTpx3wMWYjmxgF5fN4moCj+2ooENcWz923+5ul92eC14hHdBYylvsFROBjg+Al4zU5S2D7HW912pOfWK4wWAbulKR0I6LwSR16mt1W/4oIL7QWxMf6xa1JU7TVSF1bHU= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17476276964904.0591290534366635; Sun, 18 May 2025 21:08:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGrn7-0004pU-1u; Mon, 19 May 2025 00:07:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGrmz-0004oB-PA for qemu-devel@nongnu.org; Mon, 19 May 2025 00:07:45 -0400 Received: from mail-pl1-x62c.google.com ([2607:f8b0:4864:20::62c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGrmx-0004AC-UJ for qemu-devel@nongnu.org; Mon, 19 May 2025 00:07:45 -0400 Received: by mail-pl1-x62c.google.com with SMTP id d9443c01a7336-231ecd4f2a5so18038845ad.0 for ; Sun, 18 May 2025 21:07:43 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.07.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:07:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627662; x=1748232462; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=UDrVd2WWk3SFniHGi6MKc7UY2YxFUpUMKaQa30I15no=; b=OzIXxDa8ToopIjpGBleByGArkhHZOhUmTpkHXtRlUg8LVddQ7zEd5MP4i4mn2AqJmj mHE/Z6/d5sanlYTv8TVYVaU1+WApWU0cvm4++6fgpn+ANB06+MhlMa66iZ5HEt2BcFnY SAI3qVfI1dbmFwLqG08VRkimMsNMMVe6w7jEHB9QPTJoZcM8dBmFSDn45rq5aA43oNRn /LlhhfaV5KRIKbZXxAppRPcCM2kKI4K0sIcuFMnsvBKZXAhfracstMN7omAkmOcV8H/c ap8P5tm7VEpfxTpxAX4k2QBxrXyI8lWnyfwuCeKpqxTfjnp+ZHXbRlspB3/eHiepFXh7 yibQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627662; x=1748232462; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=UDrVd2WWk3SFniHGi6MKc7UY2YxFUpUMKaQa30I15no=; b=DTe671Ti1tvySbMruk25MYZazb2TCGigfKicV58QkErMr+dsDEPvPKVCVpfb9n2hLE FxJPwC1M0AX/37Z34Acqm7nYQMIu1o1y0rN9H9+avZ2kHspCUPnTRC4XuDvkvrDEF5cg DqaXxSkAooCJx3ya3me+6epmv33+O5JuOgra+FeC+copK7kJhiO85IjGKMQEaPDrCgsi 09hLbPCS9z96nULOfG3JZpYatb8DRoY8jctuj6jFG0Z7PegV8cUdRCb4bClErGGbkVeO hswEDs07DgYa2H4O9QzcpnJ6CEPFwxkV/W5PEzd9Iceva1B0QPsiTxQBhtNtz5WoodTc y/hA== X-Gm-Message-State: AOJu0YyvTnf17FPCUx6+WG+oKwex1RtK2I3/1r+SLn9DX80FNQoY5d17 dwtUWvuUlf1j7pNQV8y91eHrJR9rJ7WOMcAYy60OtiIV6dDWkmb2eV3HbINzCg== X-Gm-Gg: ASbGncsd5kPi2V5EzNDGSQmXNAc4A4xsYEfClPpwRhRNHEt1f44bxX5G7f3bzvub+Yt T9pNMvqooYagxcL1JUrhF2HLzSauVsYeA/ifJZHF2S89rUpwjM3lNISnzm/hARIgZDx204z1L6R dT77MnRSIqG404s9mWpfmkzuAchdeQL+Qe1S8SpLUlWnnj5GUz0JlSDed08sdlTRHqFfhOsPNca TcJZWBtGeSjCu0NCQjUBNUrqbu0G+3HZDqLQLSzmXLwRLaAWQjY8Vjs9EahEF6dV+8ADx7XeAVP QODNK3M0fiAzsyswpo+hCfiazLwD2XasjKQXQF5WCu056CJF/LNmC2439/YTb/wI6/AAA0ZmMPA ob1sZ6OW11RcpbsKqticoHOT5VJHG/MMErDtzzKUphJ8v7CsBR7MKIGhZ0sVx1/Tpy5E= X-Google-Smtp-Source: AGHT+IHGITJ0J1IN/fkmrM19qaKa3J7XF80hd0ThEEI1NKGUujhvlpIjTl2GQnH+QjAdJ7Nuraausw== X-Received: by 2002:a17:903:1246:b0:224:26f2:97d6 with SMTP id d9443c01a7336-231de3427cfmr167984355ad.28.1747627662087; Sun, 18 May 2025 21:07:42 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Sebastian Huber , Alistair Francis Subject: [PULL 12/56] hw/riscv: Allow direct start of kernel for MPFS Date: Mon, 19 May 2025 14:05:09 +1000 Message-ID: <20250519040555.3797167-13-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62c; envelope-from=alistair23@gmail.com; helo=mail-pl1-x62c.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747627697704116600 Content-Type: text/plain; charset="utf-8" From: Sebastian Huber Further customize the -bios and -kernel options behaviour for the microchip-icicle-kit machine. If "-bios none -kernel filename" is specified, then do not load a firmware and instead only load and start the kernel image. For test runs, use an approach similar to riscv_find_and_load_firmware(). Signed-off-by: Sebastian Huber Reviewed-by: Alistair Francis Message-ID: <20250319061342.26435-5-sebastian.huber@embedded-brains.de> Signed-off-by: Alistair Francis --- hw/riscv/microchip_pfsoc.c | 59 +++++++++++++++++++++++++++----------- 1 file changed, 42 insertions(+), 17 deletions(-) diff --git a/hw/riscv/microchip_pfsoc.c b/hw/riscv/microchip_pfsoc.c index b8a8d5251d..6e5b17c05f 100644 --- a/hw/riscv/microchip_pfsoc.c +++ b/hw/riscv/microchip_pfsoc.c @@ -578,29 +578,47 @@ static void microchip_icicle_kit_machine_init(Machine= State *machine) } =20 /* - * We follow the following table to select which payload we execute. + * We follow the following table to select which firmware we use. * - * -bios | -kernel | payload - * -------+------------+-------- - * N | N | HSS - * Y | don't care | HSS - * N | Y | kernel - * - * This ensures backwards compatibility with how we used to expose -bi= os - * to users but allows them to run through direct kernel booting as we= ll. + * -bios | -kernel | firmware + * --------------+------------+-------- + * none | N | error + * none | Y | kernel + * NULL, default | N | BIOS_FILENAME + * NULL, default | Y | RISCV64_BIOS_BIN + * other | don't care | other */ + if (machine->firmware && !strcmp(machine->firmware, "none")) { + if (!machine->kernel_filename) { + error_report("for -bios none, a kernel is required"); + exit(1); + } =20 - if (machine->kernel_filename) { - firmware_name =3D RISCV64_BIOS_BIN; - firmware_load_addr =3D memmap[MICROCHIP_PFSOC_DRAM_LO].base; + firmware_name =3D NULL; + firmware_load_addr =3D RESET_VECTOR; + } else if (!machine->firmware || !strcmp(machine->firmware, "default")= ) { + if (machine->kernel_filename) { + firmware_name =3D RISCV64_BIOS_BIN; + firmware_load_addr =3D memmap[MICROCHIP_PFSOC_DRAM_LO].base; + } else { + firmware_name =3D BIOS_FILENAME; + firmware_load_addr =3D RESET_VECTOR; + } } else { - firmware_name =3D BIOS_FILENAME; + firmware_name =3D machine->firmware; firmware_load_addr =3D RESET_VECTOR; } =20 - /* Load the firmware */ - firmware_end_addr =3D riscv_find_and_load_firmware(machine, firmware_n= ame, - &firmware_load_addr, = NULL); + /* Load the firmware if necessary */ + firmware_end_addr =3D firmware_load_addr; + if (firmware_name) { + char *filename =3D riscv_find_firmware(firmware_name, NULL); + if (filename) { + firmware_end_addr =3D riscv_load_firmware(filename, + &firmware_load_addr, N= ULL); + g_free(filename); + } + } =20 riscv_boot_info_init(&boot_info, &s->soc.u_cpus); if (machine->kernel_filename) { @@ -638,8 +656,15 @@ static void microchip_icicle_kit_machine_init(MachineS= tate *machine) fdt_load_addr =3D 0; } =20 + hwaddr start_addr; + if (firmware_name) { + start_addr =3D firmware_load_addr; + } else { + start_addr =3D kernel_entry; + } + /* Load the reset vector */ - riscv_setup_rom_reset_vec(machine, &s->soc.u_cpus, firmware_load_a= ddr, + riscv_setup_rom_reset_vec(machine, &s->soc.u_cpus, start_addr, memmap[MICROCHIP_PFSOC_ENVM_DATA].base, memmap[MICROCHIP_PFSOC_ENVM_DATA].size, kernel_entry, fdt_load_addr); --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747627689; cv=none; d=zohomail.com; s=zohoarc; b=hKSzhJIZ82X13AHzSHArrxtdgBrAlqTMa378UXNKtB+PrtPR/hGfRheBXqYm/mqoXvsmLh3v2BuM27EP+NitniOIdLxmlgLxNGaIakRzraQ9qSFVHmU9hFmJTZdbhlo3SrxsaScsbYkagnFFTs445/M5cZIsiv2a3y8+WbnTbR8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747627689; h=Content-Type:Content-Transfer-Encoding:Cc:Cc: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; bh=l5vu2hrQseFU8LOh7DPzcKh1zIWTsbn7UZDtVOI2mnY=; b=j+S365HU1SR/KSQqd9aR9zLwx1LdY32BS5Dd7tGbL9xf5Rt6BIUfui5Rc99FPuddYXtw0DTprqcdSP7g3gBaHA8iqXURMn03grIAVSyOad0KfALRJSPWFSgX76aL16TiCkeGAsB9GwVQJbMtgV4rmpukHiLMOcOLM+yrS1gd7wc= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747627689053885.2764381282768; Sun, 18 May 2025 21:08:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGrnJ-00056j-1K; Mon, 19 May 2025 00:08:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGrn3-0004oh-N3 for qemu-devel@nongnu.org; Mon, 19 May 2025 00:07:50 -0400 Received: from mail-pl1-x62d.google.com ([2607:f8b0:4864:20::62d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGrn1-0004AQ-O8 for qemu-devel@nongnu.org; Mon, 19 May 2025 00:07:49 -0400 Received: by mail-pl1-x62d.google.com with SMTP id d9443c01a7336-22e16234307so36906415ad.0 for ; Sun, 18 May 2025 21:07:46 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.07.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:07:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627665; x=1748232465; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=l5vu2hrQseFU8LOh7DPzcKh1zIWTsbn7UZDtVOI2mnY=; b=I1JTzu3LePCYDnOlY8wTAousGCRSYLneyGU8klvk0Fe8pA87F1WbK9km+0cUZtmLG0 ptXtDIhMccSgasSIjW2bytDj57V+7vga+qeukWf+QE2SfZ9P4MxbXs9ke+A8fXDPNQLX 8TuLJUK5+t89WgKZAZ/em77GnvvfR0X+LW8sAjmxANGG8wQclaPTAselWEbZuWs1Kfng ySYplcDM7yEpKCBkbMZJSQZeBB/16qDS3RY2JgMVZ91dW8wdfCHh9A3ZlnlMMxeuvNab knkPmlDiH5Vli1g9yiCZjtGGlei4eZMcCMBHa5mTz3woVAkaLWlEi8i2/WKkUErM9Mgw dEfw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627665; x=1748232465; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=l5vu2hrQseFU8LOh7DPzcKh1zIWTsbn7UZDtVOI2mnY=; b=FjmnYR66oAOIER0UAX+TDlUrGQG7czYNnTi7sJ7VkW0Arlk/qgtogHnxYwo1p6BB78 eZQW95gXRA/Z/Z+h0B8gQdl0p3FHVeM407bKt/c41ynEcK8YpX6HoyyFN6hX+OkSJEOf bEkWHhnS3ZT83MVYBDSgrBjgrNKYXcUHTp1w53GAVciUEBzv1lCUrp49XeMJCUbmbfH0 g/aVMF/ERLCVzSUlDMy2kD09lExCFTAd2BSwJVXEUBVWHEjZLDb0yTZVwwxGF/V0vjI3 3+oLpyxAY6Gcf6wvavIC3vlQRa6aP0IXbBDYhAwNeFKZx3SnjI1vbdNZWfLUUPbcsFkZ h5mQ== X-Gm-Message-State: AOJu0YxYKRRQytb4Ly2nX23Vs/wJQZLtn1Za0tJ5jc1SRYrLXQO7cI2T iD+ErMCT5NrE7fUG5b1afLiBOmr5oaWPoRHIO5wwZp07hH2VGqVtHOD2tyYPWg== X-Gm-Gg: ASbGncs+TZXo+nyqMnfNL9C8sAjYKDAvb3pAB8XYF9UEzVowXpp7QMEf8TPhrc+s9a7 TEnz2f7ZG2lVxPw2C7EeDRQ+S84OwMPVagxYttn8goielQysdgDCA4R5VVGdwsOBbrxVmtL3glV bVsSpa4413vhRWaO7+Tk6p+lM6udR1n/fRiG5ZAKal6v3bQv2hHn0SFy2iVaZS4GlWmwVVTt1EI pZCZwS1iVmqRh2+eiuVcl0ld1rl78Br3AlD5hhn0nPU4Fll6CSMhfId/FIpEl1mW71p7JQ31KJf 8aBppTAJ+/JWAsO4SgIIcR9uQnR0HiyYJ4clCyDE/cYm9ugsrfhdIf0JWj+uUSQfK6zL1STu82q dpZWMgbE4HclDM48rNrnJ0qMnnmVwHx8BwBmnDptllFbDjqVBjUAOUH3Kkg3nIfWKA7I= X-Google-Smtp-Source: AGHT+IEStCeD9Fqq35qs334GkR5u7E1dIHdlDYmWkUYSzlfcmoe7d/XznBlKhOEq26k7IoPog92Dig== X-Received: by 2002:a17:902:d48d:b0:232:557c:2501 with SMTP id d9443c01a7336-232557c2657mr15801685ad.10.1747627665200; Sun, 18 May 2025 21:07:45 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Sebastian Huber , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis Subject: [PULL 13/56] hw/riscv: Configurable MPFS CLINT timebase freq Date: Mon, 19 May 2025 14:05:10 +1000 Message-ID: <20250519040555.3797167-14-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62d; envelope-from=alistair23@gmail.com; helo=mail-pl1-x62d.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747627689942116600 From: Sebastian Huber This property enables the setting of the CLINT timebase frequency through the command line, for example: -machine microchip-icicle-kit,clint-timebase-frequency=3D10000000 Signed-off-by: Sebastian Huber Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alistair Francis Message-ID: <20250319061342.26435-6-sebastian.huber@embedded-brains.de> Signed-off-by: Alistair Francis --- include/hw/riscv/microchip_pfsoc.h | 1 + hw/riscv/microchip_pfsoc.c | 49 +++++++++++++++++++++++++++--- 2 files changed, 46 insertions(+), 4 deletions(-) diff --git a/include/hw/riscv/microchip_pfsoc.h b/include/hw/riscv/microchi= p_pfsoc.h index daef086da6..7ca9b976c1 100644 --- a/include/hw/riscv/microchip_pfsoc.h +++ b/include/hw/riscv/microchip_pfsoc.h @@ -67,6 +67,7 @@ typedef struct MicrochipIcicleKitState { MachineState parent_obj; =20 /*< public >*/ + uint32_t clint_timebase_freq; MicrochipPFSoCState soc; } MicrochipIcicleKitState; =20 diff --git a/hw/riscv/microchip_pfsoc.c b/hw/riscv/microchip_pfsoc.c index 6e5b17c05f..2e74783fce 100644 --- a/hw/riscv/microchip_pfsoc.c +++ b/hw/riscv/microchip_pfsoc.c @@ -39,6 +39,7 @@ #include "qemu/units.h" #include "qemu/cutils.h" #include "qapi/error.h" +#include "qapi/visitor.h" #include "hw/boards.h" #include "hw/loader.h" #include "hw/sysbus.h" @@ -61,9 +62,6 @@ #define BIOS_FILENAME "hss.bin" #define RESET_VECTOR 0x20220000 =20 -/* CLINT timebase frequency */ -#define CLINT_TIMEBASE_FREQ 1000000 - /* GEM version */ #define GEM_REVISION 0x0107010c =20 @@ -193,6 +191,7 @@ static void microchip_pfsoc_soc_instance_init(Object *o= bj) static void microchip_pfsoc_soc_realize(DeviceState *dev, Error **errp) { MachineState *ms =3D MACHINE(qdev_get_machine()); + MicrochipIcicleKitState *iks =3D MICROCHIP_ICICLE_KIT_MACHINE(ms); MicrochipPFSoCState *s =3D MICROCHIP_PFSOC(dev); const MemMapEntry *memmap =3D microchip_pfsoc_memmap; MemoryRegion *system_memory =3D get_system_memory(); @@ -253,7 +252,7 @@ static void microchip_pfsoc_soc_realize(DeviceState *de= v, Error **errp) memmap[MICROCHIP_PFSOC_CLINT].base + RISCV_ACLINT_SWI_SIZE, RISCV_ACLINT_DEFAULT_MTIMER_SIZE, 0, ms->smp.cpus, RISCV_ACLINT_DEFAULT_MTIMECMP, RISCV_ACLINT_DEFAULT_MTIME, - CLINT_TIMEBASE_FREQ, false); + iks->clint_timebase_freq, false); =20 /* L2 cache controller */ create_unimplemented_device("microchip.pfsoc.l2cc", @@ -671,6 +670,40 @@ static void microchip_icicle_kit_machine_init(MachineS= tate *machine) } } =20 +static void microchip_icicle_kit_set_clint_timebase_freq(Object *obj, + Visitor *v, + const char *name, + void *opaque, + Error **errp) +{ + MicrochipIcicleKitState *s =3D MICROCHIP_ICICLE_KIT_MACHINE(obj); + uint32_t value; + + if (!visit_type_uint32(v, name, &value, errp)) { + return; + } + + s->clint_timebase_freq =3D value; +} + +static void microchip_icicle_kit_get_clint_timebase_freq(Object *obj, + Visitor *v, + const char *name, + void *opaque, + Error **errp) +{ + MicrochipIcicleKitState *s =3D MICROCHIP_ICICLE_KIT_MACHINE(obj); + uint32_t value =3D s->clint_timebase_freq; + + visit_type_uint32(v, name, &value, errp); +} + +static void microchip_icicle_kit_machine_instance_init(Object *obj) +{ + MicrochipIcicleKitState *m =3D MICROCHIP_ICICLE_KIT_MACHINE(obj); + m->clint_timebase_freq =3D 1000000; +} + static void microchip_icicle_kit_machine_class_init(ObjectClass *oc, const void *data) { @@ -693,12 +726,20 @@ static void microchip_icicle_kit_machine_class_init(O= bjectClass *oc, * See memory_tests() in mss_ddr.c in the HSS source code. */ mc->default_ram_size =3D 1537 * MiB; + + object_class_property_add(oc, "clint-timebase-frequency", "uint32_t", + microchip_icicle_kit_get_clint_timebase_freq, + microchip_icicle_kit_set_clint_timebase_freq, + NULL, NULL); + object_class_property_set_description(oc, "clint-timebase-frequency", + "Set CLINT timebase frequency in Hz."); } =20 static const TypeInfo microchip_icicle_kit_machine_typeinfo =3D { .name =3D MACHINE_TYPE_NAME("microchip-icicle-kit"), .parent =3D TYPE_MACHINE, .class_init =3D microchip_icicle_kit_machine_class_init, + .instance_init =3D microchip_icicle_kit_machine_instance_init, .instance_size =3D sizeof(MicrochipIcicleKitState), }; =20 --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747627707; cv=none; d=zohomail.com; s=zohoarc; b=Q17cYVa0cdg2MN0fRlF6u2o3FPDCKz3tmFu5cd/sLnRcb4UQjwZtjkHU2x86ghR7OID8frNyNiS9wRgr/C9wuV/MvlkXu9Hsu6uet3emy8vumUPppwjIHml7mq6g4BJJmoBKb/KePEjs7+48DR9LW/fdQ8gFQsghT92CLuaJw0I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747627707; h=Content-Type:Content-Transfer-Encoding:Cc:Cc: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; bh=8AzDyKx6OgyWxTzZBTwniZzUexKQarca/x+PapVXPjc=; b=WqFQWjJAbJWl7hT+6xfW2B9CHwyr7xvo4kJ53NuCd7LIenKsg5MLs4tmGrDQbVdeJecVBLGG6AiYsec7/pai0QXL66sN+eFuyX9PkdoGXI4oyy5jTLDtA2wvWAlIxINmAY8pOpq0ASwamcDHyjzKogOheqvLmJt5PQr2W3v2mqE= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747627707892714.925324379258; Sun, 18 May 2025 21:08:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGrnE-0004w7-DM; Mon, 19 May 2025 00:08:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGrn5-0004pD-S1 for qemu-devel@nongnu.org; Mon, 19 May 2025 00:07:52 -0400 Received: from mail-pg1-x535.google.com ([2607:f8b0:4864:20::535]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGrn3-0004Aj-Mu for qemu-devel@nongnu.org; Mon, 19 May 2025 00:07:51 -0400 Received: by mail-pg1-x535.google.com with SMTP id 41be03b00d2f7-b1fd59851baso2333322a12.0 for ; Sun, 18 May 2025 21:07:49 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.07.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:07:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627668; x=1748232468; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=8AzDyKx6OgyWxTzZBTwniZzUexKQarca/x+PapVXPjc=; b=Ymi9hx60J1t14QaqdI7xWwT5JkdDSGEcY7f/Z+G9AFwFWkLZoNBc0mnzZb2DPxh0Xu HTAgLRL786Xmsn16MBiSNNBkHM8vEjMWJe84TomR8JCrJdq49xjvTXPHI+UC9axBDRDF tsMhJvhPaV3v523CE2xzyAcGzWVoVRpRxFop+acX9WTTGq8F5RhlEIhrYyNH6tmVu6Uk LZlBrqQhH0NfeW6/2/l82++XylYQKagJRp9S9P/BJ1h1xHtGH3enHA0R4tyNZsuT43Jk D3gxPpFalxdVW9QgZIqlmsNjRQZkfYF1/kViW+FfbmahFwkxw+exwZI54H9JJt6HU9on lWKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627668; x=1748232468; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=8AzDyKx6OgyWxTzZBTwniZzUexKQarca/x+PapVXPjc=; b=i2GKdTXVmQmiWvRRjsRf3BM0uAuj0rmAthlOkVcTpqO53WXhMaZalk2vYqTdummWux 8vDahGK7nCC5o6LJ0jvb5jD1lNovvZdGcSNpNaaFgXjKpoybK2TMVpYQZyDstJUfF0ec 6cKrlqfxaGqMeg13uHoVbxfrQtLeTOHquUaLbnM9e9xgbawBjE6lNfGoSk8NW8oJx6zS HVF2BTv6ReIXhRrGj7dkDYltTB5MnJyHxmEcFBkfN2ngXK2ykVVarXKPCrv/umu6k7l8 qfgQ+yr8o6ozP6FGl2XOXts1hquypFyBhVC7z3FQyIjJ2I8fKnHSpZCFBx0zxYYSoUFS l3bg== X-Gm-Message-State: AOJu0Ywe6KheHyCcNfhOxoxSrCM7giO4SXFyA0ga4q93wdCrhEmBZQpu ehbrzKm1stO5uIpfXmuKmuB4xaVLJ9eMr+ohSQ+dR07gLtlsFdVU0RUz2E9UFg== X-Gm-Gg: ASbGncuRy9B77790LSW+sIIQxPV6Y0DTlR/dCWsWM0alLHxeEl0GAl+OHJhzsPXksEN xhicDWrp6FNxEAqBfBI0yIZqc05FDSRzmN+4/cHjB/o4NfLsmloQSX9YtuhE0B7QQL3mwhf/IUC ikTS8UijMHAuH/Bmi0SFXFK1Lfsoi4kb5kHq4KurirDLDKWMPjBBAwM+TD1x1fcFiV4zdVGivZq 6aq+CwsYWKWyC7yhXDAolXaGEjZcg5gyXqlLcsNtcvhAqrg7js7nkthsXSguVClUqQ96ra7Lyne EiyyvSSSb5mnrHS/n1Ntdv8qXftJwCgqyyo3DsGmNtR+Gkuf/vRYkBudv2y5eSfVwVD2P3TI5/f 3ZobPdAbb80lIeNmjxEBM71A61Na6ow2kv+zj8iulPZ1/iYQUnQvsXIR8 X-Google-Smtp-Source: AGHT+IFnM5JL57he9gnOUOZWyRkUlh5VB8Q5b8OHNWGjqmZSXhO2mGZaPuVfK4Jyof5Vbe3NYQME+g== X-Received: by 2002:a17:902:f706:b0:21f:6a36:7bf3 with SMTP id d9443c01a7336-231de3001cemr183769335ad.12.1747627668034; Sun, 18 May 2025 21:07:48 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Sebastian Huber , Alistair Francis Subject: [PULL 14/56] hw/riscv: microchip_pfsoc: Rework documentation Date: Mon, 19 May 2025 14:05:11 +1000 Message-ID: <20250519040555.3797167-15-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::535; envelope-from=alistair23@gmail.com; helo=mail-pg1-x535.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747627710057116600 From: Sebastian Huber Mention that running the HSS no longer works. Document the changed boot options. Reorder documentation blocks. Update URLs. Signed-off-by: Sebastian Huber Reviewed-by: Alistair Francis Message-ID: <20250319061342.26435-7-sebastian.huber@embedded-brains.de> Signed-off-by: Alistair Francis --- docs/system/riscv/microchip-icicle-kit.rst | 124 +++++++-------------- 1 file changed, 43 insertions(+), 81 deletions(-) diff --git a/docs/system/riscv/microchip-icicle-kit.rst b/docs/system/riscv= /microchip-icicle-kit.rst index 40798b1aae..9809e94b84 100644 --- a/docs/system/riscv/microchip-icicle-kit.rst +++ b/docs/system/riscv/microchip-icicle-kit.rst @@ -5,10 +5,10 @@ Microchip PolarFire SoC Icicle Kit integrates a PolarFire= SoC, with one SiFive's E51 plus four U54 cores and many on-chip peripherals and an FPGA. =20 For more details about Microchip PolarFire SoC, please see: -https://www.microsemi.com/product-directory/soc-fpgas/5498-polarfire-soc-f= pga +https://www.microchip.com/en-us/products/fpgas-and-plds/system-on-chip-fpg= as/polarfire-soc-fpgas =20 The Icicle Kit board information can be found here: -https://www.microsemi.com/existing-parts/parts/152514 +https://www.microchip.com/en-us/development-tool/mpfs-icicle-kit-es =20 Supported devices ----------------- @@ -26,95 +26,48 @@ The ``microchip-icicle-kit`` machine supports the follo= wing devices: * 2 GEM Ethernet controllers * 1 SDHC storage controller =20 +The memory is set to 1537 MiB by default. A sanity check on RAM size is +performed in the machine init routine to prompt user to increase the RAM s= ize +to > 1537 MiB when less than 1537 MiB RAM is detected. + Boot options ------------ =20 -The ``microchip-icicle-kit`` machine can start using the standard -bios -functionality for loading its BIOS image, aka Hart Software Services (HSS_= ). -HSS loads the second stage bootloader U-Boot from an SD card. Then a kernel -can be loaded from U-Boot. It also supports direct kernel booting via the --kernel option along with the device tree blob via -dtb. When direct kernel -boot is used, the OpenSBI fw_dynamic BIOS image is used to boot a payload -like U-Boot or OS kernel directly. - -The user provided DTB should have the following requirements: - -* The /cpus node should contain at least one subnode for E51 and the number - of subnodes should match QEMU's ``-smp`` option -* The /memory reg size should match QEMU=E2=80=99s selected ram_size via `= `-m`` -* Should contain a node for the CLINT device with a compatible string - "riscv,clint0" - -QEMU follows below truth table to select which payload to execute: - -=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D =3D=3D=3D=3D=3D=3D=3D --bios -kernel -dtb payload -=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D =3D=3D=3D=3D=3D=3D=3D - N N don't care HSS - Y don't care don't care HSS - N Y Y kernel -=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D =3D=3D=3D=3D=3D=3D=3D - -The memory is set to 1537 MiB by default which is the minimum required high -memory size by HSS. A sanity check on ram size is performed in the machine -init routine to prompt user to increase the RAM size to > 1537 MiB when le= ss -than 1537 MiB ram is detected. - -Running HSS ------------ - -HSS 2020.12 release is tested at the time of writing. To build an HSS image -that can be booted by the ``microchip-icicle-kit`` machine, type the follo= wing -in the HSS source tree: - -.. code-block:: bash - - $ export CROSS_COMPILE=3Driscv64-linux- - $ cp boards/mpfs-icicle-kit-es/def_config .config - $ make BOARD=3Dmpfs-icicle-kit-es - -Download the official SD card image released by Microchip and prepare it f= or -QEMU usage: - -.. code-block:: bash - - $ wget ftp://ftpsoc.microsemi.com/outgoing/core-image-minimal-dev-icicle= -kit-es-sd-20201009141623.rootfs.wic.gz - $ gunzip core-image-minimal-dev-icicle-kit-es-sd-20201009141623.rootfs.w= ic.gz - $ qemu-img resize core-image-minimal-dev-icicle-kit-es-sd-20201009141623= .rootfs.wic 4G - -Then we can boot the machine by: - -.. code-block:: bash - - $ qemu-system-riscv64 -M microchip-icicle-kit -smp 5 \ - -bios path/to/hss.bin -sd path/to/sdcard.img \ - -nic user,model=3Dcadence_gem \ - -nic tap,ifname=3Dtap,model=3Dcadence_gem,script=3Dno \ - -display none -serial stdio \ - -chardev socket,id=3Dserial1,path=3Dserial1.sock,server=3Don,wait=3D= on \ - -serial chardev:serial1 +The ``microchip-icicle-kit`` machine provides some options to run a firmwa= re +(BIOS) or a kernel image. QEMU follows below truth table to select the +firmware: =20 -With above command line, current terminal session will be used for the fir= st -serial port. Open another terminal window, and use ``minicom`` to connect = the -second serial port. +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D +-bios -kernel firmware +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D +none N this is an error +none Y the kernel image +NULL, default N hss.bin +NULL, default Y opensbi-riscv64-generic-fw_dynamic.bin +other don't care the BIOS image +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =20 -.. code-block:: bash +Direct Kernel Boot +------------------ =20 - $ minicom -D unix\#serial1.sock +Use the ``-kernel`` option to directly run a kernel image. When a direct +kernel boot is requested, a device tree blob may be specified via the ``-d= tb`` +option. Unlike other QEMU machines, this machine does not generate a devi= ce +tree for the kernel. It shall be provided by the user. The user provided= DTB +should meet the following requirements: =20 -HSS output is on the first serial port (stdio) and U-Boot outputs on the -second serial port. U-Boot will automatically load the Linux kernel from -the SD card image. +* The ``/cpus`` node should contain at least one subnode for E51 and the n= umber + of subnodes should match QEMU's ``-smp`` option. =20 -Direct Kernel Boot ------------------- +* The ``/memory`` reg size should match QEMU=E2=80=99s selected RAM size v= ia the ``-m`` + option. =20 -Sometimes we just want to test booting a new kernel, and transforming the -kernel image to the format required by the HSS bootflow is tedious. We can -use '-kernel' for direct kernel booting just like other RISC-V machines do. +* It should contain a node for the CLINT device with a compatible string + "riscv,clint0". =20 -In this mode, the OpenSBI fw_dynamic BIOS image for 'generic' platform is -used to boot an S-mode payload like U-Boot or OS kernel directly. +When ``-bios`` is not specified or set to ``default``, the OpenSBI +``fw_dynamic`` BIOS image for the ``generic`` platform is used to boot an +S-mode payload like U-Boot or OS kernel directly. =20 For example, the following commands show building a U-Boot image from U-Bo= ot mainline v2021.07 for the Microchip Icicle Kit board: @@ -146,4 +99,13 @@ CAVEATS: ``u-boot.bin`` has to be used which does contain one. To use the ELF ima= ge, we need to change to CONFIG_OF_EMBED or CONFIG_OF_PRIOR_STAGE. =20 +Running HSS +----------- + +The machine ``microchip-icicle-kit`` used to run the Hart Software Services +(HSS_), however, the HSS development progressed and the QEMU machine +implementation lacks behind. Currently, running the HSS no longer works. +There is missing support in the clock and memory controller devices. In +particular, reading from the SD card does not work. + .. _HSS: https://github.com/polarfire-soc/hart-software-services --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747629109; cv=none; d=zohomail.com; s=zohoarc; b=Lu7cEhYxhUgMd+CJYDhnVHR0tWvr+lAK3iNttQWXujMCel9whqmwu74mTBKoRQTJ8xRIAfs3TacSfvIo1MGArWQN28KyOo7vELI9GewkiRSGxcoT3RQsfHu8cg0/V2zvtyBjDRq03yD8OGdHmwmO3uAamthXVO1UlGiJGDFRWYc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747629109; h=Content-Type:Content-Transfer-Encoding:Cc:Cc: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; bh=EvYjxJC/6lYT2MLjH/wxW+uRvoxqIu2LLh/2lksDadY=; b=R5pNbLhD6xEOR4EsLM0b2Vz6mx1nExENKr0Uyqt73hrkuryleqGPMvTeTqELC/2ZHpBAL3jjb7fYDEpeNdpX39hXm6lGPEW3bkcv5+QwAvz9f0jxbPV2HzPt09SJf/ZE0YPLuUybkzmKZBXJxg6WvGXZM9HAYAndDb5ygPsSZIA= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747629109145903.5425340307894; Sun, 18 May 2025 21:31:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGs3K-0000bh-Js; Mon, 19 May 2025 00:24:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGrn9-0004t1-UX for qemu-devel@nongnu.org; Mon, 19 May 2025 00:07:56 -0400 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGrn7-0004B8-HN for qemu-devel@nongnu.org; Mon, 19 May 2025 00:07:55 -0400 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-2301ac32320so42315105ad.1 for ; Sun, 18 May 2025 21:07:53 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.07.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:07:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627672; x=1748232472; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=EvYjxJC/6lYT2MLjH/wxW+uRvoxqIu2LLh/2lksDadY=; b=Lj+AgTQsLGvDa8NPGWOGqoWXQ3OfD2RB6WaKfrFPxLzCzG1VbuL+ABhweHZuIpulQu gc/DI3Icy4JSJwzmTGwRguqbe58GX6N4jUXQaPrpnKFq4ppgQ8dF2sGc+yQ5vg8ZOlL6 SevaPsInrDNHViHdYtOACzvEy91Cj4uuPyuooe1JbMrSCia+1YdXDlvyVR7vg9hu9hY/ 436V+beEv+Bz7WUUreO1dXIOPnpQp0eLTxN5Y5FnWtYb2oP1MqEnZ3btvtt4NDtdSGMX NfTJ+l0KMK6krtGJmNhL1rgz+37M79Cd5gyLJaDkKl9yEZSHjW+V9vHsX+hissJGPPzE 2Udw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627672; x=1748232472; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=EvYjxJC/6lYT2MLjH/wxW+uRvoxqIu2LLh/2lksDadY=; b=gbhjX8BdirZQX5xuRyqtsybeDuCtxBntrVu/94cTthWxvo+yUMtvsh56CzEzIOXeVm YRqX6b3ivTEICu6BU8JH65TSjOohOItBYg0m49bgARW9QtcyVpCbbHKr+xDH3TuqEJtD bvMViSuWDH4ZCubxdWKuwUKWMWlkzg/kI9MhYB5e7tVdfjr96vRbiXBgn/n6pw0mLKdN yMcH69gxR8EDbW/kPecltKHyxv3M7CMKkVKmi5plI3iYfvExiaXg7GNKCoFUjJ9smSXb eFAy2llGlhb98kvawKMM+LgRuuSXzh26qIsLjzfoie0PPg9neM42ybck9ouVARLqLu7x a1VQ== X-Gm-Message-State: AOJu0Ywf3fLgjBOCLGRpxn5F//hru5JoqEUCG4rKF8z0BYVRqevibglA 2PjYGNFKQ3Ykj7WD9DOR8S7LFnX6410yZYyxtdqVzl/JfUp5X8Y8viidUqqU1A== X-Gm-Gg: ASbGncujmL8IAjwS5mEcQ9a08BCnHxX98i1lbxQAaLxdIpEzNML1vKQYIZlTmatX5Ap D40px6v4ifcJXLG699mXbk+VpO17NwZBLa/TNATfc9AGmidrc2uQjXqV8S1goFbeh523vQlqXSs b8e4BM/GJd9G8IKxVZck77cz6Z7QsleHSXYaxnvw+KYPvFVRZEQTAxqsdSQB5/VF51IO5o0MUD1 J7Ax5r+WJQfbKPr/RxOUOH+hIp2Vhkbk+QY8O9idQfz7jkRtOW2itTNJPrVuAun5CA42Y8bRr/R AB4o0Gman7oNVTq7d0FjPVSCZjQM0eGWMV7QFILMSDhEekQfQ7GoUxaduce0K5wM8351q9dOByf 9YD0EUyzMsoedTKzLLNjlUVSOxV0joCDIvu8eRVBB6/7oSO8cR39qBX6bju6KlaCoATU= X-Google-Smtp-Source: AGHT+IFFDmO2kXmY+6WST5/9Y8ec/n1ZkhToKvOqN8evRko/V33RkTPmphvibnSjwBPNSZEmVdTFKQ== X-Received: by 2002:a17:903:2f4c:b0:21f:522b:690f with SMTP id d9443c01a7336-231d45af194mr157037135ad.46.1747627671906; Sun, 18 May 2025 21:07:51 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Paolo Savini , Daniel Henrique Barboza , Richard Handerson , Max Chou , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Alistair Francis Subject: [PULL 15/56] target/riscv: use tcg ops generation to emulate whole reg rvv loads/stores. Date: Mon, 19 May 2025 14:05:12 +1000 Message-ID: <20250519040555.3797167-16-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::634; envelope-from=alistair23@gmail.com; helo=mail-pl1-x634.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747629110775116600 From: Paolo Savini This patch replaces the use of a helper function with direct tcg ops genera= tion in order to emulate whole register loads and stores. This is done in order = to improve the performance of QEMU. We still use the helper function when vstart is not 0 at the beginning of t= he emulation of the whole register load or store or when we would end up gener= ating partial loads or stores of vector elements (e.g. emulating 64 bits element = loads with pairs of 32 bits loads on hosts with 32 bits registers). The latter condition ensures that we are not surprised by a trap in mid-ele= ment and consecutively that we can update vstart correctly. We also use the helper function when it performs better than tcg for specif= ic combinations of vector length, number of fields and element size. Signed-off-by: Paolo Savini Reviewed-by: Daniel Henrique Barboza Reviewed-by: Richard Handerson Reviewed-by: Max Chou Reviewed-by: "Alex Benn=C3=A9e" Message-ID: <20250313152330.398396-2-paolo.savini@embecosm.com> Signed-off-by: Alistair Francis --- target/riscv/insn_trans/trans_rvv.c.inc | 155 +++++++++++++++++------- 1 file changed, 108 insertions(+), 47 deletions(-) diff --git a/target/riscv/insn_trans/trans_rvv.c.inc b/target/riscv/insn_tr= ans/trans_rvv.c.inc index 7079f758ad..4ca7b15da1 100644 --- a/target/riscv/insn_trans/trans_rvv.c.inc +++ b/target/riscv/insn_trans/trans_rvv.c.inc @@ -1334,25 +1334,86 @@ GEN_VEXT_TRANS(vle64ff_v, MO_64, r2nfvm, ldff_op, l= d_us_check) typedef void gen_helper_ldst_whole(TCGv_ptr, TCGv, TCGv_env, TCGv_i32); =20 static bool ldst_whole_trans(uint32_t vd, uint32_t rs1, uint32_t nf, - gen_helper_ldst_whole *fn, - DisasContext *s) + uint32_t log2_esz, gen_helper_ldst_whole *fn, + DisasContext *s, bool is_load) { - TCGv_ptr dest; - TCGv base; - TCGv_i32 desc; - - uint32_t data =3D FIELD_DP32(0, VDATA, NF, nf); - data =3D FIELD_DP32(data, VDATA, VM, 1); - dest =3D tcg_temp_new_ptr(); - desc =3D tcg_constant_i32(simd_desc(s->cfg_ptr->vlenb, - s->cfg_ptr->vlenb, data)); - - base =3D get_gpr(s, rs1, EXT_NONE); - tcg_gen_addi_ptr(dest, tcg_env, vreg_ofs(s, vd)); - mark_vs_dirty(s); =20 - fn(dest, base, tcg_env, desc); + /* + * Load/store multiple bytes per iteration. + * When possible do this atomically. + * Update vstart with the number of processed elements. + * Use the helper function if either: + * - vstart is not 0. + * - the target has 32 bit registers and we are loading/storing 64 bit= long + * elements. This is to ensure that we process every element with a = single + * memory instruction. + */ + + bool use_helper_fn =3D !(s->vstart_eq_zero) || + (TCG_TARGET_REG_BITS =3D=3D 32 && log2_esz =3D= =3D 3); + + if (!use_helper_fn) { + TCGv addr =3D tcg_temp_new(); + uint32_t size =3D s->cfg_ptr->vlenb * nf; + TCGv_i64 t8 =3D tcg_temp_new_i64(); + TCGv_i32 t4 =3D tcg_temp_new_i32(); + MemOp atomicity =3D MO_ATOM_NONE; + if (log2_esz =3D=3D 0) { + atomicity =3D MO_ATOM_NONE; + } else { + atomicity =3D MO_ATOM_IFALIGN_PAIR; + } + if (TCG_TARGET_REG_BITS =3D=3D 64) { + for (int i =3D 0; i < size; i +=3D 8) { + addr =3D get_address(s, rs1, i); + if (is_load) { + tcg_gen_qemu_ld_i64(t8, addr, s->mem_idx, + MO_LE | MO_64 | atomicity); + tcg_gen_st_i64(t8, tcg_env, vreg_ofs(s, vd) + i); + } else { + tcg_gen_ld_i64(t8, tcg_env, vreg_ofs(s, vd) + i); + tcg_gen_qemu_st_i64(t8, addr, s->mem_idx, + MO_LE | MO_64 | atomicity); + } + if (i =3D=3D size - 8) { + tcg_gen_movi_tl(cpu_vstart, 0); + } else { + tcg_gen_addi_tl(cpu_vstart, cpu_vstart, 8 >> log2_esz); + } + } + } else { + for (int i =3D 0; i < size; i +=3D 4) { + addr =3D get_address(s, rs1, i); + if (is_load) { + tcg_gen_qemu_ld_i32(t4, addr, s->mem_idx, + MO_LE | MO_32 | atomicity); + tcg_gen_st_i32(t4, tcg_env, vreg_ofs(s, vd) + i); + } else { + tcg_gen_ld_i32(t4, tcg_env, vreg_ofs(s, vd) + i); + tcg_gen_qemu_st_i32(t4, addr, s->mem_idx, + MO_LE | MO_32 | atomicity); + } + if (i =3D=3D size - 4) { + tcg_gen_movi_tl(cpu_vstart, 0); + } else { + tcg_gen_addi_tl(cpu_vstart, cpu_vstart, 4 >> log2_esz); + } + } + } + } else { + TCGv_ptr dest; + TCGv base; + TCGv_i32 desc; + uint32_t data =3D FIELD_DP32(0, VDATA, NF, nf); + data =3D FIELD_DP32(data, VDATA, VM, 1); + dest =3D tcg_temp_new_ptr(); + desc =3D tcg_constant_i32(simd_desc(s->cfg_ptr->vlenb, + s->cfg_ptr->vlenb, data)); + base =3D get_gpr(s, rs1, EXT_NONE); + tcg_gen_addi_ptr(dest, tcg_env, vreg_ofs(s, vd)); + fn(dest, base, tcg_env, desc); + } =20 finalize_rvv_inst(s); return true; @@ -1362,42 +1423,42 @@ static bool ldst_whole_trans(uint32_t vd, uint32_t = rs1, uint32_t nf, * load and store whole register instructions ignore vtype and vl setting. * Thus, we don't need to check vill bit. (Section 7.9) */ -#define GEN_LDST_WHOLE_TRANS(NAME, ARG_NF) \ -static bool trans_##NAME(DisasContext *s, arg_##NAME * a) \ -{ \ - if (require_rvv(s) && \ - QEMU_IS_ALIGNED(a->rd, ARG_NF)) { \ - return ldst_whole_trans(a->rd, a->rs1, ARG_NF, \ - gen_helper_##NAME, s); \ - } \ - return false; \ -} - -GEN_LDST_WHOLE_TRANS(vl1re8_v, 1) -GEN_LDST_WHOLE_TRANS(vl1re16_v, 1) -GEN_LDST_WHOLE_TRANS(vl1re32_v, 1) -GEN_LDST_WHOLE_TRANS(vl1re64_v, 1) -GEN_LDST_WHOLE_TRANS(vl2re8_v, 2) -GEN_LDST_WHOLE_TRANS(vl2re16_v, 2) -GEN_LDST_WHOLE_TRANS(vl2re32_v, 2) -GEN_LDST_WHOLE_TRANS(vl2re64_v, 2) -GEN_LDST_WHOLE_TRANS(vl4re8_v, 4) -GEN_LDST_WHOLE_TRANS(vl4re16_v, 4) -GEN_LDST_WHOLE_TRANS(vl4re32_v, 4) -GEN_LDST_WHOLE_TRANS(vl4re64_v, 4) -GEN_LDST_WHOLE_TRANS(vl8re8_v, 8) -GEN_LDST_WHOLE_TRANS(vl8re16_v, 8) -GEN_LDST_WHOLE_TRANS(vl8re32_v, 8) -GEN_LDST_WHOLE_TRANS(vl8re64_v, 8) +#define GEN_LDST_WHOLE_TRANS(NAME, ETYPE, ARG_NF, IS_LOAD) = \ +static bool trans_##NAME(DisasContext *s, arg_##NAME * a) = \ +{ = \ + if (require_rvv(s) && = \ + QEMU_IS_ALIGNED(a->rd, ARG_NF)) { = \ + return ldst_whole_trans(a->rd, a->rs1, ARG_NF, ctzl(sizeof(ETYPE))= , \ + gen_helper_##NAME, s, IS_LOAD); = \ + } = \ + return false; = \ +} + +GEN_LDST_WHOLE_TRANS(vl1re8_v, int8_t, 1, true) +GEN_LDST_WHOLE_TRANS(vl1re16_v, int16_t, 1, true) +GEN_LDST_WHOLE_TRANS(vl1re32_v, int32_t, 1, true) +GEN_LDST_WHOLE_TRANS(vl1re64_v, int64_t, 1, true) +GEN_LDST_WHOLE_TRANS(vl2re8_v, int8_t, 2, true) +GEN_LDST_WHOLE_TRANS(vl2re16_v, int16_t, 2, true) +GEN_LDST_WHOLE_TRANS(vl2re32_v, int32_t, 2, true) +GEN_LDST_WHOLE_TRANS(vl2re64_v, int64_t, 2, true) +GEN_LDST_WHOLE_TRANS(vl4re8_v, int8_t, 4, true) +GEN_LDST_WHOLE_TRANS(vl4re16_v, int16_t, 4, true) +GEN_LDST_WHOLE_TRANS(vl4re32_v, int32_t, 4, true) +GEN_LDST_WHOLE_TRANS(vl4re64_v, int64_t, 4, true) +GEN_LDST_WHOLE_TRANS(vl8re8_v, int8_t, 8, true) +GEN_LDST_WHOLE_TRANS(vl8re16_v, int16_t, 8, true) +GEN_LDST_WHOLE_TRANS(vl8re32_v, int32_t, 8, true) +GEN_LDST_WHOLE_TRANS(vl8re64_v, int64_t, 8, true) =20 /* * The vector whole register store instructions are encoded similar to * unmasked unit-stride store of elements with EEW=3D8. */ -GEN_LDST_WHOLE_TRANS(vs1r_v, 1) -GEN_LDST_WHOLE_TRANS(vs2r_v, 2) -GEN_LDST_WHOLE_TRANS(vs4r_v, 4) -GEN_LDST_WHOLE_TRANS(vs8r_v, 8) +GEN_LDST_WHOLE_TRANS(vs1r_v, int8_t, 1, false) +GEN_LDST_WHOLE_TRANS(vs2r_v, int8_t, 2, false) +GEN_LDST_WHOLE_TRANS(vs4r_v, int8_t, 4, false) +GEN_LDST_WHOLE_TRANS(vs8r_v, int8_t, 8, false) =20 /* *** Vector Integer Arithmetic Instructions --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747628750; cv=none; d=zohomail.com; s=zohoarc; b=hLQHJw6E8kB6pCW8tua3bQxhuUAh+OfAjwxd7WYK1NH0vLzU26FejoqNw2/Tq2ezUR/QAN0m//6zXb6rIooVmrpWqbFNPJUBybfJTbMAHYJcGCT4Pa7iKFlbfpPpPiaJBgmZpZexfoFdmOVKOP9jlpOpB6+rcAB1xp8IkLtEW2g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747628750; h=Content-Transfer-Encoding:Cc:Cc: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; bh=PyCQ824gLoHCHmY0N4YlJh0JlUxFJBMJlywNlclO9X0=; b=S7M98kD5clWMewDezZ2Ih4RD4UKvHqxgvKuFrNdoka6nbclcXj+bn+pZdyKYNGF+O35LlC+mZal/xUfVnVextT9ywjiQdoViWPrgxnmqVj/ogij8jaanxOQ1CjFmWAmlTDJDReRcGcUfTkYNHgSzV6bJR6qK/gzMaYeS7oD58sY= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747628750849831.0488964068217; Sun, 18 May 2025 21:25:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGs38-0000WL-KN; Mon, 19 May 2025 00:24:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGrnD-0004vh-3O for qemu-devel@nongnu.org; Mon, 19 May 2025 00:07:59 -0400 Received: from mail-pg1-x530.google.com ([2607:f8b0:4864:20::530]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGrnB-0004BH-4F for qemu-devel@nongnu.org; Mon, 19 May 2025 00:07:58 -0400 Received: by mail-pg1-x530.google.com with SMTP id 41be03b00d2f7-b13e0471a2dso2494512a12.2 for ; Sun, 18 May 2025 21:07:56 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.07.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:07:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627675; x=1748232475; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=PyCQ824gLoHCHmY0N4YlJh0JlUxFJBMJlywNlclO9X0=; b=ktlMbVqMS8GaVdi0kx3eUSsAzvA525K1gqq3k1OyofmHsb4ogR46n7EHwCP0kDQGA9 EDqwGA6tSUphCV7yWJiuKA6VU7ZpDlG2Z1bvX46a9w1nkfLSxGESYU+woWCXRBIw0WX2 lSbIuMLL+XnuAfOE5pL6tPoae6PgR0x5eyXgcap8ah+sLJOGkZLc2KL23dE3DRWlEMku V5UTJOhiMVSQfRM/V33zTWOS6ggh6UZggL5PGsv0O4ykqiV7J+I7VcZw3Vu65mU4MDma dEigRas9G2phnuHSKTK5Nd9hZXQVHsUxOWRZChFdKv+fhy1msD942jZyCJQaQ8rYdIIU qRAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627675; x=1748232475; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=PyCQ824gLoHCHmY0N4YlJh0JlUxFJBMJlywNlclO9X0=; b=ncjR0ETOnSZkBiNEVsTD/TFQzMb+umyTCLvBcrBk+KStBVhb12fGZw1uPpl+J65QJA b2d6rCr6U/vug2jmy1oJELYbnZrEFlFpvEGIljQqKeQRsdGq5XYJILcO/Esa/Ja+D8vN ZEBtkBqBjb/YK102uGRM4A5BXRPxdBGHctwsJou/z9632zspCNQMqaIzjdl+1lBuw6mV R6QtWlozU2TUT7rk5lGQq4211gXzlyE/tmcBV4yrsjjjwEXf+RZCZF+o3vRYAj0juPuP 6JrDHmZ6rYiyuvPFqS7NUUehQ2TIshKsNUesqggd11u2MtDVkrH0GyN889Mf136/CsaX t4wQ== X-Gm-Message-State: AOJu0YzNMViyoU/ukX1glkRGansztJSliPG/oBCyy3zbTPv+NLhaYB0n ExY4mhJSEG+fm4ZO5f9QN+cDa3wBtlfIYg9CriF3CDmzKXtme4LyejjWd+nDpg== X-Gm-Gg: ASbGnctqxzU+nHHlu+n+s42630crz/o0AgdM6cMfsZSZsiuYtCq+PDas08DufPBkJ5+ VORGMl4kLfxf0BuL/pPAPBVWqEOw/5oeNaABydzLAGdLQ7cgkx2qsCTh0s7SDS4XDiGnRXh+LLq bSmjiaIoMybIkTe81z/kDNtOCq2eFKBPX4RVnacXekdjPUmcJHNpXtxmTXUUM+QF/K/e3845SVY MvACt2oWFuM1eCLSZJjmwTKTnKn4gn0LrCgXi8wKAb51HTXvzxfgcxWpOR/bXYehzM7DSV77plY 9KkCCo6j1ae7wqTfiqbPUjE5b79tE3ZCCVqzSPqX/mk4RhbvjunYxrWQ/bLutPtGQfPnpMxj4lK HWK89UcqodBfvGFP8IQO6vpzFCOgUsU974NSMV4uuBJUOxkP7VRWtpjF0 X-Google-Smtp-Source: AGHT+IH5O/s7k6StBYwOK0iZqdMv4nhYbfcmWByESEBx3STJj0d8+OR0Xa6Kf5n2YKV1waIzhw7cqw== X-Received: by 2002:a17:902:c411:b0:231:c6b9:ddba with SMTP id d9443c01a7336-231de36ba26mr130223815ad.20.1747627675140; Sun, 18 May 2025 21:07:55 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Paolo Savini , Daniel Henrique Barboza , Alistair Francis Subject: [PULL 16/56] Expand the probe_pages helper function to handle probe flags. Date: Mon, 19 May 2025 14:05:13 +1000 Message-ID: <20250519040555.3797167-17-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::530; envelope-from=alistair23@gmail.com; helo=mail-pg1-x530.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747628752836116600 Content-Type: text/plain; charset="utf-8" From: Paolo Savini This commit expands the probe_pages helper function in target/riscv/vector_helper.c to handle also the cases in which we need acce= ss to the flags raised while probing the memory and the host address. This is done in order to provide a unified interface to probe_access and probe_access_flags. The new version of probe_pages can now act as a regular call to probe_acces= s as before and as a call to probe_access_flags. In the latter case the user nee= d to pass pointers to flags and host address and a boolean value for nonfault. The flags and host address will be set and made available as for a direct c= all to probe_access_flags. Signed-off-by: Paolo Savini Reviewed-by: Daniel Henrique Barboza Message-ID: <20250313123926.374878-2-paolo.savini@embecosm.com> Signed-off-by: Alistair Francis --- target/riscv/vector_helper.c | 57 +++++++++++++++++++++++------------- 1 file changed, 37 insertions(+), 20 deletions(-) diff --git a/target/riscv/vector_helper.c b/target/riscv/vector_helper.c index 8eea3e6df0..3aec9a7731 100644 --- a/target/riscv/vector_helper.c +++ b/target/riscv/vector_helper.c @@ -117,25 +117,42 @@ static inline uint32_t vext_max_elems(uint32_t desc, = uint32_t log2_esz) * It will trigger an exception if there is no mapping in TLB * and page table walk can't fill the TLB entry. Then the guest * software can return here after process the exception or never return. + * + * This function can also be used when direct access to probe_access_flags= is + * needed in order to access the flags. If a pointer to a flags operand is + * provided the function will call probe_access_flags instead, use nonfault + * and update host and flags. */ -static void probe_pages(CPURISCVState *env, target_ulong addr, - target_ulong len, uintptr_t ra, - MMUAccessType access_type) +static void probe_pages(CPURISCVState *env, target_ulong addr, target_ulon= g len, + uintptr_t ra, MMUAccessType access_type, int mmu_i= ndex, + void **host, int *flags, bool nonfault) { target_ulong pagelen =3D -(addr | TARGET_PAGE_MASK); target_ulong curlen =3D MIN(pagelen, len); - int mmu_index =3D riscv_env_mmu_index(env, false); =20 - probe_access(env, adjust_addr(env, addr), curlen, access_type, - mmu_index, ra); + if (flags !=3D NULL) { + *flags =3D probe_access_flags(env, adjust_addr(env, addr), curlen, + access_type, mmu_index, nonfault, host= , ra); + } else { + probe_access(env, adjust_addr(env, addr), curlen, access_type, + mmu_index, ra); + } + if (len > curlen) { addr +=3D curlen; curlen =3D len - curlen; - probe_access(env, adjust_addr(env, addr), curlen, access_type, - mmu_index, ra); + if (flags !=3D NULL) { + *flags =3D probe_access_flags(env, adjust_addr(env, addr), cur= len, + access_type, mmu_index, nonfault, + host, ra); + } else { + probe_access(env, adjust_addr(env, addr), curlen, access_type, + mmu_index, ra); + } } } =20 + static inline void vext_set_elem_mask(void *v0, int index, uint8_t value) { @@ -335,8 +352,8 @@ vext_page_ldst_us(CPURISCVState *env, void *vd, target_= ulong addr, MMUAccessType access_type =3D is_load ? MMU_DATA_LOAD : MMU_DATA_STORE; =20 /* Check page permission/pmp/watchpoint/etc. */ - flags =3D probe_access_flags(env, adjust_addr(env, addr), size, access= _type, - mmu_index, true, &host, ra); + probe_pages(env, addr, size, ra, access_type, mmu_index, &host, &flags, + true); =20 if (flags =3D=3D 0) { if (nf =3D=3D 1) { @@ -635,7 +652,7 @@ vext_ldff(void *vd, void *v0, target_ulong base, CPURIS= CVState *env, uint32_t vma =3D vext_vma(desc); target_ulong addr, addr_probe, addr_i, offset, remain, page_split, ele= ms; int mmu_index =3D riscv_env_mmu_index(env, false); - int flags; + int flags, probe_flags; void *host; =20 VSTART_CHECK_EARLY_EXIT(env, env->vl); @@ -649,15 +666,15 @@ vext_ldff(void *vd, void *v0, target_ulong base, CPUR= ISCVState *env, } =20 /* Check page permission/pmp/watchpoint/etc. */ - flags =3D probe_access_flags(env, adjust_addr(env, addr), elems * msiz= e, - MMU_DATA_LOAD, mmu_index, true, &host, ra); + probe_pages(env, addr, elems * msize, ra, MMU_DATA_LOAD, mmu_index, &h= ost, + &flags, true); =20 /* If we are crossing a page check also the second page. */ if (env->vl > elems) { addr_probe =3D addr + (elems << log2_esz); - flags |=3D probe_access_flags(env, adjust_addr(env, addr_probe), - elems * msize, MMU_DATA_LOAD, mmu_inde= x, - true, &host, ra); + probe_pages(env, addr_probe, elems * msize, ra, MMU_DATA_LOAD, + mmu_index, &host, &probe_flags, true); + flags |=3D probe_flags; } =20 if (flags & ~TLB_WATCHPOINT) { @@ -669,16 +686,16 @@ vext_ldff(void *vd, void *v0, target_ulong base, CPUR= ISCVState *env, addr_i =3D adjust_addr(env, base + i * (nf << log2_esz)); if (i =3D=3D 0) { /* Allow fault on first element. */ - probe_pages(env, addr_i, nf << log2_esz, ra, MMU_DATA_LOAD= ); + probe_pages(env, addr_i, nf << log2_esz, ra, MMU_DATA_LOAD, + mmu_index, &host, NULL, false); } else { remain =3D nf << log2_esz; while (remain > 0) { offset =3D -(addr_i | TARGET_PAGE_MASK); =20 /* Probe nonfault on subsequent elements. */ - flags =3D probe_access_flags(env, addr_i, offset, - MMU_DATA_LOAD, mmu_index, t= rue, - &host, 0); + probe_pages(env, addr_i, offset, 0, MMU_DATA_LOAD, + mmu_index, &host, &flags, true); =20 /* * Stop if invalid (unmapped) or mmio (transaction may --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747628836; cv=none; d=zohomail.com; s=zohoarc; b=EyT8WFu4+Q8jv0SMsnkCJose2HnwaBvJNV/JUCYs4RWbRYzR4HhQsEu37PLEzOs343zehECbxSphcqMGID37jVkOFgRiBnOC1klZdcIEsoB63Gc+Se9tIEdYaYh75ZwJPU58puQqi3r+IRTPjB6GS/yMcncdOz0U8XOhnv4/Jak= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747628836; h=Content-Type:Content-Transfer-Encoding:Cc:Cc: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; bh=6qi58OsTABBr981B/8AZV6yobLaS4vDssxw7naPBl2U=; b=CMlovp4LepjiVCHmSMato+m6rS0m4Wo55akC+HORFaDLQCVeMixOtDZHyj2bMp+yR2vPwHm4DiX6z9Gg05gPj/W88Ja4a/PhnrDbFUqRtymTPg7KbgbvtCdZiOWN3GrNGV+G7SGD8dQoIYmiZymmW5BBZUwzRvwS42EuBsmzqVg= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747628836479433.4371811861764; Sun, 18 May 2025 21:27:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGs3L-0000bm-Cq; Mon, 19 May 2025 00:24:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGrnH-00055k-Cf; Mon, 19 May 2025 00:08:04 -0400 Received: from mail-pg1-x531.google.com ([2607:f8b0:4864:20::531]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGrnF-0004BT-Ej; Mon, 19 May 2025 00:08:02 -0400 Received: by mail-pg1-x531.google.com with SMTP id 41be03b00d2f7-af908bb32fdso3032599a12.1; Sun, 18 May 2025 21:08:00 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.07.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:07:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627679; x=1748232479; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=6qi58OsTABBr981B/8AZV6yobLaS4vDssxw7naPBl2U=; b=F6O7KY7C9mvLbeDWQuHISTwjJAVVEXuF54dh+ghqzGP5kGxZKsbWV0zdbccrSSHdwh XYNobNzp6IMLzn3iHGnawrvlW6rcq2ucIKpdgR8S14rmmXTjjLDc+swYlu2KidPtj1ng DfQgk2U0TBl7V5Yn7TXXzIkyQCXtY6gg9goxo5keFNl1v/xp491v2un1w3rMhxJExXKZ 1Ck5ftpVIxHynit+JfLta1vnD4nFQPINxnf4Q+dC4qdHyuhk58Mvn8UptmEfsVz26Nyt FDENhRZYHyVAVNRko8/fgNWE6KEujLf+niK8Lol7GygAn9AGndSMtoRihw+mm3x5zTjy Xb8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627679; x=1748232479; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=6qi58OsTABBr981B/8AZV6yobLaS4vDssxw7naPBl2U=; b=Z9udmPdRo5y64wBai/Ym6dcY2x23iabt4N9T8uryEnF4UFepP2jinoc39EzJgPE2Kv LXRO8j7ml+qpQW02tZIJfV/KlFAGhWCjVTd+iWA+bVkDbkhWx2JQ9M2rULgXaLbSOq5E 94+ltEbnGE62EbVmVAiqZGz1QfTKWl7qgcfLJx5nXHyATXhh/oJJ1mzDMScdCF4/ie7h gj4tnxPXTITAX02cqmOcU0/w8XrhwYRciEeAiZSuPxEsQJPvrgwPKH/fXpIsfLFC3FZJ xVlwbYakio2f2sDP/NN2bbjHqx8qDWyrKeKbxiIlMlZ3CyKpsYSlfHCSi7Z+v3gPbrhL t9Pw== X-Forwarded-Encrypted: i=1; AJvYcCVXpuiLPIY8qWIANdSQTmmyC2TdFdltLZVtlG09cZ0Pe4UcMMvIJ7rG4ob61xpGOWMUo5LNuBXbMIiNJg==@nongnu.org X-Gm-Message-State: AOJu0YzHMrPpJIxGoFouavMvw2xCqyBWEbT2J7C1mAUDM93oNeZnjNLr KWOB43C7qluhCaciWAyGRZVFZVX5HeMfONYWDhm/zkl/NTT1fZCM4/pmAWsiZA== X-Gm-Gg: ASbGnctM5wXxsFjZ7Tv/u/0D++GfDgH6t6eh6StqC8Vuc3JxJ54fWqWNhnq5ZhNIgs5 0YT34oeXPbSaGNiNdelvgCI+BfpXjEjYfbP8G5Vt0DTlLu36dutDCHZEkGXwAMPBfwRSGP1sKE0 r614sf0XrBvSfxiiEMexR4C8752WXwkhaiJvaMhmfwq/EgjIDjhgnop7lRGwz+zNWyIDuUEhyYK mr4gn8xyU6kanPIbVbAO1u0tyYzugUVsN/tdgNyvteZq++qoI0PqerLm4zvVoZbH/WFTQFkYJUq AuYozWGCQ/Hs5pka7qVk/7YHgsrASpSH3YzR4qn29bNOZf6fdoDBxkKa3ReuyJzPVLjwyCMH9ZR 0xHIRTWikl6cN9+ZUMAhxH4gK9SJURzJUwIAJlnz/zsZZLotCq7vJJeIx X-Google-Smtp-Source: AGHT+IHKmb4D0nfIS1CHukiUDBdgupwm+w1qzLJ7ucRLuKxzcuVW6pNInR8p3PeBQwGpqEb7XLqr5w== X-Received: by 2002:a17:902:c202:b0:231:c89f:4e94 with SMTP id d9443c01a7336-231c89f4f9amr147373365ad.21.1747627678692; Sun, 18 May 2025 21:07:58 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Paolo Bonzini , Kohei Tokunaga , Alistair Francis , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-stable@nongnu.org Subject: [PULL 17/56] hw/riscv: Fix type conflict of GLib function pointers Date: Mon, 19 May 2025 14:05:14 +1000 Message-ID: <20250519040555.3797167-18-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::531; envelope-from=alistair23@gmail.com; helo=mail-pg1-x531.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747628837562116600 From: Paolo Bonzini qtest_set_command_cb passed to g_once should match GThreadFunc, which it does not. But using g_once is actually unnecessary, because the function is called by riscv_harts_realize() under the Big QEMU Lock. Reported-by: Kohei Tokunaga Signed-off-by: Paolo Bonzini Reviewed-by: Alistair Francis Reviewed-by: Kohei Tokunaga Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-ID: <20250410161722.595634-1-pbonzini@redhat.com> Signed-off-by: Alistair Francis Cc: qemu-stable@nongnu.org --- hw/riscv/riscv_hart.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/hw/riscv/riscv_hart.c b/hw/riscv/riscv_hart.c index ac6539bd3e..333083a4f1 100644 --- a/hw/riscv/riscv_hart.c +++ b/hw/riscv/riscv_hart.c @@ -104,8 +104,11 @@ static bool csr_qtest_callback(CharBackend *chr, gchar= **words) =20 static void riscv_cpu_register_csr_qtest_callback(void) { - static GOnce once; - g_once(&once, (GThreadFunc)qtest_set_command_cb, csr_qtest_callback); + static bool first =3D true; + if (first) { + first =3D false; + qtest_set_command_cb(csr_qtest_callback); + } } #endif =20 --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747628020; cv=none; d=zohomail.com; s=zohoarc; b=UAU9CmjAh7GkuT1lwvUAUftvxbjg0LEH2mQDzVr9rpEtVimIrrxpcWKPhBsyAnF+PWWl0eFImv8eior9NZlLS98H0Q8XEcEd5lcA/2opsh55Xe5TWuXB3XkcMRqEcx7oumLGyjOJidnRE/7CvpT24TYcNle2hU4Rtt2Xz9klOyc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747628020; h=Content-Transfer-Encoding:Cc:Cc: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; bh=vp8MYp6bfU3nKiXsdBY8MEFgu8O1kZSwn/lekxA3uRE=; b=TrBI38cKeFBbQ6TXTNsibkkGRNawHGVbM2u0fT5jfroeYH94yG6W5dZMLwoljfwPY4/a8Xj9oDyFAmIzVFzTas+Kiz0f3tUGju1XC9/0UGZYGMjU/urKaHxi2RHzLB2MwZ0kSqDdv7ENghpdPJHTXX20OxxBanRGxNMF6l/3nh0= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747628020445221.59702503939002; Sun, 18 May 2025 21:13:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGrnN-0005DZ-Cw; Mon, 19 May 2025 00:08:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGrnK-00058N-SL; Mon, 19 May 2025 00:08:07 -0400 Received: from mail-pg1-x536.google.com ([2607:f8b0:4864:20::536]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGrnJ-0004Bb-6N; Mon, 19 May 2025 00:08:06 -0400 Received: by mail-pg1-x536.google.com with SMTP id 41be03b00d2f7-b26f5f47ba1so1261486a12.1; Sun, 18 May 2025 21:08:03 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.07.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:08:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627682; x=1748232482; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=vp8MYp6bfU3nKiXsdBY8MEFgu8O1kZSwn/lekxA3uRE=; b=YZKQSb82owQ475o1sSg9xNHlPUzlbaw/kUbYZgUPq6EIoUZ9bXhqivXyGmP4jft254 CioMJrFced1qrjXRbTKvL3dJ9yvhr4zSQip+DZqBfzwhyBdV8g0t3D+V1ByYYhMgoYWs MRFulGumynUthw6XM+MpQJC+RnKaPJsRGVow8bSFFcTtYJIU/Vk/Vyr8PCR5O8IhlD7E RddPQOBz9a3w6/ejqX69CkHMYyegdIeQVRMSHJ7MBHonC/EqI6E7hHhOGMYdqxap9bJZ F4dNobE5Iz+JYv/1mWTt0bioIfBqSAgZ01W4Ov5V50KsjcMBmjT5FfdklQByjD1PbuJ4 SRZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627682; x=1748232482; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=vp8MYp6bfU3nKiXsdBY8MEFgu8O1kZSwn/lekxA3uRE=; b=QvCo37WF5WNr3zy0xwwmQarfhkqN94cRLey5om9D5OX476/1YTxqgQSkOYohd812SM bnRtX66CjxKpKg1s8u5ZP9L1XoIgnte7PLYdMA2JllqJidwxSYhtMXZYwfe2H2q0g2bI vqU2vFzEyAgMEalR2dW9e+/TY84d0wCMl+GKGBFSmL4rqFDYxR/hdohexjcgiPjKGqH3 tmhZDjaDUB5skXbiUXlgj4/GfAQ1+bXM5DvbJCSj5/3gvTJrPgyNnfVPGa+NyYF4r9Lv ZNADT25+7FrGr+yxopOPZY+9Ge85VbKkSrerUHAJgt5bqOBJzkypVnQ5GkTuEPBF6VDF vZUA== X-Forwarded-Encrypted: i=1; AJvYcCXmjdXyBQR9CObtULhyQjI8uWZnzUBIYgfcyjsAzny6ZfzJkI4uqWIFjRWEnj7fGx9sHM9riHKI7cJdag==@nongnu.org X-Gm-Message-State: AOJu0YwITfRQq0J+lzI6TebyhX2rngXVTNc74y35iEiIGkLhSzvTgjf1 ikGu+ApwneDVEzW+PLqm09qfDxb/MUjorEEPLaQWo+gGJS6h+cUz4+iLeBrdRg== X-Gm-Gg: ASbGncvx9j1GkIWVkMW8XWC5kXJ+cqCYzerwr626+D8KVE0zaWMxoZEy4qwaCvdUj3P 54zp7tX6FtHLNXhqk/nZYiNYNo7o+AOHVUEL30sCaZf9coZ4eoJz/htistmnPoH12kK2Ip/e5lV fKK+ItSlgQZJbIsHbb2I1AUVn7f2NxTVflPFluHtqxrVzu8LpWl53LzqnbU95fTM+YACmA+M6Z2 7Ayjnwv1/aXzAIoe41ogp83xoLDIOYsjXiu0X39bijeDAN4Je0hdCx9IDsb0JfWk208QVUY5DNM zyJd8XcPSGrofKW8ahOLYXn8cFbH7M80JY3Nq7qMgs/Mwiy1WjvH3TK1Chxk6aMU9Vh2i8+ZrOj Dus3GzIRXRbfXDnNcytTJO4Kgz/ZBHscIlKUO/dGXaN/elOenRo7QELj1yActtVSzdKg= X-Google-Smtp-Source: AGHT+IFA8PE6NSgLbIfqqJqtl/4eOoUwlicn9jZ09I7Gc5/DDUYGusnGE3Vm6rujaiYhtDAWbUyCgA== X-Received: by 2002:a17:903:46d0:b0:231:d16c:7f6c with SMTP id d9443c01a7336-231de2e95ebmr156262495ad.11.1747627681996; Sun, 18 May 2025 21:08:01 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Ziqiao Kong , Alistair Francis , Richard Henderson , qemu-stable@nongnu.org Subject: [PULL 18/56] target/riscv: fix endless translation loop on big endian systems Date: Mon, 19 May 2025 14:05:15 +1000 Message-ID: <20250519040555.3797167-19-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::536; envelope-from=alistair23@gmail.com; helo=mail-pg1-x536.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747628022829116600 Content-Type: text/plain; charset="utf-8" From: Ziqiao Kong On big endian systems, pte and updated_pte hold big endian host data while pte_pa points to little endian target data. This means the branch at cpu_helper.c:1669 will be always satisfied and restart translation, causing an endless translation loop. The correctness of this patch can be deduced by: old_pte will hold value either from cpu_to_le32/64(pte) or cpu_to_le32/64(updated_pte), both of wich is litte endian. After that, an in-place conversion by le32/64_to_cpu(old_pte) ensures that old_pte now is in native endian, same with pte. Therefore, the endianness of the both side of if (old_pte !=3D pte) is correct. Signed-off-by: Ziqiao Kong Reviewed-by: Alistair Francis Reviewed-by: Richard Henderson Message-ID: <20250415080254.3667878-2-ziqiaokong@gmail.com> Signed-off-by: Alistair Francis Cc: qemu-stable@nongnu.org --- target/riscv/cpu_helper.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index d5039f69a9..2ed69d7c2d 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -1566,9 +1566,11 @@ static int get_physical_address(CPURISCVState *env, = hwaddr *physical, target_ulong *pte_pa =3D qemu_map_ram_ptr(mr->ram_block, addr1= ); target_ulong old_pte; if (riscv_cpu_sxl(env) =3D=3D MXL_RV32) { - old_pte =3D qatomic_cmpxchg((uint32_t *)pte_pa, pte, updat= ed_pte); + old_pte =3D qatomic_cmpxchg((uint32_t *)pte_pa, cpu_to_le3= 2(pte), cpu_to_le32(updated_pte)); + old_pte =3D le32_to_cpu(old_pte); } else { - old_pte =3D qatomic_cmpxchg(pte_pa, pte, updated_pte); + old_pte =3D qatomic_cmpxchg(pte_pa, cpu_to_le64(pte), cpu_= to_le64(updated_pte)); + old_pte =3D le64_to_cpu(old_pte); } if (old_pte !=3D pte) { goto restart; --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747627783; cv=none; d=zohomail.com; s=zohoarc; b=dZDWRI3ZXHsMgMoSZ/mg85wr2EPHcE0qUqUiYiAFO+7yx1QSsmT88pHvXdXNLBEdrL7QwN8onQh0+k6bfvy8wZQrvN65sce3uM6NZj5snN57F9KPemTnsTeYokvskExUat8zqscA8Cs+SHooO5PeTH6QumNVy/pDF8VNKFTZ4+0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747627783; h=Content-Transfer-Encoding:Cc:Cc: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; bh=G78cIS/PHCPYMAvVVMMp56jlLZJ95JW7Zc/OeF+uzTE=; b=IUIaP/l+zifbu1ml9QblQWBTT/LGeouEGgoJn1t20yZ47SZKVU2/zmX2XAleHy+vER9sT/liGN7dtwedN1XP/ZdcwcCfTAdSy6g1JL8ska1eH0iAYFtsk29ZMUkGzCZ+l0775sa+g9tzyoTBI03lKEuK6hNq/omUJTyCOw8gPxM= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747627783784866.8380731941463; Sun, 18 May 2025 21:09:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGrnQ-0005Hj-Du; Mon, 19 May 2025 00:08:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGrnN-0005DL-8F; Mon, 19 May 2025 00:08:09 -0400 Received: from mail-pg1-x532.google.com ([2607:f8b0:4864:20::532]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGrnL-0004Bo-KG; Mon, 19 May 2025 00:08:08 -0400 Received: by mail-pg1-x532.google.com with SMTP id 41be03b00d2f7-b07d607dc83so3083894a12.1; Sun, 18 May 2025 21:08:06 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.08.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:08:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627685; x=1748232485; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=G78cIS/PHCPYMAvVVMMp56jlLZJ95JW7Zc/OeF+uzTE=; b=PusYFZCjnwE3zNz8hHzTs/uAdTr7Zcx/TKotXZhTvvb9jaDEAmf4VvC4nfe8/Ak0FC b7gn9Fgqv6zU79oFJinXmyamKkivwhxsX1L0A2HxNGdOgrvcNPqvm14BCS5GRdMyEas3 S4BuIBSLE14PBURbC+HK8KNGPJCGOh+nzCbJIREsZ1B7Zt9Jn+YmAph0zQoZ/R0DAVZi nmEzcb09IhgwsrzubEy2a7HxBAwVs4xeNBUX7sjrQe5GHZd5a5b73bdBKoWzCt/6dsW+ jRvG+6U+tw0UFzEINVgqOE+klAxZD6aUPeYvRSpukqZGWyw+jQnFOrQE6oHTCIcqg78W aqKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627685; x=1748232485; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=G78cIS/PHCPYMAvVVMMp56jlLZJ95JW7Zc/OeF+uzTE=; b=LiVt6pNg1joehb/4AYEG+B4aT0fX1EeVFcgUJRXpZtViQD/4mCCFaJ9fEClRI0G1y8 8Q/rb6edHj7apoQgNHntP0x0vEtAwM5W8j0daoPDtUmpe/75vnivJRTHunOSzcQj0BMZ w4GUWFTqN9jfRDxjQOzPWVoASq7zfLBUh5Ikq+sF9aKNsgqCDLWL46zbBhLWNDkyLYpm ptynPEets0mhDMRwCvLQgNORn4sJ+ZznvBaD+7377eGaO2gVjjkvSZEmcIz6S7QKpQTF nM0bJX2pi/awgS03wWUwwdXcOBzd7Jnv5BmWHSfj9wF0RDzG+Fv6H1R9izgkaFU3vdXT 5I7g== X-Forwarded-Encrypted: i=1; AJvYcCX37IsK967fiSDzozmk9LZbi5C6qZACEy4g6k+61bDMVAquFTxtflCk3ochC5pmISxyL0xY+Q9BS1MfKA==@nongnu.org X-Gm-Message-State: AOJu0YztQWm6xkmqrz3vKVUOz76Fo2zantODDGp+Uap1EmD16ydjDsrp HZyjAenswiDbh7aHw4MX1D85M6MbgFKXen5jgrdCVNX5YDh4ge7Y9k5/dihMXw== X-Gm-Gg: ASbGnct03Iwb4XN+GMuUp/RY5tyStvB+cw0Cso3vbzKPTytaQQKRt0H9gjinWXLYgsZ or3vmVn+wVOhZi71MpEv0krpIEO4Y3CJ3D3qZudDzJxWpAPZZ/sKx8C88o+RjvtH2D0cEi2rSeu g5Y70byQ20Mn0HV1gtqx7PEGdxxX7QKwdZmAWp57JK6qSoDcNd2yWW9yzLzuBfxmDrhS6yR2zIO L6+XnRtuevNpnfCnWVuT02KspRbTL+DzwOr/25R6/B/WG0RRZvidMXGJLOL1sFNi4jdwrgZy/DB xs90WeRzRC1cD89ehUK4HCP9U6O06Pneu9wt9Vg40oZQTagsRx3UuBaq5lL14CxQsI+mv2rD6o6 HtQHtG1DRuGF3CGuBbTL0VewnU0tdAPSxsKhSSfTCRAgLwsilTw0rK26C X-Google-Smtp-Source: AGHT+IHB+Ofrx8ARrqHW2iD0d3Y3jP13tQeXYnOb+o4Kq9gf4twLVwdvNeVxUkH1ttNpT7qpU/D86Q== X-Received: by 2002:a17:902:cf12:b0:223:669f:ca2d with SMTP id d9443c01a7336-231d45a9adamr188926235ad.35.1747627685479; Sun, 18 May 2025 21:08:05 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Icenowy Zheng , Richard Henderson , Alistair Francis , qemu-stable@nongnu.org Subject: [PULL 19/56] common-user/host/riscv: use tail pseudoinstruction for calling tail Date: Mon, 19 May 2025 14:05:16 +1000 Message-ID: <20250519040555.3797167-20-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::532; envelope-from=alistair23@gmail.com; helo=mail-pg1-x532.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747627784515116600 Content-Type: text/plain; charset="utf-8" From: Icenowy Zheng The j pseudoinstruction maps to a JAL instruction, which can only handle a jump to somewhere with a signed 20-bit destination. In case of static linking and LTO'ing this easily leads to "relocation truncated to fit" error. Switch to use tail pseudoinstruction, which is the standard way to tail-call a function in medium code model (emits AUIPC+JALR). Signed-off-by: Icenowy Zheng Reviewed-by: Richard Henderson Message-ID: <20250417072206.364008-1-uwu@icenowy.me> Signed-off-by: Alistair Francis Cc: qemu-stable@nongnu.org --- common-user/host/riscv/safe-syscall.inc.S | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/common-user/host/riscv/safe-syscall.inc.S b/common-user/host/r= iscv/safe-syscall.inc.S index dfe83c300e..c8b81e33d0 100644 --- a/common-user/host/riscv/safe-syscall.inc.S +++ b/common-user/host/riscv/safe-syscall.inc.S @@ -69,11 +69,11 @@ safe_syscall_end: =20 /* code path setting errno */ 0: neg a0, a0 - j safe_syscall_set_errno_tail + tail safe_syscall_set_errno_tail =20 /* code path when we didn't execute the syscall */ 2: li a0, QEMU_ERESTARTSYS - j safe_syscall_set_errno_tail + tail safe_syscall_set_errno_tail =20 .cfi_endproc .size safe_syscall_base, .-safe_syscall_base --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747628809; cv=none; d=zohomail.com; s=zohoarc; b=GZ7iZIdpfHq/KDgJBpXBIRCmL1UVKdsDbfDSN+cobQFzZD10OWKs2mMS+2fSlBqyDLUtPmBR73KD8fLKm3SGcbw/AJ0i3SWWFHLu88aN2Az055iqmIue2CnNE9eQAq2SaIpS2WBro8ndVDtSVmoJ8csoQFAYsnjJnGWLsWrzEQY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747628809; h=Content-Transfer-Encoding:Cc:Cc: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; bh=Emiw7dknS6nI7w0EE/PpXVbkuw9YpLuTjEDIBsyRuEs=; b=OL61Qv4OJbBVYqFQ6n2vyLRF3iJ+smMn1vVVtDjDKFK73rGZFLrYs/cld8G145+Jpn1JQLiwvBL/9w+wH1LMWxpRysvNOl+FqaJhDJhdPui2IcGLePWiCc1CQxHk2vGmYP5j4Zky+XYRFBFwBCtGNm+WlTP7pC3MliHVbmuZ80c= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747628809739812.9009069858342; Sun, 18 May 2025 21:26:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGs3L-0000bl-3L; Mon, 19 May 2025 00:24:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGrnQ-0005KZ-Tf; Mon, 19 May 2025 00:08:13 -0400 Received: from mail-pl1-x62e.google.com ([2607:f8b0:4864:20::62e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGrnP-0004C9-54; Mon, 19 May 2025 00:08:12 -0400 Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-2322f8afe02so4403445ad.2; Sun, 18 May 2025 21:08:10 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.08.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:08:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627689; x=1748232489; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Emiw7dknS6nI7w0EE/PpXVbkuw9YpLuTjEDIBsyRuEs=; b=YxaqzI7OpCOanDQFEnxSry4ysxqH+sxEQupk4bkCtRxGslku9PWHtNECg8LCSDCjNz HPQ7cWeTchI7jhBkQZkxwHWy7t2agdvmcZySQeplW23ENSshVOuYja/E54Gcjc43jxZ1 dYz6a5PFPzcTASWQAprOOG9oZL6zZksPIez88exct0ZdMDVJ/6+K/vf5ZxDlnHCy5dag GLR3Zur0RGzqe1IzZ+u502Ldi1dN3v14joQuc2n4DxISRt6aLQC73VhK7+nA3mHEcit4 iLiHy5PNvBJ65E1pgnR68iIx43VdU/sgxQCHxrIFh0eJiSaItnbNITwL7Lipx5yDE+ps iI9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627689; x=1748232489; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Emiw7dknS6nI7w0EE/PpXVbkuw9YpLuTjEDIBsyRuEs=; b=A6iTAdlHQbtD0015+ATIUWqmPdwef425+k4eVr4LKocvX5MgWP81Te0/VnVUdkwg1M 365jHKzsUfiSQZX0KdGg0bi/jWCitl6ns8QdozsytxlYDJfog7ASxTfTl3VqBRU5vIC0 GUYq4tGFzW9ZCXScFSHilznAmHnZEDhGy8BZ6t05HCZFsrcnKlGr3M2SS4jj5bSS0wrD Bdgzh3rmoeLGoVv6vLosl5mcSitRbkNzfLbA9c9ejtJdze+jBz+uEn9SLCKxZKL18IqY qZa7lLizuDQoc6ziHx7WV0/dltaXLIow+I3YBcLrm2P/fjzSGYJVuBfA8YL1IU8jEbGO TXvQ== X-Forwarded-Encrypted: i=1; AJvYcCUpeBtWGCBNVoiAgWjK2UKIGAFeRHkD2PvifB4WLLIlEKpvAlcKk/UvsOaO5+8a8RBio1p+1m1KV86s+w==@nongnu.org X-Gm-Message-State: AOJu0YzIIsdltSAjCMJZK4J2jfEcWMMaDeNXImO40zQSBC9p+uBEfRLN efdDhaIK3VFFMeN+lcrrNR+KXXmW1Z1K2f9LXvqo8iATku4CPlNdFyyVEsrevA== X-Gm-Gg: ASbGncsRHMNeSAXWc0ycA8q6orLT2sEtmCD/expeNofp/V/3IUdROkcv3Eneh3OsdKi tewTKJMFDB8Fy13/v4jUHVkEGW06OzaBH++PXvcy5I8dG4Gnd+QGJecV/UZJdFrwXMy1vjbBSUh IwCXHLVX1vxkcv5g4go4SJxxN9ougfTrMr7L4ynk/1UXX4lJyI+ieoOzpjqI8oQC51JvMJddnjQ iH+IgUhbM5DbCpawzPYbR+A/fz3xOH2GCP4x/H3e/eMqxdfRRoJpIvAbrbLSChveuTouJuPOd8z w6UqGzWI2X1G/HnAF5xYN1sI1HW6Mz/86yFPFf0gBgJrSc4/3d9PlqHibZ8I7V5xcurWbFmMjQo RoIuEoOL71iXjyHccOmiXBRia0JWOb6oWU5gZqrN9S/hnzXnRpWvl9Pfw X-Google-Smtp-Source: AGHT+IHXRPXBStQTw09+6mHE5S+X5/yho/xVDUu0tBNefKzIiNRhouC+2laOEvfd9g6IFUkENKbN6Q== X-Received: by 2002:a17:903:1a08:b0:224:1d1c:8837 with SMTP id d9443c01a7336-231d451214emr169221425ad.19.1747627688988; Sun, 18 May 2025 21:08:08 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Anton Blanchard , Daniel Henrique Barboza , Max Chou , Alistair Francis , qemu-stable@nongnu.org Subject: [PULL 20/56] target/riscv: rvv: Source vector registers cannot overlap mask register Date: Mon, 19 May 2025 14:05:17 +1000 Message-ID: <20250519040555.3797167-21-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62e; envelope-from=alistair23@gmail.com; helo=mail-pl1-x62e.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747628811275116600 Content-Type: text/plain; charset="utf-8" From: Anton Blanchard Add the relevant ISA paragraphs explaining why source (and destination) registers cannot overlap the mask register. Signed-off-by: Anton Blanchard Reviewed-by: Daniel Henrique Barboza Reviewed-by: Max Chou Signed-off-by: Max Chou Message-ID: <20250408103938.3623486-2-max.chou@sifive.com> Signed-off-by: Alistair Francis Cc: qemu-stable@nongnu.org --- target/riscv/insn_trans/trans_rvv.c.inc | 29 ++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/target/riscv/insn_trans/trans_rvv.c.inc b/target/riscv/insn_tr= ans/trans_rvv.c.inc index 4ca7b15da1..2110392d1c 100644 --- a/target/riscv/insn_trans/trans_rvv.c.inc +++ b/target/riscv/insn_trans/trans_rvv.c.inc @@ -100,10 +100,33 @@ static bool require_scale_rvfmin(DisasContext *s) } } =20 -/* Destination vector register group cannot overlap source mask register. = */ -static bool require_vm(int vm, int vd) +/* + * Source and destination vector register groups cannot overlap source mask + * register: + * + * A vector register cannot be used to provide source operands with more t= han + * one EEW for a single instruction. A mask register source is considered = to + * have EEW=3D1 for this constraint. An encoding that would result in the = same + * vector register being read with two or more different EEWs, including w= hen + * the vector register appears at different positions within two or more v= ector + * register groups, is reserved. + * (Section 5.2) + * + * A destination vector register group can overlap a source vector + * register group only if one of the following holds: + * 1. The destination EEW equals the source EEW. + * 2. The destination EEW is smaller than the source EEW and the overlap + * is in the lowest-numbered part of the source register group. + * 3. The destination EEW is greater than the source EEW, the source EMUL + * is at least 1, and the overlap is in the highest-numbered part of + * the destination register group. + * For the purpose of determining register group overlap constraints, mask + * elements have EEW=3D1. + * (Section 5.2) + */ +static bool require_vm(int vm, int v) { - return (vm !=3D 0 || vd !=3D 0); + return (vm !=3D 0 || v !=3D 0); } =20 static bool require_nf(int vd, int nf, int lmul) --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747628977; cv=none; d=zohomail.com; s=zohoarc; b=g8OAVfnDkcjySfvjqsESGSX5n/W5DgQjj3UutrHXg9UA9SVFKrJ8x+jCgsf0qXGmI/trka3xBaP1gtuV3MpVj1SCTX6W38L0JSE3r36ZxYXUeRvMl/hWRYUZsWdjNUGp65DUjfwg8x9S46/wPLUfTU1Jc7wHzJutn9OexalKHkA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747628977; h=Content-Transfer-Encoding:Cc:Cc: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; bh=UdCffJ+XNsE2W4eMa2COlJLe6Kq0hb7x+qX3poViG4U=; b=HUB5dsGZgVX2jHYMRCEkf4x/E4+oFF11dPu3t+cgv4PvZFbBGyMteb8KaN6QE1dMq/4qWK/du4z79F4jzOwlXZdhRD8wZOwd+NeeOHKHchUlgjmLbf9CTkGSXqh0YdmM/Q5kORbZEANDvS6VUIJuSPwigqpxnVkz8NL6zDKk4CE= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747628977092341.38156632303014; Sun, 18 May 2025 21:29:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGs3P-0000cs-3v; Mon, 19 May 2025 00:24:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGrnU-0005X4-Cg; Mon, 19 May 2025 00:08:16 -0400 Received: from mail-pg1-x536.google.com ([2607:f8b0:4864:20::536]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGrnS-0004CS-Mp; Mon, 19 May 2025 00:08:16 -0400 Received: by mail-pg1-x536.google.com with SMTP id 41be03b00d2f7-b1fde81de05so2407529a12.1; Sun, 18 May 2025 21:08:13 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.08.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:08:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627692; x=1748232492; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=UdCffJ+XNsE2W4eMa2COlJLe6Kq0hb7x+qX3poViG4U=; b=TF5PIKrWeYFQqmOQjoD7gdFYulzkluFP7iILyISlwK06xpeghX/HpU87skjrcM++4Q bszihkpsEq3AguAHViUnlPbAIWOPCCH3yqipWFQS005DZ8TsNcLX9rUWxOg7A+RXazv3 FWp5IGe/SrPFu7Yj6zBc54urVqzFgVTCELZ+Ci9e+3P5lERw3yQZjn5o5wnHys+4ZiyY xolYzt34gG+ELPXD67xQq8sjQR4rcBlF4H4ZgjYyHBxTg5S4yFXb4s4YYaJU/1qK+5kt QkyzHPdmNB+zzShEMBNSSu4O/n3YaNHeOOMQi0wsK8C09iAzQ1MGAyaJPplb28CqX6CR o1bw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627692; x=1748232492; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=UdCffJ+XNsE2W4eMa2COlJLe6Kq0hb7x+qX3poViG4U=; b=HSCbRr9i1l0JWWEnXMk7GkV1nj7OyjVc81LXWV9rRMYzyecVhgnIPNSWJywDMQwPsd sh0pAZntecCn6EHQJVN/zntf7f9/dn36ozfYUessXwGLEEKFf4Nlu55V7oTKuPEzWCeu ghfMVONdz1qJrHXO6Pfx3VP+PEsLXaHgnsxfOP/7ApneiIKRQhE7lTP/RruW+7abuNPp JE8q6CskfjbqLfdfhwnSCqnKcGts3yWB/J0L2zpJ44v2bBnGKmTBtzBRjpQbENB6EHh1 gRUx/SgGNXrdzW/MBX09uNnJl2gWsyK/ANwCIsjrKk/6X7s/b99vhN3QHJH4ocrbSgqa ofiQ== X-Forwarded-Encrypted: i=1; AJvYcCVM7Gao6iB2rFU42ZfReM5hwxrfhb9TdMCkkkqp+MEOhaM72hVQKq0gYRuamjen/VIB/qfNpyxTderR8Q==@nongnu.org X-Gm-Message-State: AOJu0YwnHrz3ZVmKJk2I9TkMjCl0hBcnLA1dz9XPAvVo2otxElD4Jsi8 GoEGzwbxUJMWotj/m5YiPBeqUIOOI88QBhpu2Q2O2JNP9SDnDLzfB5IrltK1IQ== X-Gm-Gg: ASbGncvZIWOy5LZeOFKrSgxW9XD6WbJWnyKDsNnjmX7Sn/SvmB65p37LqjftMAQDEEp RI+1nhsuoA/M1l4EX0kq/v64lIujPShBxZi6HtRZdGka66VxCzTQHHlI/V5eBxT/ceKk0Tgyeeu Tptr6lGwLNuXta4GCFlJv6b9nCGUcWjJnuAh5A/Wd+sSokStZdcuZN+xjjdoTnVXjWxcTRvAkXk /H/yQdEcXmmDu+OwVNdw0s3HKR37nqUlczvNZ0qmdJ0cb1QA4t9btmCtREitQy1Tpu6qrtjkQ8v C3ldhx+Haylwa5QAzl43ZIi8WkYyi0uNiJrud+Y5H8yQ4A6xi/T+a15uZ3c6wIKFOZ1781YFBv0 WBvcf6aEWIZKOqCn5aVHIltQTU3fSBche3eNUwS8nSZ/wV1E+RIyAMftB X-Google-Smtp-Source: AGHT+IEhKnvIaSPuM6czV7eN03ZR3wBAfCPA/L4ttEtGU58y2sc3XRtbVgUs6Qow89/bTdQHCJgxEg== X-Received: by 2002:a17:903:1b6d:b0:231:cec7:34fe with SMTP id d9443c01a7336-231d454ebb5mr172968135ad.46.1747627692486; Sun, 18 May 2025 21:08:12 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Anton Blanchard , Daniel Henrique Barboza , Max Chou , Alistair Francis , qemu-stable@nongnu.org Subject: [PULL 21/56] target/riscv: rvv: Add CHECK arg to GEN_OPFVF_WIDEN_TRANS Date: Mon, 19 May 2025 14:05:18 +1000 Message-ID: <20250519040555.3797167-22-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::536; envelope-from=alistair23@gmail.com; helo=mail-pg1-x536.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747628979134116600 Content-Type: text/plain; charset="utf-8" From: Anton Blanchard Signed-off-by: Anton Blanchard Reviewed-by: Daniel Henrique Barboza Reviewed-by: Max Chou Signed-off-by: Max Chou Message-ID: <20250408103938.3623486-3-max.chou@sifive.com> Signed-off-by: Alistair Francis Cc: qemu-stable@nongnu.org --- target/riscv/insn_trans/trans_rvv.c.inc | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/target/riscv/insn_trans/trans_rvv.c.inc b/target/riscv/insn_tr= ans/trans_rvv.c.inc index 2110392d1c..d8333d8311 100644 --- a/target/riscv/insn_trans/trans_rvv.c.inc +++ b/target/riscv/insn_trans/trans_rvv.c.inc @@ -2687,10 +2687,10 @@ static bool opfvf_widen_check(DisasContext *s, arg_= rmrr *a) } =20 /* OPFVF with WIDEN */ -#define GEN_OPFVF_WIDEN_TRANS(NAME) \ +#define GEN_OPFVF_WIDEN_TRANS(NAME, CHECK) \ static bool trans_##NAME(DisasContext *s, arg_rmrr *a) \ { \ - if (opfvf_widen_check(s, a)) { \ + if (CHECK(s, a)) { \ uint32_t data =3D 0; \ static gen_helper_opfvf *const fns[2] =3D { \ gen_helper_##NAME##_h, gen_helper_##NAME##_w, \ @@ -2706,8 +2706,8 @@ static bool trans_##NAME(DisasContext *s, arg_rmrr *a= ) \ return false; \ } =20 -GEN_OPFVF_WIDEN_TRANS(vfwadd_vf) -GEN_OPFVF_WIDEN_TRANS(vfwsub_vf) +GEN_OPFVF_WIDEN_TRANS(vfwadd_vf, opfvf_widen_check) +GEN_OPFVF_WIDEN_TRANS(vfwsub_vf, opfvf_widen_check) =20 static bool opfwv_widen_check(DisasContext *s, arg_rmrr *a) { @@ -2789,7 +2789,7 @@ GEN_OPFVF_TRANS(vfrdiv_vf, opfvf_check) =20 /* Vector Widening Floating-Point Multiply */ GEN_OPFVV_WIDEN_TRANS(vfwmul_vv, opfvv_widen_check) -GEN_OPFVF_WIDEN_TRANS(vfwmul_vf) +GEN_OPFVF_WIDEN_TRANS(vfwmul_vf, opfvf_widen_check) =20 /* Vector Single-Width Floating-Point Fused Multiply-Add Instructions */ GEN_OPFVV_TRANS(vfmacc_vv, opfvv_check) @@ -2814,10 +2814,10 @@ GEN_OPFVV_WIDEN_TRANS(vfwmacc_vv, opfvv_widen_check) GEN_OPFVV_WIDEN_TRANS(vfwnmacc_vv, opfvv_widen_check) GEN_OPFVV_WIDEN_TRANS(vfwmsac_vv, opfvv_widen_check) GEN_OPFVV_WIDEN_TRANS(vfwnmsac_vv, opfvv_widen_check) -GEN_OPFVF_WIDEN_TRANS(vfwmacc_vf) -GEN_OPFVF_WIDEN_TRANS(vfwnmacc_vf) -GEN_OPFVF_WIDEN_TRANS(vfwmsac_vf) -GEN_OPFVF_WIDEN_TRANS(vfwnmsac_vf) +GEN_OPFVF_WIDEN_TRANS(vfwmacc_vf, opfvf_widen_check) +GEN_OPFVF_WIDEN_TRANS(vfwnmacc_vf, opfvf_widen_check) +GEN_OPFVF_WIDEN_TRANS(vfwmsac_vf, opfvf_widen_check) +GEN_OPFVF_WIDEN_TRANS(vfwnmsac_vf, opfvf_widen_check) =20 /* Vector Floating-Point Square-Root Instruction */ =20 --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747628189; cv=none; d=zohomail.com; s=zohoarc; b=UCl5djn2/+qtlWbjQ41TIlG+V9dgim4DkSMF6BfwOxGEIn2u5IRXg8JxYf5y1CPC+kIGyr++AWunAZqNbHWAKKykt1osPXNI9Na5530Yx5NzG1uvO7h9YMwTs6E9kuVYeT6KEoQ19+OTYZVbThre4YJ3ajCI05CdTJmurz4BwGY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747628189; h=Content-Transfer-Encoding:Cc:Cc: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; bh=bY2i6KRzdpjZN9qbe8ipe7V+hMzrNvP5r+ll4sE4mDw=; b=dZIwBGRknN6ZaXTFR7REl4aAitwU9VBD2nGLsuVwlC941GIPXGHXnIudQDIsTE98yDNhtKmCF6L4Bd4LMUKZ9IVn6QmXJFkx8CcnezlDkR95lc0+EuCUIFJmnTdEo6Vk9szliJtCUutkbsSpJPXDJFYQUVtxXzoAuOCkMz77WyY= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747628189330544.5692592406468; Sun, 18 May 2025 21:16:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGrtI-00036I-NI; Mon, 19 May 2025 00:14:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGrnX-0005fH-VG; Mon, 19 May 2025 00:08:20 -0400 Received: from mail-pg1-x535.google.com ([2607:f8b0:4864:20::535]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGrnW-0004Cg-0Y; Mon, 19 May 2025 00:08:19 -0400 Received: by mail-pg1-x535.google.com with SMTP id 41be03b00d2f7-b26f7d2c1f1so2120614a12.0; Sun, 18 May 2025 21:08:17 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.08.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:08:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627696; x=1748232496; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=bY2i6KRzdpjZN9qbe8ipe7V+hMzrNvP5r+ll4sE4mDw=; b=ZQvUHDMaC+bNBZ9Lq3TZ5JbcqaBtCdDKXv+0ywav+KZMDXrwsZUL6xkHAH8g5Xw1Xb E9NP+cniFfaiA2abAqWewB64zv3OWpdFnXkdp6RTh3/foxmh5iMW1ld1RZ97Y3BbrJiS l2MZWwCZ5zLKMg/0PWEmBS5xuigdpYB42djo9F69aKrcJK/c7STxKf5Y2NhCyZ3ivue9 t+VwMr34VRb+QWoen38x12acv/1phEksdTD0k6PPe+uGup4sYWMiPpHvMB6A7R/FLwyA qV40nwc7pmiitJVFXe+I2+l402GzQeHoLZoB3Dg1ylxeYawLo0UGbcu6VYGb1xfWCFTJ +gzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627696; x=1748232496; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=bY2i6KRzdpjZN9qbe8ipe7V+hMzrNvP5r+ll4sE4mDw=; b=SzmF12DYHpl6FjF6p4c8V93Px8MD/PxBCpz0vBFgPKbZfpTS+87ytKS+i+hC+Xx/k1 BpkcoEghcv+fjMq2W8px2eFOGFThCr61oQkzRCekQt2TDY6oIDqWz8CX2HG1aqvhNWAA mMGHQIGuTPHirswWO+JKgaMQVtzNxS7JrUeoGIPlt1WghJti8JHojpX1oZ6VxlKZhNyL WL2lTkDvbm3YmzYnElIDp3CD6mz7yS0yMTSiOBR4RiO19pjxjA+zGUfsEGVGpPL0t8cu fUnnAMikxHvcGCy0XYBg/0ct2PF8ORnZQscYEISdAysEkoqokB40fqamEyEd+ZQPDjQX lExA== X-Forwarded-Encrypted: i=1; AJvYcCUC168XOVk/uTBMYEzbuJ6QOsXV0Qr89NNZYeiSaK6DG2mFMuFLrwT2Un3QDPvbwcpmGejXugIR0biSfA==@nongnu.org X-Gm-Message-State: AOJu0YzmZ1Ckmnc/3uvrRx7eqrZRMnEOdrtIAX5C91eItPNMuummLCEo oEU05zaPHqVyJE6b2QGvXnDdWh8f7nAtFCYTvBQGh8EMNOXbJVDVB/h/5UpaKw== X-Gm-Gg: ASbGncuGlKSg1T70SIgsJg+fGqsX9Ll4IAoag+E8BZGAfilySigNTuLZ79tcHlnRe75 JOR+mTVnuZyZnI7aCDlgjQ/8Gz0T6zJswiX36hAahtLfu5APjNt7YRXsLVKbPYXfJePy5DgZTde 97BUSRK53ougXE6hJvVk87zQ1ziXYCr8nxG3Yto8BKtKPVLjiXHh15tWQnnZrqlcdLMgWE7qnRS w8CzcT4B8KtqzpuDwdI5Lk4JMQbHjQl4jpjSgKZxrRbwXNzlOndqFJrad8+RhBwAFZBNcXuX8zC 7m2Kb0fcvN4L4u/eGkEAb/Pq92EAb652jX/jSqKAWH4Q1ih2anb+6euG9LFIfRhh1ABjy0c4rSz vqrUMUpk/V2FEXb0JIe0letM1fm8MJQVH1QjOjKad5qC11ZsDRRNvg2y7 X-Google-Smtp-Source: AGHT+IFOH20i8waqGh1NR+izCFnOsI5cXDriFNNJzPx7Bb5bA7yYnINmj6662HBItm9KMadvxyMbYg== X-Received: by 2002:a17:903:2ed0:b0:22e:5e05:b89d with SMTP id d9443c01a7336-231de361a2dmr148490175ad.16.1747627696026; Sun, 18 May 2025 21:08:16 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Max Chou , Anton Blanchard , Daniel Henrique Barboza , Alistair Francis , qemu-stable@nongnu.org Subject: [PULL 22/56] target/riscv: rvv: Apply vext_check_input_eew to vrgather instructions to check mismatched input EEWs encoding constraint Date: Mon, 19 May 2025 14:05:19 +1000 Message-ID: <20250519040555.3797167-23-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::535; envelope-from=alistair23@gmail.com; helo=mail-pg1-x535.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747628190997116600 Content-Type: text/plain; charset="utf-8" From: Max Chou According to the v spec, a vector register cannot be used to provide source operands with more than one EEW for a single instruction. The vs1 EEW of vrgatherei16.vv is 16. Co-authored-by: Anton Blanchard Reviewed-by: Daniel Henrique Barboza Signed-off-by: Max Chou Message-ID: <20250408103938.3623486-4-max.chou@sifive.com> Signed-off-by: Alistair Francis Cc: qemu-stable@nongnu.org --- target/riscv/insn_trans/trans_rvv.c.inc | 32 +++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/target/riscv/insn_trans/trans_rvv.c.inc b/target/riscv/insn_tr= ans/trans_rvv.c.inc index d8333d8311..04367e1bec 100644 --- a/target/riscv/insn_trans/trans_rvv.c.inc +++ b/target/riscv/insn_trans/trans_rvv.c.inc @@ -379,6 +379,35 @@ static bool vext_check_ld_index(DisasContext *s, int v= d, int vs2, return ret; } =20 +/* + * Check whether a vector register is used to provide source operands with + * more than one EEW for the vector instruction. + * Returns true if the instruction has valid encoding + * Returns false if encoding violates the mismatched input EEWs constraint + */ +static bool vext_check_input_eew(DisasContext *s, int vs1, uint8_t eew_vs1, + int vs2, uint8_t eew_vs2, int vm) +{ + bool is_valid =3D true; + int8_t emul_vs1 =3D eew_vs1 - s->sew + s->lmul; + int8_t emul_vs2 =3D eew_vs2 - s->sew + s->lmul; + + /* When vm is 0, vs1 & vs2(EEW!=3D1) group can't overlap v0 (EEW=3D1) = */ + if ((vs1 !=3D -1 && !require_vm(vm, vs1)) || + (vs2 !=3D -1 && !require_vm(vm, vs2))) { + is_valid =3D false; + } + + /* When eew_vs1 !=3D eew_vs2, check whether vs1 and vs2 are overlapped= */ + if ((vs1 !=3D -1 && vs2 !=3D -1) && (eew_vs1 !=3D eew_vs2) && + is_overlapped(vs1, 1 << MAX(emul_vs1, 0), + vs2, 1 << MAX(emul_vs2, 0))) { + is_valid =3D false; + } + + return is_valid; +} + static bool vext_check_ss(DisasContext *s, int vd, int vs, int vm) { return require_vm(vm, vd) && @@ -3733,6 +3762,7 @@ static bool vrgather_vv_check(DisasContext *s, arg_rm= rr *a) { return require_rvv(s) && vext_check_isa_ill(s) && + vext_check_input_eew(s, a->rs1, s->sew, a->rs2, s->sew, a->vm) = && require_align(a->rd, s->lmul) && require_align(a->rs1, s->lmul) && require_align(a->rs2, s->lmul) && @@ -3745,6 +3775,7 @@ static bool vrgatherei16_vv_check(DisasContext *s, ar= g_rmrr *a) int8_t emul =3D MO_16 - s->sew + s->lmul; return require_rvv(s) && vext_check_isa_ill(s) && + vext_check_input_eew(s, a->rs1, MO_16, a->rs2, s->sew, a->vm) && (emul >=3D -3 && emul <=3D 3) && require_align(a->rd, s->lmul) && require_align(a->rs1, emul) && @@ -3764,6 +3795,7 @@ static bool vrgather_vx_check(DisasContext *s, arg_rm= rr *a) { return require_rvv(s) && vext_check_isa_ill(s) && + vext_check_input_eew(s, -1, MO_64, a->rs2, s->sew, a->vm) && require_align(a->rd, s->lmul) && require_align(a->rs2, s->lmul) && (a->rd !=3D a->rs2) && --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747628811; cv=none; d=zohomail.com; s=zohoarc; b=miw+asfxp+wXguSOmkWtkRu28wENODDKUjBom2QkZaE8+tHDLmSfDV0HieEs9whp5MwIMicImN4Sw4/EjguA5wS8Ao7ObNNxNMfWn2ocNJgS3MHC53+ALLNnr7faYmJImx+WDnL3BrrImYc3q4ierAZF9SpoTJSZjYgNIqJtwKQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747628811; h=Content-Transfer-Encoding:Cc:Cc: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; bh=vLPiB5ILQC9X2kfSHGwP1n3Lx8m7kar42qvDirhs2+g=; b=mHQUV4KD8fbfKd/Z+TL5B+0uDfmM7ZvPizkeVnxnvIE4YcLUY289yt/LGyRXNpzLwUPgkW7TMuIXVJJGADUqe2YwYnY1mgc1ZjO2JZtOu/TCu7txCA6Hl1z1w1T8ayR4VkDOaRi2esZdn53PNuHJ+L+I6s18B84Bt0Imie/H1J8= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747628811894423.68004814389894; Sun, 18 May 2025 21:26:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGs3Q-0000e7-Tz; Mon, 19 May 2025 00:24:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGrne-0005zY-Tx; Mon, 19 May 2025 00:08:26 -0400 Received: from mail-pl1-x62b.google.com ([2607:f8b0:4864:20::62b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGrna-0004Cx-U0; Mon, 19 May 2025 00:08:26 -0400 Received: by mail-pl1-x62b.google.com with SMTP id d9443c01a7336-23211e62204so7031835ad.3; Sun, 18 May 2025 21:08:20 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.08.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:08:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627699; x=1748232499; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=vLPiB5ILQC9X2kfSHGwP1n3Lx8m7kar42qvDirhs2+g=; b=E1i6ojNCxEnh03+mqMe9Wi3L1K0zv2sroRgqfpsiHCGL515JaQip+bq4ejay4fvGFX J+PKjAUBFBcqXxWTKSRjHFbk0F3XNAPneihcorED1oS3QGgKYGw9AFqAmGEHddlRFw5x DmTjFalAVsQYvZy+BOSZZuuSQRkKd++qLJF2oBnDiijUJgZcAc/4UZ7Gw1bUeHMB0wnp DI3X/0TUUQT3e5DvqpTLtfpFSKwsQwfP9XCRN/iZrKPQIgOQqdb17/DZ8Q43OtRPm7mX cNlCnKyc6ksHmBl7buMLsS+q/VmTqAj8OVII3yiZ9f7P1QG+GlW88NuIvjfcsAm41GZp snOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627699; x=1748232499; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=vLPiB5ILQC9X2kfSHGwP1n3Lx8m7kar42qvDirhs2+g=; b=q59joA+HWHIFuWz4OC/UMUVPkGCt6n307Lv0cGXBgxKWIDoTTTPAkT7beb8gT7uxaW Rtp/y7atxPePKolTVejAmMRBlm2yEizzWR9UyiNhc+lZSttEEsBIz9vNXkCFX6u/yUs0 4Qodj6BpcQXLMwNyqw8+rYKuHHHqTSg0UfvP36TxckPq18B9tO5zziFRbXgMj9nitI59 t9hMzLnX6Op56trmI95emwbbNH05XTCTzP3AvPX0tn3loYp8Gk8TuSIQZ5ZQelJEMXu+ pmAlEA0BAtLlSjX/EP3O8uvM9c7hWkw279A+1Br38OfjKgECeH4iDVRxYbgQU6FIt86C T6LA== X-Forwarded-Encrypted: i=1; AJvYcCVOBUGJJUBik4u1Ol1Iunl52BLWgwdB9HZsvKMlx/Nhx2UgVlqMfWQ21C/1BM9LX4Ta56/B3tHNDk97Bg==@nongnu.org X-Gm-Message-State: AOJu0YzC24UoHHM26PPA18vvu/mu54pxoD6lg/8L9jcCPq31mALhW4yv Y998oetrsXSqZZoim/AeK6BckTGsXWaOZK7lIm3RglL8GwNIlZng84LEba7NIQ== X-Gm-Gg: ASbGncuhxkrYc91EGqq7v2OJGMsuxc7ycHb+92za1vIzQr9fY3Z4nX3hb9+oaU96Fer aQHrAFHW4Arpes7K9kpvaziR7sEew47Jk6lWMVjpv4AMRPfijFsfoZNOs/KXGuOfzzlbW2EYNur mN8rillJt/gEXZxS81pc3Gd4settXX3mHR8MTMQQ41hg+I+aJ4LyEue1QNqELocAdQRtYIYSOlH a6Bi4aT+jiOGwovfJCCZAlBYQlnxNYeqY6vXvmGcP382pu4Kjn+FkZcTqSIkCiLoPWCuSG0Lt0H APELDa1N6n9RSZ5v+AS3WWLxA5a0vxpMTu4xBJyjsyIN2epQVHXuSbXEZfVo14D99zpgJ6XPt+I 8ozof4dMaKpuP/N+lgu42dKzQCaQmUGtNzN0mwty4pLXiELnbebptsHk4 X-Google-Smtp-Source: AGHT+IHn9zmjIky5JO1i5m5EePREOZ+PT4Osu99qTFxixBtUkDfJ3h5hPydJCJVmUi93zUkHeDIlbA== X-Received: by 2002:a17:902:cecf:b0:22d:e57a:279b with SMTP id d9443c01a7336-231d4519b0bmr197802165ad.24.1747627699486; Sun, 18 May 2025 21:08:19 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Max Chou , Anton Blanchard , Daniel Henrique Barboza , Alistair Francis , qemu-stable@nongnu.org Subject: [PULL 23/56] target/riscv: rvv: Apply vext_check_input_eew to OPIVI/OPIVX/OPFVF(vext_check_ss) instructions Date: Mon, 19 May 2025 14:05:20 +1000 Message-ID: <20250519040555.3797167-24-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62b; envelope-from=alistair23@gmail.com; helo=mail-pl1-x62b.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747628813290116600 Content-Type: text/plain; charset="utf-8" From: Max Chou Handle the overlap of source registers with different EEWs. Co-authored-by: Anton Blanchard Reviewed-by: Daniel Henrique Barboza Signed-off-by: Max Chou Message-ID: <20250408103938.3623486-5-max.chou@sifive.com> Signed-off-by: Alistair Francis Cc: qemu-stable@nongnu.org --- target/riscv/insn_trans/trans_rvv.c.inc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/target/riscv/insn_trans/trans_rvv.c.inc b/target/riscv/insn_tr= ans/trans_rvv.c.inc index 04367e1bec..b1e1db04a0 100644 --- a/target/riscv/insn_trans/trans_rvv.c.inc +++ b/target/riscv/insn_trans/trans_rvv.c.inc @@ -412,7 +412,8 @@ static bool vext_check_ss(DisasContext *s, int vd, int = vs, int vm) { return require_vm(vm, vd) && require_align(vd, s->lmul) && - require_align(vs, s->lmul); + require_align(vs, s->lmul) && + vext_check_input_eew(s, vs, s->sew, -1, s->sew, vm); } =20 /* --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747629128; cv=none; d=zohomail.com; s=zohoarc; b=WyMv2tI7fxWHmeriV2r4XaEiKb0fMuVajYSW6yAvxu3VpDA9U94tAPE6tvnv6D0YxnI/lINM4e8r1/5saNVCu0Dpl1XyCpssEGguaImzyT8qKgiybIHzwQ+JsyQnV3c9FfqtqBAR+HaMt1MOsP5SQkURHVrcUOangHBexJU/dkQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747629128; h=Content-Transfer-Encoding:Cc:Cc: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; bh=9koq1jI9PnAy2EBT0cXlCZka3dT6wobo2uoSTfd5KCo=; b=aixwh+zqlp64/v1C9UESVPVQ/22pv0togIwBwgRwQ6ttvCz+GA7Ov5gDF7ncAj9Kaloaqy4Yftd/M6+NTHScEYbWUg8slQ7DCeyWSw7BijINZVFrzIKRzp/52LCBS0RrT/vyDL2lEgqpJir992PzRrMJuDyAIWb4tOsfxIabgEc= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747629128688317.57003523180435; Sun, 18 May 2025 21:32:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGs3r-0001F0-IG; Mon, 19 May 2025 00:25:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGrni-0006Gh-Eg; Mon, 19 May 2025 00:08:30 -0400 Received: from mail-pl1-x62d.google.com ([2607:f8b0:4864:20::62d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGrnd-0004DB-K7; Mon, 19 May 2025 00:08:27 -0400 Received: by mail-pl1-x62d.google.com with SMTP id d9443c01a7336-231e21d3b63so30950045ad.3; Sun, 18 May 2025 21:08:24 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.08.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:08:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627703; x=1748232503; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=9koq1jI9PnAy2EBT0cXlCZka3dT6wobo2uoSTfd5KCo=; b=nfaZntbmyZOkTlrKRmk8BDTwYDARe1ZPTpJ/Qsgz3bRgDA+eZ7APbur8AYZYWpyYFP oIE3gQPsbCPs+9yEUu/xWjAwDpmggo7DtrfkwkQD+dhCVGQ/VRgIf/z/3LDMvTuRMoIy QcfuJaBQu0Z43zMDbAlJfnOGbGPIaiE16vD6H898QQrdQvDZ88K/mjOEE59DmfbBbZbC 4bNr6gdziywjulAdAWENL+jIejwZS4HOWBpXEtNkHW09XcuGu25DHrpSUeKRISr1wC1o oeAdlN3vDtQPi788J+9ZHJPLDw0ZO6rSvh+QTJ+IjmfMfr6ca3Yq7fzZje/zNlfVbP8y qB+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627703; x=1748232503; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9koq1jI9PnAy2EBT0cXlCZka3dT6wobo2uoSTfd5KCo=; b=tVjMWVE9kayYKwhnswtmJQ8iwB64r8VR3fmfjf7Xj/4Oq2a11Q0GX2JipDJATP/lLo i8TY50HJ+W4fdenPwlIAhA43HjkAr9wA4cUOCwOap3LLLdrlpTgsfkJjktVqxJg6SBNc OxvUkvmPcScnRaowqPgKycgmiH4FvDNQpvhu9FJPy/Tud9jgPfmMEMFu1q1pYmXWHDi7 6+BUoIX09VFgH0KVWQHQJxD1u73QxI/aHWxQs9Z6G0HqQO3XzTa594KttF35jgSUxpxm EjXUYAGMOnDOvQlw2q2DMhtk9XRQFqJKQ+TmQmHzRaBs+aPYk9Jz8lzyh7v4l1lG62Wp /S0w== X-Forwarded-Encrypted: i=1; AJvYcCVagHVXUAq1kWwe/Jtwtp+dFyajzg8lg1M4Rh42pn+mLlMQd65pvVKLHaKHJY5XpT681hB1pEm2RC5X6g==@nongnu.org X-Gm-Message-State: AOJu0Yx1djY0yhVBfw24jx05q1K4la0DSGZSwemSFZVw2I6njinwzbmO 9T6M6KayXSVZqZ7w+V1vFDfplejGjXHeOzc69IQ+vAaHqIUBO/msxazia3yo3w== X-Gm-Gg: ASbGnctpN61E5UdXxI1DukB/JR4ZAMq9BJ0pu5h7VhGRtSFLLfUbodcNxooWyHCmJsb b8fXk/YkKv0ZkjLlODLYots9ZR6SMSZxehdFepKe5ewxG4XyppjiesbtyKkv421q4y1eutH3DBp xJCUzz/NcX6yTmzNlsylbQMRVuuCC7aaaIhYVoD1fLoxEMXVf7BEOKmW4VamwtmKLZHCDc4WtJa TLs+iGD7e6QPxcItrqzGumiJcU8xbtoHZuC5QOd9S5msxbso+4lVxd9zCkpUBgvBgir0k5qY20o 4hUJFnTqJt0fCgYerZ0fMQWB7IvHYkakeLS72Y6GD11CPgZOFzZsf9H7HJzhkBzAwhuciitTrdI JR8LZebiScQonMlDFermMr9c4jFDstfszv+lTEBvRPHaCC8BH+GKTEfm+ X-Google-Smtp-Source: AGHT+IGQzDuqoYoqziXn+uoLqLMvemwGRerpgCGtxtUxNV9ibEMMTtC83+1CeVK8T9+nwwDyY1VkeQ== X-Received: by 2002:a17:902:d486:b0:224:1609:a74a with SMTP id d9443c01a7336-231de3ae59amr154737275ad.34.1747627703298; Sun, 18 May 2025 21:08:23 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Max Chou , Anton Blanchard , Daniel Henrique Barboza , Alistair Francis , qemu-stable@nongnu.org Subject: [PULL 24/56] target/riscv: rvv: Apply vext_check_input_eew to OPIVV/OPFVV(vext_check_sss) instructions Date: Mon, 19 May 2025 14:05:21 +1000 Message-ID: <20250519040555.3797167-25-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62d; envelope-from=alistair23@gmail.com; helo=mail-pl1-x62d.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747629130760116600 Content-Type: text/plain; charset="utf-8" From: Max Chou Handle the overlap of source registers with different EEWs. Co-authored-by: Anton Blanchard Reviewed-by: Daniel Henrique Barboza Signed-off-by: Max Chou Message-ID: <20250408103938.3623486-6-max.chou@sifive.com> Signed-off-by: Alistair Francis Cc: qemu-stable@nongnu.org --- target/riscv/insn_trans/trans_rvv.c.inc | 1 + 1 file changed, 1 insertion(+) diff --git a/target/riscv/insn_trans/trans_rvv.c.inc b/target/riscv/insn_tr= ans/trans_rvv.c.inc index b1e1db04a0..5de50422c9 100644 --- a/target/riscv/insn_trans/trans_rvv.c.inc +++ b/target/riscv/insn_trans/trans_rvv.c.inc @@ -432,6 +432,7 @@ static bool vext_check_ss(DisasContext *s, int vd, int = vs, int vm) static bool vext_check_sss(DisasContext *s, int vd, int vs1, int vs2, int = vm) { return vext_check_ss(s, vd, vs2, vm) && + vext_check_input_eew(s, vs1, s->sew, vs2, s->sew, vm) && require_align(vs1, s->lmul); } =20 --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747627774; cv=none; d=zohomail.com; s=zohoarc; b=KysCu33IBu+uMShwx1unJtTdKq5yRlxmrTEypOJ7DK/x1Ctyx/MAWtDf057ZxmFZ8dtBcQ57cJMP3p0mZjR39X1nyMOYUVLTD3AEVfdIssXp0pDRNVo73s4apSCo0bbXldtdKlLAGB4Xv1gEEHXFqvs7x9gY6y1DfjxT8ETDiE8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747627774; h=Content-Transfer-Encoding:Cc:Cc: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; bh=FdzxLn5+6FGynVzbWgDSqtDZ68g9RcZFD6alFggjkaI=; b=BK8EEmJMLWbxixtfC3dhnRwd5R8zVTVmua6ZmO1nqhE9199SdOXo9v4xsGSQz+Jz4mYEwoYRqpU0qie5I7NUI/4/MFQ2RwuBSi41FwI0cY3XYP3V+MHOPadwjmCUsIyRBxPzTBBBAkE43cjQyndg++ji+yPSocVO39WO5EBgmO0= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747627774622861.3793886534514; Sun, 18 May 2025 21:09:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGro4-0006q6-NC; Mon, 19 May 2025 00:08:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGrno-0006Xa-B9; Mon, 19 May 2025 00:08:38 -0400 Received: from mail-pl1-x62d.google.com ([2607:f8b0:4864:20::62d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGrni-0004DS-Jk; Mon, 19 May 2025 00:08:33 -0400 Received: by mail-pl1-x62d.google.com with SMTP id d9443c01a7336-22e033a3a07so38419055ad.0; Sun, 18 May 2025 21:08:28 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.08.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:08:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627707; x=1748232507; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=FdzxLn5+6FGynVzbWgDSqtDZ68g9RcZFD6alFggjkaI=; b=LLI/Oib5bdN8VgxCdwRD7ObZSLBJGdnkdQzbZDzo1rbqnxHVuf+orEHykn4ZYSvXRw 4lgavs1rp957obzRtPvdFNe/H6DZyx4evqTrhHVwU9YY0GT2f/b96aZpkIeLGnipF3yx XbZPULtFOzTyi58EM4qtfYCx5088cx2kskUWZImhOh3yWlkXaXZ7HzABE4hEC0BKUbCi AmxJfY1w9IoeXf9AQrz+l1h/DkKYSwUcKWadMxVn4zuDAaNKViGO9vEEkGmJDRF/WWg2 2eQRCyq1/WsLmmvP1mt6O1EreoOEYnyeXdct/ynY8mtEVwEhTm+Aq9rqauC9vNX8KdJc MZUg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627707; x=1748232507; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=FdzxLn5+6FGynVzbWgDSqtDZ68g9RcZFD6alFggjkaI=; b=wr+R5c5hQfSeKXMatCMCgErQ7YphESyQRwdGW40D+iRnQ/LOz87xdbSbkRZlOm6WzC p95tfNqZR3txFnw0QTcRFeIvvgeJkwhq2sSTXp37EIbWnU4Kkb6taVGq5GAn3ebLKxe1 VqsSpR+xh/soTST+5k81kkmBkFzq6LrOiSOBDB8uClUC0NuEJ2gXf0lBLWG6S0KLy6BS BaGaZ0BCdh930tdbBT0oiUm9JJAfUFzmfHRX1wIBi/URBt5Txd6KTevExxzqiJnrPNUR aVsUsXrHH1CyRSLBocLS2Ftdsw82hfw5fq6sFd91vJPB7IL91ymrCMt2q9YR8N+NeC7b HGmQ== X-Forwarded-Encrypted: i=1; AJvYcCUOb21IccD3plp3MwFXobQMbP3lneacfUTeMZZWGwTIogzT2zAT1Wg3jwmmJdB+P8ZGY8Lq3KdcU8tL4w==@nongnu.org X-Gm-Message-State: AOJu0YzHZH364pNdHUGbDkiMUPJNI9OqB0kCrx3SAcyRmo7O/oLAU5qY /FhO0SgpHvqJR+zQjk9wemitbPTBi3sX8I7v6yF0UKhyiBpARpoc/CL5ViS4cw== X-Gm-Gg: ASbGncs8YZAms9CZ069FF+c4qQbPG6W/IQuC8qGOKDfo7Kpwrpfc6mio7WU95hB3hjX ZQm3KQVDZhQPyU3UjsmAZxRyTPKgqgPbSYddBrk1DPpcJusD3uXffCf/78n+p5SyPax1avv9eVp 81mGApVOo+Kwd+3X4HV5sPkkbJNYzcbrVmOKsbvaCEXzGDCB/BYsMHndOQIkRhKq9ZkAO8ZLIoo JoiODGCHkVroKqeNvPBh721jTV5Lx6Hm9h9o0WjOKKyrNfbwlwoMCuNo90KwKRXcVPJO6IUN7Gj GDENGMtCMlBv3ErdVCgPcbuzZJwim8VUJuhayiS7AfCRQO4fZGBzY9jvNLnWQkNKQwUZNnRGuYs InnvbkZf5xswiphyoJZngVDYfNBmcOWyZI5fhzjk+rBkG+DAiOyuDlKxQ X-Google-Smtp-Source: AGHT+IFaAlYUR5VNUmtFEh6kGKZI3OCvKaKoY3ZariiuzuagzlwsC0kwigdDBoBEBZL7y65leV5Z+g== X-Received: by 2002:a17:903:1a08:b0:224:1d1c:8837 with SMTP id d9443c01a7336-231d451214emr169231565ad.19.1747627706904; Sun, 18 May 2025 21:08:26 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Max Chou , Anton Blanchard , Daniel Henrique Barboza , Alistair Francis , qemu-stable@nongnu.org Subject: [PULL 25/56] target/riscv: rvv: Apply vext_check_input_eew to vector slide instructions(OPIVI/OPIVX) Date: Mon, 19 May 2025 14:05:22 +1000 Message-ID: <20250519040555.3797167-26-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62d; envelope-from=alistair23@gmail.com; helo=mail-pl1-x62d.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747627776359116600 Content-Type: text/plain; charset="utf-8" From: Max Chou Handle the overlap of source registers with different EEWs. Co-authored-by: Anton Blanchard Reviewed-by: Daniel Henrique Barboza Signed-off-by: Max Chou Message-ID: <20250408103938.3623486-7-max.chou@sifive.com> Signed-off-by: Alistair Francis Cc: qemu-stable@nongnu.org --- target/riscv/insn_trans/trans_rvv.c.inc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/target/riscv/insn_trans/trans_rvv.c.inc b/target/riscv/insn_tr= ans/trans_rvv.c.inc index 5de50422c9..841692701c 100644 --- a/target/riscv/insn_trans/trans_rvv.c.inc +++ b/target/riscv/insn_trans/trans_rvv.c.inc @@ -638,7 +638,9 @@ static bool vext_check_slide(DisasContext *s, int vd, i= nt vs2, { bool ret =3D require_align(vs2, s->lmul) && require_align(vd, s->lmul) && - require_vm(vm, vd); + require_vm(vm, vd) && + vext_check_input_eew(s, -1, 0, vs2, s->sew, vm); + if (is_over) { ret &=3D (vd !=3D vs2); } --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747627759; cv=none; d=zohomail.com; s=zohoarc; b=F4tUnpVfg0oZG8SfIfDBshu6+crUrWoSfu0fFIKdKii7HjTjDu7fkYekpNZZSKZh29D3HzwX0Enl5okn6yjrcD39Wo5ew3j/xE8sR4pJvRIiO+vIuaVailyJnLgINM9sKPvmjgkoawo0eJ4D5nQEZsj/wRlN2GgPPk5VpudfVew= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747627759; h=Content-Transfer-Encoding:Cc:Cc: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; bh=JL2MXrdEU5pO23tKkJ3XXY0EA0OwjP7eX65K3PT8UNc=; b=kghualdWY9dOTgBIKA21S2DYrN8vGEyLKbfROWDMz/3NPiBfmA4wa0K+DtIogFVvYqD+MVx8YD/3M5fYqkL8NNWPDuJYW/wbmnOk9E6Lbz1z31qHCp9vWVgE4yoiuRFFgA9WbSLeQEdfbVSlXWsH78t+OWdbRmdFq9YCPciM7Uk= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 174762775938339.85252061313622; Sun, 18 May 2025 21:09:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGro4-0006n4-Dn; Mon, 19 May 2025 00:08:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGrno-0006XZ-Bn; Mon, 19 May 2025 00:08:38 -0400 Received: from mail-pl1-x62e.google.com ([2607:f8b0:4864:20::62e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGrnk-0004Di-Kr; Mon, 19 May 2025 00:08:35 -0400 Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-23229fdaff4so9192865ad.1; Sun, 18 May 2025 21:08:31 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.08.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:08:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627710; x=1748232510; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=JL2MXrdEU5pO23tKkJ3XXY0EA0OwjP7eX65K3PT8UNc=; b=fmBJ8oqpELYLdjSCdYsY7PgWUyxjOcNhDurQ/aB+x7daMf8AoUqjBlOzpnQVTKd6qK 0iBEfbZ2gHZ4gf26h64wP23sxD/P2TlUcClu8+FL18bqL47Ix2gLtyVhxDv8uNJAomI8 z4AT6Xu93U8ny8JrR14j1DuN0h59JO3kVjipdo6LWFneFHhqoGEBxnQZ7XVPKT043x7s ZAo0KbxVfZFzGGgplW8Q8PXDVfytUgQrzQkvtFJGI4inDTs73ySZWeNG1VA9QXNwgBCU 5WCOr7LyrZ0mYpvA0D/xKJSHOGt0MNPUxBY9qtY8okmByldpsUEsWcvT2Z6rydvV/CNM aPXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627710; x=1748232510; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=JL2MXrdEU5pO23tKkJ3XXY0EA0OwjP7eX65K3PT8UNc=; b=KMekI/kHhHeZYOnLchd1yMG1addq5VYH21bqgbVNz+nunQSaLrNljlHvse4W9ET1rf QM7iFfLWsTpX0PB01o/MwEwboJ9qBl+/OzSWv4H9viK8qzwzW619xGyh+WBYlW6wUarj 5qq6KccWq/zFdyBv14urRtIeYjIAg4g63kXDWGy/YudGWmC+cIghXECp/ySoo/eZOHzf uGTDTaFnUihcE1Wj1LTyWUv8/82Y3Bd0TifwssEddW889y/bFJxNkhmPuDIH2DCbnhwl Yh+2y1u1bfoc/reQkulfCYzEIVpn7ETFO58zOHRbHGiES+A0QWU5MbGDoBPEC7DNeDBk UFpA== X-Forwarded-Encrypted: i=1; AJvYcCV8zm4vXvqNue8yGthAkovT1b7il6BNqCAbOtXm3WSaWJ2jxw5fbQV3P/QWjITJ4dtKAq1O0HdPQKg03Q==@nongnu.org X-Gm-Message-State: AOJu0YxvooqqncnCgPCKeb2m2515d2IapCMf1HqldV7gZ3Qu0044G3Gh forz6SKl/KMDO7Yj4hDBrR8afnfxsTi2BRnzkdBZHkMMzJFumztePeBbQKECFQ== X-Gm-Gg: ASbGnculAJtBaZ3D+BpCzwknOMIWVqLcsUYY+4SI0igFmPX9VlD3IwTh8hnASva9tGr 1KUKFu25izXKUwvIttj5Q8yxSj9My6SXjl0Qde+4VeF4VXhiedyc9iLbkujkvtCT4gSnWB1V0ZA k7UHOW+Pm6WiivPlctUpsy5Kim1TuNIOA/6s2TBtx6PsDI6z/d9t/FWdJ6bF6oDmgCtsNtWMn8z 9ZOC2f1UtSH2EwdjqkRevUd4T+g61+sNbt2zyrRJOuxrMk/LcnekrH6YTGC4/8CbpO6HG0JypkB bMSy/njMy/TXsfyQcSAdkRw4HveBgBNynsiHBw2U7AqUrBa28+VpprUQbS8BgKS+3GH5MsMQg27 zRc7vLkyzRVU5SuMlB5tAxi246wcb38FXY9nhhjZCbbZFh0dozZJAfxVH X-Google-Smtp-Source: AGHT+IEBvI77LRt/jqG8YZwghMoi7PG1qTEYSxp3vWaKw7ZqTgXF0hgZlW6jpKP4eLb8DVr7bpu34w== X-Received: by 2002:a17:903:2345:b0:22e:1a41:a6de with SMTP id d9443c01a7336-231d452d109mr176238835ad.32.1747627710514; Sun, 18 May 2025 21:08:30 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Max Chou , Anton Blanchard , Daniel Henrique Barboza , Alistair Francis , qemu-stable@nongnu.org Subject: [PULL 26/56] target/riscv: rvv: Apply vext_check_input_eew to vector integer extension instructions(OPMVV) Date: Mon, 19 May 2025 14:05:23 +1000 Message-ID: <20250519040555.3797167-27-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62e; envelope-from=alistair23@gmail.com; helo=mail-pl1-x62e.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747627760362116600 Content-Type: text/plain; charset="utf-8" From: Max Chou Handle the overlap of source registers with different EEWs. Co-authored-by: Anton Blanchard Reviewed-by: Daniel Henrique Barboza Signed-off-by: Max Chou Message-ID: <20250408103938.3623486-8-max.chou@sifive.com> Signed-off-by: Alistair Francis Cc: qemu-stable@nongnu.org --- target/riscv/insn_trans/trans_rvv.c.inc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/target/riscv/insn_trans/trans_rvv.c.inc b/target/riscv/insn_tr= ans/trans_rvv.c.inc index 841692701c..954f03291b 100644 --- a/target/riscv/insn_trans/trans_rvv.c.inc +++ b/target/riscv/insn_trans/trans_rvv.c.inc @@ -3943,7 +3943,9 @@ static bool int_ext_check(DisasContext *s, arg_rmr *a= , uint8_t div) require_align(a->rd, s->lmul) && require_align(a->rs2, s->lmul - div) && require_vm(a->vm, a->rd) && - require_noover(a->rd, s->lmul, a->rs2, s->lmul - div); + require_noover(a->rd, s->lmul, a->rs2, s->lmul - div) && + vext_check_input_eew(s, -1, 0, a->rs2, s->sew, a->vm); + return ret; } =20 --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747628706; cv=none; d=zohomail.com; s=zohoarc; b=aTdLjPZPXP+oZW8cAXko0I6KEFv7LEqspFheK59Ar9/Y1S4s5ljbY7TSIMfzMC7GeKqHXIEHq/ISCSX5yD/bVjZ/Hwqa8AVe+aDb0deKqwe+6Ycr0n7PM9jhcJyaIne82Tj+RgTjauMatwXJKNFDdRYngyckY++1S/1aOkXUz7o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747628706; h=Content-Transfer-Encoding:Cc:Cc: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; bh=ruf1j0nP1SwXf+YKRbMUui7Aq4aZBAxDrN7XhtLdW6I=; b=CjoYDaX6ughqIu+xCP4uu1mSEkIZhNe1Yhf9gr42rL17UfoefwYkfxKDomSeiUy46cpYBwpnV4+mLJ9m/1gyDIcTJKemzlLc2tCQvND7+rQwdpZVzghRuMiUhWtA2KxczCZ0tOoAeFnEHOs+Z6dqnvolrpy7iV6n5WIsbqQaew4= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747628706158715.4731577299829; Sun, 18 May 2025 21:25:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGs3S-0000fA-6w; Mon, 19 May 2025 00:24:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGrnq-0006aY-Lo; Mon, 19 May 2025 00:08:41 -0400 Received: from mail-pl1-x62f.google.com ([2607:f8b0:4864:20::62f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGrno-0004E1-E2; Mon, 19 May 2025 00:08:38 -0400 Received: by mail-pl1-x62f.google.com with SMTP id d9443c01a7336-22e09f57ed4so50988975ad.0; Sun, 18 May 2025 21:08:35 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.08.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:08:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627714; x=1748232514; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ruf1j0nP1SwXf+YKRbMUui7Aq4aZBAxDrN7XhtLdW6I=; b=grs8qjr2t/N7Vt027BY40YDTbn0lay8oa6XFtLoW5hIjVUl3WzNCKiVD3yJFBMwCCH 1o0YljSZi//nSWqLn2lnFfbzs5qqPLU9YJvwt+GApvSYvI/cPbM1F9eCPcimEAZ150VD TeW3c6C4kHv5e2Lj1qlX8Cowu2zGPwn4UYtUER4s2RNEfsWwc9T4N/tC/8qu5Gu8Al2s sQ17z3NUdPf64rw8XEPPe5wD66p74pxxHGgXBdVkWkjznQJcDbLXJt8f0Axi7fdbGESe ygz66gyn9OIpUXwuaUlhw+JaiPsQIlF5xrfPrzjfVSjirL7b7NRUobPZp+Oraa0yiiMU 21Ow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627714; x=1748232514; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ruf1j0nP1SwXf+YKRbMUui7Aq4aZBAxDrN7XhtLdW6I=; b=Ef0wiZUN77RslRy2Qde+LB2TVBCHwizvTkM3k8i3Pirrvwtd9TPwwviLkNjogkiLT1 OOwCzQMb6WB1fhObT7XITcz6mpXomNq8sUEnurLmhvlGTNmpCgVpoh6cafA7mghqbff0 O7+GwF71iRuS9/HuvWCQ/zKa94anCQuqTGLausl3tA4NT1xTnPt3vfNjEjUYF8fed+p1 qjS0T35Lwuh9X4GKG5p0dcFPuzkAlWjvhwY2ajJoZKTo57bTxdGsmMosg2ruaGOineHW gas3FtALFgBoB3KJecCPpLaLeeARYYfGExD5DevoHuMozGrJ5buIfozDnsi2qIv+g5IZ EO5A== X-Forwarded-Encrypted: i=1; AJvYcCUKZEmUIeNHf3uJOJHbakiGw+D7rYn3hF25kQDAup1OxjQcmp+hPRGWyTd8Xv/D/3mhPeioVBukS05FHw==@nongnu.org X-Gm-Message-State: AOJu0Yyz0GxiCKKMothfRhfXWoFze/LvmmuwIFgr1YBERtyObnZuazDx yDI9kJxQFwZFq7dwU4gHnw0nW25fgM9Pv2brLQuL82Y7IcnSxAXuPyWnPPeBtA== X-Gm-Gg: ASbGncs3MrhPqUe6hJejymZY41OHyn8L1uxv2/os34TahkXYyfOa2h3Ts7VfIEVFR1z m3RG9sV5g3+Ky9ugnCwc9n+MlQ5LYEL7+33y6hE6BjXLZwT21mqguuZYF5HilgB6CFAKGoyGSct t/HtKECa7LCfstYPVTkvpW80VenLoB21SRW6Rx2Ci12uy1c0H9UOTbJ1CG5/cF561Ep4+21C6tl 23oQAE1+2PU93nIqRGJnHn6PHWaqmg/fFtHzujPadlIAI9IXG+79XBPw7ivcfJKhjEhq3xOMO6+ z0ZynEppz8sZP3dv6CIZ8fIC0b/xnBDUrTsTQXPz+ux8tNRobiQQv03MG8qNQuySon6EX/jIc8W t+RwJwjkFxmFkzY+dg6iXkftEhDW50QD1/d20dDbyH7ieLLY9Kw7QDioa X-Google-Smtp-Source: AGHT+IFSXYa0BIukxCQms0bdOCB6HAsX+ueJuWDO9Kz5EoUyjAonK5S04jnAYpNiU0r7XpUS6IyatQ== X-Received: by 2002:a17:902:da91:b0:215:a303:24e9 with SMTP id d9443c01a7336-231d4ae1de4mr159808625ad.3.1747627714039; Sun, 18 May 2025 21:08:34 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Max Chou , Anton Blanchard , Daniel Henrique Barboza , Alistair Francis , qemu-stable@nongnu.org Subject: [PULL 27/56] target/riscv: rvv: Apply vext_check_input_eew to vector narrow/widen instructions Date: Mon, 19 May 2025 14:05:24 +1000 Message-ID: <20250519040555.3797167-28-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62f; envelope-from=alistair23@gmail.com; helo=mail-pl1-x62f.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747628708427116600 Content-Type: text/plain; charset="utf-8" From: Max Chou Handle the overlap of source registers with different EEWs. The vd of vector widening mul-add instructions is one of the input operands. Co-authored-by: Anton Blanchard Reviewed-by: Daniel Henrique Barboza Signed-off-by: Max Chou Message-ID: <20250408103938.3623486-9-max.chou@sifive.com> Signed-off-by: Alistair Francis Cc: qemu-stable@nongnu.org --- target/riscv/insn_trans/trans_rvbf16.c.inc | 9 ++- target/riscv/insn_trans/trans_rvv.c.inc | 77 +++++++++++++++++----- 2 files changed, 68 insertions(+), 18 deletions(-) diff --git a/target/riscv/insn_trans/trans_rvbf16.c.inc b/target/riscv/insn= _trans/trans_rvbf16.c.inc index 0a9cd1ec31..066dc364c5 100644 --- a/target/riscv/insn_trans/trans_rvbf16.c.inc +++ b/target/riscv/insn_trans/trans_rvbf16.c.inc @@ -119,8 +119,11 @@ static bool trans_vfwmaccbf16_vv(DisasContext *ctx, ar= g_vfwmaccbf16_vv *a) REQUIRE_FPU; REQUIRE_ZVFBFWMA(ctx); =20 + uint8_t sew =3D ctx->sew; if (require_rvv(ctx) && vext_check_isa_ill(ctx) && (ctx->sew =3D=3D MO= _16) && - vext_check_dss(ctx, a->rd, a->rs1, a->rs2, a->vm)) { + vext_check_dss(ctx, a->rd, a->rs1, a->rs2, a->vm) && + vext_check_input_eew(ctx, a->rd, sew + 1, a->rs1, sew, a->vm) && + vext_check_input_eew(ctx, a->rd, sew + 1, a->rs2, sew, a->vm)) { uint32_t data =3D 0; =20 gen_set_rm_chkfrm(ctx, RISCV_FRM_DYN); @@ -146,8 +149,10 @@ static bool trans_vfwmaccbf16_vf(DisasContext *ctx, ar= g_vfwmaccbf16_vf *a) REQUIRE_FPU; REQUIRE_ZVFBFWMA(ctx); =20 + uint8_t sew =3D ctx->sew; if (require_rvv(ctx) && (ctx->sew =3D=3D MO_16) && vext_check_isa_ill(= ctx) && - vext_check_ds(ctx, a->rd, a->rs2, a->vm)) { + vext_check_ds(ctx, a->rd, a->rs2, a->vm) && + vext_check_input_eew(ctx, a->rd, sew + 1, a->rs2, sew, a->vm)) { uint32_t data =3D 0; =20 gen_set_rm(ctx, RISCV_FRM_DYN); diff --git a/target/riscv/insn_trans/trans_rvv.c.inc b/target/riscv/insn_tr= ans/trans_rvv.c.inc index 954f03291b..1d2b46fc44 100644 --- a/target/riscv/insn_trans/trans_rvv.c.inc +++ b/target/riscv/insn_trans/trans_rvv.c.inc @@ -528,6 +528,7 @@ static bool vext_narrow_check_common(DisasContext *s, i= nt vd, int vs2, static bool vext_check_ds(DisasContext *s, int vd, int vs, int vm) { return vext_wide_check_common(s, vd, vm) && + vext_check_input_eew(s, vs, s->sew, -1, 0, vm) && require_align(vs, s->lmul) && require_noover(vd, s->lmul + 1, vs, s->lmul); } @@ -535,6 +536,7 @@ static bool vext_check_ds(DisasContext *s, int vd, int = vs, int vm) static bool vext_check_dd(DisasContext *s, int vd, int vs, int vm) { return vext_wide_check_common(s, vd, vm) && + vext_check_input_eew(s, vs, s->sew + 1, -1, 0, vm) && require_align(vs, s->lmul + 1); } =20 @@ -553,6 +555,7 @@ static bool vext_check_dd(DisasContext *s, int vd, int = vs, int vm) static bool vext_check_dss(DisasContext *s, int vd, int vs1, int vs2, int = vm) { return vext_check_ds(s, vd, vs2, vm) && + vext_check_input_eew(s, vs1, s->sew, vs2, s->sew, vm) && require_align(vs1, s->lmul) && require_noover(vd, s->lmul + 1, vs1, s->lmul); } @@ -575,12 +578,14 @@ static bool vext_check_dss(DisasContext *s, int vd, i= nt vs1, int vs2, int vm) static bool vext_check_dds(DisasContext *s, int vd, int vs1, int vs2, int = vm) { return vext_check_ds(s, vd, vs1, vm) && + vext_check_input_eew(s, vs1, s->sew, vs2, s->sew + 1, vm) && require_align(vs2, s->lmul + 1); } =20 static bool vext_check_sd(DisasContext *s, int vd, int vs, int vm) { - bool ret =3D vext_narrow_check_common(s, vd, vs, vm); + bool ret =3D vext_narrow_check_common(s, vd, vs, vm) && + vext_check_input_eew(s, vs, s->sew + 1, -1, 0, vm); if (vd !=3D vs) { ret &=3D require_noover(vd, s->lmul, vs, s->lmul + 1); } @@ -603,6 +608,7 @@ static bool vext_check_sd(DisasContext *s, int vd, int = vs, int vm) static bool vext_check_sds(DisasContext *s, int vd, int vs1, int vs2, int = vm) { return vext_check_sd(s, vd, vs2, vm) && + vext_check_input_eew(s, vs1, s->sew, vs2, s->sew + 1, vm) && require_align(vs1, s->lmul); } =20 @@ -1815,6 +1821,16 @@ static bool opivv_widen_check(DisasContext *s, arg_r= mrr *a) vext_check_dss(s, a->rd, a->rs1, a->rs2, a->vm); } =20 +/* OPIVV with overwrite and WIDEN */ +static bool opivv_overwrite_widen_check(DisasContext *s, arg_rmrr *a) +{ + return require_rvv(s) && + vext_check_isa_ill(s) && + vext_check_dss(s, a->rd, a->rs1, a->rs2, a->vm) && + vext_check_input_eew(s, a->rd, s->sew + 1, a->rs1, s->sew, a->v= m) && + vext_check_input_eew(s, a->rd, s->sew + 1, a->rs2, s->sew, a->v= m); +} + static bool do_opivv_widen(DisasContext *s, arg_rmrr *a, gen_helper_gvec_4_ptr *fn, bool (*checkfn)(DisasContext *, arg_rmrr *)) @@ -1862,6 +1878,14 @@ static bool opivx_widen_check(DisasContext *s, arg_r= mrr *a) vext_check_ds(s, a->rd, a->rs2, a->vm); } =20 +static bool opivx_overwrite_widen_check(DisasContext *s, arg_rmrr *a) +{ + return require_rvv(s) && + vext_check_isa_ill(s) && + vext_check_ds(s, a->rd, a->rs2, a->vm) && + vext_check_input_eew(s, a->rd, s->sew + 1, a->rs2, s->sew, a->v= m); +} + #define GEN_OPIVX_WIDEN_TRANS(NAME, CHECK) \ static bool trans_##NAME(DisasContext *s, arg_rmrr *a) \ { \ @@ -2333,13 +2357,13 @@ GEN_OPIVX_TRANS(vmadd_vx, opivx_check) GEN_OPIVX_TRANS(vnmsub_vx, opivx_check) =20 /* Vector Widening Integer Multiply-Add Instructions */ -GEN_OPIVV_WIDEN_TRANS(vwmaccu_vv, opivv_widen_check) -GEN_OPIVV_WIDEN_TRANS(vwmacc_vv, opivv_widen_check) -GEN_OPIVV_WIDEN_TRANS(vwmaccsu_vv, opivv_widen_check) -GEN_OPIVX_WIDEN_TRANS(vwmaccu_vx, opivx_widen_check) -GEN_OPIVX_WIDEN_TRANS(vwmacc_vx, opivx_widen_check) -GEN_OPIVX_WIDEN_TRANS(vwmaccsu_vx, opivx_widen_check) -GEN_OPIVX_WIDEN_TRANS(vwmaccus_vx, opivx_widen_check) +GEN_OPIVV_WIDEN_TRANS(vwmaccu_vv, opivv_overwrite_widen_check) +GEN_OPIVV_WIDEN_TRANS(vwmacc_vv, opivv_overwrite_widen_check) +GEN_OPIVV_WIDEN_TRANS(vwmaccsu_vv, opivv_overwrite_widen_check) +GEN_OPIVX_WIDEN_TRANS(vwmaccu_vx, opivx_overwrite_widen_check) +GEN_OPIVX_WIDEN_TRANS(vwmacc_vx, opivx_overwrite_widen_check) +GEN_OPIVX_WIDEN_TRANS(vwmaccsu_vx, opivx_overwrite_widen_check) +GEN_OPIVX_WIDEN_TRANS(vwmaccus_vx, opivx_overwrite_widen_check) =20 /* Vector Integer Merge and Move Instructions */ static bool trans_vmv_v_v(DisasContext *s, arg_vmv_v_v *a) @@ -2680,6 +2704,17 @@ static bool opfvv_widen_check(DisasContext *s, arg_r= mrr *a) vext_check_dss(s, a->rd, a->rs1, a->rs2, a->vm); } =20 +static bool opfvv_overwrite_widen_check(DisasContext *s, arg_rmrr *a) +{ + return require_rvv(s) && + require_rvf(s) && + require_scale_rvf(s) && + vext_check_isa_ill(s) && + vext_check_dss(s, a->rd, a->rs1, a->rs2, a->vm) && + vext_check_input_eew(s, a->rd, s->sew + 1, a->rs1, s->sew, a->v= m) && + vext_check_input_eew(s, a->rd, s->sew + 1, a->rs2, s->sew, a->v= m); +} + /* OPFVV with WIDEN */ #define GEN_OPFVV_WIDEN_TRANS(NAME, CHECK) \ static bool trans_##NAME(DisasContext *s, arg_rmrr *a) \ @@ -2719,6 +2754,16 @@ static bool opfvf_widen_check(DisasContext *s, arg_r= mrr *a) vext_check_ds(s, a->rd, a->rs2, a->vm); } =20 +static bool opfvf_overwrite_widen_check(DisasContext *s, arg_rmrr *a) +{ + return require_rvv(s) && + require_rvf(s) && + require_scale_rvf(s) && + vext_check_isa_ill(s) && + vext_check_ds(s, a->rd, a->rs2, a->vm) && + vext_check_input_eew(s, a->rd, s->sew + 1, a->rs2, s->sew, a->v= m); +} + /* OPFVF with WIDEN */ #define GEN_OPFVF_WIDEN_TRANS(NAME, CHECK) \ static bool trans_##NAME(DisasContext *s, arg_rmrr *a) \ @@ -2843,14 +2888,14 @@ GEN_OPFVF_TRANS(vfmsub_vf, opfvf_check) GEN_OPFVF_TRANS(vfnmsub_vf, opfvf_check) =20 /* Vector Widening Floating-Point Fused Multiply-Add Instructions */ -GEN_OPFVV_WIDEN_TRANS(vfwmacc_vv, opfvv_widen_check) -GEN_OPFVV_WIDEN_TRANS(vfwnmacc_vv, opfvv_widen_check) -GEN_OPFVV_WIDEN_TRANS(vfwmsac_vv, opfvv_widen_check) -GEN_OPFVV_WIDEN_TRANS(vfwnmsac_vv, opfvv_widen_check) -GEN_OPFVF_WIDEN_TRANS(vfwmacc_vf, opfvf_widen_check) -GEN_OPFVF_WIDEN_TRANS(vfwnmacc_vf, opfvf_widen_check) -GEN_OPFVF_WIDEN_TRANS(vfwmsac_vf, opfvf_widen_check) -GEN_OPFVF_WIDEN_TRANS(vfwnmsac_vf, opfvf_widen_check) +GEN_OPFVV_WIDEN_TRANS(vfwmacc_vv, opfvv_overwrite_widen_check) +GEN_OPFVV_WIDEN_TRANS(vfwnmacc_vv, opfvv_overwrite_widen_check) +GEN_OPFVV_WIDEN_TRANS(vfwmsac_vv, opfvv_overwrite_widen_check) +GEN_OPFVV_WIDEN_TRANS(vfwnmsac_vv, opfvv_overwrite_widen_check) +GEN_OPFVF_WIDEN_TRANS(vfwmacc_vf, opfvf_overwrite_widen_check) +GEN_OPFVF_WIDEN_TRANS(vfwnmacc_vf, opfvf_overwrite_widen_check) +GEN_OPFVF_WIDEN_TRANS(vfwmsac_vf, opfvf_overwrite_widen_check) +GEN_OPFVF_WIDEN_TRANS(vfwnmsac_vf, opfvf_overwrite_widen_check) =20 /* Vector Floating-Point Square-Root Instruction */ =20 --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747627763; cv=none; d=zohomail.com; s=zohoarc; b=CVQ0cj3WJ4otZ5QACtNvmGK+UG8eC0EiWymJcOA3zaUduc0xvBVWi6xV+eSPmQHJz5+m6naPoqZDCs3mMHyRQo7tXugV5h10/BJOmNjo6MwjrA5/XjF568wFN0bLWT/rJMQHj63jBUm4UTMfV8Ae30/ZKF3zosR3BkWqzGOmvLs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747627763; h=Content-Transfer-Encoding:Cc:Cc: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; bh=8cJLeWkLvWM5bp/XTdTKM2Obf1dResa+TT2yrKZ8tT4=; b=m3CeOhVXYWA6UW2dYtExpjyRk6sqFH2jOXMnjAHY6VldSg2U0L/y+XhhO5MiRDfahik910UTYBjkUmX76KCh7vDepsQ9Q2EpSdkx9QooWJDtpxkuT6wFD+wm94565ZMtPMwaHRV8pYCmcDIBkMcmbIlr5vEBcvc+UyCVBx4KXhE= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17476277631261021.271734697643; Sun, 18 May 2025 21:09:23 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGroO-0007ci-BB; Mon, 19 May 2025 00:09:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGrnv-0006fi-2T; Mon, 19 May 2025 00:08:46 -0400 Received: from mail-pg1-x52e.google.com ([2607:f8b0:4864:20::52e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGrns-0004FD-DP; Mon, 19 May 2025 00:08:42 -0400 Received: by mail-pg1-x52e.google.com with SMTP id 41be03b00d2f7-b07d607dc83so3084091a12.1; Sun, 18 May 2025 21:08:38 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.08.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:08:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627717; x=1748232517; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=8cJLeWkLvWM5bp/XTdTKM2Obf1dResa+TT2yrKZ8tT4=; b=c2G9qOxFUT4RnhPbWz0gOKlrIoq9/FsnsNh8epPU39lXnuy17hr2VUW1YVz22iYK1E aEHtlVKsA5LX9Qn46W9bnk3HehNvNWE0qEFLyvQHujH20jxrzFb5LvjuUBtvQgIPdXrc c1JL7c/mKW8C0z95C+c8y2s0dc14MQrY/dCoZwVZXgYLLEPOmYU3+ucvzpoFSkHN3nic 0JpEG/rru3zTXs4yTVe/nxTXV7Eol/6u0DnLGU7knHiITeLXyw7HN91LqZt/+eg31al8 zTeU9qk1llHptFxTVJew32McMabQvks9ra5oqgaRn1ZKo0yfwqKgTuByGDcNqfVgNza7 ZYpg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627717; x=1748232517; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=8cJLeWkLvWM5bp/XTdTKM2Obf1dResa+TT2yrKZ8tT4=; b=lMhpUDyV4gzvREN0i1GuGBq/qgsBwx13qk5aTxbkuyeTBOTC7bYRPNCn7iis3/FvFs YzlkMsNQ9a6OqxyPo7dwUXQoKqunrpgRiTk2kynbTG3ADlCdVq8O35m7LlWMLcrb1aTS O6bE5b06cvLhtYyXfuJKOcKj7jxZynk/GVLR/iVudTKGKaY0Cy2hVoSa2rkvzPRbFgT9 rlkibcsjVIItMZnde7juBXHuHVUEwkg2RjbOxE9hvkq8AUz5Ro0Ke6CQF26rutLoP3cI r7JR9rEwQmJ8j3AFsNZMv7Bq/QjLjSNo9sbvPaZNEw8K7OLceg+rOJZ1p6nrtcDd93zZ rIxQ== X-Forwarded-Encrypted: i=1; AJvYcCVPlzKWKqZkAZhFf9CcyT1P+laRnpVs91V/w8EGkgG4k5fmfZHZDADBLGtd9CkprZYHpk2GNh+dD77hTQ==@nongnu.org X-Gm-Message-State: AOJu0YzzzxO8pFDR9g/Ny6SVpQF4Ie5Echn4Ci1G00szoGc2hSOveIvw d8pVsbVhNSNcIGg4C0LZKXI/6t56lykwckedLfcgUv6jef8DfEbmTQ5JJ01R9A== X-Gm-Gg: ASbGncuqTeRoepFw7LO1tNU/So3751zvkrxrd91Rtp05jBpOWU+LrHarAyyruwzGaFn LJfukb3QGlO8867fiDrIVfv2eUyaYgYCT83Tp5oxyDw+JvFeG1OM+8QQqMvCLJjNf25jYOLVFKj 9HE+0baEj6JOOZLzNwGiP9i1nIYfWuG/hsqP0tDG8vIpD6xsW7UbhYwwb5iy4DTyklIOJdAPiTE K3A70kwGGHCAcSztib8SxYgR2S6i+Skv3QDTYao/w4dFCTQ5MLIq9FPlNs6KafHN3FX+Ye8rN1U bH/Lvq1+sKTk8QpzPy+/mYTlIrpz9/SP15tz3HOcn16p7JQpyETOVIeQkJKrepfWX2+c+RY5iet +szQhINTumCXzjQKo3tnjTnj1VYEUei5OSNgS85+r1QDKqDGeQ/fJWaMl X-Google-Smtp-Source: AGHT+IF6cNdX5wyBEkgsCf0EevByfmD8f9zID1w9ELJcURPTDsTrxDE3rgdfh94gbzrYxnClt0ZxIQ== X-Received: by 2002:a17:902:f785:b0:22e:4c98:cd8b with SMTP id d9443c01a7336-231d43d9a46mr147368805ad.3.1747627717586; Sun, 18 May 2025 21:08:37 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Max Chou , Anton Blanchard , Daniel Henrique Barboza , Alistair Francis , qemu-stable@nongnu.org Subject: [PULL 28/56] target/riscv: rvv: Apply vext_check_input_eew to vector indexed load/store instructions Date: Mon, 19 May 2025 14:05:25 +1000 Message-ID: <20250519040555.3797167-29-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52e; envelope-from=alistair23@gmail.com; helo=mail-pg1-x52e.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747627764279116600 Content-Type: text/plain; charset="utf-8" From: Max Chou Handle the overlap of source registers with different EEWs. Co-authored-by: Anton Blanchard Reviewed-by: Daniel Henrique Barboza Signed-off-by: Max Chou Message-ID: <20250408103938.3623486-10-max.chou@sifive.com> Signed-off-by: Alistair Francis Cc: qemu-stable@nongnu.org --- target/riscv/insn_trans/trans_rvv.c.inc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/target/riscv/insn_trans/trans_rvv.c.inc b/target/riscv/insn_tr= ans/trans_rvv.c.inc index 1d2b46fc44..2b6077ac06 100644 --- a/target/riscv/insn_trans/trans_rvv.c.inc +++ b/target/riscv/insn_trans/trans_rvv.c.inc @@ -1277,7 +1277,8 @@ static bool ld_index_check(DisasContext *s, arg_rnfvm= * a, uint8_t eew) { return require_rvv(s) && vext_check_isa_ill(s) && - vext_check_ld_index(s, a->rd, a->rs2, a->nf, a->vm, eew); + vext_check_ld_index(s, a->rd, a->rs2, a->nf, a->vm, eew) && + vext_check_input_eew(s, -1, 0, a->rs2, eew, a->vm); } =20 GEN_VEXT_TRANS(vlxei8_v, MO_8, rnfvm, ld_index_op, ld_index_check) @@ -1329,7 +1330,8 @@ static bool st_index_check(DisasContext *s, arg_rnfvm= * a, uint8_t eew) { return require_rvv(s) && vext_check_isa_ill(s) && - vext_check_st_index(s, a->rd, a->rs2, a->nf, eew); + vext_check_st_index(s, a->rd, a->rs2, a->nf, eew) && + vext_check_input_eew(s, a->rd, s->sew, a->rs2, eew, a->vm); } =20 GEN_VEXT_TRANS(vsxei8_v, MO_8, rnfvm, st_index_op, st_index_check) --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747628143; cv=none; d=zohomail.com; s=zohoarc; b=O8gCfCU//RYg+vmMWf1hMq9Gjs6wMULYSzPsGp8PsbumZsjUASo5xXGNYr9G2ZlBwMwrldGtYU5YR2Gl7CHf0u+hQ3Dodpb+15NTtmnPodqTsbWzt+xzDy9CnTVqJmRhpFI2lWSU2w8LSzq25Z1Y0eUQHvVMGQGs2CUmH1ZNLBQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747628143; h=Content-Transfer-Encoding:Cc:Cc: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; bh=k370jVb1ghYD8wRe4THt85sChP4fM4b7xFJCBveO8zY=; b=LUL46zUodfMJ39eoOcnI+Y283ogZPRZPUj3AeIy6TPBJeqC2MUZ2+TULdQopZeJlvCwieX2e59N6UdgOxZVYMLY6XC1HXsKJzhXNv++u950jA/LBqqoovDw5SyahbKe3wXrwxXBmsB8sJGLwyU2lfRZgSzI5odD+P+gpDtxvPi4= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747628143138594.7217762892438; Sun, 18 May 2025 21:15:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGrtz-0003cD-5E; Mon, 19 May 2025 00:15:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGrnw-0006gp-Va; Mon, 19 May 2025 00:08:46 -0400 Received: from mail-pl1-x62f.google.com ([2607:f8b0:4864:20::62f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGrnv-0004Ff-6C; Mon, 19 May 2025 00:08:44 -0400 Received: by mail-pl1-x62f.google.com with SMTP id d9443c01a7336-22e033a3a07so38420355ad.0; Sun, 18 May 2025 21:08:42 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.08.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:08:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627721; x=1748232521; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=k370jVb1ghYD8wRe4THt85sChP4fM4b7xFJCBveO8zY=; b=fT14XRzQdLQyw9Naz4c0GOxUzdhzGubETEbNMlsynKs8FkeinnLBDB8vAh6hkgWNJs JdeEK2HGLbSzdZ/9gMc8JM1lx20x/bBkwsdTHdWhRHxlLQfrAo+RAjvHfWYkmtSwMUiC 96+0DmoNYsxuPXyWgj0WNVkmJBIdneOvuNT0fyOVLzkO7fjpwdNnobytZpafo0bmDwOb TpGU8GllEApg1jIK9aEBptMidianjhu711F+vaqQB+XNtqb0HnUCwPL1+R3vR9a/YM5d kACyS7QAk/iIdAtLjDTO8xggUk/yVFLn+eVJCPYKlXWXB7tCDUWGJIq6Jn8CpxWGCXNr 3MMQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627721; x=1748232521; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=k370jVb1ghYD8wRe4THt85sChP4fM4b7xFJCBveO8zY=; b=OBfQihcxM/fnWEAfT1G0aqJnMTUVBsajM4WPHgLUxrMlSod3pP8DgQ+kHFRqPH2zf+ aI4hYx2b+45sGwho3B/TJyoCWlqtpmvnN+RJNfEVNupxqnD8Seg4M85HfaKA6MoQ9xD+ ijCPbC1TXQelOY2g8wheL+MmvU6zaKQnisP0My/SY6bJj0UTP4GhvLMpEfSPYuQcKFwn LkgB8IfEkmsppasBurpVJR1hFCu6HjKMcjG5D8su8KmfZ+lMSgE1f3fSb27HNmUdZWew fZNXOEMLL+GihAT6F+XBCn/lJRQ+T45hauv/KneMc51GiJMfDxdJj5hdLoWdZ0p9s3tq bIFg== X-Forwarded-Encrypted: i=1; AJvYcCWQcY/fTFc2Hu8v9UhNObotnvU1QLQ9MFYz0FJaj8SZQBf81jFzFE/U7ZtKEXwgfXyBROkbzZlauCkgjQ==@nongnu.org X-Gm-Message-State: AOJu0YyxVkX5kPVEDGzsZnjw8Ra4BolQ7SP++qtLcacVwt38PJiqy1mr inAEkurU2QYAF+qkswwFsfmFOzzRPlOMyya26erH1U8WmWOulkeO2qzQyCfRAQ== X-Gm-Gg: ASbGnctp4zmhc/7gpLYhDcXuXzUNdyBfLaIuQgeL7dH0nXeGzzDt3US9MS42IsqxO6s 3VtqICD2Evwj5JBQMTmuM+A3UQo0fLNXvgG6QrX0QjSa6ex08a3qMeVvuWnRly4c550tPQG9Uur kLNf5F5pYfQF9Gni8+cnp9Me0aFcaAoX+voNoc0kIAfiiTNd7usxnKSJ3Bk4W3UahR+TlPnxVIF Pry7Xoxn3PvJN+RqrsGVYJwJ7h6oiOPC0AKVaXjc2WZTY5XzEJP2b7TEGzTXug7Pe0eBJo/3K3a MWv5luTEFelfJGFVOUfvfLh9k+oaTK10saELD97TC7QShg2HKOLyEVyQrzqsr8/Zhu8TyJkcSRC sFo5mauj7XxD0QZlkQ3JqoKasVS6fODqmyHtZj3A+MbfRMjrm0YvmVjoY X-Google-Smtp-Source: AGHT+IEuVhGAj13/pN41u6qhci19IqI2oHyY1paqsA8+80oAPhkZ6bqbkZ1Wv5Qu1IcKMTmjHwb0dw== X-Received: by 2002:a17:903:2ec8:b0:224:1943:c65 with SMTP id d9443c01a7336-231d44e64e6mr163563695ad.14.1747627720835; Sun, 18 May 2025 21:08:40 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Max Chou , Daniel Henrique Barboza , Alistair Francis , qemu-stable@nongnu.org Subject: [PULL 29/56] target/riscv: Fix the rvv reserved encoding of unmasked instructions Date: Mon, 19 May 2025 14:05:26 +1000 Message-ID: <20250519040555.3797167-30-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62f; envelope-from=alistair23@gmail.com; helo=mail-pl1-x62f.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747628144446116600 Content-Type: text/plain; charset="utf-8" From: Max Chou According to the v spec, the encodings of vcomoress.vm and vector mask-register logical instructions with vm=3D0 are reserved. Reviewed-by: Daniel Henrique Barboza Signed-off-by: Max Chou Message-ID: <20250408103938.3623486-11-max.chou@sifive.com> Signed-off-by: Alistair Francis Cc: qemu-stable@nongnu.org --- target/riscv/insn32.decode | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/target/riscv/insn32.decode b/target/riscv/insn32.decode index 6d1a13c826..cd23b1f3a9 100644 --- a/target/riscv/insn32.decode +++ b/target/riscv/insn32.decode @@ -703,14 +703,14 @@ vfredmax_vs 000111 . ..... ..... 001 ..... 101011= 1 @r_vm # Vector widening ordered and unordered float reduction sum vfwredusum_vs 110001 . ..... ..... 001 ..... 1010111 @r_vm vfwredosum_vs 110011 . ..... ..... 001 ..... 1010111 @r_vm -vmand_mm 011001 - ..... ..... 010 ..... 1010111 @r -vmnand_mm 011101 - ..... ..... 010 ..... 1010111 @r -vmandn_mm 011000 - ..... ..... 010 ..... 1010111 @r -vmxor_mm 011011 - ..... ..... 010 ..... 1010111 @r -vmor_mm 011010 - ..... ..... 010 ..... 1010111 @r -vmnor_mm 011110 - ..... ..... 010 ..... 1010111 @r -vmorn_mm 011100 - ..... ..... 010 ..... 1010111 @r -vmxnor_mm 011111 - ..... ..... 010 ..... 1010111 @r +vmand_mm 011001 1 ..... ..... 010 ..... 1010111 @r +vmnand_mm 011101 1 ..... ..... 010 ..... 1010111 @r +vmandn_mm 011000 1 ..... ..... 010 ..... 1010111 @r +vmxor_mm 011011 1 ..... ..... 010 ..... 1010111 @r +vmor_mm 011010 1 ..... ..... 010 ..... 1010111 @r +vmnor_mm 011110 1 ..... ..... 010 ..... 1010111 @r +vmorn_mm 011100 1 ..... ..... 010 ..... 1010111 @r +vmxnor_mm 011111 1 ..... ..... 010 ..... 1010111 @r vcpop_m 010000 . ..... 10000 010 ..... 1010111 @r2_vm vfirst_m 010000 . ..... 10001 010 ..... 1010111 @r2_vm vmsbf_m 010100 . ..... 00001 010 ..... 1010111 @r2_vm @@ -732,7 +732,7 @@ vrgather_vv 001100 . ..... ..... 000 ..... 1010111 = @r_vm vrgatherei16_vv 001110 . ..... ..... 000 ..... 1010111 @r_vm vrgather_vx 001100 . ..... ..... 100 ..... 1010111 @r_vm vrgather_vi 001100 . ..... ..... 011 ..... 1010111 @r_vm -vcompress_vm 010111 - ..... ..... 010 ..... 1010111 @r +vcompress_vm 010111 1 ..... ..... 010 ..... 1010111 @r vmv1r_v 100111 1 ..... 00000 011 ..... 1010111 @r2rd vmv2r_v 100111 1 ..... 00001 011 ..... 1010111 @r2rd vmv4r_v 100111 1 ..... 00011 011 ..... 1010111 @r2rd --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747628759; cv=none; d=zohomail.com; s=zohoarc; b=SNgOiJPH54OokE4xpYcM+0TqDR/w6GnrcNit71qgFbOHgfuPsmqTajSR3SUzguIyAktY8Fvujur3P4QN7NvEIszzeHWXNfExvcMzZtXSumRderaq7PAkKEC9uWsFksX/dLsa9If1GASAQXJfJM91VGFzhx7LDIjpsT8shFF/L4c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747628759; h=Content-Transfer-Encoding:Cc:Cc: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; bh=2v44lGfcQYNx/2ewSOTljM6U7tlQBnMtbr3WCiqvH6Q=; b=TRYjdKWzGv2OL7rMaZ+tdJY0QMJNMdr+0gs1A3JjxM+gxjPRPnqO4nQ2acMaovw6f4B8zxV7H8BM5gLc7AAL8xq3Nxg96Tde4ojCBa31RUenoZlDGLVbKOaHxydGw2VHybRSxkyCxJXSWlSsj8IA2PlHkbdKTrvgJ0r8Pr+n6rs= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747628759940973.6175286282884; Sun, 18 May 2025 21:25:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGs3Q-0000di-0s; Mon, 19 May 2025 00:24:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGrnz-0006iB-Jk; Mon, 19 May 2025 00:08:48 -0400 Received: from mail-pl1-x62e.google.com ([2607:f8b0:4864:20::62e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGrnx-0004G5-OP; Mon, 19 May 2025 00:08:47 -0400 Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-231e8553248so18886255ad.1; Sun, 18 May 2025 21:08:45 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.08.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:08:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627724; x=1748232524; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=2v44lGfcQYNx/2ewSOTljM6U7tlQBnMtbr3WCiqvH6Q=; b=ILZu8U6gZ/qQ4CFPEm4DRliC0gAChkwrO50aUvG0BHEERbrYwnofbiVCNu+UK4bjTL TFFHEbY2CJQijsVRgX4963y8WwAQn69qJzzWI087UBY81a9IG7HLD08VIuYnQxhVybNc h296pg8tbZFRyUhgCCioawUTfSt66mEd16kSQ0xy6rT96PfWbzoo6Tkzs6nR8EDBoIj3 bd6i+PbZBwePOBOioMKA1DzImA4nBeKaejfAnkRYE5gNj8v7pYYDSzfGWWzDsTuLCcQX LdneiYKyei/V/hcQ3ksUZGnjBryKtKlXdj+bGum2WHIPY9iicYNx02aiCQNeJqpSYyfH hIeQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627724; x=1748232524; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=2v44lGfcQYNx/2ewSOTljM6U7tlQBnMtbr3WCiqvH6Q=; b=sBnMzgdXEQIbIr2gccRFqvgLfNC2RnesTwiGwemTpjM9HSTT6uQ/3vWqe0OM82ZFRZ RfTR3ZouC7t+bT51wMIqBgTZtFisiNLtBPXDscTJwxEP4BE8P5/BVsnsJUsNs4wDTbeK seHtVG3481vsUUlo16VfaOpWskhgGqjDQ0/9qtg3hq/uxxU92smlP6Lc8GD7ZYBdWVzw O36A4cx7lCgnQ/IM0jXnBJYSQhEHKfHQmlqGjGQrBhGU0pN1gUoXlkigOZ67q70nH7bz bopk37dDekG53VKCwu6pDmRzcMY64OKstMgD2yiiRfi03qIUsmWaWraT4vq+rCH7Uy0H tDDw== X-Forwarded-Encrypted: i=1; AJvYcCX4Gr1qSnHgzTUQxswo48Fx3prEZGKo7lsc+xdroGY2wrxJdY9XwO1VCXijrtUKVo9zsFRni1gBfKW1jA==@nongnu.org X-Gm-Message-State: AOJu0YyZQmSvNg46FYZuYrdlMefdyVrdekEJEt0YpZ4UVjuptS+VHJKp UTnoBPtx1CWwQWGGWXRMFFbXHRuoGP8AjFneaCpKKVHUDs50i+kuSve6z7w7aA== X-Gm-Gg: ASbGncsic/AXd3A1TYEfukFVCB1iijPn9svHAeYy+2QAURGm7ESG64O7NzeKdAbuzL7 yXmlALRM4fHQrCbwcYod0/cuk+LhqBYqXbC9u4smtwNuPD2CDimuZ4A31LRb8hyCSVAHD7TyZNB iTzKcWwitLf5NDLsuRWiGSVdUc2Z0YyA+hfWFdgDxXbaw9+a4vKgFmPLYRP/405uXRnwoGH2B3z U68LrSVjB9XM8uCkArISVZ5t15o0Vw+WfhxObhECL4Ig6iR0x/JW88YYtChDLvHz1XyLLKv7QYm 5k1UA/Lmq00JtmGA7CYhA21AkVClnD3U7RqYswII0iYiEbcuZtn5/JtbqNaEOvqvzSNAQr0lJuE TNT/6vS3XRgTM0BSgD8JERzpHVn3XLh6aH3uXpud35vTw+D/1q6H7treqBl9YW/hnmOE= X-Google-Smtp-Source: AGHT+IHLzNx9Gjc+mecwkbBKycz3Y8iCQijzhrjCeeIvf8/phq9s7L+lDwJoDXfxzJHtn/VShQLXsA== X-Received: by 2002:a17:903:2f44:b0:223:88af:2c30 with SMTP id d9443c01a7336-231de30281bmr141448685ad.16.1747627723900; Sun, 18 May 2025 21:08:43 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Anton Blanchard , Alistair Francis , qemu-stable@nongnu.org Subject: [PULL 30/56] target/riscv: Fix vslidedown with rvv_ta_all_1s Date: Mon, 19 May 2025 14:05:27 +1000 Message-ID: <20250519040555.3797167-31-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62e; envelope-from=alistair23@gmail.com; helo=mail-pl1-x62e.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747628760755116600 Content-Type: text/plain; charset="utf-8" From: Anton Blanchard vslidedown always zeroes elements past vl, where it should use the tail policy. Signed-off-by: Anton Blanchard Reviewed-by: Alistair Francis Message-ID: <20250414213006.3509058-1-antonb@tenstorrent.com> Signed-off-by: Alistair Francis Cc: qemu-stable@nongnu.org --- target/riscv/vector_helper.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/target/riscv/vector_helper.c b/target/riscv/vector_helper.c index 3aec9a7731..5dc1c10012 100644 --- a/target/riscv/vector_helper.c +++ b/target/riscv/vector_helper.c @@ -5133,9 +5133,11 @@ void HELPER(NAME)(void *vd, void *v0, target_ulong s= 1, void *vs2, \ } \ \ for (i =3D i_max; i < vl; ++i) { = \ - if (vm || vext_elem_mask(v0, i)) { \ - *((ETYPE *)vd + H(i)) =3D 0; = \ + if (!vm && !vext_elem_mask(v0, i)) { \ + vext_set_elems_1s(vd, vma, i * esz, (i + 1) * esz); \ + continue; \ } \ + *((ETYPE *)vd + H(i)) =3D 0; = \ } \ \ env->vstart =3D 0; = \ --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747628807; cv=none; d=zohomail.com; s=zohoarc; b=itNq5QaHgRSpIzn+BSUI/eqyUHmhcbfNdNyg6FEXAbu3fHfm7kVI8hKZMzYhxgKMoKXMBd/msrWX3htdLQ2CbWv65medPfF7LwujslmIvVRNUugETbXpUIlNav51NP9yFXynz0w0DKbRvS1TQZcPe/zy0lJaDH+eSiheI3XPV9A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747628807; h=Content-Type:Content-Transfer-Encoding:Cc:Cc: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; bh=Z7fI81BtV/dAQsFt7V17GmQosWGaHjyzXgS42FWHJZ0=; b=LWrkZ/m2sf1jytdScCwhAMUvQhv7dVnbkB/EQovQRDLXg2W1FyFNeH/D3zRyyQAJGGcUYUPk+lVimyulZObSPygXWN+yjJ2K7sYjUnlqPaskU+32DHE89iNkpW82PunHzLfA0lskaO5yZ0CujkL25QEBMok3Onb0/zI9A8IMEz0= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747628807702668.5370883076034; Sun, 18 May 2025 21:26:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGs3Q-0000ds-P3; Mon, 19 May 2025 00:24:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGro1-0006mn-Ng for qemu-devel@nongnu.org; Mon, 19 May 2025 00:08:50 -0400 Received: from mail-pl1-x62e.google.com ([2607:f8b0:4864:20::62e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGro0-0004GW-3q for qemu-devel@nongnu.org; Mon, 19 May 2025 00:08:49 -0400 Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-231fc83a33aso14466965ad.0 for ; Sun, 18 May 2025 21:08:47 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.08.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:08:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627726; x=1748232526; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Z7fI81BtV/dAQsFt7V17GmQosWGaHjyzXgS42FWHJZ0=; b=bddNoG5Y8mBkzwgNHxvT792K0eG0fE64BLI2rYoCAZRk0pJyJFR3iAWW/IMgMB7B3G sUFIJRC1NKN778N/vXhqER3dV53zjYJ/x3jP/gAWCAJwjvRMCAQZfdjFwj+gBEpyvm0P zcyvGxXwdXwuiz9WR/KaJ/BO4syQXOf11BDx09qRFi/Tbpjw97lTIZZgr4TAo3hqbwuc ztm3MKa2BoIcMegXxLiF1cpSLP8v2sXxB3s72k6TabsUSYeq8kp/kN3f4UUnmVllnSYl p9nNsd8aq83SHIi+ClwDFjaEFxgkEnf+S/YcVuQzezOEJlDNR0YcaRmMbAI+Z865sRbD Uy0g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627726; x=1748232526; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Z7fI81BtV/dAQsFt7V17GmQosWGaHjyzXgS42FWHJZ0=; b=FyCGeUicqhRU55FfRWGqAyv9as0mzOtkKDVVNVMaCxSoeN5QEdlTp8TxMb3lr/DM45 ptZ3PHflliIVWQU/qDwK5PE5/dBfpTVy6NZ3P//8iaOAe5OdrVq8KL8u5YgzvFzqigij CJWogoWqg5GXlqwZrDzU8OiyPHn8AewkIIipWjDkfKXWFTVsqsieFaaZrLFArKr3Yx++ hi458xAx+3VUDwcGCL7q6ZQ3sCMmuq8UbZq6KMJK3hQlS7B3GlvNgi3OFn1g60v8SSY4 r0bRxMrz6Y+2EcAWlFHCwgcr2+12E8Tq9MZ70gFhcEsF183uXWIxp82SPyrv07X7Q7TB K2kw== X-Gm-Message-State: AOJu0YwDk0gaF6ga6563lJc4uP/eAFjQwmjtRUvgMkDeaeJLiUvubOpH sQZQyDIlUVOB89I6+6hKuzmQAMkrjFlMzzc9FvQU9gAk+B0geMwwp9cEjrvHlQ== X-Gm-Gg: ASbGncsYRDaQmZdNbppQJ1CQQP85KEocfzCGr5X5xDEFI7Gk+OqmnEAps8ma9T1sucZ vQuaxmY/AqhKIuaAp0G+q55Eak8ZWrs318ftzXUYst5SvyZfujCNMwTgv8bIpcK4YEg7AkkQh/T 0h0uMbS/yRxE2ZziLDBgRtpo8Lm3p6CzYCkIJ+SDF6CEvkt3izAzw00XN3Z+oewOQ8n4iaX97Pb Rij8DFLVB+AFVfbzeTCQSBz9CPgY6dwnmLeQGH83P4fA/mR6MJOUdlojQpdhiy9TWXyAYV0wX+O uWnZ/rCHospFJzW6o6fBwZeIEdADrurhd1tCohZDmgj4Ubm1ETE+aE8S8YBTGYuEVfwW7FfOyyd D6+UJ26otI3Bwq/kAHpiw0GDqQkDOl/RpPA4FysdTNQzt/IvhSD+PCOPl X-Google-Smtp-Source: AGHT+IGCYbKGOC95Q+rtvZTKDO4iEVllsv8WTWyAZyVEHiSjDUB4MfGrLlAx20+ylgGtdGCnV9vSnA== X-Received: by 2002:a17:903:11c6:b0:224:e33:889b with SMTP id d9443c01a7336-231de35f32fmr167261495ad.12.1747627726546; Sun, 18 May 2025 21:08:46 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Alistair Francis , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 31/56] MAINTAINERS: Add common-user/host/riscv to RISC-V section Date: Mon, 19 May 2025 14:05:28 +1000 Message-ID: <20250519040555.3797167-32-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62e; envelope-from=alistair23@gmail.com; helo=mail-pl1-x62e.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747628809213116600 From: Alistair Francis Signed-off-by: Alistair Francis Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-ID: <20250422024752.2060289-1-alistair.francis@wdc.com> Signed-off-by: Alistair Francis --- MAINTAINERS | 1 + 1 file changed, 1 insertion(+) diff --git a/MAINTAINERS b/MAINTAINERS index 57dddcc80d..7060cf49b9 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -328,6 +328,7 @@ F: include/hw/char/riscv_htif.h F: include/hw/riscv/ F: linux-user/host/riscv32/ F: linux-user/host/riscv64/ +F: common-user/host/riscv* F: tests/functional/test_riscv* F: tests/tcg/riscv64/ =20 --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747628759; cv=none; d=zohomail.com; s=zohoarc; b=fkdhXruPKRl1fgE5jK7azrb530Z53Po88rXwYdDs2OAGKxMBr6gu3gIlmrenZ/5QMIc+Gke/X/ZeZTQa3FNom4ifoQ8csZDz+yHykUKMRZK/7i67e/Jlvc4L8Js5k9SzQ+odqR0vmg7hTwhX+xow5qqic2xiHl/StA4sVTf+UIc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747628759; h=Content-Type:Content-Transfer-Encoding:Cc:Cc: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; bh=wmUgwEfoQhqxtFyJjDXjMNdBeEt/DbzUtpPXfwQzoz4=; b=EUQ7CWEHEbLY9KEz7fEjhpXbYG/3FlwlMDVGEUY3+QhFph1vTpjEZP//TktV0WgBb5KqzzHWl+QqUf3FAyaanXDHxG20UcK1YdexHMVUMgVQKEWrHSUDSrMg/Jg4T36gsi+vZmmY44v+oa3yz66GpIV5paadb24ZtlAPdC27Dbs= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747628759774608.3053606404304; Sun, 18 May 2025 21:25:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGs3T-0000g3-Mt; Mon, 19 May 2025 00:24:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGro7-00072G-Lz for qemu-devel@nongnu.org; Mon, 19 May 2025 00:08:56 -0400 Received: from mail-pg1-x529.google.com ([2607:f8b0:4864:20::529]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGro3-0004H6-NA for qemu-devel@nongnu.org; Mon, 19 May 2025 00:08:55 -0400 Received: by mail-pg1-x529.google.com with SMTP id 41be03b00d2f7-b26f67f10ddso1526261a12.3 for ; Sun, 18 May 2025 21:08:51 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.08.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:08:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627730; x=1748232530; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=wmUgwEfoQhqxtFyJjDXjMNdBeEt/DbzUtpPXfwQzoz4=; b=CUjrSVvcXl9djOHdzvokGctQj/Ix6uDnnmvPp85YTpYE16td6O8vP9ADKwEktHvFRe bOuxltKLzB5wNjsiClNdVXnysQeWRg5V3nQqjTjrJnLYO7QrkGKf6+qYqjNfHh8OsqYD iaihIF/EzQoyOCc6dciwSimxBjgcZqHUO7HRIbxvJAtO7BO8sROn30DARHRstIvFJB7G hBdzWk2ZpBUUKVOfd3axiGKcb8N9ChJ9XVpRomDSe7iHMUXWR0fpOS+TRmVlVSPm0IDF mBqtYPxxd/WcStJhmqs2dzDRSYYRYSFou9PNUmz4m4plVnM1GRRBVpmcdVLoyXnpLh2v xqqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627730; x=1748232530; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=wmUgwEfoQhqxtFyJjDXjMNdBeEt/DbzUtpPXfwQzoz4=; b=Y7rVlsull2hjQ+XjUYS7yjJ3+EUFvOHNhHvkzrvTNv7Czby9O2PUUVam98uDMayvRT 6IsqrMvLn4MBSh62n66RUJqf+r4o+dYaEeSBZImxWDBfegfiFtVfdE3eRjPSYCwGf92q AQbkEHczDfRMUbLm1LEQ47uc3qB8cYUbuZV3D3HI2p0kWhO7c0SbjBXt1OkpSpcRpCsg csE5rBow4EKdjRLbT6tiOKFwcnYaqLvd7Zmkp5izpMO8I/fSANerIHCBJ9Zjkz7MB1pB FtbYhw0j1n81IaIx1S9+icjPcHDn8ojj4FpEPZEt0ofZy/7sEjBlbyYxRZQd31AYhqha vA4Q== X-Gm-Message-State: AOJu0YzSlpT8S0GNLB7DVuxq+M+l2oFIc/KF4wJ+8T6ydOeJvjQ/3bKk eMVl5A8sLt9xlyxnLBpkTF3uuW7E6qUynbZ1JfhbZOc2hWIft92oBVxK5feY0A== X-Gm-Gg: ASbGncuvLaHHu6tlTPhUk3T1xB3sNhxlsNspcb1Ft7KKtlJ2vv+72QFQot/hy1LRy3B 5ktx3q7GxqgwwtplfLmplyuRznW1x02ArwT34aiimdA7HKvJM2ginuuQXrKfj3csPEQbEcME1Wb j9pkFJZq2u2v3Vsjh+jc5k9x6EsaJSMZrayhVJezAJvvGeGzY2fD2PsXshWgwGXokCph4+Jz8/u +5PWHU2wrjbzd/rg2T/Nc+QARTQaP688cLrxBMacyIN93e/j2f2N7Mpg0/geW9jKODH+MXlSSFg BM5HpYTh8d+UsgSYQKRQcy6jQrIA0P6rN135TzxEgDHlTcGm+19fjbiSdxWZseo7t1fG4Bh8oZy VUnVlcJRy36Lx0UHRAIjAyaUY0S2hCTV8dJWm/mLCUEArCo2gCsG71T17 X-Google-Smtp-Source: AGHT+IGpl9oMytrESFvPoFkol9Mh+/fipmZZcByanl0Iu6POnWY6GFIgFtEDyrxLlP8K3whM3LJq9A== X-Received: by 2002:a17:902:c411:b0:224:1ec0:8a1d with SMTP id d9443c01a7336-231de376684mr139458035ad.30.1747627729914; Sun, 18 May 2025 21:08:49 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Richard Henderson , Alistair Francis , Daniel Henrique Barboza , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 32/56] target/riscv: Pass ra to riscv_csr_write_fn Date: Mon, 19 May 2025 14:05:29 +1000 Message-ID: <20250519040555.3797167-33-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::529; envelope-from=alistair23@gmail.com; helo=mail-pg1-x529.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747628760794116600 From: Richard Henderson Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis Reviewed-by: Daniel Henrique Barboza Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-ID: <20250425152311.804338-2-richard.henderson@linaro.org> Signed-off-by: Alistair Francis --- target/riscv/cpu.h | 3 +- target/riscv/csr.c | 226 +++++++++++++++++++++++---------------------- 2 files changed, 118 insertions(+), 111 deletions(-) diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index c66ac3bc27..4265ce06ee 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -838,7 +838,8 @@ typedef RISCVException (*riscv_csr_predicate_fn)(CPURIS= CVState *env, typedef RISCVException (*riscv_csr_read_fn)(CPURISCVState *env, int csrno, target_ulong *ret_value); typedef RISCVException (*riscv_csr_write_fn)(CPURISCVState *env, int csrno, - target_ulong new_value); + target_ulong new_value, + uintptr_t ra); typedef RISCVException (*riscv_csr_op_fn)(CPURISCVState *env, int csrno, target_ulong *ret_value, target_ulong new_value, diff --git a/target/riscv/csr.c b/target/riscv/csr.c index a32e1455c9..ba7620ef3d 100644 --- a/target/riscv/csr.c +++ b/target/riscv/csr.c @@ -830,13 +830,15 @@ static RISCVException seed(CPURISCVState *env, int cs= rno) } =20 /* zicfiss CSR_SSP read and write */ -static int read_ssp(CPURISCVState *env, int csrno, target_ulong *val) +static RISCVException read_ssp(CPURISCVState *env, int csrno, + target_ulong *val) { *val =3D env->ssp; return RISCV_EXCP_NONE; } =20 -static int write_ssp(CPURISCVState *env, int csrno, target_ulong val) +static RISCVException write_ssp(CPURISCVState *env, int csrno, + target_ulong val, uintptr_t ra) { env->ssp =3D val; return RISCV_EXCP_NONE; @@ -851,7 +853,7 @@ static RISCVException read_fflags(CPURISCVState *env, i= nt csrno, } =20 static RISCVException write_fflags(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { #if !defined(CONFIG_USER_ONLY) if (riscv_has_ext(env, RVF)) { @@ -870,7 +872,7 @@ static RISCVException read_frm(CPURISCVState *env, int = csrno, } =20 static RISCVException write_frm(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { #if !defined(CONFIG_USER_ONLY) if (riscv_has_ext(env, RVF)) { @@ -890,7 +892,7 @@ static RISCVException read_fcsr(CPURISCVState *env, int= csrno, } =20 static RISCVException write_fcsr(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { #if !defined(CONFIG_USER_ONLY) if (riscv_has_ext(env, RVF)) { @@ -942,7 +944,7 @@ static RISCVException read_vxrm(CPURISCVState *env, int= csrno, } =20 static RISCVException write_vxrm(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { #if !defined(CONFIG_USER_ONLY) env->mstatus |=3D MSTATUS_VS; @@ -959,7 +961,7 @@ static RISCVException read_vxsat(CPURISCVState *env, in= t csrno, } =20 static RISCVException write_vxsat(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { #if !defined(CONFIG_USER_ONLY) env->mstatus |=3D MSTATUS_VS; @@ -976,7 +978,7 @@ static RISCVException read_vstart(CPURISCVState *env, i= nt csrno, } =20 static RISCVException write_vstart(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { #if !defined(CONFIG_USER_ONLY) env->mstatus |=3D MSTATUS_VS; @@ -997,7 +999,7 @@ static RISCVException read_vcsr(CPURISCVState *env, int= csrno, } =20 static RISCVException write_vcsr(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { #if !defined(CONFIG_USER_ONLY) env->mstatus |=3D MSTATUS_VS; @@ -1055,7 +1057,7 @@ static RISCVException read_mcyclecfg(CPURISCVState *e= nv, int csrno, } =20 static RISCVException write_mcyclecfg(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { uint64_t inh_avail_mask; =20 @@ -1084,7 +1086,7 @@ static RISCVException read_mcyclecfgh(CPURISCVState *= env, int csrno, } =20 static RISCVException write_mcyclecfgh(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { target_ulong inh_avail_mask =3D (target_ulong)(~MHPMEVENTH_FILTER_MASK= | MCYCLECFGH_BIT_MINH); @@ -1109,7 +1111,7 @@ static RISCVException read_minstretcfg(CPURISCVState = *env, int csrno, } =20 static RISCVException write_minstretcfg(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { uint64_t inh_avail_mask; =20 @@ -1136,7 +1138,7 @@ static RISCVException read_minstretcfgh(CPURISCVState= *env, int csrno, } =20 static RISCVException write_minstretcfgh(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { target_ulong inh_avail_mask =3D (target_ulong)(~MHPMEVENTH_FILTER_MASK= | MINSTRETCFGH_BIT_MINH); @@ -1163,7 +1165,7 @@ static RISCVException read_mhpmevent(CPURISCVState *e= nv, int csrno, } =20 static RISCVException write_mhpmevent(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { int evt_index =3D csrno - CSR_MCOUNTINHIBIT; uint64_t mhpmevt_val =3D val; @@ -1201,7 +1203,7 @@ static RISCVException read_mhpmeventh(CPURISCVState *= env, int csrno, } =20 static RISCVException write_mhpmeventh(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { int evt_index =3D csrno - CSR_MHPMEVENT3H + 3; uint64_t mhpmevth_val; @@ -1343,14 +1345,16 @@ static RISCVException riscv_pmu_write_ctrh(CPURISCV= State *env, target_ulong val, return RISCV_EXCP_NONE; } =20 -static int write_mhpmcounter(CPURISCVState *env, int csrno, target_ulong v= al) +static RISCVException write_mhpmcounter(CPURISCVState *env, int csrno, + target_ulong val, uintptr_t ra) { int ctr_idx =3D csrno - CSR_MCYCLE; =20 return riscv_pmu_write_ctr(env, val, ctr_idx); } =20 -static int write_mhpmcounterh(CPURISCVState *env, int csrno, target_ulong = val) +static RISCVException write_mhpmcounterh(CPURISCVState *env, int csrno, + target_ulong val, uintptr_t ra) { int ctr_idx =3D csrno - CSR_MCYCLEH; =20 @@ -1661,7 +1665,7 @@ static RISCVException read_vstimecmph(CPURISCVState *= env, int csrno, } =20 static RISCVException write_vstimecmp(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { if (riscv_cpu_mxl(env) =3D=3D MXL_RV32) { env->vstimecmp =3D deposit64(env->vstimecmp, 0, 32, (uint64_t)val); @@ -1676,7 +1680,7 @@ static RISCVException write_vstimecmp(CPURISCVState *= env, int csrno, } =20 static RISCVException write_vstimecmph(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { env->vstimecmp =3D deposit64(env->vstimecmp, 32, 32, (uint64_t)val); riscv_timer_write_timecmp(env, env->vstimer, env->vstimecmp, @@ -1710,13 +1714,13 @@ static RISCVException read_stimecmph(CPURISCVState = *env, int csrno, } =20 static RISCVException write_stimecmp(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { if (env->virt_enabled) { if (env->hvictl & HVICTL_VTI) { return RISCV_EXCP_VIRT_INSTRUCTION_FAULT; } - return write_vstimecmp(env, csrno, val); + return write_vstimecmp(env, csrno, val, ra); } =20 if (riscv_cpu_mxl(env) =3D=3D MXL_RV32) { @@ -1731,13 +1735,13 @@ static RISCVException write_stimecmp(CPURISCVState = *env, int csrno, } =20 static RISCVException write_stimecmph(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { if (env->virt_enabled) { if (env->hvictl & HVICTL_VTI) { return RISCV_EXCP_VIRT_INSTRUCTION_FAULT; } - return write_vstimecmph(env, csrno, val); + return write_vstimecmph(env, csrno, val, ra); } =20 env->stimecmp =3D deposit64(env->stimecmp, 32, 32, (uint64_t)val); @@ -1842,7 +1846,7 @@ static RISCVException read_zero(CPURISCVState *env, i= nt csrno, } =20 static RISCVException write_ignore(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { return RISCV_EXCP_NONE; } @@ -1963,7 +1967,7 @@ static target_ulong legalize_mpp(CPURISCVState *env, = target_ulong old_mpp, } =20 static RISCVException write_mstatus(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { uint64_t mstatus =3D env->mstatus; uint64_t mask =3D 0; @@ -2042,7 +2046,7 @@ static RISCVException read_mstatush(CPURISCVState *en= v, int csrno, } =20 static RISCVException write_mstatush(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { uint64_t valh =3D (uint64_t)val << 32; uint64_t mask =3D riscv_has_ext(env, RVH) ? MSTATUS_MPV | MSTATUS_GVA = : 0; @@ -2096,7 +2100,7 @@ static RISCVException read_misa(CPURISCVState *env, i= nt csrno, } =20 static RISCVException write_misa(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { RISCVCPU *cpu =3D env_archcpu(env); uint32_t orig_misa_ext =3D env->misa_ext; @@ -2160,7 +2164,7 @@ static RISCVException read_medeleg(CPURISCVState *env= , int csrno, } =20 static RISCVException write_medeleg(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { env->medeleg =3D (env->medeleg & ~DELEGABLE_EXCPS) | (val & DELEGABLE_= EXCPS); return RISCV_EXCP_NONE; @@ -2955,7 +2959,7 @@ static RISCVException read_mtvec(CPURISCVState *env, = int csrno, } =20 static RISCVException write_mtvec(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { /* bits [1:0] encode mode; 0 =3D direct, 1 =3D vectored, 2 >=3D reserv= ed */ if ((val & 3) < 2) { @@ -2974,7 +2978,7 @@ static RISCVException read_mcountinhibit(CPURISCVStat= e *env, int csrno, } =20 static RISCVException write_mcountinhibit(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { int cidx; PMUCTRState *counter; @@ -3049,10 +3053,9 @@ static RISCVException read_scountinhibit(CPURISCVSta= te *env, int csrno, } =20 static RISCVException write_scountinhibit(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { - write_mcountinhibit(env, csrno, val & env->mcounteren); - return RISCV_EXCP_NONE; + return write_mcountinhibit(env, csrno, val & env->mcounteren, ra); } =20 static RISCVException read_mcounteren(CPURISCVState *env, int csrno, @@ -3063,7 +3066,7 @@ static RISCVException read_mcounteren(CPURISCVState *= env, int csrno, } =20 static RISCVException write_mcounteren(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { RISCVCPU *cpu =3D env_archcpu(env); =20 @@ -3097,7 +3100,7 @@ static RISCVException read_mscratch(CPURISCVState *en= v, int csrno, } =20 static RISCVException write_mscratch(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { env->mscratch =3D val; return RISCV_EXCP_NONE; @@ -3111,7 +3114,7 @@ static RISCVException read_mepc(CPURISCVState *env, i= nt csrno, } =20 static RISCVException write_mepc(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { env->mepc =3D val; return RISCV_EXCP_NONE; @@ -3125,7 +3128,7 @@ static RISCVException read_mcause(CPURISCVState *env,= int csrno, } =20 static RISCVException write_mcause(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { env->mcause =3D val; return RISCV_EXCP_NONE; @@ -3139,7 +3142,7 @@ static RISCVException read_mtval(CPURISCVState *env, = int csrno, } =20 static RISCVException write_mtval(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { env->mtval =3D val; return RISCV_EXCP_NONE; @@ -3154,9 +3157,9 @@ static RISCVException read_menvcfg(CPURISCVState *env= , int csrno, } =20 static RISCVException write_henvcfg(CPURISCVState *env, int csrno, - target_ulong val); + target_ulong val, uintptr_t ra); static RISCVException write_menvcfg(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { const RISCVCPUConfig *cfg =3D riscv_cpu_cfg(env); uint64_t mask =3D MENVCFG_FIOM | MENVCFG_CBIE | MENVCFG_CBCFE | @@ -3188,9 +3191,7 @@ static RISCVException write_menvcfg(CPURISCVState *en= v, int csrno, } } env->menvcfg =3D (env->menvcfg & ~mask) | (val & mask); - write_henvcfg(env, CSR_HENVCFG, env->henvcfg); - - return RISCV_EXCP_NONE; + return write_henvcfg(env, CSR_HENVCFG, env->henvcfg, ra); } =20 static RISCVException read_menvcfgh(CPURISCVState *env, int csrno, @@ -3201,9 +3202,9 @@ static RISCVException read_menvcfgh(CPURISCVState *en= v, int csrno, } =20 static RISCVException write_henvcfgh(CPURISCVState *env, int csrno, - target_ulong val); + target_ulong val, uintptr_t ra); static RISCVException write_menvcfgh(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { const RISCVCPUConfig *cfg =3D riscv_cpu_cfg(env); uint64_t mask =3D (cfg->ext_svpbmt ? MENVCFG_PBMTE : 0) | @@ -3218,9 +3219,7 @@ static RISCVException write_menvcfgh(CPURISCVState *e= nv, int csrno, } =20 env->menvcfg =3D (env->menvcfg & ~mask) | (valh & mask); - write_henvcfgh(env, CSR_HENVCFGH, env->henvcfg >> 32); - - return RISCV_EXCP_NONE; + return write_henvcfgh(env, CSR_HENVCFGH, env->henvcfg >> 32, ra); } =20 static RISCVException read_senvcfg(CPURISCVState *env, int csrno, @@ -3238,7 +3237,7 @@ static RISCVException read_senvcfg(CPURISCVState *env= , int csrno, } =20 static RISCVException write_senvcfg(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { uint64_t mask =3D SENVCFG_FIOM | SENVCFG_CBIE | SENVCFG_CBCFE | SENVCF= G_CBZE; RISCVException ret; @@ -3295,7 +3294,7 @@ static RISCVException read_henvcfg(CPURISCVState *env= , int csrno, } =20 static RISCVException write_henvcfg(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { uint64_t mask =3D HENVCFG_FIOM | HENVCFG_CBIE | HENVCFG_CBCFE | HENVCF= G_CBZE; RISCVException ret; @@ -3350,7 +3349,7 @@ static RISCVException read_henvcfgh(CPURISCVState *en= v, int csrno, } =20 static RISCVException write_henvcfgh(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { uint64_t mask =3D env->menvcfg & (HENVCFG_PBMTE | HENVCFG_STCE | HENVCFG_ADUE | HENVCFG_DTE); @@ -3388,7 +3387,7 @@ static RISCVException write_mstateen(CPURISCVState *e= nv, int csrno, } =20 static RISCVException write_mstateen0(CPURISCVState *env, int csrno, - target_ulong new_val) + target_ulong new_val, uintptr_t ra) { uint64_t wr_mask =3D SMSTATEEN_STATEEN | SMSTATEEN0_HSENVCFG; if (!riscv_has_ext(env, RVF)) { @@ -3420,7 +3419,7 @@ static RISCVException write_mstateen0(CPURISCVState *= env, int csrno, } =20 static RISCVException write_mstateen_1_3(CPURISCVState *env, int csrno, - target_ulong new_val) + target_ulong new_val, uintptr_t r= a) { return write_mstateen(env, csrno, SMSTATEEN_STATEEN, new_val); } @@ -3447,7 +3446,7 @@ static RISCVException write_mstateenh(CPURISCVState *= env, int csrno, } =20 static RISCVException write_mstateen0h(CPURISCVState *env, int csrno, - target_ulong new_val) + target_ulong new_val, uintptr_t ra) { uint64_t wr_mask =3D SMSTATEEN_STATEEN | SMSTATEEN0_HSENVCFG; =20 @@ -3463,7 +3462,7 @@ static RISCVException write_mstateen0h(CPURISCVState = *env, int csrno, } =20 static RISCVException write_mstateenh_1_3(CPURISCVState *env, int csrno, - target_ulong new_val) + target_ulong new_val, uintptr_t = ra) { return write_mstateenh(env, csrno, SMSTATEEN_STATEEN, new_val); } @@ -3492,7 +3491,7 @@ static RISCVException write_hstateen(CPURISCVState *e= nv, int csrno, } =20 static RISCVException write_hstateen0(CPURISCVState *env, int csrno, - target_ulong new_val) + target_ulong new_val, uintptr_t ra) { uint64_t wr_mask =3D SMSTATEEN_STATEEN | SMSTATEEN0_HSENVCFG; =20 @@ -3521,7 +3520,7 @@ static RISCVException write_hstateen0(CPURISCVState *= env, int csrno, } =20 static RISCVException write_hstateen_1_3(CPURISCVState *env, int csrno, - target_ulong new_val) + target_ulong new_val, uintptr_t r= a) { return write_hstateen(env, csrno, SMSTATEEN_STATEEN, new_val); } @@ -3552,7 +3551,7 @@ static RISCVException write_hstateenh(CPURISCVState *= env, int csrno, } =20 static RISCVException write_hstateen0h(CPURISCVState *env, int csrno, - target_ulong new_val) + target_ulong new_val, uintptr_t ra) { uint64_t wr_mask =3D SMSTATEEN_STATEEN | SMSTATEEN0_HSENVCFG; =20 @@ -3564,7 +3563,7 @@ static RISCVException write_hstateen0h(CPURISCVState = *env, int csrno, } =20 static RISCVException write_hstateenh_1_3(CPURISCVState *env, int csrno, - target_ulong new_val) + target_ulong new_val, uintptr_t = ra) { return write_hstateenh(env, csrno, SMSTATEEN_STATEEN, new_val); } @@ -3603,7 +3602,7 @@ static RISCVException write_sstateen(CPURISCVState *e= nv, int csrno, } =20 static RISCVException write_sstateen0(CPURISCVState *env, int csrno, - target_ulong new_val) + target_ulong new_val, uintptr_t ra) { uint64_t wr_mask =3D SMSTATEEN_STATEEN | SMSTATEEN0_HSENVCFG; =20 @@ -3615,7 +3614,7 @@ static RISCVException write_sstateen0(CPURISCVState *= env, int csrno, } =20 static RISCVException write_sstateen_1_3(CPURISCVState *env, int csrno, - target_ulong new_val) + target_ulong new_val, uintptr_t r= a) { return write_sstateen(env, csrno, SMSTATEEN_STATEEN, new_val); } @@ -3866,7 +3865,7 @@ static RISCVException read_sstatus(CPURISCVState *env= , int csrno, } =20 static RISCVException write_sstatus(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { target_ulong mask =3D (sstatus_v1_10_mask); =20 @@ -3883,7 +3882,7 @@ static RISCVException write_sstatus(CPURISCVState *en= v, int csrno, mask |=3D SSTATUS_SDT; } target_ulong newval =3D (env->mstatus & ~mask) | (val & mask); - return write_mstatus(env, CSR_MSTATUS, newval); + return write_mstatus(env, CSR_MSTATUS, newval, ra); } =20 static RISCVException rmw_vsie64(CPURISCVState *env, int csrno, @@ -4035,7 +4034,7 @@ static RISCVException read_stvec(CPURISCVState *env, = int csrno, } =20 static RISCVException write_stvec(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { /* bits [1:0] encode mode; 0 =3D direct, 1 =3D vectored, 2 >=3D reserv= ed */ if ((val & 3) < 2) { @@ -4054,7 +4053,7 @@ static RISCVException read_scounteren(CPURISCVState *= env, int csrno, } =20 static RISCVException write_scounteren(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { RISCVCPU *cpu =3D env_archcpu(env); =20 @@ -4088,7 +4087,7 @@ static RISCVException read_sscratch(CPURISCVState *en= v, int csrno, } =20 static RISCVException write_sscratch(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { env->sscratch =3D val; return RISCV_EXCP_NONE; @@ -4102,7 +4101,7 @@ static RISCVException read_sepc(CPURISCVState *env, i= nt csrno, } =20 static RISCVException write_sepc(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { env->sepc =3D val; return RISCV_EXCP_NONE; @@ -4116,7 +4115,7 @@ static RISCVException read_scause(CPURISCVState *env,= int csrno, } =20 static RISCVException write_scause(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { env->scause =3D val; return RISCV_EXCP_NONE; @@ -4130,7 +4129,7 @@ static RISCVException read_stval(CPURISCVState *env, = int csrno, } =20 static RISCVException write_stval(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { env->stval =3D val; return RISCV_EXCP_NONE; @@ -4270,7 +4269,7 @@ static RISCVException read_satp(CPURISCVState *env, i= nt csrno, } =20 static RISCVException write_satp(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { if (!riscv_cpu_cfg(env)->mmu) { return RISCV_EXCP_NONE; @@ -4492,7 +4491,7 @@ static RISCVException read_hstatus(CPURISCVState *env= , int csrno, } =20 static RISCVException write_hstatus(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { uint64_t mask =3D (target_ulong)-1; if (!env_archcpu(env)->cfg.ext_svukte) { @@ -4524,7 +4523,7 @@ static RISCVException read_hedeleg(CPURISCVState *env= , int csrno, } =20 static RISCVException write_hedeleg(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { env->hedeleg =3D val & vs_delegable_excps; return RISCV_EXCP_NONE; @@ -4545,7 +4544,7 @@ static RISCVException read_hedelegh(CPURISCVState *en= v, int csrno, } =20 static RISCVException write_hedelegh(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { RISCVException ret; ret =3D smstateen_acc_ok(env, 0, SMSTATEEN0_P1P13); @@ -4808,7 +4807,7 @@ static RISCVException read_hcounteren(CPURISCVState *= env, int csrno, } =20 static RISCVException write_hcounteren(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { RISCVCPU *cpu =3D env_archcpu(env); =20 @@ -4828,7 +4827,7 @@ static RISCVException read_hgeie(CPURISCVState *env, = int csrno, } =20 static RISCVException write_hgeie(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { /* Only GEILEN:1 bits implemented and BIT0 is never implemented */ val &=3D ((((target_ulong)1) << env->geilen) - 1) << 1; @@ -4847,7 +4846,7 @@ static RISCVException read_htval(CPURISCVState *env, = int csrno, } =20 static RISCVException write_htval(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { env->htval =3D val; return RISCV_EXCP_NONE; @@ -4861,7 +4860,7 @@ static RISCVException read_htinst(CPURISCVState *env,= int csrno, } =20 static RISCVException write_htinst(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { return RISCV_EXCP_NONE; } @@ -4883,7 +4882,7 @@ static RISCVException read_hgatp(CPURISCVState *env, = int csrno, } =20 static RISCVException write_hgatp(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { env->hgatp =3D legalize_xatp(env, env->hgatp, val); return RISCV_EXCP_NONE; @@ -4901,7 +4900,7 @@ static RISCVException read_htimedelta(CPURISCVState *= env, int csrno, } =20 static RISCVException write_htimedelta(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { if (!env->rdtime_fn) { return RISCV_EXCP_ILLEGAL_INST; @@ -4933,7 +4932,7 @@ static RISCVException read_htimedeltah(CPURISCVState = *env, int csrno, } =20 static RISCVException write_htimedeltah(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { if (!env->rdtime_fn) { return RISCV_EXCP_ILLEGAL_INST; @@ -4957,7 +4956,7 @@ static RISCVException read_hvictl(CPURISCVState *env,= int csrno, } =20 static RISCVException write_hvictl(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { env->hvictl =3D val & HVICTL_VALID_MASK; return RISCV_EXCP_NONE; @@ -5022,7 +5021,7 @@ static RISCVException read_hviprio1(CPURISCVState *en= v, int csrno, } =20 static RISCVException write_hviprio1(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { return write_hvipriox(env, 0, env->hviprio, val); } @@ -5034,7 +5033,7 @@ static RISCVException read_hviprio1h(CPURISCVState *e= nv, int csrno, } =20 static RISCVException write_hviprio1h(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { return write_hvipriox(env, 4, env->hviprio, val); } @@ -5046,7 +5045,7 @@ static RISCVException read_hviprio2(CPURISCVState *en= v, int csrno, } =20 static RISCVException write_hviprio2(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { return write_hvipriox(env, 8, env->hviprio, val); } @@ -5058,7 +5057,7 @@ static RISCVException read_hviprio2h(CPURISCVState *e= nv, int csrno, } =20 static RISCVException write_hviprio2h(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { return write_hvipriox(env, 12, env->hviprio, val); } @@ -5072,7 +5071,7 @@ static RISCVException read_vsstatus(CPURISCVState *en= v, int csrno, } =20 static RISCVException write_vsstatus(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { uint64_t mask =3D (target_ulong)-1; if ((val & VSSTATUS64_UXL) =3D=3D 0) { @@ -5097,7 +5096,7 @@ static RISCVException read_vstvec(CPURISCVState *env,= int csrno, } =20 static RISCVException write_vstvec(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { /* bits [1:0] encode mode; 0 =3D direct, 1 =3D vectored, 2 >=3D reserv= ed */ if ((val & 3) < 2) { @@ -5116,7 +5115,7 @@ static RISCVException read_vsscratch(CPURISCVState *e= nv, int csrno, } =20 static RISCVException write_vsscratch(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { env->vsscratch =3D val; return RISCV_EXCP_NONE; @@ -5130,7 +5129,7 @@ static RISCVException read_vsepc(CPURISCVState *env, = int csrno, } =20 static RISCVException write_vsepc(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { env->vsepc =3D val; return RISCV_EXCP_NONE; @@ -5144,7 +5143,7 @@ static RISCVException read_vscause(CPURISCVState *env= , int csrno, } =20 static RISCVException write_vscause(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { env->vscause =3D val; return RISCV_EXCP_NONE; @@ -5158,7 +5157,7 @@ static RISCVException read_vstval(CPURISCVState *env,= int csrno, } =20 static RISCVException write_vstval(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { env->vstval =3D val; return RISCV_EXCP_NONE; @@ -5172,7 +5171,7 @@ static RISCVException read_vsatp(CPURISCVState *env, = int csrno, } =20 static RISCVException write_vsatp(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { env->vsatp =3D legalize_xatp(env, env->vsatp, val); return RISCV_EXCP_NONE; @@ -5186,7 +5185,7 @@ static RISCVException read_mtval2(CPURISCVState *env,= int csrno, } =20 static RISCVException write_mtval2(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { env->mtval2 =3D val; return RISCV_EXCP_NONE; @@ -5200,7 +5199,7 @@ static RISCVException read_mtinst(CPURISCVState *env,= int csrno, } =20 static RISCVException write_mtinst(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { env->mtinst =3D val; return RISCV_EXCP_NONE; @@ -5215,7 +5214,7 @@ static RISCVException read_mseccfg(CPURISCVState *env= , int csrno, } =20 static RISCVException write_mseccfg(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { mseccfg_csr_write(env, val); return RISCV_EXCP_NONE; @@ -5231,7 +5230,7 @@ static RISCVException read_pmpcfg(CPURISCVState *env,= int csrno, } =20 static RISCVException write_pmpcfg(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { uint32_t reg_index =3D csrno - CSR_PMPCFG0; =20 @@ -5247,7 +5246,7 @@ static RISCVException read_pmpaddr(CPURISCVState *env= , int csrno, } =20 static RISCVException write_pmpaddr(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { pmpaddr_csr_write(env, csrno - CSR_PMPADDR0, val); return RISCV_EXCP_NONE; @@ -5261,7 +5260,7 @@ static RISCVException read_tselect(CPURISCVState *env= , int csrno, } =20 static RISCVException write_tselect(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { tselect_csr_write(env, val); return RISCV_EXCP_NONE; @@ -5285,7 +5284,7 @@ static RISCVException read_tdata(CPURISCVState *env, = int csrno, } =20 static RISCVException write_tdata(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { if (!tdata_available(env, csrno - CSR_TDATA1)) { return RISCV_EXCP_ILLEGAL_INST; @@ -5310,7 +5309,7 @@ static RISCVException read_mcontext(CPURISCVState *en= v, int csrno, } =20 static RISCVException write_mcontext(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { bool rv32 =3D riscv_cpu_mxl(env) =3D=3D MXL_RV32 ? true : false; int32_t mask; @@ -5334,43 +5333,50 @@ static RISCVException read_mnscratch(CPURISCVState = *env, int csrno, return RISCV_EXCP_NONE; } =20 -static int write_mnscratch(CPURISCVState *env, int csrno, target_ulong val) +static RISCVException write_mnscratch(CPURISCVState *env, int csrno, + target_ulong val, uintptr_t ra) { env->mnscratch =3D val; return RISCV_EXCP_NONE; } =20 -static int read_mnepc(CPURISCVState *env, int csrno, target_ulong *val) +static RISCVException read_mnepc(CPURISCVState *env, int csrno, + target_ulong *val) { *val =3D env->mnepc; return RISCV_EXCP_NONE; } =20 -static int write_mnepc(CPURISCVState *env, int csrno, target_ulong val) +static RISCVException write_mnepc(CPURISCVState *env, int csrno, + target_ulong val, uintptr_t ra) { env->mnepc =3D val; return RISCV_EXCP_NONE; } =20 -static int read_mncause(CPURISCVState *env, int csrno, target_ulong *val) +static RISCVException read_mncause(CPURISCVState *env, int csrno, + target_ulong *val) { *val =3D env->mncause; return RISCV_EXCP_NONE; } =20 -static int write_mncause(CPURISCVState *env, int csrno, target_ulong val) +static RISCVException write_mncause(CPURISCVState *env, int csrno, + target_ulong val, uintptr_t ra) { env->mncause =3D val; return RISCV_EXCP_NONE; } =20 -static int read_mnstatus(CPURISCVState *env, int csrno, target_ulong *val) +static RISCVException read_mnstatus(CPURISCVState *env, int csrno, + target_ulong *val) { *val =3D env->mnstatus; return RISCV_EXCP_NONE; } =20 -static int write_mnstatus(CPURISCVState *env, int csrno, target_ulong val) +static RISCVException write_mnstatus(CPURISCVState *env, int csrno, + target_ulong val, uintptr_t ra) { target_ulong mask =3D (MNSTATUS_NMIE | MNSTATUS_MNPP); =20 @@ -5540,7 +5546,7 @@ static RISCVException riscv_csrrw_do64(CPURISCVState = *env, int csrno, if (write_mask) { new_value =3D (old_value & ~write_mask) | (new_value & write_mask); if (csr_ops[csrno].write) { - ret =3D csr_ops[csrno].write(env, csrno, new_value); + ret =3D csr_ops[csrno].write(env, csrno, new_value, 0); if (ret !=3D RISCV_EXCP_NONE) { return ret; } @@ -5603,7 +5609,7 @@ static RISCVException riscv_csrrw_do128(CPURISCVState= *env, int csrno, } } else if (csr_ops[csrno].write) { /* avoids having to write wrappers for all registers */ - ret =3D csr_ops[csrno].write(env, csrno, int128_getlo(new_valu= e)); + ret =3D csr_ops[csrno].write(env, csrno, int128_getlo(new_valu= e), 0); if (ret !=3D RISCV_EXCP_NONE) { return ret; } @@ -5714,7 +5720,7 @@ static RISCVException read_jvt(CPURISCVState *env, in= t csrno, } =20 static RISCVException write_jvt(CPURISCVState *env, int csrno, - target_ulong val) + target_ulong val, uintptr_t ra) { env->jvt =3D val; return RISCV_EXCP_NONE; --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747628020; cv=none; d=zohomail.com; s=zohoarc; b=VbUaVxCglek+eaC2waIam2J4JrqJ5NtclvplZD/qgtO9R/9jRLPIBKKDkqY5EbAY8pdpbnMzJa048uA1Zqp6B+kVqq3pPto0aS2WXT2mmLQupnI/N5IIQaQKabzqTgkejZH5iC5Rv7uhEh+7uKEdoOy/Bak+yX6SI4GiuUEJa7w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747628020; h=Content-Type:Content-Transfer-Encoding:Cc:Cc: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; bh=Bla8g+U6Fu/GyWaUtIRMYDNw5MNMh+RuvFK1htVI4VU=; b=H38Zx+m1BKEFL7CnJ22Hj0sW204WhgyfZbgPJmS6H9G68o61Le1C32pTsCkAXXfjDGlKQUMxfKwv6j0zrm+Ke2dpZZi+hRAUJTKcK4mOFwXLcTio5Sh9WMa/26pyjx55EQJe/02mS6QzdzgbjifYn0OXNe1JfHkHuLGy2Xyh2OY= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747628020828661.6690505290361; Sun, 18 May 2025 21:13:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGrpI-0000DC-Ik; Mon, 19 May 2025 00:10:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGro8-000749-Nv for qemu-devel@nongnu.org; Mon, 19 May 2025 00:08:56 -0400 Received: from mail-pl1-x62d.google.com ([2607:f8b0:4864:20::62d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGro6-0004HV-Uq for qemu-devel@nongnu.org; Mon, 19 May 2025 00:08:56 -0400 Received: by mail-pl1-x62d.google.com with SMTP id d9443c01a7336-23198fcdeb0so34432445ad.2 for ; Sun, 18 May 2025 21:08:54 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.08.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:08:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627733; x=1748232533; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Bla8g+U6Fu/GyWaUtIRMYDNw5MNMh+RuvFK1htVI4VU=; b=D9bToCUHS+Vi3Z/Hr0gfKPQ0BLvdSL8F9Jp3ONKNjJSSl14QXJEVmk/RTBuM8JY5ND G+q9fOhGCQNy0jKXhf4FS0/P4PAO87cce8wHVd5/1nDHeXSOhRhCJPU7wljKptqImd9R r71dVT21X9HEAkcjI4xUMD4cU7VfvrbBCS27LuN1km+kCTsMJEzQgKf608v87+uXXiQm 1y0Air0ckoRmx+Xf0PG80jYgz5j5hVopZgm6ivomsxyyky+iea1rGOtB/+wESBEmy0uv 5NviKhytqxVDWtLcRIqN4KuR3o/l8+VDyDAuIOTNrvW+ya7zNLArsM/a36D7MV++rHyq YNxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627733; x=1748232533; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Bla8g+U6Fu/GyWaUtIRMYDNw5MNMh+RuvFK1htVI4VU=; b=w1yFgAYLlKG/A0zRn72y/mftTxwZdwqFqpB+3y9xIyhMG1o1hfC09mHQimuLRepSMQ k1xYm7PATKAswhnSfh3e/XF91ZCknpX6R5PTBnH2b4FXe9prtLubBBqJClGvZq9NcOc1 rjiPuFEoDT0+G+UkvAGMO0HmKY7pJBP2lupDwsesotmxZ4TaZxvVrHe9MzLnGX3GTr2T hnnSmfR+g0sJWgU/4juGHZ/aYLBhBws6F03Uu+XC22D2ehKm87P5ZaggaldkISQJlbIV sv0AL7kI89lIYYX2U6bGdY3g0jk8uqJBXt0ZewKchnOEgb4YLLFo0mWA+Afic1mn+QKL umjA== X-Gm-Message-State: AOJu0Yw2eXFGOiTtlalkpbD+AF4RkOgaEAXZRKLBxpYMEywA79XUVWRk UgSAuS9O8Yqdmxax5az+u8Gk0SjAa0S3R7lxIJkLzkfZW+8s3IK0ogYe5TbBKg== X-Gm-Gg: ASbGncvX1IiKBSlefn1UOJaBfqpnLWoQ/67CSrk4G6o1Spk9T5zOCQubXFDMjW2YEmq vXW7HYFBfCvRzafLitiv4jiUbuzH5zxs2s6VDd3aCJ1mP5GzX6am50tZ7bnC/4CDXbhkZOmb6E3 Jr3Ig+UvPi+4eKLl3YWzrie17f7iINtzedMkhHtk89qBXcTeQNVknmm9DtaSPEQ+7bMXsuYPcwy unvai2kuhx2kiZvtoi5PCK8I2IzLLLDlBnDO/IBPbXERkAGBtE6AcctNc2VZ74xiFrf5k5S3Emp HPpZSy1fkCTdv8DpQkAZ6NprIsYyXL0bpZDVXyaccfdfqHjN8qEYhSLXiH7ZvTkTAI3d4r8YOCu pV80jPUz+kSZYqAZXwrd+XSdkS/UaJMak5pDBLzB6l5bdmGrRr6ajDYYI X-Google-Smtp-Source: AGHT+IHYWinVZezvoeuoHrzQOiXRhCm2dBjnDTmR+xNUKTK59dQYdr5tiUrFzOE6NLTxvC+E52AejQ== X-Received: by 2002:a17:903:2bcb:b0:215:b75f:a1cb with SMTP id d9443c01a7336-231d43d99bamr161657375ad.9.1747627733211; Sun, 18 May 2025 21:08:53 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Richard Henderson , Alistair Francis , Daniel Henrique Barboza , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 33/56] target/riscv: Pass ra to riscv_csrrw_do64 Date: Mon, 19 May 2025 14:05:30 +1000 Message-ID: <20250519040555.3797167-34-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62d; envelope-from=alistair23@gmail.com; helo=mail-pl1-x62d.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747628022749116600 From: Richard Henderson Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis Reviewed-by: Daniel Henrique Barboza Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-ID: <20250425152311.804338-3-richard.henderson@linaro.org> Signed-off-by: Alistair Francis --- target/riscv/csr.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/target/riscv/csr.c b/target/riscv/csr.c index ba7620ef3d..22149bd3fc 100644 --- a/target/riscv/csr.c +++ b/target/riscv/csr.c @@ -5516,7 +5516,8 @@ static inline RISCVException riscv_csrrw_check(CPURIS= CVState *env, static RISCVException riscv_csrrw_do64(CPURISCVState *env, int csrno, target_ulong *ret_value, target_ulong new_value, - target_ulong write_mask) + target_ulong write_mask, + uintptr_t ra) { RISCVException ret; target_ulong old_value =3D 0; @@ -5546,7 +5547,7 @@ static RISCVException riscv_csrrw_do64(CPURISCVState = *env, int csrno, if (write_mask) { new_value =3D (old_value & ~write_mask) | (new_value & write_mask); if (csr_ops[csrno].write) { - ret =3D csr_ops[csrno].write(env, csrno, new_value, 0); + ret =3D csr_ops[csrno].write(env, csrno, new_value, ra); if (ret !=3D RISCV_EXCP_NONE) { return ret; } @@ -5569,7 +5570,7 @@ RISCVException riscv_csrr(CPURISCVState *env, int csr= no, return ret; } =20 - return riscv_csrrw_do64(env, csrno, ret_value, 0, 0); + return riscv_csrrw_do64(env, csrno, ret_value, 0, 0, 0); } =20 RISCVException riscv_csrrw(CPURISCVState *env, int csrno, @@ -5581,7 +5582,7 @@ RISCVException riscv_csrrw(CPURISCVState *env, int cs= rno, return ret; } =20 - return riscv_csrrw_do64(env, csrno, ret_value, new_value, write_mask); + return riscv_csrrw_do64(env, csrno, ret_value, new_value, write_mask, = 0); } =20 static RISCVException riscv_csrrw_do128(CPURISCVState *env, int csrno, @@ -5647,9 +5648,7 @@ RISCVException riscv_csrr_i128(CPURISCVState *env, in= t csrno, * accesses */ target_ulong old_value; - ret =3D riscv_csrrw_do64(env, csrno, &old_value, - (target_ulong)0, - (target_ulong)0); + ret =3D riscv_csrrw_do64(env, csrno, &old_value, 0, 0, 0); if (ret =3D=3D RISCV_EXCP_NONE && ret_value) { *ret_value =3D int128_make64(old_value); } @@ -5681,7 +5680,7 @@ RISCVException riscv_csrrw_i128(CPURISCVState *env, i= nt csrno, target_ulong old_value; ret =3D riscv_csrrw_do64(env, csrno, &old_value, int128_getlo(new_value), - int128_getlo(write_mask)); + int128_getlo(write_mask), 0); if (ret =3D=3D RISCV_EXCP_NONE && ret_value) { *ret_value =3D int128_make64(old_value); } --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747628713; cv=none; d=zohomail.com; s=zohoarc; b=WUFeK2PxHmYoqWqrP0ryg8+0XO3ELDOMUq340WypBgHwOZIDPDbhFydGtlUJ3Ghe0HJPoVmXr4IGwzcDA5sj/66YMX3X7DPqoJXR4zm5xr4f1humHA6OiOQg/2nscidt/yJtF6JCq4ZfLu8KFg14VzJQOgeQzyzhEUEBBkZY5LU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747628713; h=Content-Type:Content-Transfer-Encoding:Cc:Cc: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; bh=YIo9lWxZ4TjsB8FoVA9uJ0EOvUm7HwUR23Lv43bqgeg=; b=CyJCaOO67CKcXJAYa3n516aqw2MgkuqYU6M16z3uCZv5fI7E+3pTwSk8ZwbcJowUDgBe/sH+Pi3IQG/AoJMRRpskokVd6mXN2du1Faot8c/jeJ2+tHCnSqYFWfVBw+ogl3P9xH6s01q4M0ki8EqNvJT96OjtqxMAsJqmBF6W+t4= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747628713446182.27625773774264; Sun, 18 May 2025 21:25:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGs3N-0000cD-Nv; Mon, 19 May 2025 00:24:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGroC-0007Bl-2I for qemu-devel@nongnu.org; Mon, 19 May 2025 00:09:00 -0400 Received: from mail-pj1-x102f.google.com ([2607:f8b0:4864:20::102f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGroA-0004IC-BP for qemu-devel@nongnu.org; Mon, 19 May 2025 00:08:59 -0400 Received: by mail-pj1-x102f.google.com with SMTP id 98e67ed59e1d1-30ec226b7d6so1022261a91.2 for ; Sun, 18 May 2025 21:08:57 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.08.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:08:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627737; x=1748232537; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=YIo9lWxZ4TjsB8FoVA9uJ0EOvUm7HwUR23Lv43bqgeg=; b=nk2Q365ptujq+pd5aBuVR0GvUQ71viSXik2R8zfU0VOxdQuX++yv+/3hIMfxiAmylT ST4igzn/se/6u1lpXC33iL/VwnIzXiKSv/eWl70YFX3epXuzZr3ERHJYivXaYp+49FY3 mfKg9yP+XvM93L8wHGR+HfhZP63VXQl14ab9cF4IJtg3Ty/ELpGHYgnWFO60g/7VptmV N+0g/wSZwXi/WEWupADdJyDcrC2ctvAmidCgk/wqLr0XWBUkHcN3pKr4gU3dEfI177gq u5gpSckaFMI0CF7DySB8z4p8xKPY4ZbRrVhwC0I5yJhGH0aNPqJmv23s8yS4ZJT2FMSG iFZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627737; x=1748232537; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=YIo9lWxZ4TjsB8FoVA9uJ0EOvUm7HwUR23Lv43bqgeg=; b=kEIXe5PZXCLn4uaKHZkUp3X9H7IqhOwVAmAwUTSH0hLfRVq/pX9VUaDRR8G0QAZsOv CSa3sCwotU8QeGRvOZ+QGFVSHfuizQb31L2YPMNLLzb8q5CTjeovLuYbnazC+8XaWj02 HYcF1YvI5wvLRs1oZRCFzB+EEyIUdbsmJPbRF/8GUsShhl4pC5jQv6YKfXQ72+XmXyhD Mgqf2p1GYJ0cuR5Rd9urwCcPEVsBgL2xLB9w6yzViEem+DUF50OUnoVZUB3/FGvnfUIu wdxKjjgHFV5v2juDtlDTuh5Eig4mvUS7RCQ4mIBIL7oMP/D6lSlG69zYH+P5+6T/+wPp gpcQ== X-Gm-Message-State: AOJu0YzNJQ0qLdQeURO9hphvxDtupaAc0f33vMtolqw+RuGWvzwqAGzf QFrnjKFUJH2NJqJ7nEXP6dRDmjIZZSXAhtx5yx/vc8oRAel6d0B2vAYBrvIxkg== X-Gm-Gg: ASbGncsWycUN0u6wP8BnTQhaAtg2Y4WdSNp8PelXUYErV18Pfp4ZUvL9kdY0+KdR9yG VDVNucHl+G/K2GuV+usFojFgI2vmZV+HYOxT8VI6TmZXgjgnfV1Du8RLzy7drTrMXu+8cw7Exp+ KdZJs50EDXG95jiWGHXEifqGRPBfgwow5Pqidmdi1dPsR79xvbAESs0KGeze07tQ+Q6DxhCm7eK zyUp4eB+t6gdgzSidGBgtB2YdsgvQ1z6/yySHz0amYnOWcEFao/OfNj0gFE3q7kCEUVuz7DdiFP 0rE/Al6f0cJF0mSSTwZiv3G6n5MVu4DUn2fGM0DtfLDNa77rAqnWDnypISooRmjk1GVCji2awZT E1mauHljhvrBpTrsYR7x6vNrB2wP/+Ya5MFApnZ2wColauj8hEtWADrlq X-Google-Smtp-Source: AGHT+IHSsE1OVLtR2T99UC8JtjICJVSeyhhuuck58F6eNcjRgU4uB6tEKf6iFOEv8zmbxXFD08wDgw== X-Received: by 2002:a17:903:2bcb:b0:215:b75f:a1cb with SMTP id d9443c01a7336-231d43d99bamr161659835ad.9.1747627736595; Sun, 18 May 2025 21:08:56 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Richard Henderson , Alistair Francis , Daniel Henrique Barboza , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 34/56] target/riscv: Pass ra to riscv_csrrw_do128 Date: Mon, 19 May 2025 14:05:31 +1000 Message-ID: <20250519040555.3797167-35-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102f; envelope-from=alistair23@gmail.com; helo=mail-pj1-x102f.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747628714643116600 From: Richard Henderson Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis Reviewed-by: Daniel Henrique Barboza Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-ID: <20250425152311.804338-4-richard.henderson@linaro.org> Signed-off-by: Alistair Francis --- target/riscv/csr.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/target/riscv/csr.c b/target/riscv/csr.c index 22149bd3fc..8af0304a36 100644 --- a/target/riscv/csr.c +++ b/target/riscv/csr.c @@ -5588,7 +5588,7 @@ RISCVException riscv_csrrw(CPURISCVState *env, int cs= rno, static RISCVException riscv_csrrw_do128(CPURISCVState *env, int csrno, Int128 *ret_value, Int128 new_value, - Int128 write_mask) + Int128 write_mask, uintptr_t ra) { RISCVException ret; Int128 old_value; @@ -5610,7 +5610,7 @@ static RISCVException riscv_csrrw_do128(CPURISCVState= *env, int csrno, } } else if (csr_ops[csrno].write) { /* avoids having to write wrappers for all registers */ - ret =3D csr_ops[csrno].write(env, csrno, int128_getlo(new_valu= e), 0); + ret =3D csr_ops[csrno].write(env, csrno, int128_getlo(new_valu= e), ra); if (ret !=3D RISCV_EXCP_NONE) { return ret; } @@ -5637,7 +5637,7 @@ RISCVException riscv_csrr_i128(CPURISCVState *env, in= t csrno, =20 if (csr_ops[csrno].read128) { return riscv_csrrw_do128(env, csrno, ret_value, - int128_zero(), int128_zero()); + int128_zero(), int128_zero(), 0); } =20 /* @@ -5667,7 +5667,8 @@ RISCVException riscv_csrrw_i128(CPURISCVState *env, i= nt csrno, } =20 if (csr_ops[csrno].read128) { - return riscv_csrrw_do128(env, csrno, ret_value, new_value, write_m= ask); + return riscv_csrrw_do128(env, csrno, ret_value, + new_value, write_mask, 0); } =20 /* --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747628960; cv=none; d=zohomail.com; s=zohoarc; b=ZRiw3aj46WtbjfqzvuWemjQHc/+34a4irwZZy12dwCzX4SPcRmXpbVJFUx+fdS5Zo/GJRUPWbWCm3nhKlZc63j1ZaPrAk5GWuW/G27MZnGzZJmjRuzya6hQ2B0+PoUNwgSxVbgNxMVMpvTw4x2NfZLEQgVLaU0X9cMabAmOaPNk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747628960; h=Content-Type:Content-Transfer-Encoding:Cc:Cc: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; bh=Zo1oQ2uJiz4wOuR0JFtGbTn7SBFfTYZmSnIf0cck79k=; b=Btqbmw+pxDPgC9EACzr6pdEo7Oprs2XWZUfuRl++w9PjIpcsF5PJDVGsMNYWnvsuc5ilnVySpox5KHEZEfY9nKGVKM5CDWL/eSMA8kdWsLnqI4aBLzC3HfAm+J/CVPOy/TTIa80bvvXHvY1mmOknDgTRZ2zUJlgJORoqR9cmIDM= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747628960719836.3770196341524; Sun, 18 May 2025 21:29:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGs3S-0000fa-HY; Mon, 19 May 2025 00:24:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGroF-0007It-Hf for qemu-devel@nongnu.org; Mon, 19 May 2025 00:09:04 -0400 Received: from mail-pl1-x62c.google.com ([2607:f8b0:4864:20::62c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGroD-0004Is-Mm for qemu-devel@nongnu.org; Mon, 19 May 2025 00:09:03 -0400 Received: by mail-pl1-x62c.google.com with SMTP id d9443c01a7336-231d4679580so21983805ad.1 for ; Sun, 18 May 2025 21:09:01 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.08.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:08:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627740; x=1748232540; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Zo1oQ2uJiz4wOuR0JFtGbTn7SBFfTYZmSnIf0cck79k=; b=BDFn6eNdu5vt1WCiXIjak+3cbJeguoRfn5qaMxgXB7WY6e1xtSfHPrVdNrG+tmuSZY nEg54B8a66hQn1Ywx48wycoOXZMSs+2LsAuZibKNwSTqidvqPm91P2MGs9pmvqKWdzeb DGX2Sg+Y6eywOqAVAlrah3qBIgk0lfYpOr3lkMoRZifqCpm1jeWyxKJX3ui83v6aho0k jk/qdtChWGtsr3wkbOYtuqi2Xt4V71+ipT6ErU+4Py6LHdgWYfKikDOFNSZOR/4duqUF ltN3pXjbvSmm2BuxDJs/C4KbftS2MYyuqtGu2kYKigBme1/ntmQM5rnoTzd1fBPOSFcK LnWw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627740; x=1748232540; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Zo1oQ2uJiz4wOuR0JFtGbTn7SBFfTYZmSnIf0cck79k=; b=FENKGQ7muhCcY3D1rsqhDmYz/a1081eXaDYCWJeW0oHjdqzpl3i51d6CrmsuOI/mSq KHMTP9Vt2gpt5n4AFVcIjFaowKrA70BGT3/DJcp69ncLBQ3y8TCQUa4k9DZgQ7l+U0Qw qpRYewXkN82E/AGrCWYb2a06FuR0yIWpTJio02V18+7vbfZwkW/6kznFJkaowgXM+vic w0QJENGT1iPMzbTUTezVhREpQhuMMYfhK3NSbN27C9a46mBGbXu2JHnHuAEw/y8fP5kF 9sODwpz9pv8iwCmMwN8Ysep9Jt+n1hFaHD3w8FYouulP70FzeRxuUHXUnPBWmwfDSfs8 4CsA== X-Gm-Message-State: AOJu0YxAfySYmzD5F8se+8ZK5q8F2YkEVO6ZsfP+qjOU1zxmUogsIIFp AwUPOoEsYzsVuIb0Dbh2olmmk9TPQVOLK8BeOzuDh7uPQ6tIBdtGc70zsFxrFQ== X-Gm-Gg: ASbGnctdOy193Z30cx9rxlzRsYEs4ftb+8fs06VUxJsgCwBF4spYfe/GtOfejv9Ye+Y DkD/Os0YcHEMDCt2k7gzLBXh0LYIVyg5O3oqunUPUe/9Tk2EBaoTY98imHNcnCUuZ9dB80cLHbF RSnnodxGpg/0R3nE0ZC9MSS1BrJm9fK7qiIdqLHhs/aoQK1AEeHCLwmT8jtzPsFb5GcVtE4ipIq VuZHf/A/pIwUvFioIP71LCA2YbUCWzRD/spflrDCeDplwJxVUAV52sAkonQLmcrvrseVU1lWZkN qD3BUGytyBUkmT6m30ipyuA/q/qp/JtJJbkgDMjRWRsuJ+TBN+3FyEUqr/RNuO5O9TSxOFNUuAL AEKLdBJ1Cy7wfqIEXzQcnx65XEK/F/B52ZcdeVWyUVhGDDw3CmULSacrU X-Google-Smtp-Source: AGHT+IFWxpMTsARYj2VXjWjaRbLt82Y2GXiSDnAKJOgW33F7wFhyoVMbg6EVtwEGeM5EO+b5cGGAMQ== X-Received: by 2002:a17:903:19ce:b0:224:a74:28cd with SMTP id d9443c01a7336-231d454b072mr171571575ad.31.1747627739917; Sun, 18 May 2025 21:08:59 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Richard Henderson , Alistair Francis , Daniel Henrique Barboza , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 35/56] target/riscv: Pass ra to riscv_csrrw Date: Mon, 19 May 2025 14:05:32 +1000 Message-ID: <20250519040555.3797167-36-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62c; envelope-from=alistair23@gmail.com; helo=mail-pl1-x62c.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747628962922116600 From: Richard Henderson Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis Reviewed-by: Daniel Henrique Barboza Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-ID: <20250425152311.804338-5-richard.henderson@linaro.org> Signed-off-by: Alistair Francis --- target/riscv/cpu.h | 8 ++++---- hw/riscv/riscv_hart.c | 2 +- target/riscv/csr.c | 8 ++++---- target/riscv/op_helper.c | 4 ++-- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index 4265ce06ee..f674e93a4f 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -813,8 +813,8 @@ RISCVException riscv_csrr(CPURISCVState *env, int csrno, target_ulong *ret_value); =20 RISCVException riscv_csrrw(CPURISCVState *env, int csrno, - target_ulong *ret_value, - target_ulong new_value, target_ulong write_mask= ); + target_ulong *ret_value, target_ulong new_value, + target_ulong write_mask, uintptr_t ra); RISCVException riscv_csrrw_debug(CPURISCVState *env, int csrno, target_ulong *ret_value, target_ulong new_value, @@ -823,13 +823,13 @@ RISCVException riscv_csrrw_debug(CPURISCVState *env, = int csrno, static inline void riscv_csr_write(CPURISCVState *env, int csrno, target_ulong val) { - riscv_csrrw(env, csrno, NULL, val, MAKE_64BIT_MASK(0, TARGET_LONG_BITS= )); + riscv_csrrw(env, csrno, NULL, val, MAKE_64BIT_MASK(0, TARGET_LONG_BITS= ), 0); } =20 static inline target_ulong riscv_csr_read(CPURISCVState *env, int csrno) { target_ulong val =3D 0; - riscv_csrrw(env, csrno, &val, 0, 0); + riscv_csrrw(env, csrno, &val, 0, 0, 0); return val; } =20 diff --git a/hw/riscv/riscv_hart.c b/hw/riscv/riscv_hart.c index 333083a4f1..7f2676008c 100644 --- a/hw/riscv/riscv_hart.c +++ b/hw/riscv/riscv_hart.c @@ -72,7 +72,7 @@ static void csr_call(char *cmd, uint64_t cpu_num, int csr= no, uint64_t *val) ret =3D riscv_csrr(env, csrno, (target_ulong *)val); } else if (strcmp(cmd, "set_csr") =3D=3D 0) { ret =3D riscv_csrrw(env, csrno, NULL, *(target_ulong *)val, - MAKE_64BIT_MASK(0, TARGET_LONG_BITS)); + MAKE_64BIT_MASK(0, TARGET_LONG_BITS), 0); } =20 g_assert(ret =3D=3D RISCV_EXCP_NONE); diff --git a/target/riscv/csr.c b/target/riscv/csr.c index 8af0304a36..807a891e7d 100644 --- a/target/riscv/csr.c +++ b/target/riscv/csr.c @@ -5574,15 +5574,15 @@ RISCVException riscv_csrr(CPURISCVState *env, int c= srno, } =20 RISCVException riscv_csrrw(CPURISCVState *env, int csrno, - target_ulong *ret_value, - target_ulong new_value, target_ulong write_mask) + target_ulong *ret_value, target_ulong new_value, + target_ulong write_mask, uintptr_t ra) { RISCVException ret =3D riscv_csrrw_check(env, csrno, true); if (ret !=3D RISCV_EXCP_NONE) { return ret; } =20 - return riscv_csrrw_do64(env, csrno, ret_value, new_value, write_mask, = 0); + return riscv_csrrw_do64(env, csrno, ret_value, new_value, write_mask, = ra); } =20 static RISCVException riscv_csrrw_do128(CPURISCVState *env, int csrno, @@ -5704,7 +5704,7 @@ RISCVException riscv_csrrw_debug(CPURISCVState *env, = int csrno, if (!write_mask) { ret =3D riscv_csrr(env, csrno, ret_value); } else { - ret =3D riscv_csrrw(env, csrno, ret_value, new_value, write_mask); + ret =3D riscv_csrrw(env, csrno, ret_value, new_value, write_mask, = 0); } #if !defined(CONFIG_USER_ONLY) env->debugger =3D false; diff --git a/target/riscv/op_helper.c b/target/riscv/op_helper.c index 05316f2088..0672101637 100644 --- a/target/riscv/op_helper.c +++ b/target/riscv/op_helper.c @@ -71,7 +71,7 @@ target_ulong helper_csrr(CPURISCVState *env, int csr) void helper_csrw(CPURISCVState *env, int csr, target_ulong src) { target_ulong mask =3D env->xl =3D=3D MXL_RV32 ? UINT32_MAX : (target_u= long)-1; - RISCVException ret =3D riscv_csrrw(env, csr, NULL, src, mask); + RISCVException ret =3D riscv_csrrw(env, csr, NULL, src, mask, GETPC()); =20 if (ret !=3D RISCV_EXCP_NONE) { riscv_raise_exception(env, ret, GETPC()); @@ -82,7 +82,7 @@ target_ulong helper_csrrw(CPURISCVState *env, int csr, target_ulong src, target_ulong write_mask) { target_ulong val =3D 0; - RISCVException ret =3D riscv_csrrw(env, csr, &val, src, write_mask); + RISCVException ret =3D riscv_csrrw(env, csr, &val, src, write_mask, GE= TPC()); =20 if (ret !=3D RISCV_EXCP_NONE) { riscv_raise_exception(env, ret, GETPC()); --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747629137; cv=none; d=zohomail.com; s=zohoarc; b=lD+6VEvXRcxqx0XkoPsd8nLugINhtogn4Cl15HBSLX18zY1vde7+3s5WTpk4WQx5lulzWS+SutjOWpj00fHac+59x/NEoFcP1n3WotdHf0m4lzZB0VAlXxNCTyetLcrstSITabTZoOTW/ui/JZwFsoqMwvY2lernqVE3/pdA8FA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747629137; h=Content-Type:Content-Transfer-Encoding:Cc:Cc: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; bh=6B8XcozBhKUSaO2IzZDRk0dCZYzeMARm9IqAu7+vN/0=; b=KsSqg1v9w+mDCr1I935DuWj27t17TE7hKefNf9WX0JuxJGq8XTHprNyAWtDtARTHGxC3VqbtbtP1pvzCv30vuga4V/Ts+L/6wU8wo3yED+Q3YTo2AlxXyvSAGjuZ6lu1P9XGKDMIY2B46ddkV+Ew75x7mHN0+HRyJUkbZKdpp0Y= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747629137014338.9238499220843; Sun, 18 May 2025 21:32:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGs3Y-0000vf-Do; Mon, 19 May 2025 00:24:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGroJ-0007Q2-7x for qemu-devel@nongnu.org; Mon, 19 May 2025 00:09:07 -0400 Received: from mail-pl1-x62e.google.com ([2607:f8b0:4864:20::62e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGroG-0004JI-Q1 for qemu-devel@nongnu.org; Mon, 19 May 2025 00:09:06 -0400 Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-2302d90c7f7so50605145ad.3 for ; Sun, 18 May 2025 21:09:04 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.09.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:09:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627743; x=1748232543; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=6B8XcozBhKUSaO2IzZDRk0dCZYzeMARm9IqAu7+vN/0=; b=iWNjZ50OF373nsxgsmByysBHjAtDCeMHjvgOGBRMSeIRiWcMvjTLp4LG269fowXQCB UWx7EO+5IotsZ9gNc1Ftyfw/jcOL67CLPj8Cjh8FeYRCAZ/+4KS+uQoeKXwd5vPmMxvJ QY9hwgRRpFOGepCu5y8o2ziUw5xlo2KGPk4wCOaPlY+nCW2rnO5QKsx8lZkjo8RqBCl6 nGfyyQ9aAYUV+R8WM0/6AD3K/J3ynBxRd232124AkRDY0W0KZUY3TCKyVex16lXNpUwH q14gfLXkpuxu1trJ6Z6GlHjUg9c6qyWn8UEf7480KKLvZr0KW89uXCPjR+8MA8n9RYQb bgBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627743; x=1748232543; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=6B8XcozBhKUSaO2IzZDRk0dCZYzeMARm9IqAu7+vN/0=; b=aZDAZ/lBc047JQa57Pp2x+1Lh3S0qnOCsaVy/VqJQqdDM2YNdXtKwGDHmi/uDK2GfD oaNGnhaeTEJcgRoJOq1U29iiPav3u44JbpvmYEG6Gs8OAJvh2KaGKwBdvHJYrA7YpBXI EQJ640Axz7MppULqa5u8c+760f+/qNtYlQNoG3d+kCIGkOf61LID5YkanQWbP6qzzHLE Gqk3moiD/rYf0dZNU3zParbgPZUcJCFQ3/aYhVMlM1qCDanrWg1kd4YkbAxj6Jm45cWO tm8hsokIMi6zl7S/x4M0yTYDhIvSsB9Kul4pVDxpLXnzolPFK1zRlKGM+J/YPdfAMLt3 JNgg== X-Gm-Message-State: AOJu0YxfwZiGfYm9zJ5JfU8zAkHwQlq0Ez0G3qVEfnxqm0PtbIyAmfue GB9D9ufsUOxa6LJ8iCevq0nmzx9aVZ2DjpOXynk6xEyXe8Mva1890lle9/el2Q== X-Gm-Gg: ASbGncueUlgPyxn/UoQ9FmHGKUdWz/oSuzZJnU2whWxN6SfRY40hKHD0S0gkf6ubfKx C1klK9YCJKhyRhno/w380ssqB49HUDIbn4VG6ogUCxc63bn8OQeftF74uI/QK8BIzol7NoUjNj7 xV7F8bNk+LOSsyVszeEM86qQ3wchXVb5GQbwgVsHl3Pe3vau4Wepp87rDO/qZZX048xWtI2uCjt V9mJI7TiHW3wOiKb3OEFFTI2j+ke4LcqIrguOqwzpquLjs4kcCbOYC/SuKrfzThumXmjI9BJLZ1 a+BH8+BPjRBvfvosuYupdETcqQhJ4kihKVrPwUk2M+2Om9hN6XRfigHr4P6otMrkMBiMbyaKAIj p6v08IFEa5ccSDLP+4qgfx+8mULvUwjDZR/ZhW5xsLlzYqUPnQCo+oHH8 X-Google-Smtp-Source: AGHT+IEOF9UlfMdOnWuMQ5Lk8Wti3VsuHKn9jSCVAswey0P7E3m0HFx33yi7n+Xwn7gw86S8gi6+Ww== X-Received: by 2002:a17:903:1ce:b0:223:5a6e:b16 with SMTP id d9443c01a7336-231d438b45emr182939015ad.5.1747627743202; Sun, 18 May 2025 21:09:03 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Richard Henderson , Alistair Francis , Daniel Henrique Barboza , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 36/56] target/riscv: Pass ra to riscv_csrrw_i128 Date: Mon, 19 May 2025 14:05:33 +1000 Message-ID: <20250519040555.3797167-37-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62e; envelope-from=alistair23@gmail.com; helo=mail-pl1-x62e.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747629138841116600 From: Richard Henderson Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis Reviewed-by: Daniel Henrique Barboza Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-ID: <20250425152311.804338-6-richard.henderson@linaro.org> Signed-off-by: Alistair Francis --- target/riscv/cpu.h | 4 ++-- target/riscv/csr.c | 8 ++++---- target/riscv/op_helper.c | 9 +++++---- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index f674e93a4f..ff7ba2a0a1 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -848,8 +848,8 @@ typedef RISCVException (*riscv_csr_op_fn)(CPURISCVState= *env, int csrno, RISCVException riscv_csrr_i128(CPURISCVState *env, int csrno, Int128 *ret_value); RISCVException riscv_csrrw_i128(CPURISCVState *env, int csrno, - Int128 *ret_value, - Int128 new_value, Int128 write_mask); + Int128 *ret_value, Int128 new_value, + Int128 write_mask, uintptr_t ra); =20 typedef RISCVException (*riscv_csr_read128_fn)(CPURISCVState *env, int csr= no, Int128 *ret_value); diff --git a/target/riscv/csr.c b/target/riscv/csr.c index 807a891e7d..53458491da 100644 --- a/target/riscv/csr.c +++ b/target/riscv/csr.c @@ -5656,8 +5656,8 @@ RISCVException riscv_csrr_i128(CPURISCVState *env, in= t csrno, } =20 RISCVException riscv_csrrw_i128(CPURISCVState *env, int csrno, - Int128 *ret_value, - Int128 new_value, Int128 write_mask) + Int128 *ret_value, Int128 new_value, + Int128 write_mask, uintptr_t ra) { RISCVException ret; =20 @@ -5668,7 +5668,7 @@ RISCVException riscv_csrrw_i128(CPURISCVState *env, i= nt csrno, =20 if (csr_ops[csrno].read128) { return riscv_csrrw_do128(env, csrno, ret_value, - new_value, write_mask, 0); + new_value, write_mask, ra); } =20 /* @@ -5681,7 +5681,7 @@ RISCVException riscv_csrrw_i128(CPURISCVState *env, i= nt csrno, target_ulong old_value; ret =3D riscv_csrrw_do64(env, csrno, &old_value, int128_getlo(new_value), - int128_getlo(write_mask), 0); + int128_getlo(write_mask), ra); if (ret =3D=3D RISCV_EXCP_NONE && ret_value) { *ret_value =3D int128_make64(old_value); } diff --git a/target/riscv/op_helper.c b/target/riscv/op_helper.c index 0672101637..557807ba4b 100644 --- a/target/riscv/op_helper.c +++ b/target/riscv/op_helper.c @@ -108,7 +108,7 @@ void helper_csrw_i128(CPURISCVState *env, int csr, { RISCVException ret =3D riscv_csrrw_i128(env, csr, NULL, int128_make128(srcl, srch), - UINT128_MAX); + UINT128_MAX, GETPC()); =20 if (ret !=3D RISCV_EXCP_NONE) { riscv_raise_exception(env, ret, GETPC()); @@ -116,13 +116,14 @@ void helper_csrw_i128(CPURISCVState *env, int csr, } =20 target_ulong helper_csrrw_i128(CPURISCVState *env, int csr, - target_ulong srcl, target_ulong srch, - target_ulong maskl, target_ulong maskh) + target_ulong srcl, target_ulong srch, + target_ulong maskl, target_ulong maskh) { Int128 rv =3D int128_zero(); RISCVException ret =3D riscv_csrrw_i128(env, csr, &rv, int128_make128(srcl, srch), - int128_make128(maskl, maskh)); + int128_make128(maskl, maskh), + GETPC()); =20 if (ret !=3D RISCV_EXCP_NONE) { riscv_raise_exception(env, ret, GETPC()); --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747629109; cv=none; d=zohomail.com; s=zohoarc; b=Pj9iMfaCg6ReEXN3DcNRAd0frioeVgmHdvlAKirPra2rN4+SZEeUrmZmuGGbtdr4knVmUfjYIRH0mq2hS70wvSpjP0WjM6QuhQBO+9IL5y1zP0lOJtzCuSDRI2H2Cv5Ode0B1abvGhp2AciupyJ8ktoO0xDBTBnrwmY4kDX3c/M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747629109; h=Content-Type:Content-Transfer-Encoding:Cc:Cc: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; bh=Hd86zRGeQ+HNxBDexFTf6eP4HL08/wwze9zOl4z9vq0=; b=NHSRuV/FbWHsGgzIMLziRi+V25XWJIyb54BeHuOE4bQR6ApsLVURv7Dc9HoJlZw/IGPucHmAD2s8vQ/KPU/Gl6zgDv/1FacIaR6lbZ1QoU8enfI/9DLuQsAQxPv2EuLE6lxTbmQRbyC7UGJJr1wTwa+gF3Hl3+DlCMt99dqjgXE= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747629109057153.74751593012775; Sun, 18 May 2025 21:31:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGs3q-0001AA-Nq; Mon, 19 May 2025 00:25:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGroM-0007ao-1N for qemu-devel@nongnu.org; Mon, 19 May 2025 00:09:10 -0400 Received: from mail-pl1-x633.google.com ([2607:f8b0:4864:20::633]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGroK-0004JV-7n for qemu-devel@nongnu.org; Mon, 19 May 2025 00:09:09 -0400 Received: by mail-pl1-x633.google.com with SMTP id d9443c01a7336-231ecd4f2a5so18044905ad.0 for ; Sun, 18 May 2025 21:09:07 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.09.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:09:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627746; x=1748232546; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Hd86zRGeQ+HNxBDexFTf6eP4HL08/wwze9zOl4z9vq0=; b=GCaIygWFzoiqQ9h9gaiVe6Zf6/GiXf2WJMKpI3dxfAbDbs5ecL+pf+11LGbzY6IcbG Q2cbMej51SwsdH8p7/MiPKA5qzHXk6iLgiyBOqi3uy03t7VfseY4Qts7JZjbmDkqg/au Ag8hwq0EdVlhNX4cXxXVG1citRBvFYZ4C9qAZwiL8I/cLPU/5946An+L4O0jvnL/ieB8 T0SvvGvIgnFswXDRPp38iWUJ8/hCiSRdEBw6oOoks0liLKEgFvHlc6RQWkmlWbk/wptp kcsoH3bfjh2LvYmNdwnIzyMjr5uvAjE34QfJka1v8pGp7il6FyPg3CUNF0TzwxxJmAyz HBMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627746; x=1748232546; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Hd86zRGeQ+HNxBDexFTf6eP4HL08/wwze9zOl4z9vq0=; b=S6F+BSPt1H8DYF3IxHox3miygkN5dzn2TPwktnPmmy+bCx0+ml2BmxL4w64IqNvGUG YsyLRBPuch3/qfXFl4Zb94i9Yan9Th7RY61C+HEWQ6HoLSJFmcvGripeR5OC0Jw7beWV 9snF8wEQ8n4AyI7gU80kpxjjc9ybWF8jrY1R/ge2C1tVpcT0SWdjBNfkr8UHZIAIU14W djfAw6x7USCd1lrzX7vBhEMxMfNQjvjMGYiMJ6OkrX5WMFkr/11gPvNdntWvDsg0Pxe4 E6xnLOhT4yj1Z3rAJLzZnpoi+tkqqQYF2B8CSotpUf7GtktROBS7CwBILS5mrJWBxki1 QbjA== X-Gm-Message-State: AOJu0YxJPruBfzzH2oayIzxEhg7XDVYdQywwNUF2LgBqVgulFGTTVYUK 9CslOCtl8KCgo9H0Xq4qV/yfyCNLsI9JWvaAU+G5Xg0WvX3yjqsR2prLscS1uQ== X-Gm-Gg: ASbGncuFJ1jheQhYgsATsyHhf0GhgeMgDA8YpiLmJs/e1T87C8SPYNPIOY/0naS1Z49 y3Lx/JzzltjUQjzA1sJssxeHVPwaGL2tpX1Fp20cJCsNs/edVIZdj9krycEI6cUNtYbcpTJsc28 hv9csDGQW2JbeWjNyJxORvYZN9JHItz2LFuRen+UoORLPJCrSp8DG7HPo2cQB5sILpRgnL70sL9 1B50WlmMOqnSKdYl3FgsLXBllEqkK8ZWWzjRitIphlSSl7RiZYAauFCCyIowmB38Sdjf5SmYEti M3ApR+//A0PLRWqHttWtnHXDj7hPkZY/x1KsUHmEKBbThYnoxc/qRrhYvkSRxqZPcpFuOR5BXsn tbWhS2kFnUPTEjCmJEpxYySzqTM5Ij/gyvIy1UGRJ4IukP/uPvmjN1f4a X-Google-Smtp-Source: AGHT+IExn6Zo8hkccVopuf488SsS8qbN/nnY6jci+Js8vzAP4fktO+nQq6wxVSzc/3WCWHrJWXmuLQ== X-Received: by 2002:a17:902:ec89:b0:224:93e:b5d7 with SMTP id d9443c01a7336-231de370eb9mr154482585ad.34.1747627746512; Sun, 18 May 2025 21:09:06 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Richard Henderson , Alistair Francis , Daniel Henrique Barboza , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 37/56] target/riscv: Move insn_len to internals.h Date: Mon, 19 May 2025 14:05:34 +1000 Message-ID: <20250519040555.3797167-38-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::633; envelope-from=alistair23@gmail.com; helo=mail-pl1-x633.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747629110537116600 From: Richard Henderson Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis Reviewed-by: Daniel Henrique Barboza Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-ID: <20250425152311.804338-7-richard.henderson@linaro.org> Signed-off-by: Alistair Francis --- target/riscv/internals.h | 5 +++++ target/riscv/translate.c | 5 ----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/target/riscv/internals.h b/target/riscv/internals.h index 213aff31d8..4570bd50be 100644 --- a/target/riscv/internals.h +++ b/target/riscv/internals.h @@ -201,4 +201,9 @@ static inline target_ulong adjust_addr_virt(CPURISCVSta= te *env, return adjust_addr_body(env, addr, true); } =20 +static inline int insn_len(uint16_t first_word) +{ + return (first_word & 3) =3D=3D 3 ? 4 : 2; +} + #endif diff --git a/target/riscv/translate.c b/target/riscv/translate.c index 85128f997b..0d4f7d601c 100644 --- a/target/riscv/translate.c +++ b/target/riscv/translate.c @@ -1209,11 +1209,6 @@ static uint32_t opcode_at(DisasContextBase *dcbase, = target_ulong pc) /* The specification allows for longer insns, but not supported by qemu. */ #define MAX_INSN_LEN 4 =20 -static inline int insn_len(uint16_t first_word) -{ - return (first_word & 3) =3D=3D 3 ? 4 : 2; -} - const RISCVDecoder decoder_table[] =3D { { always_true_p, decode_insn32 }, { has_xthead_p, decode_xthead}, --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747628983; cv=none; d=zohomail.com; s=zohoarc; b=kc3jnGiYWjW+xyXUxQOMO0LKuNFkofBK+frXT/U5KcqdA6gXwQfG/mRl3ILp0EwwtnojU5cc2Qvtolr+dX6QpQk6jN2Tv/weLaXUMshBaDqQDHCf1o8yBQiPujc1ZVvnPfV2DoRoYV3mr1xHgcCDMFeWGQ2OMhuNXyN62HPLrbc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747628983; h=Content-Type:Content-Transfer-Encoding:Cc:Cc: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; bh=9+8m5dgUHffTrvncW6hBDGM/ivLaHuneNLED/QiZRAg=; b=jVxj7GpKvIaV+dsdZowe6Cy5QH/RE32FiWvu/YZQOqnYZj3A5MXm+jT1qHAEPgrVnFY6fE3VX3eEzsuJigAPGvSrz4LO5nBoHVpL4htcCjDrXKksxPUm3igprdbNmITK6qexhpRCpPjYwm0DowxYomii73SM3ZOlKV5VO4WwIdo= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747628983723645.7815546400276; Sun, 18 May 2025 21:29:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGs3t-0001Ou-TB; Mon, 19 May 2025 00:25:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGroQ-0007m2-Bv for qemu-devel@nongnu.org; Mon, 19 May 2025 00:09:15 -0400 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGroO-0004K2-EC for qemu-devel@nongnu.org; Mon, 19 May 2025 00:09:13 -0400 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-22d95f0dda4so42468885ad.2 for ; Sun, 18 May 2025 21:09:11 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.09.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:09:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627750; x=1748232550; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=9+8m5dgUHffTrvncW6hBDGM/ivLaHuneNLED/QiZRAg=; b=f75CQJLz5+OjZSeeqJJeRkmRUQ+dp/L3kctCxmx7qyQWHl+1itMeY5QslMCEWY70xo HIP0wtTPkKIoFGFgz3Y3Uh+YjEGqoBubUyBAPmpcFP2KH8GJixUsNyjEG3wL/2GBm6mL 5ugUkMv2abGZi2hv4mMAo/lgpY2DyMZpF1TM2GKRMA9c017aTeMcKwcko07ZFWv/HHeT CtyGCopAUjIg/YKT+768RBdk/C9aFgx6FvmpnT74k6lwK1tmOKkqqh8+SAtPM0SUBNs4 7cK4rR0Y8kTxsnB07qlph4lNeZj1nG5FGb0FgO6K5uDAlVTnkjR7ImGWgdBslkKtsEKu tAFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627750; x=1748232550; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9+8m5dgUHffTrvncW6hBDGM/ivLaHuneNLED/QiZRAg=; b=VyybapadvmEu8arF3bXUsqaNySL1jHh0Mv4/RJg3CR/htB9M6UQr6crZ4vVV+zhoHf eW6lm2rjEiKS7tPWuuMkpdpXnNEXN+oEFXRX8FfywmFFETP6cMSOzx1h6R2NEKK4kLea e2l/GnTO23KNNtx7x1ryKDLzhzoSFL4lrZlKIDZMr0MPAgloCBaZzzvXCOXOPh+vDZT4 EnMo+3uHdapRFGx6HIKy/DAUVomM6ogc+oDoDu8IRwrcXyA2DprnKnS4yaUBg05WgjfR yqjE7F7FqRrB8CcBi6EYKm+904/iTJq0hV6gYpMvXvQWjSeoR1Mceu1k3u+u3cPd5F6E fhKg== X-Gm-Message-State: AOJu0YxGyB4m7A2tB/nSjn82Z7HzE56wClwJtcD7koX7YPXbsA8k5r63 ljcs8ocJ53j2pM5kYz36lzlPgo6Tfmsoz9fSX073g47b8j1C9AauFFloImDuZg== X-Gm-Gg: ASbGncsr3p/gy5x2bGA8ReKgHZWfseSs1hCvNmMNLHeZSjOjhn7OiaFkT4AMqwbkVd7 HPACNOgUS2RNciP/pyub8811eZUV4dQk/qTjRSqQmnIdTEzVHhEj8klwmNexYHo9hlwCeKAlB+p xDbt5eu9z6TIUKGbqqAwJy65hF2atZWNCTZR4ORiTHusO4k2VONFK3r2KxU8Tor1neHrsSSGVOx uAL+2/YQWl/n6SvBlEMQWm+4AcnWJV+yZMVCTatYg4PlmYdBxxH3c4ovhcFYagK0MgHH78+PlSe 4dKR/JZjqDVgEQZyIQRfOaaGOhmynqmQTWHcA+txrbk85ZZdnP1IGx7N45PgBAQAHz+c+B0mAEx 1wfcVN8K98b+3jahAZUZbQ8XDGUXfKgbuHdum3wXbQ9iezq9ch/BZkKyz X-Google-Smtp-Source: AGHT+IH9IW+xcFs2W1OGg3+FuV44wsEpcHuOoc6tY8aE9WOp7AoOJ8c4NPByYxXLbhFuPdl9l1zM1g== X-Received: by 2002:a17:903:3d0f:b0:220:faa2:c911 with SMTP id d9443c01a7336-231d44e8833mr163446435ad.14.1747627749827; Sun, 18 May 2025 21:09:09 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Richard Henderson , Alistair Francis , Daniel Henrique Barboza , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 38/56] target/riscv: Fix write_misa vs aligned next_pc Date: Mon, 19 May 2025 14:05:35 +1000 Message-ID: <20250519040555.3797167-39-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::634; envelope-from=alistair23@gmail.com; helo=mail-pl1-x634.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747628987189116600 From: Richard Henderson Do not examine a random host return address, but properly compute the next pc for the guest cpu. Fixes: f18637cd611 ("RISC-V: Add misa runtime write support") Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis Reviewed-by: Daniel Henrique Barboza Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-ID: <20250425152311.804338-8-richard.henderson@linaro.org> [ Changes by AF: - Change `& ~3` to `& 3` ] Signed-off-by: Alistair Francis --- target/riscv/csr.c | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/target/riscv/csr.c b/target/riscv/csr.c index 53458491da..288edeedea 100644 --- a/target/riscv/csr.c +++ b/target/riscv/csr.c @@ -30,6 +30,8 @@ #include "accel/tcg/getpc.h" #include "qemu/guest-random.h" #include "qapi/error.h" +#include "tcg/insn-start-words.h" +#include "internals.h" #include =20 /* CSR function table public API */ @@ -2099,6 +2101,19 @@ static RISCVException read_misa(CPURISCVState *env, = int csrno, return RISCV_EXCP_NONE; } =20 +static target_ulong get_next_pc(CPURISCVState *env, uintptr_t ra) +{ + uint64_t data[INSN_START_WORDS]; + + /* Outside of a running cpu, env contains the next pc. */ + if (ra =3D=3D 0 || !cpu_unwind_state_data(env_cpu(env), ra, data)) { + return env->pc; + } + + /* Within unwind data, [0] is pc and [1] is the opcode. */ + return data[0] + insn_len(data[1]); +} + static RISCVException write_misa(CPURISCVState *env, int csrno, target_ulong val, uintptr_t ra) { @@ -2114,11 +2129,8 @@ static RISCVException write_misa(CPURISCVState *env,= int csrno, /* Mask extensions that are not supported by this hart */ val &=3D env->misa_ext_mask; =20 - /* - * Suppress 'C' if next instruction is not aligned - * TODO: this should check next_pc - */ - if ((val & RVC) && (GETPC() & ~3) !=3D 0) { + /* Suppress 'C' if next instruction is not aligned. */ + if ((val & RVC) && (get_next_pc(env, ra) & 3) !=3D 0) { val &=3D ~RVC; } =20 --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747628205; cv=none; d=zohomail.com; s=zohoarc; b=d03hho65u/yaG9OZemAwa8XuxnLtWtvPCa9+HLwbxF6paDpubNpeoQgzFBMCmYhsb2dTndfBqkmVJfRw1LyyJMF3nGDLhZ+HD3KZDFUnsTBV/cVu6TDs1GQt6uoVzE9TFzaY4yjiXZhYEorTH6dUO4gNnviB1vx/kHz6RA4VRg0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747628205; h=Content-Transfer-Encoding:Cc:Cc: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; bh=wY7mpEOJfCURI42HnRpTQwtH82i/7RJ4cmoo53i44Rk=; b=OFFCNI1L0uYx2anVTRY1HrlmjfY8SBMPDr+AkA4IFMCzIiYcyyPCNCYazHkud1NJwHUtTLuGdDtgJBfwlbYOojztmjrn405a0gLxTPKjXuIjIIrwWXFs1Zie8qUl6+6sD9WSn2+y79LD1AHZJ2FbvHFPRgbw44hvckX6Ti2PtUw= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747628205453173.13151371480456; Sun, 18 May 2025 21:16:45 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGrv0-0004TU-Aq; Mon, 19 May 2025 00:16:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGroT-0007vZ-Bb; Mon, 19 May 2025 00:09:25 -0400 Received: from mail-pl1-x631.google.com ([2607:f8b0:4864:20::631]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGroR-0004KH-Lw; Mon, 19 May 2025 00:09:17 -0400 Received: by mail-pl1-x631.google.com with SMTP id d9443c01a7336-2320d2a7852so8590995ad.3; Sun, 18 May 2025 21:09:14 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.09.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:09:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627753; x=1748232553; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=wY7mpEOJfCURI42HnRpTQwtH82i/7RJ4cmoo53i44Rk=; b=Xqv1ZlRBNTbEJDdSjwo79ZBfbtL24+VafjaUrFFUq8Tu586EmEQXEVMgFMsm0IP3hy H/cXBEprFCnwxqQxN36c5WRP5SBq913hWtd9TV5me96MchP4Z7qhMwpeD+nr0niV8Jaz 6D1KKkSuyVFr+UH84/JBycFgpC/+qAenaiTvSsfPQWRxI9K7s1gtiAmvONT0ww8niYU7 v8rJ+3U5VAA5Y6jk8TUQh4r/iKRyZw9VXGG+IrIvv46rTnpifAxytj3+3CsSD7GitRSv /qlVLWyS5RYKdKpyeLwnm3jewcBMpAYgPyugo7GMRyXW7zr2NTfcAFm9d7M0C+hYUH/Q fr7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627753; x=1748232553; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=wY7mpEOJfCURI42HnRpTQwtH82i/7RJ4cmoo53i44Rk=; b=TEnsxF5PplpPbXGg8vqQhoinAzBA9DY423pRiYupNz5eXJWG3t4Zv8cgxfQzb2XGB/ Gw6Q59cSGtDoultFbdrysTyyzogxiZX0f6/6aGn/hfZOVxckkBq2eTuck4E2agJC8Byt uGWx51SDaq1kEB5eUtHhWPd2Eo8M9rBtUYtm0fChJoiXcJGDrOxzXKXyoyb0OxAViuWf 5MvGODSzpmFtQaCmsI7+bDz2xca7ItzfPZU8cLzL5/xNvCvy8Oh7MD5TT80wWiLRDulT sMraBWp8lNo19BAaUg814xriKWPPqFypd7UxEeYaYG4hpAqOynNqbb9MIUzSiuux3VR4 cEDA== X-Forwarded-Encrypted: i=1; AJvYcCUpQJ3lktYaQmvIchY5L1Z4bxSRowGKk96dsrpVwcMUiK3carIRxXPWflhqB9pLs42/vu5kzliUe8y3yg==@nongnu.org X-Gm-Message-State: AOJu0YwXv4LWmo897vmkYEsBnGrP8TwLwpDXcVA5+ka3OFf/biJJ1DSW cf8SF4Qmy3aTV/2IqMWIlwRGgT3pjSeGjSKPYVMkYX0XG82OPOdWPs6inZP6dg== X-Gm-Gg: ASbGncs1avUOO6fnkFtTEy40JOFtnVVmsvYF/Abij80lJC8xyKqYA9RQbr5WJDAcTYS rgS7M4ozkOW/ulbmcOFXjM0Uq3v0r0A+xNhXEQFA07bDL4aCmC8tRsKle6dwErJmh/vBf5uUPYY WuWHyNgFryQpsZcyZA6/xucqn9r5SOaAmNK4uHxHwExhZvkgW/MYCjdCjg0JBf4F5Kt+4z6CemO wrp1nHi/5J5CZ7+ntWBlzFvnzgwOC1pd241O+oRQtn2zZCTIcfue3lZNCjKQWp6Gvbf2MN9GTRY K/S6hxCFSAFuSKqK1Rynq1V199TQuftFHier7t+jhlGMPyzVXNjyHb/ux7MHko+FeOLcQ+UM9cF FGmheoHyBv0jQVFfi9GM+yT+weFB8fAKVr/bE/Xxg6vCu+H561F2gCA5/ X-Google-Smtp-Source: AGHT+IG791m1GQiVC7YqYmNHcrA83Ciz35E5QnfsgPs4XHea0ujTmkmY5QvCXp5UL6vLagZNqSotYQ== X-Received: by 2002:a17:902:c411:b0:224:1ec0:8a1d with SMTP id d9443c01a7336-231de376684mr139468955ad.30.1747627753043; Sun, 18 May 2025 21:09:13 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Daniel Henrique Barboza , Andrew Jones , Alistair Francis , qemu-stable@nongnu.org Subject: [PULL 39/56] target/riscv/kvm: minor fixes/tweaks Date: Mon, 19 May 2025 14:05:36 +1000 Message-ID: <20250519040555.3797167-40-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::631; envelope-from=alistair23@gmail.com; helo=mail-pl1-x631.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747628207084116600 Content-Type: text/plain; charset="utf-8" From: Daniel Henrique Barboza Remove an unused 'KVMScratchCPU' pointer argument in kvm_riscv_check_sbi_dbcn_support(). Put kvm_riscv_reset_regs_csr() after kvm_riscv_put_regs_csr(). This will make a future patch diff easier to read, when changes in kvm_riscv_reset_regs_csr() and kvm_riscv_get_regs_csr() will be made. Fixes: a6b53378f5 ("target/riscv/kvm: implement SBI debug console (DBCN) ca= lls") Signed-off-by: Daniel Henrique Barboza Reviewed-by: Andrew Jones Reviewed-by: Alistair Francis Message-ID: <20250429124421.223883-2-dbarboza@ventanamicro.com> Signed-off-by: Alistair Francis Cc: qemu-stable@nongnu.org --- target/riscv/kvm/kvm-cpu.c | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/target/riscv/kvm/kvm-cpu.c b/target/riscv/kvm/kvm-cpu.c index 75724b6af4..cad54b720a 100644 --- a/target/riscv/kvm/kvm-cpu.c +++ b/target/riscv/kvm/kvm-cpu.c @@ -613,19 +613,6 @@ static int kvm_riscv_put_regs_core(CPUState *cs) return ret; } =20 -static void kvm_riscv_reset_regs_csr(CPURISCVState *env) -{ - env->mstatus =3D 0; - env->mie =3D 0; - env->stvec =3D 0; - env->sscratch =3D 0; - env->sepc =3D 0; - env->scause =3D 0; - env->stval =3D 0; - env->mip =3D 0; - env->satp =3D 0; -} - static int kvm_riscv_get_regs_csr(CPUState *cs) { CPURISCVState *env =3D &RISCV_CPU(cs)->env; @@ -660,6 +647,19 @@ static int kvm_riscv_put_regs_csr(CPUState *cs) return 0; } =20 +static void kvm_riscv_reset_regs_csr(CPURISCVState *env) +{ + env->mstatus =3D 0; + env->mie =3D 0; + env->stvec =3D 0; + env->sscratch =3D 0; + env->sepc =3D 0; + env->scause =3D 0; + env->stval =3D 0; + env->mip =3D 0; + env->satp =3D 0; +} + static int kvm_riscv_get_regs_fp(CPUState *cs) { int ret =3D 0; @@ -1078,7 +1078,6 @@ static int uint64_cmp(const void *a, const void *b) } =20 static void kvm_riscv_check_sbi_dbcn_support(RISCVCPU *cpu, - KVMScratchCPU *kvmcpu, struct kvm_reg_list *reglist) { struct kvm_reg_list *reg_search; @@ -1197,7 +1196,7 @@ static void kvm_riscv_init_multiext_cfg(RISCVCPU *cpu= , KVMScratchCPU *kvmcpu) kvm_riscv_read_vlenb(cpu, kvmcpu, reglist); } =20 - kvm_riscv_check_sbi_dbcn_support(cpu, kvmcpu, reglist); + kvm_riscv_check_sbi_dbcn_support(cpu, reglist); } =20 static void riscv_init_kvm_registers(Object *cpu_obj) --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747628966; cv=none; d=zohomail.com; s=zohoarc; b=b+yl0n5JCOh6o4x5bsVSyqE5DwAE+Bsp1TS2Ch1AXuEZ5pwf0aSjs16BDL+hkst1tb5oVGmH5ymQUAgsCHOPmIX5WERs0ccIdqM3+IVXgmyca2fYP3euYx+eTu+kijwy5X0gKcHpQAEftWarYd4q1e/JC1Lkt1ckiQytiXnwwwY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747628966; h=Content-Transfer-Encoding:Cc:Cc: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; bh=Nw6AXVPueGRjb2BbB22TeSRK74hAQ7nSEki4/SFL6oU=; b=F0b0CQEkDZa4rx/sLNRQLQ1fyYuQaSTOO6Or1d6xmawGHulUnY6eT4m2GIGPvTxSLZOvqOjL8AVeApUMx8KAdzrsWNxfYvHrsV+HoRqCB9O2m04iYGFjlUTc/yCh86ShJeWQUBnYEyoAl/oQh9aQaMJQBQrK9xMzFdCywVgfze4= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747628966713583.5223461635316; Sun, 18 May 2025 21:29:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGs3W-0000ri-F8; Mon, 19 May 2025 00:24:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGroX-0007xb-2P; Mon, 19 May 2025 00:09:25 -0400 Received: from mail-pg1-x529.google.com ([2607:f8b0:4864:20::529]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGroU-0004Kb-A8; Mon, 19 May 2025 00:09:19 -0400 Received: by mail-pg1-x529.google.com with SMTP id 41be03b00d2f7-b1a1930a922so2633673a12.3; Sun, 18 May 2025 21:09:17 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.09.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:09:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627756; x=1748232556; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Nw6AXVPueGRjb2BbB22TeSRK74hAQ7nSEki4/SFL6oU=; b=cI1h3KbrffPZC9AFT6jnjq6aEnd//WhvVkRLNWh4kvslVNDrS9oWIbBfAaj68/tDYG bi5nVI18mQgWw7SMGAmvQX4hyvonMb/YaEbn3syQ5VTkC3e5mfFpuOG1C01gPVj2YIu7 wzL3VQqhy23opVsUeGMsurUalr4lOOKCmBDizeUnEgcjAPRG92gBAt6YZ+GOkmR7Ogaf A5fU2sbeLbp4Ni+D11YLBnP6HUOp4NBGv55kd9s8suyctcTEDwkj1B5oMbaNl3AfU8Gk p1us8mGTisjgwC/5uqrYg4kqEyWDu8LAu5yk2N72+zy8SfkjmQGPeJcrsgOSppUrBTUF bZLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627756; x=1748232556; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Nw6AXVPueGRjb2BbB22TeSRK74hAQ7nSEki4/SFL6oU=; b=X/kfmL/uCW8q0rabCRCMCAsUJiJLCGMENihe/mZmZwcLuzlVL/KQe7mEHb0Q1i5wrF bwz2QUhYRotDcZka+hOWo+QXxo4s3zA+xE2sFKuVsCrTmh2Sp41Hc1RVPIlqljzEJjUE WdeFgMrTqVsU1L/yZX/aBMTUQVZAEP/lqct5OiaKtUtk1mmCw4a8+Yc4g8TSymzu2Zqe s6ivIYUg2qBmihTwQ8mMWYasMY0ZEFX7E0Y4ELl1k1l016rY6kam24hdtzPGvwAlFUkI 0ITz2BPQk3/b1gXlmeUEOvAR2lllqa9tP99mku29qhauVIa92UT/aYNtv7FqPiZzZYGc aM6g== X-Forwarded-Encrypted: i=1; AJvYcCWkQgHivraeW0xgAJfOMLDiKjW2S7Lrw0XevRwPGMiDBVaov+d7cRivnprQQMYeSY3/zuy0frkUCGHc6w==@nongnu.org X-Gm-Message-State: AOJu0Yy7Kclyc5FkGGNTtC+e0fpk4M2WTmBBZlajTufp0E9KWi46WiC3 wghCtlVkmIPbf3Shs6DnBAVyV54hK1T0xK3qvSvYtdF0l+JOMphxZKtBuBdoNw== X-Gm-Gg: ASbGnct9aXuhIJ9OBh/RHQcgQmfgawW4c9V15SoAdKL5sKbYAnXzxNmGu2cXwjG+ews c1b8aIkvg8bq4poErjVIxyBzI/EWDuu3vPpAzzIVZkNe4JzeLxYDDssSr60yYHAjX1whjvXZb5v MZlPKcd6rC8FY8+ts4iv8adzJLT9EGJCm+YH5DoJUTM6YYzEa0Hpkag7GX3WFmM7n9Ds6QPIbu/ Vja/D9tzW5glhfkjbXgnPuQsKBbFkcYp/s3wYhTXlCjEOzqMq4dwR/T7wy1TCsaAcGS7JgzfVXW ++qjBJ/IzTrlhNS+Qc9EeXIrPLC9y5qUkvlNBdQ/2b0nDshpMOtxtre0LuQqMTcapdrBn9zFLux ygCUqi8yvPOL6SQOOw0EVpA3fUaiMIh/liLNSBj6Cw2yy+/84Pb1gJ+6A X-Google-Smtp-Source: AGHT+IFEH8biJ8t/vxLfxoK62E2b3oZiWcbEH4gxiVnFkUO7YR72cxzUbSsT4YtcHweZpT/v0QrVbA== X-Received: by 2002:a17:902:da86:b0:22e:50f2:1451 with SMTP id d9443c01a7336-231d459a6f7mr154117735ad.37.1747627756218; Sun, 18 May 2025 21:09:16 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Daniel Henrique Barboza , Andrew Jones , Alistair Francis , qemu-stable@nongnu.org Subject: [PULL 40/56] target/riscv/kvm: fix leak in kvm_riscv_init_multiext_cfg() Date: Mon, 19 May 2025 14:05:37 +1000 Message-ID: <20250519040555.3797167-41-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::529; envelope-from=alistair23@gmail.com; helo=mail-pg1-x529.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747628966979116600 Content-Type: text/plain; charset="utf-8" From: Daniel Henrique Barboza 'reglist' is being g-malloc'ed but never freed. Reported-by: Andrew Jones Signed-off-by: Daniel Henrique Barboza Reviewed-by: Andrew Jones Reviewed-by: Alistair Francis Message-ID: <20250429124421.223883-3-dbarboza@ventanamicro.com> Signed-off-by: Alistair Francis Cc: qemu-stable@nongnu.org --- target/riscv/kvm/kvm-cpu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/riscv/kvm/kvm-cpu.c b/target/riscv/kvm/kvm-cpu.c index cad54b720a..86eb3c2e3b 100644 --- a/target/riscv/kvm/kvm-cpu.c +++ b/target/riscv/kvm/kvm-cpu.c @@ -1119,10 +1119,10 @@ static void kvm_riscv_read_vlenb(RISCVCPU *cpu, KVM= ScratchCPU *kvmcpu, =20 static void kvm_riscv_init_multiext_cfg(RISCVCPU *cpu, KVMScratchCPU *kvmc= pu) { + g_autofree struct kvm_reg_list *reglist =3D NULL; KVMCPUConfig *multi_ext_cfg; struct kvm_one_reg reg; struct kvm_reg_list rl_struct; - struct kvm_reg_list *reglist; uint64_t val, reg_id, *reg_search; int i, ret; =20 --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747628263; cv=none; d=zohomail.com; s=zohoarc; b=oJNkcjY3tKoximdeoiKbahN8NK2wDXSuD1gupAiWYYj3/XZbjSsz5d91kDJFr9xZCGJlXUDcoWX/POU/qaTVMfsUrLvSZPxS2EssyiWJqEa0GfKAxIYjfd6ob3u+OHSoX+DMn5L1LBscel/AVNiHnwxDHb1H0DyKtcqoQ+7YteE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747628263; h=Content-Transfer-Encoding:Cc:Cc: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; bh=SwEOicLBArpbP54gxHI3sjHHqXAz8WjPPZUAxbfz9kM=; b=ERoa7L+ADtRqUNjwdkGlchSu5jXoq82DdsxRjRAWlsoZbSV+X891cwjQ7TRvnpTDw4yctKA9BDasB+rhyMkknGz/QPPlVMPNR5Lo8e81c2UoEoOtHrUTpo6Qiufxxfy22jk8dXj8j66ZU760Pg6zUQSG8osjHdokYNNNSz7MlKY= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17476282634601010.1525969602116; Sun, 18 May 2025 21:17:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGrv5-0004fs-EO; Mon, 19 May 2025 00:16:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGrob-0007zj-1V; Mon, 19 May 2025 00:09:27 -0400 Received: from mail-pf1-x433.google.com ([2607:f8b0:4864:20::433]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGroX-0004Kp-L4; Mon, 19 May 2025 00:09:23 -0400 Received: by mail-pf1-x433.google.com with SMTP id d2e1a72fcca58-7426c44e014so3965280b3a.3; Sun, 18 May 2025 21:09:20 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.09.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:09:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627759; x=1748232559; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=SwEOicLBArpbP54gxHI3sjHHqXAz8WjPPZUAxbfz9kM=; b=FoB2R746JSZhMUZrE5YFxF/un4jZnsPJ26g6pIqCPVryAHLP3h445ePASB7DvYm4JA 12p7XMiDdRQhxdFfkNArwTc884u/kVJMOIX40FU+X9tEGa+S6v7BC2MPd8AP2xf0Lrjo 7kfAxm6EtJTITV3EiGOedqgFiUIkgmZdklryIxNJfusLFdvbc3iqSy6TrD5QsvFZH+tk uZ0fxVZswmYe2qfTHfi2wiXGtyOHpztOcGbBwuBCM83hTepOGuuqQX82B1Fr8CYpaAS7 2o9YeCvXG1Bs8wRimAOm8kcl39axpknmIbB4j+2qiBRjXtUsM61d5VnpOKVuNyOZwbW0 jIrg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627759; x=1748232559; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=SwEOicLBArpbP54gxHI3sjHHqXAz8WjPPZUAxbfz9kM=; b=fHUyLz0Y+uifo40/77A6K+oEcNbOJ5PmPQM9aBqhiUubJM3X20at1YHGKVPr9i0ahx RlXN73KDNA837j4ZdUYrO/FHPau5Fos2y6Hh9zvdmY2lV+SSEdkjDpIYiQkjExTTF6ti vkg0+hAIa1vVw0cZdocXurM5U6eXLS8Hi018JaA+PC5zdXS9NiM7VwO91EHFGoJQBkR4 odM6DlCWXneoTLuYxok/PAYYlAbIki/idIYtLuc449tzBahryWc3MWuVvZz9J5RDMZm+ SNuZrwQgv7w7tdDV7AljWnGLigJOJBbYqpprILH4jdqWQoLGjcVJOr8bQeOV8nWPMG29 GiRw== X-Forwarded-Encrypted: i=1; AJvYcCVtcJ2q1d1qa+4AeQ6mgQyZIf11kUcHus79iKIq0SEVzHjTl200wXYAwI74mJeyzwIJKX4h5cPCxsYpMQ==@nongnu.org X-Gm-Message-State: AOJu0YwdIJPa+ml5gwNsE1t4mAHYFTqXzMgHnP1SmdH38/R5aVmqMg+u wWBG+X/kMvuGkvWkVuXtuBX/AnsHeWl0oSeD7yQKG4oqPOqGQj545fw8F2x/cA== X-Gm-Gg: ASbGncsPKQZe1vxHxlesXhNMMDYFl1yBmA4sjek4wBY0d6wOpa1eq8KDgXK5R7mfAcY C6rgwW94Ddek/kez4PEmDhp4+7Q27ZK0qxfDGHu+FAD7hYRbXwLHvX0ktzVqXqqzgh+nsS+JVAO ddQp4GaHXzDZvudytoXjiDP8Vzgy6x0xzAGpdewNikiK5h/Cac47YXDQ2Dd9KOU/uh0dvQbHuwY AuzdaSY24O4UA5x4lpsji+dX5Agz1GDB8NH/D2pDAO+9vEV5XQrMIRw9Mxn9823sEJEXy/KYdLG vT6FOYG1vtbSLVT7dghCctwSPK63LDj8B+3NM1Fa64iCob7NaprG06xFlPkh8r3Qfo/FFD45EKF /bbXBkxHIFH+MWPNvefmWMcrkGsWrl51UNknsk9fRkpzUiCTWbMbu3blf X-Google-Smtp-Source: AGHT+IEdz+5jzmEVyeJ/pawFACwegxzNkEdAywn6AZ7hv1wHLpW1V9Ukf4Q8A3a0/veVQJy6EGQrAw== X-Received: by 2002:a05:6a20:9f43:b0:1f3:40a9:2c36 with SMTP id adf61e73a8af0-216218c3e5amr15944486637.10.1747627759453; Sun, 18 May 2025 21:09:19 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Daniel Henrique Barboza , Andrew Jones , Alistair Francis , qemu-stable@nongnu.org Subject: [PULL 41/56] target/riscv/kvm: turn u32/u64 reg functions into macros Date: Mon, 19 May 2025 14:05:38 +1000 Message-ID: <20250519040555.3797167-42-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::433; envelope-from=alistair23@gmail.com; helo=mail-pf1-x433.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747628265589116600 Content-Type: text/plain; charset="utf-8" From: Daniel Henrique Barboza This change is motivated by a future change w.r.t CSRs management. We want to handle them the same way as KVM extensions, i.e. a static array with KVMCPUConfig objs that will be read/write during init and so on. But to do that properly we must be able to declare a static array that hold KVM regs. C does not allow to init static arrays and use functions as initializers, e.g. we can't do: .kvm_reg_id =3D kvm_riscv_reg_id_ulong(...) When instantiating the array. We can do that with macros though, so our goal is turn kvm_riscv_reg_ulong() in a macro. It is cleaner to turn every other reg_id_*() function in macros, and ulong will end up using the macros for u32 and u64, so we'll start with them. Signed-off-by: Daniel Henrique Barboza Reviewed-by: Andrew Jones Reviewed-by: Alistair Francis Message-ID: <20250429124421.223883-4-dbarboza@ventanamicro.com> Signed-off-by: Alistair Francis Cc: qemu-stable@nongnu.org --- target/riscv/kvm/kvm-cpu.c | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/target/riscv/kvm/kvm-cpu.c b/target/riscv/kvm/kvm-cpu.c index 86eb3c2e3b..b037cb2781 100644 --- a/target/riscv/kvm/kvm-cpu.c +++ b/target/riscv/kvm/kvm-cpu.c @@ -58,6 +58,12 @@ void riscv_kvm_aplic_request(void *opaque, int irq, int = level) =20 static bool cap_has_mp_state; =20 +#define KVM_RISCV_REG_ID_U32(type, idx) (KVM_REG_RISCV | KVM_REG_SIZE_U32 = | \ + type | idx) + +#define KVM_RISCV_REG_ID_U64(type, idx) (KVM_REG_RISCV | KVM_REG_SIZE_U64 = | \ + type | idx) + static uint64_t kvm_riscv_reg_id_ulong(CPURISCVState *env, uint64_t type, uint64_t idx) { @@ -76,16 +82,6 @@ static uint64_t kvm_riscv_reg_id_ulong(CPURISCVState *en= v, uint64_t type, return id; } =20 -static uint64_t kvm_riscv_reg_id_u32(uint64_t type, uint64_t idx) -{ - return KVM_REG_RISCV | KVM_REG_SIZE_U32 | type | idx; -} - -static uint64_t kvm_riscv_reg_id_u64(uint64_t type, uint64_t idx) -{ - return KVM_REG_RISCV | KVM_REG_SIZE_U64 | type | idx; -} - static uint64_t kvm_encode_reg_size_id(uint64_t id, size_t size_b) { uint64_t size_ctz =3D __builtin_ctz(size_b); @@ -119,12 +115,12 @@ static uint64_t kvm_riscv_vector_reg_id(RISCVCPU *cpu, kvm_riscv_reg_id_ulong(env, KVM_REG_RISCV_CONFIG, \ KVM_REG_RISCV_CONFIG_REG(name)) =20 -#define RISCV_TIMER_REG(name) kvm_riscv_reg_id_u64(KVM_REG_RISCV_TIMER, \ +#define RISCV_TIMER_REG(name) KVM_RISCV_REG_ID_U64(KVM_REG_RISCV_TIMER, \ KVM_REG_RISCV_TIMER_REG(name)) =20 -#define RISCV_FP_F_REG(idx) kvm_riscv_reg_id_u32(KVM_REG_RISCV_FP_F, idx) +#define RISCV_FP_F_REG(idx) KVM_RISCV_REG_ID_U32(KVM_REG_RISCV_FP_F, idx) =20 -#define RISCV_FP_D_REG(idx) kvm_riscv_reg_id_u64(KVM_REG_RISCV_FP_D, idx) +#define RISCV_FP_D_REG(idx) KVM_RISCV_REG_ID_U64(KVM_REG_RISCV_FP_D, idx) =20 #define RISCV_VECTOR_CSR_REG(env, name) \ kvm_riscv_reg_id_ulong(env, KVM_REG_RISCV_VECTOR, \ --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747628852; cv=none; d=zohomail.com; s=zohoarc; b=Ecqh3RE8U9h85rWD5LB4Sv+Satuf8VbFIC5wovi4Efu4eau9G56yam0nQjiuQqDZNEjI8tkG1yOq6vyUzkUfULamv+HpMbkqE15Xp83An681MHYB3JuU0a85/fLgJ3YyeB8wPCfXMRdTudG8uMA7ZJZpb3FEmbFSUt6WP88HByw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747628852; h=Content-Transfer-Encoding:Cc:Cc: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; bh=8WDtzA+XYDp39rtlfgqOtch6IxjNnqHxzQ6CqndLUpE=; b=WOPTdvDOLU/GrEjqg7fIIPPmjwPLXWoNmwPMJ6LJ2tVXm5V3PZjXV99pll4u3GIn2fxygqxUpsEu0n4hUWvEyz7YdHt09+xPkzVpB7rTz3+W2hJy/UAiZ/WyWPgOREY6bO8G1mpCEmZYGNRL1vJWM5+a5Jj20Jta9F7wo3diqfg= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747628852345514.4507626684389; Sun, 18 May 2025 21:27:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGs40-0001gk-QJ; Mon, 19 May 2025 00:25:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGrof-00086g-T4; Mon, 19 May 2025 00:09:33 -0400 Received: from mail-pl1-x633.google.com ([2607:f8b0:4864:20::633]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGrob-0004L9-65; Mon, 19 May 2025 00:09:29 -0400 Received: by mail-pl1-x633.google.com with SMTP id d9443c01a7336-231e011edfaso27285275ad.0; Sun, 18 May 2025 21:09:24 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.09.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:09:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627763; x=1748232563; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=8WDtzA+XYDp39rtlfgqOtch6IxjNnqHxzQ6CqndLUpE=; b=bO53fVi+A8PKnNibLwZT/ezn5dzNNLfagAOQjbia/4H86Qc2w+BzXa1FnNnzBhdkYd Ej3oJgSVRZCJb5UA4e7bpiw/nbRy841jjwaAMj4mX3sLJ9LRi8u3DvyxElLWgWz64jVn P1skrd7JfX/Q4IgEnPPUbSnxSfPoJ8vEEXiIhN0ZB2m/ePI97SuONH3g4ptLtFgi+nce tKmBPMPgdREfnpozLeOxsIArzUyI9ObIn5lQP1ZC6kmLFbkjbpzuSHEm44S1xei2k86I RFdbbp1kQXInto9j4ke/R/N0EoqWdLJTJ85XXZgDBquHn46AUm1V/UipQWQYOVoQL1pN uemw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627763; x=1748232563; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=8WDtzA+XYDp39rtlfgqOtch6IxjNnqHxzQ6CqndLUpE=; b=wO02lzuyhara22H/S0M5yHTSGr9d9xmHTAIi+k3/sYJ9RNGEj1ftvzgE+dlnlkNd+6 bhAMqwHDjakeBLUH3f/Xx4CZHUS/OSgj7/UPMhtIoW/doggtFgRN0nc7cW7iAX+YGyba uYvi2kVvo/kuUB31RCezkCpB5v4jDG9FPzKHtXscyVl0HheoYN5MFrEJ9Go/aPOHUTUI knFs8vF+UJWsKs9zQtEPuua81tJQRpZ3rjWIqhmbtYeid6JrSE3U9ythLi1CE0tA/uKh nDGUGXnOMNIhinUQ0WQ8rvF9TefF1M/B3RhQtz/IFZLUFnj1yKPmeI6epgAyJO4XpX+b yv/w== X-Forwarded-Encrypted: i=1; AJvYcCXtEKA6se0m9lyhC41MQxAu1yOCcoyS8jzxZacBfd0iw4Ej83Wo9/YZU9hn3OnjJUdYEcnKF4ukzuUNag==@nongnu.org X-Gm-Message-State: AOJu0YyKs7qhN5YRLCDso5zBtlIbkyNCs0NlUX+DN9ylPK0ydOeKP9PB cKXdSBK1fWDJVm8Hj1Ibec2Ij7B2T1LhfzA32ENBAq2S05/CqezU8jlgnLCURw== X-Gm-Gg: ASbGncuuaPaTNrkzDtFznFy7pUyJhCuC9jOM4DSESCCR/6Yz+98l8bQNgo/I2506TbI kq6vvFR8hrK8yTAy6g9oryNvpvQ7SpKXSpbbXRBEreQKTw3MauvicUf6so6Q4VLqIobHaJLOQFJ 3Zs26TMid8fRTXK8PzSvQBP//972/5nYN8k3ZAgZTC1TM+9LWX8Z3+zdmqyGCG/AzJbeD34Tmi2 p+5d8IUz1GtLXdunsqYkWOQzPSfNVCiRd5poqRXlT53RkBwBeWBoQhuFYCYnXVO3aOj8TOpnHd+ 8iSgFDHmlyAJPODODqyFa67FmAuLAHJIKCs6acPjh9r8yWrWw5V3DkqoPddB/CirmndPrKmFqUT eIQdox4BAagAvvw4Ox0Bm6KgAprJHDd/aTpBSHTfhB3T1rH0T8OyJ+2PT X-Google-Smtp-Source: AGHT+IGgOP99SfoMAM81E+kaGQOievJcI9ZjVtPflRN5SBcJtTx//iP4A7BfjJZdSp9lNIDPHXIVMw== X-Received: by 2002:a17:903:3304:b0:231:e05c:8aa2 with SMTP id d9443c01a7336-231e05c8b8bmr94358675ad.30.1747627762736; Sun, 18 May 2025 21:09:22 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Daniel Henrique Barboza , Andrew Jones , Alistair Francis , qemu-stable@nongnu.org Subject: [PULL 42/56] target/riscv/kvm: turn kvm_riscv_reg_id_ulong() into a macro Date: Mon, 19 May 2025 14:05:39 +1000 Message-ID: <20250519040555.3797167-43-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::633; envelope-from=alistair23@gmail.com; helo=mail-pl1-x633.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747628854128116600 Content-Type: text/plain; charset="utf-8" From: Daniel Henrique Barboza We need the reg_id_ulong() helper to be a macro to be able to create a static array of KVMCPUConfig that will hold CSR information. Despite the amount of changes all of them are tedious/trivial: - replace instances of "kvm_riscv_reg_id_ulong" with "KVM_RISCV_REG_ID_ULONG"; - RISCV_CORE_REG(), RISCV_CSR_REG(), RISCV_CONFIG_REG() and RISCV_VECTOR_CSR_REG() only receives one 'name' arg. Remove unneeded 'env' variables when applicable. Signed-off-by: Daniel Henrique Barboza Reviewed-by: Andrew Jones Reviewed-by: Alistair Francis Message-ID: <20250429124421.223883-5-dbarboza@ventanamicro.com> Signed-off-by: Alistair Francis Cc: qemu-stable@nongnu.org --- target/riscv/kvm/kvm-cpu.c | 99 ++++++++++++++++---------------------- 1 file changed, 41 insertions(+), 58 deletions(-) diff --git a/target/riscv/kvm/kvm-cpu.c b/target/riscv/kvm/kvm-cpu.c index b037cb2781..509c875a19 100644 --- a/target/riscv/kvm/kvm-cpu.c +++ b/target/riscv/kvm/kvm-cpu.c @@ -64,23 +64,11 @@ static bool cap_has_mp_state; #define KVM_RISCV_REG_ID_U64(type, idx) (KVM_REG_RISCV | KVM_REG_SIZE_U64 = | \ type | idx) =20 -static uint64_t kvm_riscv_reg_id_ulong(CPURISCVState *env, uint64_t type, - uint64_t idx) -{ - uint64_t id =3D KVM_REG_RISCV | type | idx; - - switch (riscv_cpu_mxl(env)) { - case MXL_RV32: - id |=3D KVM_REG_SIZE_U32; - break; - case MXL_RV64: - id |=3D KVM_REG_SIZE_U64; - break; - default: - g_assert_not_reached(); - } - return id; -} +#if defined(TARGET_RISCV64) +#define KVM_RISCV_REG_ID_ULONG(type, idx) KVM_RISCV_REG_ID_U64(type, idx) +#else +#define KVM_RISCV_REG_ID_ULONG(type, idx) KVM_RISCV_REG_ID_U32(type, idx) +#endif =20 static uint64_t kvm_encode_reg_size_id(uint64_t id, size_t size_b) { @@ -103,16 +91,16 @@ static uint64_t kvm_riscv_vector_reg_id(RISCVCPU *cpu, return kvm_encode_reg_size_id(id, size_b); } =20 -#define RISCV_CORE_REG(env, name) \ - kvm_riscv_reg_id_ulong(env, KVM_REG_RISCV_CORE, \ +#define RISCV_CORE_REG(name) \ + KVM_RISCV_REG_ID_ULONG(KVM_REG_RISCV_CORE, \ KVM_REG_RISCV_CORE_REG(name)) =20 -#define RISCV_CSR_REG(env, name) \ - kvm_riscv_reg_id_ulong(env, KVM_REG_RISCV_CSR, \ +#define RISCV_CSR_REG(name) \ + KVM_RISCV_REG_ID_ULONG(KVM_REG_RISCV_CSR, \ KVM_REG_RISCV_CSR_REG(name)) =20 -#define RISCV_CONFIG_REG(env, name) \ - kvm_riscv_reg_id_ulong(env, KVM_REG_RISCV_CONFIG, \ +#define RISCV_CONFIG_REG(name) \ + KVM_RISCV_REG_ID_ULONG(KVM_REG_RISCV_CONFIG, \ KVM_REG_RISCV_CONFIG_REG(name)) =20 #define RISCV_TIMER_REG(name) KVM_RISCV_REG_ID_U64(KVM_REG_RISCV_TIMER, \ @@ -122,13 +110,13 @@ static uint64_t kvm_riscv_vector_reg_id(RISCVCPU *cpu, =20 #define RISCV_FP_D_REG(idx) KVM_RISCV_REG_ID_U64(KVM_REG_RISCV_FP_D, idx) =20 -#define RISCV_VECTOR_CSR_REG(env, name) \ - kvm_riscv_reg_id_ulong(env, KVM_REG_RISCV_VECTOR, \ +#define RISCV_VECTOR_CSR_REG(name) \ + KVM_RISCV_REG_ID_ULONG(KVM_REG_RISCV_VECTOR, \ KVM_REG_RISCV_VECTOR_CSR_REG(name)) =20 #define KVM_RISCV_GET_CSR(cs, env, csr, reg) \ do { \ - int _ret =3D kvm_get_one_reg(cs, RISCV_CSR_REG(env, csr), ®); \ + int _ret =3D kvm_get_one_reg(cs, RISCV_CSR_REG(csr), ®); \ if (_ret) { \ return _ret; \ } \ @@ -136,7 +124,7 @@ static uint64_t kvm_riscv_vector_reg_id(RISCVCPU *cpu, =20 #define KVM_RISCV_SET_CSR(cs, env, csr, reg) \ do { \ - int _ret =3D kvm_set_one_reg(cs, RISCV_CSR_REG(env, csr), ®); \ + int _ret =3D kvm_set_one_reg(cs, RISCV_CSR_REG(csr), ®); \ if (_ret) { \ return _ret; \ } \ @@ -244,7 +232,7 @@ static void kvm_riscv_update_cpu_misa_ext(RISCVCPU *cpu= , CPUState *cs) =20 /* If we're here we're going to disable the MISA bit */ reg =3D 0; - id =3D kvm_riscv_reg_id_ulong(env, KVM_REG_RISCV_ISA_EXT, + id =3D KVM_RISCV_REG_ID_ULONG(KVM_REG_RISCV_ISA_EXT, misa_cfg->kvm_reg_id); ret =3D kvm_set_one_reg(cs, id, ®); if (ret !=3D 0) { @@ -430,7 +418,6 @@ static KVMCPUConfig kvm_sbi_dbcn =3D { =20 static void kvm_riscv_update_cpu_cfg_isa_ext(RISCVCPU *cpu, CPUState *cs) { - CPURISCVState *env =3D &cpu->env; uint64_t id, reg; int i, ret; =20 @@ -441,7 +428,7 @@ static void kvm_riscv_update_cpu_cfg_isa_ext(RISCVCPU *= cpu, CPUState *cs) continue; } =20 - id =3D kvm_riscv_reg_id_ulong(env, KVM_REG_RISCV_ISA_EXT, + id =3D KVM_RISCV_REG_ID_ULONG(KVM_REG_RISCV_ISA_EXT, multi_ext_cfg->kvm_reg_id); reg =3D kvm_cpu_cfg_get(cpu, multi_ext_cfg); ret =3D kvm_set_one_reg(cs, id, ®); @@ -566,14 +553,14 @@ static int kvm_riscv_get_regs_core(CPUState *cs) target_ulong reg; CPURISCVState *env =3D &RISCV_CPU(cs)->env; =20 - ret =3D kvm_get_one_reg(cs, RISCV_CORE_REG(env, regs.pc), ®); + ret =3D kvm_get_one_reg(cs, RISCV_CORE_REG(regs.pc), ®); if (ret) { return ret; } env->pc =3D reg; =20 for (i =3D 1; i < 32; i++) { - uint64_t id =3D kvm_riscv_reg_id_ulong(env, KVM_REG_RISCV_CORE, i); + uint64_t id =3D KVM_RISCV_REG_ID_ULONG(KVM_REG_RISCV_CORE, i); ret =3D kvm_get_one_reg(cs, id, ®); if (ret) { return ret; @@ -592,13 +579,13 @@ static int kvm_riscv_put_regs_core(CPUState *cs) CPURISCVState *env =3D &RISCV_CPU(cs)->env; =20 reg =3D env->pc; - ret =3D kvm_set_one_reg(cs, RISCV_CORE_REG(env, regs.pc), ®); + ret =3D kvm_set_one_reg(cs, RISCV_CORE_REG(regs.pc), ®); if (ret) { return ret; } =20 for (i =3D 1; i < 32; i++) { - uint64_t id =3D kvm_riscv_reg_id_ulong(env, KVM_REG_RISCV_CORE, i); + uint64_t id =3D KVM_RISCV_REG_ID_ULONG(KVM_REG_RISCV_CORE, i); reg =3D env->gpr[i]; ret =3D kvm_set_one_reg(cs, id, ®); if (ret) { @@ -796,26 +783,26 @@ static int kvm_riscv_get_regs_vector(CPUState *cs) return 0; } =20 - ret =3D kvm_get_one_reg(cs, RISCV_VECTOR_CSR_REG(env, vstart), ®); + ret =3D kvm_get_one_reg(cs, RISCV_VECTOR_CSR_REG(vstart), ®); if (ret) { return ret; } env->vstart =3D reg; =20 - ret =3D kvm_get_one_reg(cs, RISCV_VECTOR_CSR_REG(env, vl), ®); + ret =3D kvm_get_one_reg(cs, RISCV_VECTOR_CSR_REG(vl), ®); if (ret) { return ret; } env->vl =3D reg; =20 - ret =3D kvm_get_one_reg(cs, RISCV_VECTOR_CSR_REG(env, vtype), ®); + ret =3D kvm_get_one_reg(cs, RISCV_VECTOR_CSR_REG(vtype), ®); if (ret) { return ret; } env->vtype =3D reg; =20 if (kvm_v_vlenb.supported) { - ret =3D kvm_get_one_reg(cs, RISCV_VECTOR_CSR_REG(env, vlenb), ®= ); + ret =3D kvm_get_one_reg(cs, RISCV_VECTOR_CSR_REG(vlenb), ®); if (ret) { return ret; } @@ -853,26 +840,26 @@ static int kvm_riscv_put_regs_vector(CPUState *cs) } =20 reg =3D env->vstart; - ret =3D kvm_set_one_reg(cs, RISCV_VECTOR_CSR_REG(env, vstart), ®); + ret =3D kvm_set_one_reg(cs, RISCV_VECTOR_CSR_REG(vstart), ®); if (ret) { return ret; } =20 reg =3D env->vl; - ret =3D kvm_set_one_reg(cs, RISCV_VECTOR_CSR_REG(env, vl), ®); + ret =3D kvm_set_one_reg(cs, RISCV_VECTOR_CSR_REG(vl), ®); if (ret) { return ret; } =20 reg =3D env->vtype; - ret =3D kvm_set_one_reg(cs, RISCV_VECTOR_CSR_REG(env, vtype), ®); + ret =3D kvm_set_one_reg(cs, RISCV_VECTOR_CSR_REG(vtype), ®); if (ret) { return ret; } =20 if (kvm_v_vlenb.supported) { reg =3D cpu->cfg.vlenb; - ret =3D kvm_set_one_reg(cs, RISCV_VECTOR_CSR_REG(env, vlenb), ®= ); + ret =3D kvm_set_one_reg(cs, RISCV_VECTOR_CSR_REG(vlenb), ®); =20 for (int i =3D 0; i < 32; i++) { /* @@ -951,25 +938,24 @@ static void kvm_riscv_destroy_scratch_vcpu(KVMScratch= CPU *scratch) =20 static void kvm_riscv_init_machine_ids(RISCVCPU *cpu, KVMScratchCPU *kvmcp= u) { - CPURISCVState *env =3D &cpu->env; struct kvm_one_reg reg; int ret; =20 - reg.id =3D RISCV_CONFIG_REG(env, mvendorid); + reg.id =3D RISCV_CONFIG_REG(mvendorid); reg.addr =3D (uint64_t)&cpu->cfg.mvendorid; ret =3D ioctl(kvmcpu->cpufd, KVM_GET_ONE_REG, ®); if (ret !=3D 0) { error_report("Unable to retrieve mvendorid from host, error %d", r= et); } =20 - reg.id =3D RISCV_CONFIG_REG(env, marchid); + reg.id =3D RISCV_CONFIG_REG(marchid); reg.addr =3D (uint64_t)&cpu->cfg.marchid; ret =3D ioctl(kvmcpu->cpufd, KVM_GET_ONE_REG, ®); if (ret !=3D 0) { error_report("Unable to retrieve marchid from host, error %d", ret= ); } =20 - reg.id =3D RISCV_CONFIG_REG(env, mimpid); + reg.id =3D RISCV_CONFIG_REG(mimpid); reg.addr =3D (uint64_t)&cpu->cfg.mimpid; ret =3D ioctl(kvmcpu->cpufd, KVM_GET_ONE_REG, ®); if (ret !=3D 0) { @@ -984,7 +970,7 @@ static void kvm_riscv_init_misa_ext_mask(RISCVCPU *cpu, struct kvm_one_reg reg; int ret; =20 - reg.id =3D RISCV_CONFIG_REG(env, isa); + reg.id =3D RISCV_CONFIG_REG(isa); reg.addr =3D (uint64_t)&env->misa_ext_mask; ret =3D ioctl(kvmcpu->cpufd, KVM_GET_ONE_REG, ®); =20 @@ -1001,11 +987,10 @@ static void kvm_riscv_init_misa_ext_mask(RISCVCPU *c= pu, static void kvm_riscv_read_cbomz_blksize(RISCVCPU *cpu, KVMScratchCPU *kvm= cpu, KVMCPUConfig *cbomz_cfg) { - CPURISCVState *env =3D &cpu->env; struct kvm_one_reg reg; int ret; =20 - reg.id =3D kvm_riscv_reg_id_ulong(env, KVM_REG_RISCV_CONFIG, + reg.id =3D KVM_RISCV_REG_ID_ULONG(KVM_REG_RISCV_CONFIG, cbomz_cfg->kvm_reg_id); reg.addr =3D (uint64_t)kvmconfig_get_cfg_addr(cpu, cbomz_cfg); ret =3D ioctl(kvmcpu->cpufd, KVM_GET_ONE_REG, ®); @@ -1019,7 +1004,6 @@ static void kvm_riscv_read_cbomz_blksize(RISCVCPU *cp= u, KVMScratchCPU *kvmcpu, static void kvm_riscv_read_multiext_legacy(RISCVCPU *cpu, KVMScratchCPU *kvmcpu) { - CPURISCVState *env =3D &cpu->env; uint64_t val; int i, ret; =20 @@ -1027,7 +1011,7 @@ static void kvm_riscv_read_multiext_legacy(RISCVCPU *= cpu, KVMCPUConfig *multi_ext_cfg =3D &kvm_multi_ext_cfgs[i]; struct kvm_one_reg reg; =20 - reg.id =3D kvm_riscv_reg_id_ulong(env, KVM_REG_RISCV_ISA_EXT, + reg.id =3D KVM_RISCV_REG_ID_ULONG(KVM_REG_RISCV_ISA_EXT, multi_ext_cfg->kvm_reg_id); reg.addr =3D (uint64_t)&val; ret =3D ioctl(kvmcpu->cpufd, KVM_GET_ONE_REG, ®); @@ -1159,7 +1143,7 @@ static void kvm_riscv_init_multiext_cfg(RISCVCPU *cpu= , KVMScratchCPU *kvmcpu) =20 for (i =3D 0; i < ARRAY_SIZE(kvm_multi_ext_cfgs); i++) { multi_ext_cfg =3D &kvm_multi_ext_cfgs[i]; - reg_id =3D kvm_riscv_reg_id_ulong(&cpu->env, KVM_REG_RISCV_ISA_EXT, + reg_id =3D KVM_RISCV_REG_ID_ULONG(KVM_REG_RISCV_ISA_EXT, multi_ext_cfg->kvm_reg_id); reg_search =3D bsearch(®_id, reglist->reg, reglist->n, sizeof(uint64_t), uint64_cmp); @@ -1338,12 +1322,11 @@ void kvm_arch_init_irq_routing(KVMState *s) =20 static int kvm_vcpu_set_machine_ids(RISCVCPU *cpu, CPUState *cs) { - CPURISCVState *env =3D &cpu->env; target_ulong reg; uint64_t id; int ret; =20 - id =3D RISCV_CONFIG_REG(env, mvendorid); + id =3D RISCV_CONFIG_REG(mvendorid); /* * cfg.mvendorid is an uint32 but a target_ulong will * be written. Assign it to a target_ulong var to avoid @@ -1355,13 +1338,13 @@ static int kvm_vcpu_set_machine_ids(RISCVCPU *cpu, = CPUState *cs) return ret; } =20 - id =3D RISCV_CONFIG_REG(env, marchid); + id =3D RISCV_CONFIG_REG(marchid); ret =3D kvm_set_one_reg(cs, id, &cpu->cfg.marchid); if (ret !=3D 0) { return ret; } =20 - id =3D RISCV_CONFIG_REG(env, mimpid); + id =3D RISCV_CONFIG_REG(mimpid); ret =3D kvm_set_one_reg(cs, id, &cpu->cfg.mimpid); =20 return ret; @@ -1911,7 +1894,7 @@ void riscv_kvm_cpu_finalize_features(RISCVCPU *cpu, E= rror **errp) if (cpu->cfg.ext_zicbom && riscv_cpu_option_set(kvm_cbom_blocksize.name)) { =20 - reg.id =3D kvm_riscv_reg_id_ulong(env, KVM_REG_RISCV_CONFIG, + reg.id =3D KVM_RISCV_REG_ID_ULONG(KVM_REG_RISCV_CONFIG, kvm_cbom_blocksize.kvm_reg_id); reg.addr =3D (uint64_t)&val; ret =3D ioctl(kvmcpu.cpufd, KVM_GET_ONE_REG, ®); @@ -1930,7 +1913,7 @@ void riscv_kvm_cpu_finalize_features(RISCVCPU *cpu, E= rror **errp) if (cpu->cfg.ext_zicboz && riscv_cpu_option_set(kvm_cboz_blocksize.name)) { =20 - reg.id =3D kvm_riscv_reg_id_ulong(env, KVM_REG_RISCV_CONFIG, + reg.id =3D KVM_RISCV_REG_ID_ULONG(KVM_REG_RISCV_CONFIG, kvm_cboz_blocksize.kvm_reg_id); reg.addr =3D (uint64_t)&val; ret =3D ioctl(kvmcpu.cpufd, KVM_GET_ONE_REG, ®); --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747628836; cv=none; d=zohomail.com; s=zohoarc; b=dIXoQ6gzPTRD/zv+5B61Y7hq3Ihyc2vIM8eN/7uWAATOyFGXJJECq36/JkqtdlwD38g0D7Ml/QsWikx/hBdVd5T/Am97+L/BTwS+Ffu+QitE9EWP5YJrFCF3F6HtKe8c0hZS1tAywGWMD0nhxByBbsgZW6IZ0zRw+SxF5JUQA/A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747628836; h=Content-Transfer-Encoding:Cc:Cc: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; bh=tGvWb0UsBoM0BL5ytH3VR4SShEzN6pgeb9NAuw83IqI=; b=KpQoCLjEsUOUgvuv0rJ8q9AxZ5OjoADxD0r/bvLvrAUctPrxrsneIpcK1lqUD+ifpzB3jq3pm9x1zeGVszH4+mrA74GN/eA3GMmtftwLXykHWvmQXAVD7j/pzy0lhT0gtYg6VxiUkZl25+KALXkyCXG54QqZeoD2EgBNaW/HQUM= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 174762883607779.91384447475957; Sun, 18 May 2025 21:27:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGs4S-0002AU-48; Mon, 19 May 2025 00:25:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGroi-00087k-0J; Mon, 19 May 2025 00:09:34 -0400 Received: from mail-pg1-x52a.google.com ([2607:f8b0:4864:20::52a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGroe-0004LW-BQ; Mon, 19 May 2025 00:09:30 -0400 Received: by mail-pg1-x52a.google.com with SMTP id 41be03b00d2f7-b1fb650bdf7so2359368a12.1; Sun, 18 May 2025 21:09:27 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.09.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:09:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627766; x=1748232566; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=tGvWb0UsBoM0BL5ytH3VR4SShEzN6pgeb9NAuw83IqI=; b=lO3PqmEs1sWqn7Ed8EY1OwY2axu17LCk+E84XHY5PEF8xEIJFBB0XKmc3Xlu8Rgqdu omDynj6J9OWMliafrHvwsSeL571m9qEGvcwerJXFrOO3BJcwY2tbWTmbnrcX42Gv6IzD phd2lcWWZqdHDX6/AdmMBzwG4TxyF8IJ67eglIX+t3oIAwbrR4BtfsCtFO2xXha20uWP 3zLCHDoR/ymqhLxQT4csZwaZ9ffise6fk7aoEAvCXfgr5TwGdZQM4Bs+wplvlMclG+sc pktrKzBhbGNjorolaDRIfRmo54jLmWQR0ON8/f3gWv+/9y96W2+zzpCWwnFS6wRECjr9 xHnQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627766; x=1748232566; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=tGvWb0UsBoM0BL5ytH3VR4SShEzN6pgeb9NAuw83IqI=; b=eVCjOxVsi+fain6pX9rcNCn02lRiTLQJrT70m2ardIirSReLjm0QqnzDGSiXamDP/C 54R/ZfZslNE+v+1PZ3j1RRX5OEeuAwBj9ewQ3InBlRQlVKFS2lqEBUAuOXDuETRDtyFI 6wBptRzEE9Zith9KlN3JlFoOdjFzCnR2cGZOvTqlTvu0e9q+yxZRR7KV6c94xAAEIjgu duSJU0xsj4oK+p98uW2O2VhtIBJ1bw39ehCBd7k5AsJLW3awQpVZ+3BKzg4szpIvqItB 5OYKt2XAzfWSFDAToCaWbfZvlrfu1yVPmPk9494md/QykW59QzuOwcro8m/eoFiQzjxV RLLw== X-Forwarded-Encrypted: i=1; AJvYcCUubhfkP4m/Q4ZgxW6uvzLwd7/zVJ5/qD0qPzqGPHsoFOIniZmia1waMsdx4gEAT9mOEP720fWGrk+6Zw==@nongnu.org X-Gm-Message-State: AOJu0YxLaM8PCj6blaxvESR0gD35Q9BjBtbkFLKnDEfDU/Hm6/GcblfN zgNMmXh8qnbXm+7SwoZ4LDqZtiuLP9/uu9i+Oie6cK3f9w5TmfeDrzl2FO1wDg== X-Gm-Gg: ASbGncvHwZgopL+oF6f1b0lxcXP+wToE7oh07qUXCp7Kg/7kiaYqL4r7DVWpWMjh/23 gAG4aOy9i2rzWUrmbvzVNIvbfx8b8/Obks1fJsSHC5CMkQ5ucqYRJclzY/krPF9US/NwAVQQ7r7 A7oq088tn7BfkcICJimMQOtWMIEuW/CJWAvfGbrrM4zZ1cZv85Oa649u7MhL5xHoRV7W8kmJBxT iqvbUV7eZRaARSf1W+M0DqFJF1GRLIJHzHXf9ve80WLo2GjeNrZbgwOBBicu5oBitfX4lVHC74n fdKT2jn0rOxO7riZ3NRpUny9tTzl1W+q3rwUrtVyuaBf/nzJLMqRksPuXCVupi4IX2dpia2BOk2 4rbffj0v79H0X1PIA4zhtC1iwui9LCbK27MOf5QmC3Vwodl6ipamDxl38 X-Google-Smtp-Source: AGHT+IHuHGb4KRC8gAI3iZ6lGN6r47QRpyncQf5RjJBNCqGtmvSSCp8AXrZK5V3nZ8zZhnuAysr+Ew== X-Received: by 2002:a17:902:ecd2:b0:223:5a6e:b2c with SMTP id d9443c01a7336-231de35f367mr136607415ad.17.1747627765970; Sun, 18 May 2025 21:09:25 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Daniel Henrique Barboza , Andrew Jones , Alistair Francis , qemu-stable@nongnu.org Subject: [PULL 43/56] target/riscv/kvm: add kvm_csr_cfgs[] Date: Mon, 19 May 2025 14:05:40 +1000 Message-ID: <20250519040555.3797167-44-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52a; envelope-from=alistair23@gmail.com; helo=mail-pg1-x52a.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747628837719116600 Content-Type: text/plain; charset="utf-8" From: Daniel Henrique Barboza At this moment we're not checking if the host has support for any specific CSR before doing get/put regs. This will cause problems if the host KVM doesn't support it (see [1] as an example). We'll use the same approach done with the CPU extensions: read all known KVM CSRs during init() to check for availability, then read/write them if they are present. This will be made by either using get-reglist or by directly reading the CSRs. For now we'll just convert the CSRs to use a kvm_csr_cfg[] array, reusing the same KVMCPUConfig abstraction we use for extensions, and use the array in (get|put)_csr_regs() instead of manually listing them. A lot of boilerplate will be added but at least we'll automate the get/put procedure for CSRs, i.e. adding a new CSR in the future will be a matter of adding it in kvm_csr_regs[] and everything else will be taken care of. Despite all the code changes no behavioral change is made. [1] https://lore.kernel.org/qemu-riscv/CABJz62OfUDHYkQ0T3rGHStQprf1c7_E0qBL= bLKhfv=3D+jb0SYAw@mail.gmail.com/ Signed-off-by: Daniel Henrique Barboza Reviewed-by: Andrew Jones Acked-by: Alistair Francis Message-ID: <20250429124421.223883-6-dbarboza@ventanamicro.com> Signed-off-by: Alistair Francis Cc: qemu-stable@nongnu.org --- target/riscv/cpu.h | 1 + target/riscv/kvm/kvm-cpu.c | 121 ++++++++++++++++++++++++++----------- 2 files changed, 86 insertions(+), 36 deletions(-) diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index ff7ba2a0a1..b56d3afa69 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -75,6 +75,7 @@ const char *riscv_get_misa_ext_name(uint32_t bit); const char *riscv_get_misa_ext_description(uint32_t bit); =20 #define CPU_CFG_OFFSET(_prop) offsetof(struct RISCVCPUConfig, _prop) +#define ENV_CSR_OFFSET(_csr) offsetof(CPURISCVState, _csr) =20 typedef struct riscv_cpu_profile { struct riscv_cpu_profile *u_parent; diff --git a/target/riscv/kvm/kvm-cpu.c b/target/riscv/kvm/kvm-cpu.c index 509c875a19..3740514bba 100644 --- a/target/riscv/kvm/kvm-cpu.c +++ b/target/riscv/kvm/kvm-cpu.c @@ -114,22 +114,6 @@ static uint64_t kvm_riscv_vector_reg_id(RISCVCPU *cpu, KVM_RISCV_REG_ID_ULONG(KVM_REG_RISCV_VECTOR, \ KVM_REG_RISCV_VECTOR_CSR_REG(name)) =20 -#define KVM_RISCV_GET_CSR(cs, env, csr, reg) \ - do { \ - int _ret =3D kvm_get_one_reg(cs, RISCV_CSR_REG(csr), ®); \ - if (_ret) { \ - return _ret; \ - } \ - } while (0) - -#define KVM_RISCV_SET_CSR(cs, env, csr, reg) \ - do { \ - int _ret =3D kvm_set_one_reg(cs, RISCV_CSR_REG(csr), ®); \ - if (_ret) { \ - return _ret; \ - } \ - } while (0) - #define KVM_RISCV_GET_TIMER(cs, name, reg) \ do { \ int ret =3D kvm_get_one_reg(cs, RISCV_TIMER_REG(name), ®); \ @@ -251,6 +235,53 @@ static void kvm_riscv_update_cpu_misa_ext(RISCVCPU *cp= u, CPUState *cs) } } =20 +#define KVM_CSR_CFG(_name, _env_prop, reg_id) \ + {.name =3D _name, .offset =3D ENV_CSR_OFFSET(_env_prop), \ + .kvm_reg_id =3D reg_id} + +static KVMCPUConfig kvm_csr_cfgs[] =3D { + KVM_CSR_CFG("sstatus", mstatus, RISCV_CSR_REG(sstatus)), + KVM_CSR_CFG("sie", mie, RISCV_CSR_REG(sie)), + KVM_CSR_CFG("stvec", stvec, RISCV_CSR_REG(stvec)), + KVM_CSR_CFG("sscratch", sscratch, RISCV_CSR_REG(sscratch)), + KVM_CSR_CFG("sepc", sepc, RISCV_CSR_REG(sepc)), + KVM_CSR_CFG("scause", scause, RISCV_CSR_REG(scause)), + KVM_CSR_CFG("stval", stval, RISCV_CSR_REG(stval)), + KVM_CSR_CFG("sip", mip, RISCV_CSR_REG(sip)), + KVM_CSR_CFG("satp", satp, RISCV_CSR_REG(satp)), +}; + +static void *kvmconfig_get_env_addr(RISCVCPU *cpu, KVMCPUConfig *csr_cfg) +{ + return (void *)&cpu->env + csr_cfg->offset; +} + +static uint32_t kvm_cpu_csr_get_u32(RISCVCPU *cpu, KVMCPUConfig *csr_cfg) +{ + uint32_t *val32 =3D kvmconfig_get_env_addr(cpu, csr_cfg); + return *val32; +} + +static uint64_t kvm_cpu_csr_get_u64(RISCVCPU *cpu, KVMCPUConfig *csr_cfg) +{ + uint64_t *val64 =3D kvmconfig_get_env_addr(cpu, csr_cfg); + return *val64; +} + +static void kvm_cpu_csr_set_u32(RISCVCPU *cpu, KVMCPUConfig *csr_cfg, + uint32_t val) +{ + uint32_t *val32 =3D kvmconfig_get_env_addr(cpu, csr_cfg); + *val32 =3D val; +} + +static void kvm_cpu_csr_set_u64(RISCVCPU *cpu, KVMCPUConfig *csr_cfg, + uint64_t val) +{ + uint64_t *val64 =3D kvmconfig_get_env_addr(cpu, csr_cfg); + *val64 =3D val; +} + #define KVM_EXT_CFG(_name, _prop, _reg_id) \ {.name =3D _name, .offset =3D CPU_CFG_OFFSET(_prop), \ .kvm_reg_id =3D _reg_id} @@ -598,34 +629,52 @@ static int kvm_riscv_put_regs_core(CPUState *cs) =20 static int kvm_riscv_get_regs_csr(CPUState *cs) { - CPURISCVState *env =3D &RISCV_CPU(cs)->env; + RISCVCPU *cpu =3D RISCV_CPU(cs); + uint64_t reg; + int i, ret; + + for (i =3D 0; i < ARRAY_SIZE(kvm_csr_cfgs); i++) { + KVMCPUConfig *csr_cfg =3D &kvm_csr_cfgs[i]; =20 - KVM_RISCV_GET_CSR(cs, env, sstatus, env->mstatus); - KVM_RISCV_GET_CSR(cs, env, sie, env->mie); - KVM_RISCV_GET_CSR(cs, env, stvec, env->stvec); - KVM_RISCV_GET_CSR(cs, env, sscratch, env->sscratch); - KVM_RISCV_GET_CSR(cs, env, sepc, env->sepc); - KVM_RISCV_GET_CSR(cs, env, scause, env->scause); - KVM_RISCV_GET_CSR(cs, env, stval, env->stval); - KVM_RISCV_GET_CSR(cs, env, sip, env->mip); - KVM_RISCV_GET_CSR(cs, env, satp, env->satp); + ret =3D kvm_get_one_reg(cs, csr_cfg->kvm_reg_id, ®); + if (ret) { + return ret; + } + + if (KVM_REG_SIZE(csr_cfg->kvm_reg_id) =3D=3D sizeof(uint32_t)) { + kvm_cpu_csr_set_u32(cpu, csr_cfg, reg); + } else if (KVM_REG_SIZE(csr_cfg->kvm_reg_id) =3D=3D sizeof(uint64_= t)) { + kvm_cpu_csr_set_u64(cpu, csr_cfg, reg); + } else { + g_assert_not_reached(); + } + } =20 return 0; } =20 static int kvm_riscv_put_regs_csr(CPUState *cs) { - CPURISCVState *env =3D &RISCV_CPU(cs)->env; + RISCVCPU *cpu =3D RISCV_CPU(cs); + uint64_t reg; + int i, ret; + + for (i =3D 0; i < ARRAY_SIZE(kvm_csr_cfgs); i++) { + KVMCPUConfig *csr_cfg =3D &kvm_csr_cfgs[i]; + + if (KVM_REG_SIZE(csr_cfg->kvm_reg_id) =3D=3D sizeof(uint32_t)) { + reg =3D kvm_cpu_csr_get_u32(cpu, csr_cfg); + } else if (KVM_REG_SIZE(csr_cfg->kvm_reg_id) =3D=3D sizeof(uint64_= t)) { + reg =3D kvm_cpu_csr_get_u64(cpu, csr_cfg); + } else { + g_assert_not_reached(); + } =20 - KVM_RISCV_SET_CSR(cs, env, sstatus, env->mstatus); - KVM_RISCV_SET_CSR(cs, env, sie, env->mie); - KVM_RISCV_SET_CSR(cs, env, stvec, env->stvec); - KVM_RISCV_SET_CSR(cs, env, sscratch, env->sscratch); - KVM_RISCV_SET_CSR(cs, env, sepc, env->sepc); - KVM_RISCV_SET_CSR(cs, env, scause, env->scause); - KVM_RISCV_SET_CSR(cs, env, stval, env->stval); - KVM_RISCV_SET_CSR(cs, env, sip, env->mip); - KVM_RISCV_SET_CSR(cs, env, satp, env->satp); + ret =3D kvm_set_one_reg(cs, csr_cfg->kvm_reg_id, ®); + if (ret) { + return ret; + } + } =20 return 0; } --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747628951; cv=none; d=zohomail.com; s=zohoarc; b=FC5/oZAl+are5XRRDdjIKxIhyu1jLePetiqswmVtRP0lf6kcvw5IhGtl4LnCGf7grMP5fJ7ueNwgCi6ylkM0szbpQwsUNDL3EbhmPS3IWyEFYcbWnUr3jHusVWirEENAhSZEkyBd/Stgx2eEipgSidpoFFeS9SKZLN2NSJnvNCk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747628951; h=Content-Transfer-Encoding:Cc:Cc: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; bh=EC1is24wo4EqnqiL+75cKNQLUBaPpMKZFiS8gFEUSwo=; b=Y+VHRGJzvevFDtztE6k1s4oCdfI71RN/x7/FEJzB0xP7e+X0DwmLpebUrpGEzGyCmN/jSpo+SzETlrUu7Wu1xhHOwDHnCQ9OQrzZd8n0JZpk77ZeyGUnnxrmQSU0qTriXtYvqVqpnMKpY6psuCpSUTt5zTm0ylnnvjz0MM3lEJ4= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747628951353461.5197284579542; Sun, 18 May 2025 21:29:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGs4d-0002yR-F2; Mon, 19 May 2025 00:26:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGrol-0008E1-Gi; Mon, 19 May 2025 00:09:43 -0400 Received: from mail-pl1-x630.google.com ([2607:f8b0:4864:20::630]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGroi-0004MC-3u; Mon, 19 May 2025 00:09:35 -0400 Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-22fcf9cf3c2so32633755ad.0; Sun, 18 May 2025 21:09:30 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.09.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:09:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627769; x=1748232569; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=EC1is24wo4EqnqiL+75cKNQLUBaPpMKZFiS8gFEUSwo=; b=KG7HJjd3jk3/lEdXOaUjbp8J8rpwq6H+ibRkUlOvmrInnLPAksuOLPnwxxWODqh8gj SPTsdcUMS5HnPtq+QCfu9oaXBaMChSVWrYqp4/z5RPiEscQKCoxQbzPvTULAT0tVzzb7 rYMbP+YgCPQ17/n/9ei9+wIY7JHpcc6mfFEdIPt4R3sCQKhjVFZLkhVyuM9JHxDWHVwh Fkjd0LXEARo00Vn3CLiXQIEEQEg8h+VDE1XadQHg3R9OXxtlR2jFNOtsGyQ2zC5FBoOH z4Xa7XydXfIvQfsXpzfCtHtbX+DX6anzsJ7nzja2CM02kYtbiBLgDr6O1TYNCWcX2qcU goyw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627769; x=1748232569; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=EC1is24wo4EqnqiL+75cKNQLUBaPpMKZFiS8gFEUSwo=; b=i32ieNv+9S3nPYqYe1GokjqTDW7u3DZdWJj6szp5UluGQjdA+e/MJvIMrwZYpD/9Ev Ibe/n1/rfPzwNIvSC0zyDAIPsDj3N1XO0iWcCpARK/ial0O0trY9eX2bV6gwucPjq55A cH1lDFKVoTEsAKJewpachKOPVrh6LpIYVZRqa5ISKOpD7Je8K6/tE7bxFhlha9JHfUfj b1DwQxJdhAszP/OzNmTN9DzM7Yfb978WhKLo5dikOIYXqq4Cp45HZalgY2Z8OHvNvGoR F0DTVkC792DuI+CPyzC0/LlXfMP5HxkDTfNBu9VOnWlGL69c2WRfr22yOpJ6AFSgggM1 nZvw== X-Forwarded-Encrypted: i=1; AJvYcCVt4wDfhS0kn7q0zwTDLEBciTe9esdhmIZHECCFSNCIqR337nGWIwWIZ2ZVzdkrngwaHWeq5Z2SbI9w4w==@nongnu.org X-Gm-Message-State: AOJu0YxOT6gWIzWyzg6D1G3Kl2ITgDXBIYL2EBFM6rD8C6XQu6U33lAA /E0RN3uRfY/y+Ro6kxwA2OLSlaCgmJuTRbszVJdsCPJ1XxpjT5CgjTuJ7mml+Q== X-Gm-Gg: ASbGnct/9norlt8qW8Z2RnBsLOWKyB6msSOaXfusSQtWY6c48zqZ3nhT059iM07Lh6S LyZM0QiIfuXGKOMD6cCbnCBCvMeURNJhT3cDQap/Bw4SevHgc696ZbCFSng3eLZEBKl5QDOAnzD 3TNKwxzY+N23fZ9XDxdCCsZE/lELkiWYoQY5HWDkYrhzoEZXJrbYBHsbhJ4KHHzsgJYrIa86SCA ZQjjmSZT5LaJZuIuvp2/A7U5w0d//oeOBxjlGo6Lf8IIfmRVu1up32mj4r9jC6wQL/9KVTs8EWO 23IprIcb5guXll9JxI7VKsJJrwGOGUQESgPmUxVYWuo9c3ybseGt4JCn9ML74669ox8vOkMWnmf ZvCzxX8MLd65JyeFJW0Tr35Cm0QrbF+ockDPrrxw+QWkpmuSu7EKD3OlY X-Google-Smtp-Source: AGHT+IE2aE7/BZ4ua2dM60fBFoMJsQOLZ92KT29UIEz/D7V3cltPbXVBSTQpU5ZenBSnpm2gRWWrTA== X-Received: by 2002:a17:903:3d0f:b0:231:c99b:9fd7 with SMTP id d9443c01a7336-231d43ad4b6mr161286545ad.19.1747627769453; Sun, 18 May 2025 21:09:29 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Daniel Henrique Barboza , Andrea Bolognani , Andrew Jones , Alistair Francis , qemu-stable@nongnu.org Subject: [PULL 44/56] target/riscv/kvm: do not read unavailable CSRs Date: Mon, 19 May 2025 14:05:41 +1000 Message-ID: <20250519040555.3797167-45-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::630; envelope-from=alistair23@gmail.com; helo=mail-pl1-x630.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747628953050116600 Content-Type: text/plain; charset="utf-8" From: Daniel Henrique Barboza [1] reports that commit 4db19d5b21 broke a KVM guest running kernel 6.6. This happens because the kernel does not know 'senvcfg', making it unable to boot because QEMU is reading/wriiting it without any checks. After converting the CSRs to do "automated" get/put reg procedures in the previous patch we can now scan for availability. Two functions are created: - kvm_riscv_read_csr_cfg_legacy() will check if the CSR exists by brute forcing KVM_GET_ONE_REG in each one of them, interpreting an EINVAL return as indication that the CSR isn't available. This will be use in absence of KVM_GET_REG_LIST; - kvm_riscv_read_csr_cfg() will use the existing result of get_reg_list to check if the CSRs ids are present. kvm_riscv_init_multiext_cfg() is now kvm_riscv_init_cfg() to reflect that the function is also dealing with CSRs. [1] https://lore.kernel.org/qemu-riscv/CABJz62OfUDHYkQ0T3rGHStQprf1c7_E0qBL= bLKhfv=3D+jb0SYAw@mail.gmail.com/ Fixes: 4db19d5b21 ("target/riscv/kvm: add missing KVM CSRs") Reported-by: Andrea Bolognani Signed-off-by: Daniel Henrique Barboza Reviewed-by: Andrew Jones Acked-by: Alistair Francis Message-ID: <20250429124421.223883-7-dbarboza@ventanamicro.com> Signed-off-by: Alistair Francis Cc: qemu-stable@nongnu.org --- target/riscv/kvm/kvm-cpu.c | 62 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 59 insertions(+), 3 deletions(-) diff --git a/target/riscv/kvm/kvm-cpu.c b/target/riscv/kvm/kvm-cpu.c index 3740514bba..344616c1cc 100644 --- a/target/riscv/kvm/kvm-cpu.c +++ b/target/riscv/kvm/kvm-cpu.c @@ -636,6 +636,10 @@ static int kvm_riscv_get_regs_csr(CPUState *cs) for (i =3D 0; i < ARRAY_SIZE(kvm_csr_cfgs); i++) { KVMCPUConfig *csr_cfg =3D &kvm_csr_cfgs[i]; =20 + if (!csr_cfg->supported) { + continue; + } + ret =3D kvm_get_one_reg(cs, csr_cfg->kvm_reg_id, ®); if (ret) { return ret; @@ -662,6 +666,10 @@ static int kvm_riscv_put_regs_csr(CPUState *cs) for (i =3D 0; i < ARRAY_SIZE(kvm_csr_cfgs); i++) { KVMCPUConfig *csr_cfg =3D &kvm_csr_cfgs[i]; =20 + if (!csr_cfg->supported) { + continue; + } + if (KVM_REG_SIZE(csr_cfg->kvm_reg_id) =3D=3D sizeof(uint32_t)) { reg =3D kvm_cpu_csr_get_u32(cpu, csr_cfg); } else if (KVM_REG_SIZE(csr_cfg->kvm_reg_id) =3D=3D sizeof(uint64_= t)) { @@ -1090,6 +1098,32 @@ static void kvm_riscv_read_multiext_legacy(RISCVCPU = *cpu, } } =20 +static void kvm_riscv_read_csr_cfg_legacy(KVMScratchCPU *kvmcpu) +{ + uint64_t val; + int i, ret; + + for (i =3D 0; i < ARRAY_SIZE(kvm_csr_cfgs); i++) { + KVMCPUConfig *csr_cfg =3D &kvm_csr_cfgs[i]; + struct kvm_one_reg reg; + + reg.id =3D csr_cfg->kvm_reg_id; + reg.addr =3D (uint64_t)&val; + ret =3D ioctl(kvmcpu->cpufd, KVM_GET_ONE_REG, ®); + if (ret !=3D 0) { + if (errno =3D=3D EINVAL) { + csr_cfg->supported =3D false; + } else { + error_report("Unable to read KVM CSR %s: %s", + csr_cfg->name, strerror(errno)); + exit(EXIT_FAILURE); + } + } else { + csr_cfg->supported =3D true; + } + } +} + static int uint64_cmp(const void *a, const void *b) { uint64_t val1 =3D *(const uint64_t *)a; @@ -1146,7 +1180,26 @@ static void kvm_riscv_read_vlenb(RISCVCPU *cpu, KVMS= cratchCPU *kvmcpu, } } =20 -static void kvm_riscv_init_multiext_cfg(RISCVCPU *cpu, KVMScratchCPU *kvmc= pu) +static void kvm_riscv_read_csr_cfg(struct kvm_reg_list *reglist) +{ + struct kvm_reg_list *reg_search; + uint64_t reg_id; + + for (int i =3D 0; i < ARRAY_SIZE(kvm_csr_cfgs); i++) { + KVMCPUConfig *csr_cfg =3D &kvm_csr_cfgs[i]; + + reg_id =3D csr_cfg->kvm_reg_id; + reg_search =3D bsearch(®_id, reglist->reg, reglist->n, + sizeof(uint64_t), uint64_cmp); + if (!reg_search) { + continue; + } + + csr_cfg->supported =3D true; + } +} + +static void kvm_riscv_init_cfg(RISCVCPU *cpu, KVMScratchCPU *kvmcpu) { g_autofree struct kvm_reg_list *reglist =3D NULL; KVMCPUConfig *multi_ext_cfg; @@ -1163,7 +1216,9 @@ static void kvm_riscv_init_multiext_cfg(RISCVCPU *cpu= , KVMScratchCPU *kvmcpu) * (EINVAL). Use read_legacy() in this case. */ if (errno =3D=3D EINVAL) { - return kvm_riscv_read_multiext_legacy(cpu, kvmcpu); + kvm_riscv_read_multiext_legacy(cpu, kvmcpu); + kvm_riscv_read_csr_cfg_legacy(kvmcpu); + return; } else if (errno !=3D E2BIG) { /* * E2BIG is an expected error message for the API since we @@ -1226,6 +1281,7 @@ static void kvm_riscv_init_multiext_cfg(RISCVCPU *cpu= , KVMScratchCPU *kvmcpu) } =20 kvm_riscv_check_sbi_dbcn_support(cpu, reglist); + kvm_riscv_read_csr_cfg(reglist); } =20 static void riscv_init_kvm_registers(Object *cpu_obj) @@ -1239,7 +1295,7 @@ static void riscv_init_kvm_registers(Object *cpu_obj) =20 kvm_riscv_init_machine_ids(cpu, &kvmcpu); kvm_riscv_init_misa_ext_mask(cpu, &kvmcpu); - kvm_riscv_init_multiext_cfg(cpu, &kvmcpu); + kvm_riscv_init_cfg(cpu, &kvmcpu); =20 kvm_riscv_destroy_scratch_vcpu(&kvmcpu); } --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747628790; cv=none; d=zohomail.com; s=zohoarc; b=aI26iwOlRxgKvdX9r03Ihshr2tB1s5nCnuuFSiw4eGvRu/M2wbNwIiP7DtEI8ttcJ+kJ4V6JHacJb8OpTa7SujLNg/LnXx3bvFhRlEU3RvfDdbohN7x7pzG/lVcrvI0AQjV0UhwotdqNpO8daF7mFs6VOazb07+NI3vVkbrwARQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747628790; h=Content-Transfer-Encoding:Cc:Cc: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; bh=yCbKQMOwh8rHUyRi+b6GZXHbmiuSws8tyqWZVbKDIxg=; b=SDI+PJjCjzbnafdfD3Q06T2MJmrQL/XAD7U6RYF90wF8PloyukIGhG2vCaqo6RfWdVFJ5exUPdENoyuGRCP0wqUtFAZsSBh8Bxt74W8hCu5SKID9Gw/8ek7dty9VySdKAyFfD28HRdKGP59yWhLX/QAuKAJWbDuGDEY+RyPSlgo= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747628790305463.5427271379407; Sun, 18 May 2025 21:26:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGs40-0001cL-63; Mon, 19 May 2025 00:25:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGron-0008E5-8I for qemu-devel@nongnu.org; Mon, 19 May 2025 00:09:43 -0400 Received: from mail-pl1-x62e.google.com ([2607:f8b0:4864:20::62e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGrol-0004MS-9E for qemu-devel@nongnu.org; Mon, 19 May 2025 00:09:36 -0400 Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-22c33677183so33405295ad.2 for ; Sun, 18 May 2025 21:09:33 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.09.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:09:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627772; x=1748232572; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=yCbKQMOwh8rHUyRi+b6GZXHbmiuSws8tyqWZVbKDIxg=; b=lFuQ9Rh+HFjaHvUIPNvpGzoDnqiVn7JfMJhgvgXu7cjj+XLFljoHAwnI3ypn8KtRcQ L2wz4ZR9YzELsQJnEyKcVzevMuXFo/W9UnQZtzFhY5RtT+x0QjOkVpeKeUe98k1MjmJt 4GySTuWWewkoIcbYvwTHnWL4a24d7kwlnVfJdDB64el+BsU6djrfyBpATc/AJIKZgtyP J0DhG4fFcnDz+w8rWMPl73nzoskRaHTpgExIEiIzWyIXDSOezyfEcKrDSPwBkSh6SuBi /jCYUJag0PWMRa6IAS0w8GV77D+OIOZYYBNst5B8ajjpIQDeWV8qxkeSElJ/7/9agpjA NPig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627772; x=1748232572; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=yCbKQMOwh8rHUyRi+b6GZXHbmiuSws8tyqWZVbKDIxg=; b=f3GZnQKPQTmfghR3bklsH2ewm2AYSH8nwfoI6cb6UK5YKWxqKReOKMiIg0vGuhOGk3 k+FvvcQrx5IrjCEE23CVsKEKMl6CqkRfLGkflDW4wvmb/lsCp4bwyBsQGyWcEMgcpbv9 okhl6Hvqmmi0/WR/kH/WltjZUo2Kmo6CtJqvashMWk9fEfUYCegRDBTLRNjL4wM8XR5i +aftrevWltbwi4d6z26gkphcu1U3F6SCw5+5a68gPra8EiZTmNAKgF5La8PJJJDyDf1t PCbvrtGNc/pkhoSp4EuxCOlZ9HAcMuE76uQeZAyh2KMFeM6hH1Swfrc4QcoNwjOWCaQW pNjA== X-Gm-Message-State: AOJu0Yw3FKlU+Cc2BKIMiicwq+tGNz4TXH0tdQuYOmFyE5eIM7uTj0eN PDGv2K7w9gKzY1KRcDzboMdwjCMLISDtYJYa5D1MUCkEvQt+Pk1W4F7aYMYIyw== X-Gm-Gg: ASbGnctdLnIakV0EjI7trxKSL5Z05a0uoOzQUQYrO8fGBusB/wGZn64srHX/g0R1uLF RyiA6p0TA/uJZTAiFaCrWYk07WH/DdBc/v6e+oOad7/+ECOiX5OaHQDZVS1RO/abE4K/42peQKN bhA8eshkDFxcWOahbnqMHr66/0geapjXUK45idLWpafpQVWW3ULf6H8wwl38KA0kABMUjSDqWeA jFwBCrYlWRbhJupCmoFAccMeLJeKSr6r99XrUaknr2iZourKru/V5bBwe2KV+LDT5ZjVSOO4uOn dVFZXxiaox2SUPobDIsLifsIS4xnP0a6f5x7O92yp4XhmxNEtXQRZM696dbbpzUxXUSeimjAgkD VqYFzJuNGRbUXL6AGA0ejJ2hIYuvU2sNP8FEjgI063XlHZqi8AWbMhwRg X-Google-Smtp-Source: AGHT+IEv1LAjboojzQjhHuIhBLXMB5Y+FIMknUkvie/jWpXZVTRFBftWuU06TTvYxjw6CHxCQDw0dA== X-Received: by 2002:a17:903:40d0:b0:224:194c:694c with SMTP id d9443c01a7336-231de3764d3mr181054375ad.28.1747627772371; Sun, 18 May 2025 21:09:32 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Daniel Henrique Barboza , Andrew Jones , Alistair Francis Subject: [PULL 45/56] target/riscv/kvm: add senvcfg CSR Date: Mon, 19 May 2025 14:05:42 +1000 Message-ID: <20250519040555.3797167-46-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62e; envelope-from=alistair23@gmail.com; helo=mail-pl1-x62e.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747628791013116600 Content-Type: text/plain; charset="utf-8" From: Daniel Henrique Barboza We're missing the senvcfg CSRs which is already present in the KVM UAPI. Reported-by: Andrew Jones Signed-off-by: Daniel Henrique Barboza Reviewed-by: Andrew Jones Acked-by: Alistair Francis Message-ID: <20250429124421.223883-8-dbarboza@ventanamicro.com> Signed-off-by: Alistair Francis --- target/riscv/kvm/kvm-cpu.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/target/riscv/kvm/kvm-cpu.c b/target/riscv/kvm/kvm-cpu.c index 344616c1cc..0e34382163 100644 --- a/target/riscv/kvm/kvm-cpu.c +++ b/target/riscv/kvm/kvm-cpu.c @@ -249,6 +249,7 @@ static KVMCPUConfig kvm_csr_cfgs[] =3D { KVM_CSR_CFG("stval", stval, RISCV_CSR_REG(stval)), KVM_CSR_CFG("sip", mip, RISCV_CSR_REG(sip)), KVM_CSR_CFG("satp", satp, RISCV_CSR_REG(satp)), + KVM_CSR_CFG("senvcfg", senvcfg, RISCV_CSR_REG(senvcfg)), }; =20 static void *kvmconfig_get_env_addr(RISCVCPU *cpu, KVMCPUConfig *csr_cfg) @@ -698,6 +699,7 @@ static void kvm_riscv_reset_regs_csr(CPURISCVState *env) env->stval =3D 0; env->mip =3D 0; env->satp =3D 0; + env->senvcfg =3D 0; } =20 static int kvm_riscv_get_regs_fp(CPUState *cs) --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747628854; cv=none; d=zohomail.com; s=zohoarc; b=FyJySILdc9R657NGgzW9xQ1U1JASCEIO8vWdFNBtkQNodnM4CJhjMe/7p9+Qmn0XbdAsMWDSqBovSuxoKL1y4wxKOaar9fZMOmkW8t6UjYHkKDwELB+yAwAhDnD2sQc2jhB9TwgNeNVtJbm0wMgEYw78L0ERsjTy1QKXqfmfM8M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747628854; h=Content-Transfer-Encoding:Cc:Cc: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; bh=lDbQRI0gFUTlFlnqp0xUGVSKtTCiqP4maLsscJujipw=; b=Z00Sp/Q4UxaT5QAX8HjAMZ3ma6aut9PbisSkRAQJaEfcDjyr4k9A6tGZ+JOuoXtLYkTDJbU9Or3+jEwVLGjggwLMDiLsCGYs5YyL4tzUx4qhHJ26Qfr13N2XiFz9v7EM+tbqJQ27lV/u7PyfJzbY+vfc9mA5edUtLpll43yO4f0= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747628854762419.03526172545276; Sun, 18 May 2025 21:27:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGs4W-0002Wq-Es; Mon, 19 May 2025 00:25:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGrop-0008Ft-Bc for qemu-devel@nongnu.org; Mon, 19 May 2025 00:09:43 -0400 Received: from mail-pj1-x102f.google.com ([2607:f8b0:4864:20::102f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGron-0004Mk-JY for qemu-devel@nongnu.org; Mon, 19 May 2025 00:09:39 -0400 Received: by mail-pj1-x102f.google.com with SMTP id 98e67ed59e1d1-30ea559c18aso1978949a91.2 for ; Sun, 18 May 2025 21:09:36 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.09.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:09:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627775; x=1748232575; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=lDbQRI0gFUTlFlnqp0xUGVSKtTCiqP4maLsscJujipw=; b=UiqpxhZVygmsglzYEnKGkH6vAjgpjsB7lpFvZuFLrLt99KkpWIdlR1PrbpQuyOkYFW WNFJkiRzxp1lKjjYgKY7E9zbHpGBvnNLyk7OjVNt2fGiwrhv6sRCw4MjLmV4om4vhsGH n8u4rcdS7cMQ0MkQehzLURb6tCCTWGH4Jz9WeMblAxKfUQ7WjfzzBylYr7PU2eJl/7sD lTGHfXqXMHIopMoMHoxNBqkdMAWtULSgvYwY+GETl01LRgCchJy4at305Lwqiz4nhZyZ +dyfXgSbKApZf0s3MBdVI8dhDxxOy/7ZYOUvEPB/U6umTSno9SeyawpX+sBbJL8v9L0b HJvA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627775; x=1748232575; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=lDbQRI0gFUTlFlnqp0xUGVSKtTCiqP4maLsscJujipw=; b=QKesc0EuGJ7mj01wm46wDIhCM6N3Vn0MyNXWBLlrbb9F8907QCRuTcVW3WIb0zfRwY vvvNmL0lzLpCRfuQSeZnSfkzLbU4olZ2EQUSHuVcOUoFTHW/JHjcYEaomcMDSGkdWfbq TLP6v+vJvq3StJnU6umKEjKK6OLL0iOk5sLg6xpMzCAdTdzyaoOB/H83oohTxkhkxdfK RcXndNpGXiLepdVMsUAhGKqk3GUoEjf12yWAJTdYgWO9xVooDrh+iE1BjOKjBEuDX39f JyfnpkJscinyUTAik/WO7C9PURRmdoD5ye4mClRODJKwYzYMHdkSm2kcZGKcp1OiWHjo ftlw== X-Gm-Message-State: AOJu0YyB3SRhEJxtyNMqFFyFHQSeL9YHIhjxqW87mTJcsRhX60bqCh53 Xy+3H6KodGMb3fW5Xu7kXfWMQSt4uQWg9WYrjnn9QSwof+FwVjqnkxcTm3+yfw== X-Gm-Gg: ASbGncsuNDO7UY/xttLoc7VkUq/wmvnatCAhj24+lx7P0Z5GxQqwEd+5QXWT3EZ7KH7 dQ6+VS0sSfIKhxazfmpYlcZjlgU7/Kmtpr5SyxRVRHSKDdsflEfEeRFjtYOeddN50L+/AjY86pc CM7XnlWQKZKRBLe/grqNIjG0esosrG0N6HHnT2Rj7eyAX9DAZ+T1OEuM5A1VDeS93xTKjAtGJkO K26ZztBDVthl1b2L3iCuXQE1DuesMyATK+VEmGopaE1K+HUgAdrzdNrsiG/Xr5Xu+Sjha7AB1th yCh6zDJnWPCJiAEl6nS2w7Z7ko0ZveebnpE4gAgFioZK6i9euwC9UNun7WGsskMpH2BaXoV4HYf WMLMzb9Ad+6AOj1q7Ui6s6C1cIwAIw/uTnXsMQG8iI8qBwwLwSIQAoOMl X-Google-Smtp-Source: AGHT+IF1lRX+AmfZYLmPDKpddvqk7aj7gWFCjaGaBNU4Ufh56uC6A+Lhgpm+oBmzfr0DwHFBtrMgrw== X-Received: by 2002:a17:903:4b4b:b0:220:c813:dfcc with SMTP id d9443c01a7336-231d452d0c7mr194936415ad.40.1747627775502; Sun, 18 May 2025 21:09:35 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Daniel Henrique Barboza , Andrew Jones , Alistair Francis Subject: [PULL 46/56] target/riscv/kvm: read/write KVM regs via env size Date: Mon, 19 May 2025 14:05:43 +1000 Message-ID: <20250519040555.3797167-47-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102f; envelope-from=alistair23@gmail.com; helo=mail-pj1-x102f.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747628855944116600 Content-Type: text/plain; charset="utf-8" From: Daniel Henrique Barboza We're going to add support for scounteren in the next patch. KVM defines as a target_ulong CSR, while QEMU defines env->scounteren as a 32 bit field. This will cause the current code to read/write a 64 bit CSR in a 32 bit field when running in a 64 bit CPU. To prevent that, change the current logic to honor the size of the QEMU storage instead of the KVM CSR reg. Suggested-by: Andrew Jones Signed-off-by: Daniel Henrique Barboza Reviewed-by: Alistair Francis Reviewed-by: Andrew Jones Message-ID: <20250429124421.223883-9-dbarboza@ventanamicro.com> Signed-off-by: Alistair Francis --- target/riscv/kvm/kvm-cpu.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/target/riscv/kvm/kvm-cpu.c b/target/riscv/kvm/kvm-cpu.c index 0e34382163..ca171d5457 100644 --- a/target/riscv/kvm/kvm-cpu.c +++ b/target/riscv/kvm/kvm-cpu.c @@ -135,6 +135,7 @@ typedef struct KVMCPUConfig { const char *description; target_ulong offset; uint64_t kvm_reg_id; + uint32_t prop_size; bool user_set; bool supported; } KVMCPUConfig; @@ -237,6 +238,7 @@ static void kvm_riscv_update_cpu_misa_ext(RISCVCPU *cpu= , CPUState *cs) =20 #define KVM_CSR_CFG(_name, _env_prop, reg_id) \ {.name =3D _name, .offset =3D ENV_CSR_OFFSET(_env_prop), \ + .prop_size =3D sizeof(((CPURISCVState *)0)->_env_prop), \ .kvm_reg_id =3D reg_id} =20 static KVMCPUConfig kvm_csr_cfgs[] =3D { @@ -646,9 +648,9 @@ static int kvm_riscv_get_regs_csr(CPUState *cs) return ret; } =20 - if (KVM_REG_SIZE(csr_cfg->kvm_reg_id) =3D=3D sizeof(uint32_t)) { - kvm_cpu_csr_set_u32(cpu, csr_cfg, reg); - } else if (KVM_REG_SIZE(csr_cfg->kvm_reg_id) =3D=3D sizeof(uint64_= t)) { + if (csr_cfg->prop_size =3D=3D sizeof(uint32_t)) { + kvm_cpu_csr_set_u32(cpu, csr_cfg, (uint32_t)reg); + } else if (csr_cfg->prop_size =3D=3D sizeof(uint64_t)) { kvm_cpu_csr_set_u64(cpu, csr_cfg, reg); } else { g_assert_not_reached(); @@ -671,9 +673,9 @@ static int kvm_riscv_put_regs_csr(CPUState *cs) continue; } =20 - if (KVM_REG_SIZE(csr_cfg->kvm_reg_id) =3D=3D sizeof(uint32_t)) { + if (csr_cfg->prop_size =3D=3D sizeof(uint32_t)) { reg =3D kvm_cpu_csr_get_u32(cpu, csr_cfg); - } else if (KVM_REG_SIZE(csr_cfg->kvm_reg_id) =3D=3D sizeof(uint64_= t)) { + } else if (csr_cfg->prop_size =3D=3D sizeof(uint64_t)) { reg =3D kvm_cpu_csr_get_u64(cpu, csr_cfg); } else { g_assert_not_reached(); --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747628729; cv=none; d=zohomail.com; s=zohoarc; b=DZktD9N2svljCoEKavEx+Fy7wpxyVaSQgL3xU+1j/yRuQDb/4GBHZuFgrTOwgV5dVvLx3swyrYmMULNk49zihXAhGcf2jeC7EjOLdqwOC3769ZzWG4DGTZuC/1lWel12oeqTPsQgoKIro5ZRcD4x4Xrja7T1HCtZ8YuCzMc43Zk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747628729; h=Content-Transfer-Encoding:Cc:Cc: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; bh=TV5kwGq87oDOWhwHlyeIfJNLvub05pNZhCjxw0wPvYc=; b=JdawOwHEdQb/fmsLw3/P83Jz0AegnsJ6wL4jd7pS7XVMu0QAtUKGkfI8g4i3U8PmGvHEweetkNtcaR4g4QePswa+kxBM5XPBd4e/42kaAht9/A0LcdXmpku8Z315cKw5IYoCVexeg1IySgyKOiagGeY4BOV160mPE5LSSB8LGEY= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747628729399960.9067860563274; Sun, 18 May 2025 21:25:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGs3h-000104-6f; Mon, 19 May 2025 00:25:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGrot-0008Iy-Lx for qemu-devel@nongnu.org; Mon, 19 May 2025 00:09:44 -0400 Received: from mail-pf1-x429.google.com ([2607:f8b0:4864:20::429]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGror-0004NF-CB for qemu-devel@nongnu.org; Mon, 19 May 2025 00:09:42 -0400 Received: by mail-pf1-x429.google.com with SMTP id d2e1a72fcca58-7399a2dc13fso5047105b3a.2 for ; Sun, 18 May 2025 21:09:39 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.09.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:09:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627778; x=1748232578; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=TV5kwGq87oDOWhwHlyeIfJNLvub05pNZhCjxw0wPvYc=; b=iefVEnehK6vpOoB8QfGR7/ok3aMQDJsDIAZXG+sxbpjhoaumifXAZojbHllqJgn99D UXZ8sn98aD+/DMkSTHMhvktCPrNKSRc+eL3RAzKX6QNfsjIhCyFslXwAH6ntBbNDuedu aWtXtbBIcKGjJYjGv7vsc6lSXi4yenuQSOcYYZhBzw6JWawhug7ASnONK21EBDw9tDBs fSBLMYCEcd2eyJQMw/4dS/qUE5XdcxhoBQaHF6s/c4oY7K7W2+lxc89sVwyjEwdbv6Fr BwBEYgI+SKPnLaUEOtA8MPr+RgqpvepKu11j7zJTGcBtT3Dot/djxhXQviPpxxzj3n9S 95hQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627778; x=1748232578; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=TV5kwGq87oDOWhwHlyeIfJNLvub05pNZhCjxw0wPvYc=; b=rmIUSuILkgkeqhUeCrKRMBDg96cw0HzRKBoBjRq4hey9wYIPZZ8QerTdvha9MytGei e5YkMU+82+g5VxuyZamnDzrHCqF/0FssNfo15yQ7v5KHaIQ8U2MvtCdHQ5b7MOOA19m+ Cyk2lH6nxQsytaoQHcEdTTUv5g3ZrWHm0qj9pcPh1l8w/uWh/QQPcywJ4hdE1OZOBW6H 53DEQYHwXbpr9lXnyxzb2KrKrkdypcWO9Udu8VSEeyIdsK5My5RyxmyCR+QASCyhmC4R GfJ/lsGPUu4iCCM8SIyflZsc9CdBKVLBRC6qyeiNDNkab0DAtAmjk+IUFb18GdJNKhQj /nNA== X-Gm-Message-State: AOJu0Yyq+6bXlQ31TmRJuymxAr4Gc2Sll6PVJr9OkUT5SbyqBEqh4OJp WBcqIcvYzXZl9994bGcD9L7+fml+WXvthxkGVcmmN0jMnB2MNj1YT7kPrngM9w== X-Gm-Gg: ASbGncuWOPxLd31RezylCzdja9QiKKAEm2JLN8L0N5mJtJzlcdWCYh3XytJrtHGmBbz d628gFWyUaotG7uTaCGiRxtOiG3tGinbkve6ZMSivXY9FQsOIfYDBFK8K4yKWJOVySDDFUZUB2P wuOWAAfpS527qgZQfgkKrnvnYi0j26YeO8TFM45IPNUhNCRBuL7ss/OCKlSEDSt4SFdmwqOzZY0 0g5+umhSIM5NVWHDkIPoUHlRoYBYhckfSl9OO62b/0lOftV7sMXmJAT8V0rhduS9K2jSZQ7FZre 4MAPm6e54BI9+WpGyytgCPWIKJoMjnp43Zib2H2NV8NDjyQTKjDDRh9AH+MEfjlZZmFacgC0TyJ DVxlgBEQ4tNIjpl8+MUFWNjzOX29z865xqqUp4eFk76zcIHak2wp6C1eL X-Google-Smtp-Source: AGHT+IFDMEtBv0iPQHRZXwda4E0QWiP1lBHczanPmX0SZ41ynFLSkUH9ZmuNNdZ8aibuDhxR4jnVBg== X-Received: by 2002:a05:6a21:3984:b0:215:cf53:c35 with SMTP id adf61e73a8af0-2170cde51f9mr18007105637.31.1747627778457; Sun, 18 May 2025 21:09:38 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Daniel Henrique Barboza , Andrew Jones , Alistair Francis Subject: [PULL 47/56] target/riscv/kvm: add scounteren CSR Date: Mon, 19 May 2025 14:05:44 +1000 Message-ID: <20250519040555.3797167-48-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::429; envelope-from=alistair23@gmail.com; helo=mail-pf1-x429.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747628730555116600 Content-Type: text/plain; charset="utf-8" From: Daniel Henrique Barboza Add support for the scounteren KVM CSR. Note that env->scounteren is a 32 bit and all KVM CSRs are target_ulong, so scounteren will be capped to 32 bits read/writes. Reported-by: Andrew Jones Signed-off-by: Daniel Henrique Barboza Reviewed-by: Andrew Jones Reviewed-by: Alistair Francis Message-ID: <20250429124421.223883-10-dbarboza@ventanamicro.com> Signed-off-by: Alistair Francis --- target/riscv/kvm/kvm-cpu.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/target/riscv/kvm/kvm-cpu.c b/target/riscv/kvm/kvm-cpu.c index ca171d5457..82f9728636 100644 --- a/target/riscv/kvm/kvm-cpu.c +++ b/target/riscv/kvm/kvm-cpu.c @@ -251,6 +251,7 @@ static KVMCPUConfig kvm_csr_cfgs[] =3D { KVM_CSR_CFG("stval", stval, RISCV_CSR_REG(stval)), KVM_CSR_CFG("sip", mip, RISCV_CSR_REG(sip)), KVM_CSR_CFG("satp", satp, RISCV_CSR_REG(satp)), + KVM_CSR_CFG("scounteren", scounteren, RISCV_CSR_REG(scounteren)), KVM_CSR_CFG("senvcfg", senvcfg, RISCV_CSR_REG(senvcfg)), }; =20 @@ -701,6 +702,7 @@ static void kvm_riscv_reset_regs_csr(CPURISCVState *env) env->stval =3D 0; env->mip =3D 0; env->satp =3D 0; + env->scounteren =3D 0; env->senvcfg =3D 0; } =20 --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747629142; cv=none; d=zohomail.com; s=zohoarc; b=Xx75r3sL7Uh+nRnGgfWpjsmM3Gw60n4NgDAH+nKnL+2+ADHDBsDnukwAByrkbQvrUaGlXE4AORxkeeA+6eG8jfnE0VX+7PuhLRMf8CFXtik8x6EEgCYTjXOXvEwxvwXelcaGManFUpmExSrUHk83TqsF+px1gljWn+s5S2IMG00= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747629142; h=Content-Transfer-Encoding:Cc:Cc: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; bh=UZUiww2oTdBqm1/iAjGdigfjMeVEgXCovMh/RAiSn+w=; b=i/qMNuK7cpWkCRSb9zlhhEDOYNzOh9jQVmMfoMaPwdy1562bh84cF/NS3wlTaN9DsaWfjjU07H7DVVt7k3w0mXPEEYwSU3ioZ5/5bkTu6UjeMybvhZ5XbSzQEXqAc39Bn4QxEe+EHFv2QQ0aMh95HW5DGA3hHxrAK76hmdWMM9g= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747629142102242.99751304997096; Sun, 18 May 2025 21:32:22 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGs4e-00036D-Ho; Mon, 19 May 2025 00:26:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGrov-0008Ng-If for qemu-devel@nongnu.org; Mon, 19 May 2025 00:09:45 -0400 Received: from mail-pg1-x536.google.com ([2607:f8b0:4864:20::536]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGrot-0004Nm-Cq for qemu-devel@nongnu.org; Mon, 19 May 2025 00:09:45 -0400 Received: by mail-pg1-x536.google.com with SMTP id 41be03b00d2f7-b26f5eb16a5so1721161a12.0 for ; Sun, 18 May 2025 21:09:42 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.09.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:09:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627782; x=1748232582; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=UZUiww2oTdBqm1/iAjGdigfjMeVEgXCovMh/RAiSn+w=; b=dpjKrwhmeIsQsjIjzzWJka2MuWUEUUGjw61+kWLQaijQ3hePxgrhrrKTDrga77C25J kya4K/6pSm1xXwfjwVAeFqgZztHQTY9NJAYZmcimxv3LMWO0Dbp4ebbK07ggyqktNRFw ge8gV8V/FasFZchX8BPzA/lUqcyCnrZQb5t24agwFuBwkKWuQ+XRNE0PxHj55om1Fcjl 2UKHR0hoG2uTT6g6nem9owB972KdyQ48ZjnGYBHMGE+YtJ5RHUt8Tq2/8gHsgX4fRlI0 B1UiqoC/F/OYFwww7zXHtb5Cyx5L4f5fQp+2RfaSAZ3D1Q/tFGpbOmt2XW9Ll3rtMiXP chuw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627782; x=1748232582; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=UZUiww2oTdBqm1/iAjGdigfjMeVEgXCovMh/RAiSn+w=; b=emNECn60BT3mcF83Me2jyqmYqdDl022T3M41qv1wDJUS6IW7eROrgHL4OJ9EDtTmKJ bvP/nBd4VKaYVOVZevgQ/PcK+KAETDxUgWMypKcaMw7Xta7qcI2kVwek/znhvgEOC5JV UqvefVTwfcYRGQayOcfSZZ3UnMNmdZBKIa3ndpNgkYv8Rl2QNBcVbuewGLyS9syBxlRL QmPTgt3W7YQxDb9s1K15v12mMd4huaqFFvVEFa6s6GmGg9akhc60o4pfFjLEXLx7WmEc sEaeyfsuYtc9lbbJ2A32H0ZMdbqcShHNtrqgZNFGQ7uAdoLX5ZT251p9PjYnLEBvOtkL rtkg== X-Gm-Message-State: AOJu0YxIeMOjMMRNlqYsVvM7N2mwK9Kw0NKkdHPyKrCavkE8DuQQRhEJ Xd2/6pNaAHwXZS5xW4EXt4rl77BM5YCK817Wvl6oJjBWmEPC0fYR2bPp6l7JkA== X-Gm-Gg: ASbGnctZYVfC0oTKqot+iciWWDNmAJZp7rt36bbqFM+9GwS52K+xLsXod7cM5IVVtnR b9D8CbzX5F1rNp+UmTlSVv5CXtL+AG9obL4ChiTOsOZqg4CJxhqVWv1+/AT+r9ZgXXEttACqMgK BpvbcsQhMfXZo2qO1o6rBTqPY10IcWCYuFTQZUEFfT55S3fuz8dPDb0WKLTr3mK+X3kPxtLlp4f BOxiprjG//RXaEdKEaw35ARQYpo4duESfq7iliiIRr7acSG/sXhHQpO0s2Hsuz9G7XkgoYLOIoY kEUuxfcxHFMF3Ezzl49ziQzF1kA8QXgQzz2BPb+j3S1dakzSo/uuzEuVcGLcKWXZuqC/Wmk8t+0 AEJ5438hT3RzckhVRUv0ZJEHAo88cifdZp1KjF+P0k+rIGc6yPdskECmr X-Google-Smtp-Source: AGHT+IGMTmARbNyneurL/JMorDY9/QVydXtgdf5uGBZ/0kr+V0TMAhiMqlYyQHzF2swNclYvefKZKg== X-Received: by 2002:a17:903:8c3:b0:231:d0da:5e1f with SMTP id d9443c01a7336-231d4e7b7b6mr163408295ad.21.1747627781476; Sun, 18 May 2025 21:09:41 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Daniel Henrique Barboza , Alistair Francis , Joel Stanley Subject: [PULL 48/56] hw/riscv/virt.c: enforce s->memmap use in machine_init() Date: Mon, 19 May 2025 14:05:45 +1000 Message-ID: <20250519040555.3797167-49-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::536; envelope-from=alistair23@gmail.com; helo=mail-pg1-x536.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747629143030116600 Content-Type: text/plain; charset="utf-8" From: Daniel Henrique Barboza Throughout the code we're accessing the board memmap, most of the time, by accessing it statically via 'virt_memmap'. This static map is also assigned in the machine state in s->memmap. We're also passing it as a variable to some fdt functions, which is unorthodox since we can spare a function argument by accessing it statically or via the machine state. All the current forms are valid but not all of the are scalable. In the future we will version this board, and then all this code will need rework because it should point to the updated memmap. In this case, we'll want to assign the adequate versioned memmap once during init, in s->memmap like it is being done today, and the rest of the code will access the updated map via s->memmap. We're also enforcing the pattern of using s->memmap instead of assigning it to a temp variable 'memmap'. Code is copy/pasted around all the time and being consistent is important. We'll start these rather mechanical changes with virt_machine_init(). Signed-off-by: Daniel Henrique Barboza Reviewed-by: Alistair Francis Reviewed-by: Joel Stanley Message-ID: <20250429125811.224803-2-dbarboza@ventanamicro.com> Signed-off-by: Alistair Francis --- hw/riscv/virt.c | 54 ++++++++++++++++++++++++------------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c index 5958ad1f7d..0200679240 100644 --- a/hw/riscv/virt.c +++ b/hw/riscv/virt.c @@ -1522,7 +1522,6 @@ static void virt_machine_done(Notifier *notifier, voi= d *data) =20 static void virt_machine_init(MachineState *machine) { - const MemMapEntry *memmap =3D virt_memmap; RISCVVirtState *s =3D RISCV_VIRT_MACHINE(machine); MemoryRegion *system_memory =3D get_system_memory(); MemoryRegion *mask_rom =3D g_new(MemoryRegion, 1); @@ -1530,6 +1529,8 @@ static void virt_machine_init(MachineState *machine) int i, base_hartid, hart_count; int socket_count =3D riscv_socket_count(machine); =20 + s->memmap =3D virt_memmap; + /* Check socket count limit */ if (VIRT_SOCKETS_MAX < socket_count) { error_report("number of sockets/nodes should be less than %d", @@ -1577,7 +1578,7 @@ static void virt_machine_init(MachineState *machine) if (virt_aclint_allowed() && s->have_aclint) { if (s->aia_type =3D=3D VIRT_AIA_TYPE_APLIC_IMSIC) { /* Per-socket ACLINT MTIMER */ - riscv_aclint_mtimer_create(memmap[VIRT_CLINT].base + + riscv_aclint_mtimer_create(s->memmap[VIRT_CLINT].base + i * RISCV_ACLINT_DEFAULT_MTIMER_SIZE, RISCV_ACLINT_DEFAULT_MTIMER_SIZE, base_hartid, hart_count, @@ -1586,28 +1587,28 @@ static void virt_machine_init(MachineState *machine) RISCV_ACLINT_DEFAULT_TIMEBASE_FREQ, true); } else { /* Per-socket ACLINT MSWI, MTIMER, and SSWI */ - riscv_aclint_swi_create(memmap[VIRT_CLINT].base + - i * memmap[VIRT_CLINT].size, + riscv_aclint_swi_create(s->memmap[VIRT_CLINT].base + + i * s->memmap[VIRT_CLINT].size, base_hartid, hart_count, false); - riscv_aclint_mtimer_create(memmap[VIRT_CLINT].base + - i * memmap[VIRT_CLINT].size + + riscv_aclint_mtimer_create(s->memmap[VIRT_CLINT].base + + i * s->memmap[VIRT_CLINT].size + RISCV_ACLINT_SWI_SIZE, RISCV_ACLINT_DEFAULT_MTIMER_SIZE, base_hartid, hart_count, RISCV_ACLINT_DEFAULT_MTIMECMP, RISCV_ACLINT_DEFAULT_MTIME, RISCV_ACLINT_DEFAULT_TIMEBASE_FREQ, true); - riscv_aclint_swi_create(memmap[VIRT_ACLINT_SSWI].base + - i * memmap[VIRT_ACLINT_SSWI].size, + riscv_aclint_swi_create(s->memmap[VIRT_ACLINT_SSWI].base + + i * s->memmap[VIRT_ACLINT_SSWI].size, base_hartid, hart_count, true); } } else if (tcg_enabled()) { /* Per-socket SiFive CLINT */ riscv_aclint_swi_create( - memmap[VIRT_CLINT].base + i * memmap[VIRT_CLINT].size, + s->memmap[VIRT_CLINT].base + i * s->memmap[VIRT_CLINT]= .size, base_hartid, hart_count, false); - riscv_aclint_mtimer_create(memmap[VIRT_CLINT].base + - i * memmap[VIRT_CLINT].size + RISCV_ACLINT_SWI_SIZ= E, + riscv_aclint_mtimer_create(s->memmap[VIRT_CLINT].base + + i * s->memmap[VIRT_CLINT].size + RISCV_ACLINT_SWI_SIZE, RISCV_ACLINT_DEFAULT_MTIMER_SIZE, base_hartid, hart_co= unt, RISCV_ACLINT_DEFAULT_MTIMECMP, RISCV_ACLINT_DEFAULT_MT= IME, RISCV_ACLINT_DEFAULT_TIMEBASE_FREQ, true); @@ -1615,11 +1616,11 @@ static void virt_machine_init(MachineState *machine) =20 /* Per-socket interrupt controller */ if (s->aia_type =3D=3D VIRT_AIA_TYPE_NONE) { - s->irqchip[i] =3D virt_create_plic(memmap, i, + s->irqchip[i] =3D virt_create_plic(s->memmap, i, base_hartid, hart_count); } else { s->irqchip[i] =3D virt_create_aia(s->aia_type, s->aia_guests, - memmap, i, base_hartid, + s->memmap, i, base_hartid, hart_count); } =20 @@ -1641,8 +1642,8 @@ static void virt_machine_init(MachineState *machine) if (kvm_enabled() && virt_use_kvm_aia_aplic_imsic(s->aia_type)) { kvm_riscv_aia_create(machine, IMSIC_MMIO_GROUP_MIN_SHIFT, VIRT_IRQCHIP_NUM_SOURCES, VIRT_IRQCHIP_NUM_MS= IS, - memmap[VIRT_APLIC_S].base, - memmap[VIRT_IMSIC_S].base, + s->memmap[VIRT_APLIC_S].base, + s->memmap[VIRT_IMSIC_S].base, s->aia_guests); } =20 @@ -1658,21 +1659,20 @@ static void virt_machine_init(MachineState *machine) virt_high_pcie_memmap.size =3D VIRT32_HIGH_PCIE_MMIO_SIZE; } else { virt_high_pcie_memmap.size =3D VIRT64_HIGH_PCIE_MMIO_SIZE; - virt_high_pcie_memmap.base =3D memmap[VIRT_DRAM].base + machine->r= am_size; + virt_high_pcie_memmap.base =3D s->memmap[VIRT_DRAM].base + + machine->ram_size; virt_high_pcie_memmap.base =3D ROUND_UP(virt_high_pcie_memmap.base, virt_high_pcie_memmap.siz= e); } =20 - s->memmap =3D virt_memmap; - /* register system main memory (actual RAM) */ - memory_region_add_subregion(system_memory, memmap[VIRT_DRAM].base, - machine->ram); + memory_region_add_subregion(system_memory, s->memmap[VIRT_DRAM].base, + machine->ram); =20 /* boot rom */ memory_region_init_rom(mask_rom, NULL, "riscv_virt_board.mrom", - memmap[VIRT_MROM].size, &error_fatal); - memory_region_add_subregion(system_memory, memmap[VIRT_MROM].base, + s->memmap[VIRT_MROM].size, &error_fatal); + memory_region_add_subregion(system_memory, s->memmap[VIRT_MROM].base, mask_rom); =20 /* @@ -1683,12 +1683,12 @@ static void virt_machine_init(MachineState *machine) rom_set_fw(s->fw_cfg); =20 /* SiFive Test MMIO device */ - sifive_test_create(memmap[VIRT_TEST].base); + sifive_test_create(s->memmap[VIRT_TEST].base); =20 /* VirtIO MMIO devices */ for (i =3D 0; i < VIRTIO_COUNT; i++) { sysbus_create_simple("virtio-mmio", - memmap[VIRT_VIRTIO].base + i * memmap[VIRT_VIRTIO].size, + s->memmap[VIRT_VIRTIO].base + i * s->memmap[VIRT_VIRTIO].size, qdev_get_gpio_in(virtio_irqchip, VIRTIO_IRQ + i)); } =20 @@ -1696,11 +1696,11 @@ static void virt_machine_init(MachineState *machine) =20 create_platform_bus(s, mmio_irqchip); =20 - serial_mm_init(system_memory, memmap[VIRT_UART0].base, + serial_mm_init(system_memory, s->memmap[VIRT_UART0].base, 0, qdev_get_gpio_in(mmio_irqchip, UART0_IRQ), 399193, serial_hd(0), DEVICE_LITTLE_ENDIAN); =20 - sysbus_create_simple("goldfish_rtc", memmap[VIRT_RTC].base, + sysbus_create_simple("goldfish_rtc", s->memmap[VIRT_RTC].base, qdev_get_gpio_in(mmio_irqchip, RTC_IRQ)); =20 for (i =3D 0; i < ARRAY_SIZE(s->flash); i++) { @@ -1718,7 +1718,7 @@ static void virt_machine_init(MachineState *machine) exit(1); } } else { - create_fdt(s, memmap); + create_fdt(s, s->memmap); } =20 if (virt_is_iommu_sys_enabled(s)) { --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747628836; cv=none; d=zohomail.com; s=zohoarc; b=HdY+KY+XnyhdGzHg2OFREw+q5vvIFjSuJperJx5yBQexTHwIdB2/JkWMzYgVKYB/NNlJ2lsUGs+XgMKj0WACdL73f8DuzdgzpgVE+8PJ2pdm+owPCYDCNSlhs6gATfL3XR2hrvKDzZetsMSwz+Mk/dLU+wPpJQAnW+r2hs2nqfQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747628836; h=Content-Transfer-Encoding:Cc:Cc: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; bh=B300N4tFGzpqfBm+PQfnLU/hq0whY6Gs5bO28y2J7A4=; b=CZvTzx1+xRRLpl4Acve1q+czn9MoPJNyvezHxoESNCuSHm2xWfwyT2A/AqIo24ODlBTliDSBIJqkgPQUF3ZvMYmwNyfgbBhPcsHrRNzc/IlKbhNsgSLbaLUPkTDIkSAiJ0JtjR1hck5wN/hs8FW9ImOHv30BZ8E1uSYRA5olCPU= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747628836536663.9789017852614; Sun, 18 May 2025 21:27:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGs4c-0002uc-DB; Mon, 19 May 2025 00:25:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGrox-0008S2-VC for qemu-devel@nongnu.org; Mon, 19 May 2025 00:09:50 -0400 Received: from mail-pg1-x531.google.com ([2607:f8b0:4864:20::531]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGrow-0004OC-2t for qemu-devel@nongnu.org; Mon, 19 May 2025 00:09:47 -0400 Received: by mail-pg1-x531.google.com with SMTP id 41be03b00d2f7-afc857702d1so3573090a12.3 for ; Sun, 18 May 2025 21:09:45 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.09.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:09:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627784; x=1748232584; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=B300N4tFGzpqfBm+PQfnLU/hq0whY6Gs5bO28y2J7A4=; b=neL+TV46MuHtRU5srcIMQEMjgv/w0iweBOPpoKdaPcNJvGzQo6fwVhBzt6wmnIEQu1 +UT83cZ4E5clm7vJWVhPMNZEflVSeuR08F/gp9oXB9OH/J1WH9NFNJQYdM8gqoSEuB1T Eh65Cgl+rWUw6V51jSh3M2RLBl1zHgLoZrK51Ms87nPVsH7jgctw5VVhiqeXhr7Gt2OE QM/t1kFl26r8eiae7o4UJif4bdFcuGSUtCLnv+6yzsymxzGgn2Lhpjnoi5ziZOXymXWr coo6bes1Q7jK/gBSbeePa5v7Iarxg38DMlRzmWOjFNKLLmqc/WfpsN0ytt9FLA9idV16 84eQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627784; x=1748232584; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=B300N4tFGzpqfBm+PQfnLU/hq0whY6Gs5bO28y2J7A4=; b=doKPMXhLJkuoacVV3TgHXnf111txh8MQTTP0zCSyBrmNMlJHmmLf1M7nWQqZsLREj9 5wIFc4nGq0g5DlzonTUkHofz5bLyCxZvF9oP+OxUoTRSL7YLMrVG5s0vbFrdNdkmduWR 5ncdJqj41UzsxkEhAQ2x0FF/khaHahSiJETUV/EMAqp6imsVuWZ+hxNeeQt3bKI022ay ufomISvOpvtLIskPK3JJB+lWkwoE4rthNDmaptzGkH5l92OzoOUk7NmF7eVzEC3Z7NJ5 zzeK5zWO7YZ4c/ED07czxDqEatFlygth+1JwdPTxef211izTmWjaiVRbG6BsbucbwKmn jIiQ== X-Gm-Message-State: AOJu0Yw0r8VRKKC4tQK0VjvgcniDaDqjVL97Z9AVVS/u4gTe3+c5wxit vcT2wrhWm3GJXgcXby4+ZetUgLwWEaBNH0Voj3GoY0wdwAxFobVyBVOrVNmpVQ== X-Gm-Gg: ASbGncu/C+aVpJhGEIdNdexwG3YIsu0oJ8gWVX2n8lOnwoQOO9+HyxZJMaizDwHSFJD T9BWQHRHlFw+1w2SIWYAnaeB4QaO/Ch8jBt6v6YVFXekX9s4qiGJmAHwgd+zj00JaUPjaGgbUoy g5qn6UwiFlmmvqaUhGkLEbB6BDLcs9aingmeOi7oeYEy76BGiUvBPo8hKHYYlFH+LQSSeRJxMLx cMh6R50TZQv210qWAvDjPgPxDHGVpKwT1k0+PSrPQe1jF9gnA0NvH8275Vgbun94Hz3Kz/nAkOF biKtTPPt+9GcSP058cTyNgFsAnHsTA526pzwWup4NYlOzM9Gy3PDk1saDRcnh7UHOcSeWlR1OKm m1zgHx2nux7lgniabjJ1YSg7ij/H3sXucZr11ML95/e81NwjPglpF6IQJ X-Google-Smtp-Source: AGHT+IGkd576SG3pbyCDzfw/V2/d31Bp1L1f/9OLaS8f/aprVg2gprPUvMl2TY7PPNa8CUtVQkhz7A== X-Received: by 2002:a17:903:230b:b0:22f:b6cc:421e with SMTP id d9443c01a7336-231d452683fmr162141075ad.26.1747627784344; Sun, 18 May 2025 21:09:44 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Daniel Henrique Barboza , Alistair Francis Subject: [PULL 49/56] hw/riscv/virt.c: remove trivial virt_memmap references Date: Mon, 19 May 2025 14:05:46 +1000 Message-ID: <20250519040555.3797167-50-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::531; envelope-from=alistair23@gmail.com; helo=mail-pg1-x531.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747628837643116600 Content-Type: text/plain; charset="utf-8" From: Daniel Henrique Barboza We should use s->memmap instead of virt_memmap to be able to use an updated memmap when we start versioning the board. Signed-off-by: Daniel Henrique Barboza Reviewed-by: Alistair Francis Message-ID: <20250429125811.224803-3-dbarboza@ventanamicro.com> Signed-off-by: Alistair Francis --- hw/riscv/virt.c | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c index 0200679240..843665a5bd 100644 --- a/hw/riscv/virt.c +++ b/hw/riscv/virt.c @@ -166,8 +166,8 @@ static void virt_flash_map1(PFlashCFI01 *flash, static void virt_flash_map(RISCVVirtState *s, MemoryRegion *sysmem) { - hwaddr flashsize =3D virt_memmap[VIRT_FLASH].size / 2; - hwaddr flashbase =3D virt_memmap[VIRT_FLASH].base; + hwaddr flashsize =3D s->memmap[VIRT_FLASH].size / 2; + hwaddr flashbase =3D s->memmap[VIRT_FLASH].base; =20 virt_flash_map1(s->flash[0], flashbase, flashsize, sysmem); @@ -999,8 +999,8 @@ static void create_fdt_rtc(RISCVVirtState *s, const Mem= MapEntry *memmap, static void create_fdt_flash(RISCVVirtState *s, const MemMapEntry *memmap) { MachineState *ms =3D MACHINE(s); - hwaddr flashsize =3D virt_memmap[VIRT_FLASH].size / 2; - hwaddr flashbase =3D virt_memmap[VIRT_FLASH].base; + hwaddr flashsize =3D s->memmap[VIRT_FLASH].size / 2; + hwaddr flashbase =3D s->memmap[VIRT_FLASH].base; g_autofree char *name =3D g_strdup_printf("/flash@%" PRIx64, flashbase= ); =20 qemu_fdt_add_subnode(ms->fdt, name); @@ -1035,7 +1035,7 @@ static void create_fdt_virtio_iommu(RISCVVirtState *s= , uint16_t bdf) g_autofree char *pci_node =3D NULL; =20 pci_node =3D g_strdup_printf("/soc/pci@%lx", - (long) virt_memmap[VIRT_PCIE_ECAM].base); + (long) s->memmap[VIRT_PCIE_ECAM].base); iommu_node =3D g_strdup_printf("%s/virtio_iommu@%x,%x", pci_node, PCI_SLOT(bdf), PCI_FUNC(bdf)); iommu_phandle =3D qemu_fdt_alloc_phandle(fdt); @@ -1104,7 +1104,7 @@ static void create_fdt_iommu(RISCVVirtState *s, uint1= 6_t bdf) g_autofree char *pci_node =3D NULL; =20 pci_node =3D g_strdup_printf("/soc/pci@%lx", - (long) virt_memmap[VIRT_PCIE_ECAM].base); + (long) s->memmap[VIRT_PCIE_ECAM].base); iommu_node =3D g_strdup_printf("%s/iommu@%x", pci_node, bdf); iommu_phandle =3D qemu_fdt_alloc_phandle(fdt); qemu_fdt_add_subnode(fdt, iommu_node); @@ -1126,24 +1126,24 @@ static void finalize_fdt(RISCVVirtState *s) uint32_t irq_pcie_phandle =3D 1, irq_virtio_phandle =3D 1; uint32_t iommu_sys_phandle =3D 1; =20 - create_fdt_sockets(s, virt_memmap, &phandle, &irq_mmio_phandle, + create_fdt_sockets(s, s->memmap, &phandle, &irq_mmio_phandle, &irq_pcie_phandle, &irq_virtio_phandle, &msi_pcie_phandle); =20 - create_fdt_virtio(s, virt_memmap, irq_virtio_phandle); + create_fdt_virtio(s, s->memmap, irq_virtio_phandle); =20 if (virt_is_iommu_sys_enabled(s)) { create_fdt_iommu_sys(s, irq_mmio_phandle, msi_pcie_phandle, &iommu_sys_phandle); } - create_fdt_pcie(s, virt_memmap, irq_pcie_phandle, msi_pcie_phandle, + create_fdt_pcie(s, s->memmap, irq_pcie_phandle, msi_pcie_phandle, iommu_sys_phandle); =20 - create_fdt_reset(s, virt_memmap, &phandle); + create_fdt_reset(s, s->memmap, &phandle); =20 - create_fdt_uart(s, virt_memmap, irq_mmio_phandle); + create_fdt_uart(s, s->memmap, irq_mmio_phandle); =20 - create_fdt_rtc(s, virt_memmap, irq_mmio_phandle); + create_fdt_rtc(s, s->memmap, irq_mmio_phandle); } =20 static void create_fdt(RISCVVirtState *s, const MemMapEntry *memmap) @@ -1361,14 +1361,13 @@ static void create_platform_bus(RISCVVirtState *s, = DeviceState *irqchip) { DeviceState *dev; SysBusDevice *sysbus; - const MemMapEntry *memmap =3D virt_memmap; int i; MemoryRegion *sysmem =3D get_system_memory(); =20 dev =3D qdev_new(TYPE_PLATFORM_BUS_DEVICE); dev->id =3D g_strdup(TYPE_PLATFORM_BUS_DEVICE); qdev_prop_set_uint32(dev, "num_irqs", VIRT_PLATFORM_BUS_NUM_IRQS); - qdev_prop_set_uint32(dev, "mmio_size", memmap[VIRT_PLATFORM_BUS].size); + qdev_prop_set_uint32(dev, "mmio_size", s->memmap[VIRT_PLATFORM_BUS].si= ze); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); s->platform_bus_dev =3D dev; =20 @@ -1379,7 +1378,7 @@ static void create_platform_bus(RISCVVirtState *s, De= viceState *irqchip) } =20 memory_region_add_subregion(sysmem, - memmap[VIRT_PLATFORM_BUS].base, + s->memmap[VIRT_PLATFORM_BUS].base, sysbus_mmio_get_region(sysbus, 0)); } =20 --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747628720; cv=none; d=zohomail.com; s=zohoarc; b=Uh9PPyIJJCo2/By1aTK0n/XidlvH3URKDcbEbCEM7fbO9C1uqesVf9DId0OaWkrVy+h9ny/yQqmFFinma8s6fMzNMaF+mPYgenqp31l434OtleMrIIyZQLrk/PUClLe6RNAdHBqI4ouv7O/VVuXWpdGNuaLVS/nmTAaIV1g6TWs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747628720; h=Content-Transfer-Encoding:Cc:Cc: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; bh=YXvxkbFCVrdBL5uAGVM/FxbZOq84FCzkwXE2y02RSA8=; b=OT8q4wYritB98cXOOKkvMTn7KAnRpawxvXtu9U1PvHFbUIJxqNY1r6hkO//biCTe8UkqllMAcTCs3OAYdJuq/QDa5W8dNrK1woFbjKupJNdAZ41Iq6sFS+O04CX8CFWrfEoYAX53g8TviTFhGadSrfV92ZKyRXQa/xOoieDqqPY= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747628720127131.9223848139476; Sun, 18 May 2025 21:25:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGs3w-0001T1-Ob; Mon, 19 May 2025 00:25:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGrp2-0008TT-Pn for qemu-devel@nongnu.org; Mon, 19 May 2025 00:09:56 -0400 Received: from mail-pj1-x1032.google.com ([2607:f8b0:4864:20::1032]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGroz-0004Oo-0G for qemu-devel@nongnu.org; Mon, 19 May 2025 00:09:51 -0400 Received: by mail-pj1-x1032.google.com with SMTP id 98e67ed59e1d1-30dfd9e7fa8so4929785a91.2 for ; Sun, 18 May 2025 21:09:48 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.09.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:09:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627787; x=1748232587; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=YXvxkbFCVrdBL5uAGVM/FxbZOq84FCzkwXE2y02RSA8=; b=hKvMC2o+j5VXn0vqRk8JQv+ASZNg3+HY5T9n/8ZLBOUFFMmN1PKLbsk2JYdV7Ggo9U 6JUiG3OszxFQaH5b+uONfUd07UapuQsGNZqWDqpNtpoDHfgzFqyOtAlU4/I0XiQ8/JC2 w0GRQ640i0ACjAqU8u09mzcyZMtkH4oJfxL+2xkq91OF/YajKJ4g5PXWf0lWRm1eZD8v IKfyb72KY44YnY+dypp5kyp7M1bbQpol5YeyRgYX3YCxEN0g/0Wj1YKpTVA9fIQBtgvP IBhRAnB42L2JGVVWW/A814YVh5hgCO+M6Eo5yTtX93Wx3fyvNzHKZms3VmiiDqIJt3Q8 sOZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627787; x=1748232587; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=YXvxkbFCVrdBL5uAGVM/FxbZOq84FCzkwXE2y02RSA8=; b=lPlMSFVJjVzYuPfdOH8OC9r2tf6eCb8fDov9xk1ihuWTlyBcyirxkmjvG2tgClE76l rZS4Hg0kNj3DyKjvsJGF/5n+Up+O+ilc6L3MzCBxY7aF79u+Q4lsdrlXQEd56Fzgn9og 3mrCGZTYUDd/7M3QwY5G/NDAK3fyUEf1NAfhvN1PGRqD8nNMLgQe+mOBStUyA+Phgk9/ HCaXdRja5PgInTM09wEIwsKo8AV00h06y7gxk71OT3nNIxJqCq0O41luIGcBEdJYBzI2 E5NcRyf1JyrVZc2FHlVIbkmocVYNCsBuciW+2PvEAxZpG4Xua0M5R1VN+zRXQXH7s6MW ODDw== X-Gm-Message-State: AOJu0YwGTGKkrBzgcyt8Cg7nP8CNUW5oDCPGscZAqkyR74d5e/Y4Oo13 Ep4c9kcz0TY4e+WiEkGeY7n6Tf5ozklr06giJTpq0NKNslYf9Dg+TTpUpO50wA== X-Gm-Gg: ASbGncv4EN7CH75zXwXu/HV4U2dssZJl2WVOZRIQMw9CrLYj+hBoxBs6J6AL0zt43tR Rc4ztxQV4p8j6FQgEHzM4JDrQuOa4jMuev2ZgrPpSEnQ3r+3PGvKk9Mr3zUmVT9uVurqBMyg9e5 icxj6k664R6sTCakfekEMF6JX08rO0CwzWQusMwMDW4xl/+krCS6ehDYoMLxRSVo2QLn+aGYKYZ qxrYhn11bAS4M5amwtyq6cw4S52dEBY1oSz7aHY6svWIBk+Gk+RYo0xgm5UoltTythlJ9Mr7AC9 Batc0yQ4iupW75E5vTKL6URoBd4/430a7alFmDfuoFH9KbFMlKh9esJDgbtYfpZHizZxlKi1IIN aFRATX9Tq7oEGI502T3ehLKOVlGuQTpBTwKqPZaKsLur5gWGCnPDIIvKe+GlUWGuKEmk= X-Google-Smtp-Source: AGHT+IEPxzSQ8z9EeXNZ9TV+Dc9PQypkNgnXsx6QWJj50MvMg7tSPHk54qS84Sfcx72e7SDdbmanKw== X-Received: by 2002:a17:903:244e:b0:22e:3b65:9286 with SMTP id d9443c01a7336-231de3bb4afmr165334295ad.49.1747627787103; Sun, 18 May 2025 21:09:47 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Daniel Henrique Barboza , Alistair Francis Subject: [PULL 50/56] hw/riscv/virt.c: use s->memmap in virt_machine_done() Date: Mon, 19 May 2025 14:05:47 +1000 Message-ID: <20250519040555.3797167-51-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1032; envelope-from=alistair23@gmail.com; helo=mail-pj1-x1032.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747628722366116600 Content-Type: text/plain; charset="utf-8" From: Daniel Henrique Barboza Signed-off-by: Daniel Henrique Barboza Reviewed-by: Alistair Francis Message-ID: <20250429125811.224803-4-dbarboza@ventanamicro.com> Signed-off-by: Alistair Francis --- hw/riscv/virt.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c index 843665a5bd..b349b2b1cf 100644 --- a/hw/riscv/virt.c +++ b/hw/riscv/virt.c @@ -1425,9 +1425,8 @@ static void virt_machine_done(Notifier *notifier, voi= d *data) { RISCVVirtState *s =3D container_of(notifier, RISCVVirtState, machine_done); - const MemMapEntry *memmap =3D virt_memmap; MachineState *machine =3D MACHINE(s); - hwaddr start_addr =3D memmap[VIRT_DRAM].base; + hwaddr start_addr =3D s->memmap[VIRT_DRAM].base; target_ulong firmware_end_addr, kernel_start_addr; const char *firmware_name =3D riscv_default_firmware_name(&s->soc[0]); uint64_t fdt_load_addr; @@ -1471,14 +1470,14 @@ static void virt_machine_done(Notifier *notifier, v= oid *data) * let's overwrite the address we jump to after reset to * the base of the flash. */ - start_addr =3D virt_memmap[VIRT_FLASH].base; + start_addr =3D s->memmap[VIRT_FLASH].base; } else { /* * Pflash was supplied but either KVM guest or bios is not non= e. * In this case, base of the flash would contain S-mode payloa= d. */ riscv_setup_firmware_boot(machine); - kernel_entry =3D virt_memmap[VIRT_FLASH].base; + kernel_entry =3D s->memmap[VIRT_FLASH].base; } } =20 @@ -1492,15 +1491,15 @@ static void virt_machine_done(Notifier *notifier, v= oid *data) kernel_entry =3D boot_info.image_low_addr; } =20 - fdt_load_addr =3D riscv_compute_fdt_addr(memmap[VIRT_DRAM].base, - memmap[VIRT_DRAM].size, + fdt_load_addr =3D riscv_compute_fdt_addr(s->memmap[VIRT_DRAM].base, + s->memmap[VIRT_DRAM].size, machine, &boot_info); riscv_load_fdt(fdt_load_addr, machine->fdt); =20 /* load the reset vector */ riscv_setup_rom_reset_vec(machine, &s->soc[0], start_addr, - virt_memmap[VIRT_MROM].base, - virt_memmap[VIRT_MROM].size, kernel_entry, + s->memmap[VIRT_MROM].base, + s->memmap[VIRT_MROM].size, kernel_entry, fdt_load_addr); =20 /* --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747628843; cv=none; d=zohomail.com; s=zohoarc; b=FgtkE9BMkOgbbuk9B5SLkvcKZ3Gh9BVLTK0nEj526kEsDAuirtlqia+eoMkhFZffMxOrCJDjyIekHBwIVlj7rEZnJc5aZX/ASsT5iNRlUlNh94HxRsGr2SyS+0RKm/vUP+VO+U/gfDNOSZc+g+nzNyIuihNOOS+ec2POXDvhp0c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747628843; h=Content-Type:Content-Transfer-Encoding:Cc:Cc: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; bh=1OW1dBcqkD9seiHj1GS+2RugnBsuqu0z4wjW5Lk4KiQ=; b=fkozXkXRfykkjgey4NfE5M6Wx2FKsh1pB0xLUPwplk27KPhDAk5I5AoXXReeu55elObQgEl+xhLfyU/m7VUJ9QL/IYl+qhcGZ9BIJM2OKak7UgU+TRju0z31Hi2JeE3oEn+kKK0bRMZZQtIoJBmJ4AUeulbKr40joE8GtPjTrFM= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 174762884375071.85472575846677; Sun, 18 May 2025 21:27:23 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGs4f-0003JQ-Ve; Mon, 19 May 2025 00:26:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGrp5-0008Ud-R9 for qemu-devel@nongnu.org; Mon, 19 May 2025 00:09:58 -0400 Received: from mail-pl1-x62b.google.com ([2607:f8b0:4864:20::62b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGrp2-0004PI-IY for qemu-devel@nongnu.org; Mon, 19 May 2025 00:09:55 -0400 Received: by mail-pl1-x62b.google.com with SMTP id d9443c01a7336-231fd67a9aeso12605945ad.1 for ; Sun, 18 May 2025 21:09:51 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.09.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:09:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627790; x=1748232590; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=1OW1dBcqkD9seiHj1GS+2RugnBsuqu0z4wjW5Lk4KiQ=; b=ArX5NVNeXv/fZYllJBNZ+x3ovyvTobBWgzyXT9+XwGQruD+XBoTXkHQXWhUmR84WXH pi5FWEeRvTvrcY5Xf0NeB6SEtMV4bLN+lYHCHKYqUWr/6mlVfwXaNBvw5hNe/F44bd4K q0vx/sGRy7fM9OIMG8HED6035W6emlH0zif2ROZRIWYapDr5abtNaxNGvT+boLVVDzvC 5DXZdi4IatvOPFQ1QsH5c6nhJuttOhFbSr0XqKc0hXm3pDEaSmw8GWP1VnRC5ReG3lBW l2jK0cRy+VEcH4Z75cOPhhL9utx8AAzzLlm5p7wzZWSOdjnWuXkByZ1zO8Woqb79VhOs OOuw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627790; x=1748232590; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=1OW1dBcqkD9seiHj1GS+2RugnBsuqu0z4wjW5Lk4KiQ=; b=jWhvFglZsN/x/N1e1dIR7L3/cLUZeql0ZNMYxdWQIpXFCFJQ+BEih3/m2QhU6gFEM3 1AYwTKJ7oBAlURJn5NiD/xkOp0erAbQECmvU2+Hqahr/SwSxgeg1chvTBrZ7LlAhICmU l+652XXtUHvbY+5Oo7q57zPTM06cNZYhINZnratNJdmV/OBSbE2qpQx3nSvCxgFvftyx aWwLBp0fI07oa6VXwcX7xqAY33qdHrM81QhuQGW8pD018Hut2wdHtESIohHD+PdS2i4L Zs84b9/jUhtjLM3pX/gNvDLH/Oi7cGzrXcF3CkuAz+RiIRHGURhsEx/L2kN0Dj8tI+bM 6nag== X-Gm-Message-State: AOJu0YwzGHALaU1xNQqr6pv23ocG+IJL/7kGfkCfs7GMsUx69wPL5wqL Vuubv8r2DY1kmbLXXa5Kz5UzZpUecy/Mu89plJrd/41hJyF/5lcOkATo4zS8aw== X-Gm-Gg: ASbGncu3vlzsWUoqpuJzuUaQcEk9dJ6Rpu5GTVMd7ND7hlWn1ag+u58tdKUtLxMnmmJ N9i7HxH83LO+cXD5pgJ+jIj9pKFtjezAwD9fhois6Q910lnYu4h023wCTZwj81qxgEPvrhf8VAB A29/DXVUNqrYNpWyTQJu7NRWLsloKjjbMSEafMSeR0/fV/phh9HZXAjhU1nhYQYlyLgtzPKOyU8 cxS/aIx8PJMX/eQ+ZgkRiEbSb3XWKughQZwqMQZYsXcwpAuM3dJoiW6Ej9rMxZQP7S9SxJk9Gfg 9w8dl/645T11sFcQLfJchPZI9fyQUjCRqnxgAqeBO1u5M1bgcu2WlnaIEFVAuG7bdqbtJRbM/Nb 5QR2CKcELRM56j0x7xDyRLlsPMoXWeytxIyueLgYRh1f6ly9pR/7E5VH/ X-Google-Smtp-Source: AGHT+IHkXzV3SHqgOD9/ON/6bEPLPMJ46NrHnIqflfqdQ8lAsZTF8i7uDd5mbqJUni6L6IM+3laakQ== X-Received: by 2002:a17:902:c202:b0:231:c89f:4e94 with SMTP id d9443c01a7336-231c89f4f9amr147418275ad.21.1747627790209; Sun, 18 May 2025 21:09:50 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Daniel Henrique Barboza , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis Subject: [PULL 51/56] hw/riscv/virt.c: add 'base' arg in create_fw_cfg() Date: Mon, 19 May 2025 14:05:48 +1000 Message-ID: <20250519040555.3797167-52-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62b; envelope-from=alistair23@gmail.com; helo=mail-pl1-x62b.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747628845718116600 From: Daniel Henrique Barboza The function can receive the value via s->memmap[VIRT_FW_CFG].base from the caller, avoiding the use of virt_memmap. Signed-off-by: Daniel Henrique Barboza Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alistair Francis Message-ID: <20250429125811.224803-5-dbarboza@ventanamicro.com> Signed-off-by: Alistair Francis --- hw/riscv/virt.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c index b349b2b1cf..3d547f7c2b 100644 --- a/hw/riscv/virt.c +++ b/hw/riscv/virt.c @@ -1262,9 +1262,8 @@ static inline DeviceState *gpex_pcie_init(MemoryRegio= n *sys_mem, return dev; } =20 -static FWCfgState *create_fw_cfg(const MachineState *ms) +static FWCfgState *create_fw_cfg(const MachineState *ms, hwaddr base) { - hwaddr base =3D virt_memmap[VIRT_FW_CFG].base; FWCfgState *fw_cfg; =20 fw_cfg =3D fw_cfg_init_mem_wide(base + 8, base, 8, base + 16, @@ -1677,7 +1676,7 @@ static void virt_machine_init(MachineState *machine) * Init fw_cfg. Must be done before riscv_load_fdt, otherwise the * device tree cannot be altered and we get FDT_ERR_NOSPACE. */ - s->fw_cfg =3D create_fw_cfg(machine); + s->fw_cfg =3D create_fw_cfg(machine, s->memmap[VIRT_FW_CFG].base); rom_set_fw(s->fw_cfg); =20 /* SiFive Test MMIO device */ --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747628285; cv=none; d=zohomail.com; s=zohoarc; b=cTSAIK5iHD1YelcmwppUF9d+H7THS8lSoaFv2tHxtmb1RC84AUq0xXskZG6MDFQjs/9Af9OGqdc+DgVzdJ3k9AAw4a29AOtTuW8L799jvL9Jv7DqeIZHZyYDOy8AV3J9fFe6GdJv/8z0rrv7Eul0vb+bmuB4DgHvpBGCPMj298E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747628285; h=Content-Transfer-Encoding:Cc:Cc: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; bh=bUel07T2/HTvJ6gY1GwCmjy3NTY5KoJHQtLnCUJUAEU=; b=hm8wE3sFbCxxL0DQXOx5FTPBcpuVtwRcSZfIHLKSMfN6BC1lL/VklrRrMO7bHSHe/mjsAJs2/hjwoNUIWTK18aVugSgzT3w03P9j7Sqr4N+C+QT4ayBBD+eQTGl7Z7NBQoewTeGXgYMOMjKlFR1NkGXu9WqejJG9m+RoeTfRptY= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 174762828591038.48562526799651; Sun, 18 May 2025 21:18:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGrvM-0004zV-0h; Mon, 19 May 2025 00:16:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGrp6-00006A-H2 for qemu-devel@nongnu.org; Mon, 19 May 2025 00:10:00 -0400 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGrp4-0004Pr-OF for qemu-devel@nongnu.org; Mon, 19 May 2025 00:09:56 -0400 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-231e011edfaso27288075ad.0 for ; Sun, 18 May 2025 21:09:54 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.09.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:09:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627793; x=1748232593; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=bUel07T2/HTvJ6gY1GwCmjy3NTY5KoJHQtLnCUJUAEU=; b=SM3PalkiXrCxgzQLxniBirgUMFuogBybo4XQ+0+snlXtwd8Mv72Veba85nqOReijgb FD7bNhzKwWQYRU/+9+sRV2vvy4p7BwJeZHauAz42TS6yUI0iAkwyRdyIBst99CsuMW6d FAmXfP2vXdMx8IErLXXEXRWjecZOl6FliL2uGTmbWeV5uzXYi6Wu8AFSc4m5e2XcHcfT az/+pffx9tzYthou0okS2+41pR0cBPjNIaGEZ/Bx7YyBRJKcwGG5PyRTln1N2QiAmrhy NF/GhDKH5Uf7F9JQvKlB2P0lB6TgRG9nytcv4rFvh6Q9uT3bHENfIxsA5hqdNSyjHLCO HVtw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627793; x=1748232593; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=bUel07T2/HTvJ6gY1GwCmjy3NTY5KoJHQtLnCUJUAEU=; b=msvt4GfGjkaVxRMtDNHvy6byrnZJvN8bKZ1U7ZPosPxqooz7j0550Bfai4OSHW++Pn Az+vudmtM2Ak+SK6e/krYoHqGumXHZb7TYOUXUl8X2Kil94skSIwEXCHzbRkHY8UYuL0 v+YEVVfR/rs8Ixk1GH2ASTXYeePwdXjRy+KSOe6ecWm8l7XKxn9W/TiCVnuQ/Oo1/7h5 I3GoZLfdqMBzGYCS2sTAsSMNcjKBCiOUyldu4HZvpDm9npxjDbwJjkkPGn+QLL2q6Det FE4M/9G7D1t1+xu7HgOJxMn4HnR6fqDw3NSoxn4HlJPYK4HnVe8rnCTJr9HmFpTRj6e7 sUxQ== X-Gm-Message-State: AOJu0YyMhtnUiTQAbC6FctgR/ZZjhwpCGAic5EOGKXNldWV6VdxgZdaH 5XljnDsoFWeLtmfa2Fn3+2MpwwWcomnbb40TI9kj9U3TxKxb9B6Yq0jWXlnKhg== X-Gm-Gg: ASbGncv9OeuDkNq9FhBNn+pMynLmAevXzIP2jmoxGQWnMNNjWvtxyMdT5pZ2OREnNlM uEb89hkhpuahl9n1Qm8OYz67hozCFzPIoD4IJVaB6i8lVc4edHGV88zvI5ZVOb2Orf5HK/53VbO 27evAJEwl5Ce9DTHGfjnFncldyd2F5CfeIr6myVnwJxKP3b2U09h+U666gEJcC0qCw6N5qmEh3S GjF6hyi0m0OwD7WmcJf61jzUZU8muMnJ0suj/b37jGgGFDkbPtMtmFfd91qP6qMheQhFdRynLv0 KjKBEi7ghXzE4BzSyno8Ya8KpySSnBzwkxLNdnlbmpamkEc9yt5XISPvCVQziz10861uKvKJqg2 5M3qyG9U+bOf279HPIMwHva0kuwwLkf6FACdneGb33YMeVMU6uHAL0eXw X-Google-Smtp-Source: AGHT+IH9fqUZrtkC5hWQMTn99H9X7r9jPEkKrrO5YVoc9icGHi5nEsHaQrirIjyUTif4qZO6QDCEBg== X-Received: by 2002:a17:903:324c:b0:231:e331:b7c8 with SMTP id d9443c01a7336-231e331bbedmr113702865ad.17.1747627792935; Sun, 18 May 2025 21:09:52 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Daniel Henrique Barboza , Alistair Francis Subject: [PULL 52/56] hw/riscv/virt.c: use s->memmap in create_fdt() path Date: Mon, 19 May 2025 14:05:49 +1000 Message-ID: <20250519040555.3797167-53-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::634; envelope-from=alistair23@gmail.com; helo=mail-pl1-x634.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747628287871116600 Content-Type: text/plain; charset="utf-8" From: Daniel Henrique Barboza create_fdt(), create_fdt_flash() and create_fdt_fw_cfg() can access the memmap via their RISCVVirtState pointers. Signed-off-by: Daniel Henrique Barboza Reviewed-by: Alistair Francis Message-ID: <20250429125811.224803-6-dbarboza@ventanamicro.com> Signed-off-by: Alistair Francis --- hw/riscv/virt.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c index 3d547f7c2b..8a703a0233 100644 --- a/hw/riscv/virt.c +++ b/hw/riscv/virt.c @@ -996,7 +996,7 @@ static void create_fdt_rtc(RISCVVirtState *s, const Mem= MapEntry *memmap, } } =20 -static void create_fdt_flash(RISCVVirtState *s, const MemMapEntry *memmap) +static void create_fdt_flash(RISCVVirtState *s) { MachineState *ms =3D MACHINE(s); hwaddr flashsize =3D s->memmap[VIRT_FLASH].size / 2; @@ -1011,11 +1011,11 @@ static void create_fdt_flash(RISCVVirtState *s, con= st MemMapEntry *memmap) qemu_fdt_setprop_cell(ms->fdt, name, "bank-width", 4); } =20 -static void create_fdt_fw_cfg(RISCVVirtState *s, const MemMapEntry *memmap) +static void create_fdt_fw_cfg(RISCVVirtState *s) { MachineState *ms =3D MACHINE(s); - hwaddr base =3D memmap[VIRT_FW_CFG].base; - hwaddr size =3D memmap[VIRT_FW_CFG].size; + hwaddr base =3D s->memmap[VIRT_FW_CFG].base; + hwaddr size =3D s->memmap[VIRT_FW_CFG].size; g_autofree char *nodename =3D g_strdup_printf("/fw-cfg@%" PRIx64, base= ); =20 qemu_fdt_add_subnode(ms->fdt, nodename); @@ -1146,7 +1146,7 @@ static void finalize_fdt(RISCVVirtState *s) create_fdt_rtc(s, s->memmap, irq_mmio_phandle); } =20 -static void create_fdt(RISCVVirtState *s, const MemMapEntry *memmap) +static void create_fdt(RISCVVirtState *s) { MachineState *ms =3D MACHINE(s); uint8_t rng_seed[32]; @@ -1173,7 +1173,8 @@ static void create_fdt(RISCVVirtState *s, const MemMa= pEntry *memmap) * The "/soc/pci@..." node is needed for PCIE hotplugs * that might happen before finalize_fdt(). */ - name =3D g_strdup_printf("/soc/pci@%lx", (long) memmap[VIRT_PCIE_ECAM]= .base); + name =3D g_strdup_printf("/soc/pci@%lx", + (long) s->memmap[VIRT_PCIE_ECAM].base); qemu_fdt_add_subnode(ms->fdt, name); =20 qemu_fdt_add_subnode(ms->fdt, "/chosen"); @@ -1185,8 +1186,8 @@ static void create_fdt(RISCVVirtState *s, const MemMa= pEntry *memmap) =20 qemu_fdt_add_subnode(ms->fdt, "/aliases"); =20 - create_fdt_flash(s, memmap); - create_fdt_fw_cfg(s, memmap); + create_fdt_flash(s); + create_fdt_fw_cfg(s); create_fdt_pmu(s); } =20 @@ -1715,7 +1716,7 @@ static void virt_machine_init(MachineState *machine) exit(1); } } else { - create_fdt(s, s->memmap); + create_fdt(s); } =20 if (virt_is_iommu_sys_enabled(s)) { --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747628814; cv=none; d=zohomail.com; s=zohoarc; b=MTR3yvX3OTIETVECfNpNeixqkEzGWlu0qGwUPkSorpy8tm1YcY0CoiaZSMCuasI3MMuzc6f3qTire+x3L+sK2e4h38EW+QC39yOjEL6OmHCna01H3o86FI+/NU9RiJVkEx5wR6+x+HiBKsh2bjF4nV1kTPg86NmCbFyCKiLv4HI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747628814; h=Content-Transfer-Encoding:Cc:Cc: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; bh=PaRnZd2vCdVT+sLYYKhYWL8+DRdee1Kb+vvdCs/4kqM=; b=JsD3AJHjvkLfcN5jK3xJd8qgwx/Er5LRrsOIurK7FsO8Q9yK4/PCI51O4Xn2HDVGpPI3Bt6xAvAH8XsXcxzBV3jodWVpkandK+gv9Te036q54XAOtpiKfQ7P28FcBmUG2JfDl1VlKUFFdAolwA2A70RcWGHBZcVM36M2A0C4a+o= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747628814154709.597532653555; Sun, 18 May 2025 21:26:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGs4w-0004cx-FZ; Mon, 19 May 2025 00:26:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGrpA-00009r-JR for qemu-devel@nongnu.org; Mon, 19 May 2025 00:10:03 -0400 Received: from mail-pg1-x535.google.com ([2607:f8b0:4864:20::535]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGrp8-0004QE-2R for qemu-devel@nongnu.org; Mon, 19 May 2025 00:10:00 -0400 Received: by mail-pg1-x535.google.com with SMTP id 41be03b00d2f7-af59c920d32so2500407a12.0 for ; Sun, 18 May 2025 21:09:57 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.09.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:09:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627796; x=1748232596; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=PaRnZd2vCdVT+sLYYKhYWL8+DRdee1Kb+vvdCs/4kqM=; b=lSRL8jLKQ0QC+Bdu8UTXgeLQ/Bx8xMCgfpO+gjWyaVTGfctL2I74sDPi8aaKghU5gj onCqj4Go8f9/NruG3tD6LP8gWlu8UbjJvjEe6rFoMPYWBTYSvMLZVg2qmK4w5ZeCbxD2 N4f5Ld9ozjr9GJMBS5Eyi0vWoNo8m9IbxQETuDFE6R565U6LokaD0ejT9c9ljK5Dnpiu /OVy7l5FABrtkkwvbtUmfmKT8PiRblS8naPJUgB1xUz49wgp0NYtivLN4c6Z5uLd7xCZ wrLQeksLvSjJgOSJDdnf1+W4WD27xDA0RAgJulguceVJ+PcsqoeSxw2SQ4eWUrYD95lv oBHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627796; x=1748232596; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=PaRnZd2vCdVT+sLYYKhYWL8+DRdee1Kb+vvdCs/4kqM=; b=g0mRxCF7IOL3KVBemsOTAIYgGVBmxFJCib/XVc3nLr8bYrIqrZ3y9QeFAfB5Vv2rD0 6310H2Z8DzbYj9YoS+0K7qrmS4LL56utIihrUW+jPyQ5tegsG30m3ZmTiIK2e1vYaMUD 6GBAZ+4kuYZ5u1Nzci5N1C+4s0PTpAMJMwCOI2mQbAmkdnMq8RTJ5W14o+/Al4aB0wiQ XNSS/ys/J8AqoGqxSLjpClj+E2KLhCn8qHxWcu+ifIpYPFptcv3hJv+Yu0q4KmXedyaP fNkB2tybYMl25YU4MCmZZ0PvJb+b4lCxHl5bLXPOjvipr4gm6wtZGp67vXyl7CgPPjo5 h+qQ== X-Gm-Message-State: AOJu0Yw/nUQLe8xuxJh0xlOMU0Yatf79pYUvYL8A7shToGujz6SlEdsQ Jx4xeYQRIiBXSGxSBRiCDpsJV1JCn6cr8d4p/rP0vjiIqNcWU8mszWMt2a8ZWA== X-Gm-Gg: ASbGnctFyzQZ3xV8E09M48QiuptEyqhnt03+o9VIPlJhpmczEJQc54EMUo7Sf9mDm1g D2DQwaJAslqgodecKWtPkG588i2LkkjjCFEPHiLnLgtWAb1DKwzRt7yZHsvqxzOgnFGjE/yPd4n x/dMYe8lce9WliZr8juc5u+MoBoHNBVpMJ+wmZuAbGQKeHOG0YxoSKvazyUyZvPxgGBl5ulOnhG GFco1MoADU522tjUYsPxJlq6wJYl4QfTlQDtjK3/p42YJcE+z9jX9sgcXOBVQ0okyg6q3Wgz+4Y Bzoccon9xxwmmqebIaWwc/xT0ntyVvToRWYYtOnYrfUSF5D9k24Am2I1u29u0XS1BSj1gzuwqi2 xyK0XNxkDlM+WT5WMbtOUUsV9vEL6c80uksMe/9u8UrgNNqhT4JAuir8Q X-Google-Smtp-Source: AGHT+IH4hS8OzJvYwP5s74emapmY704ijLGVfoiv2GzO6x6tjD/kux7Jnu6aYJkzVN6FZldn+/iRIg== X-Received: by 2002:a17:903:94f:b0:223:5ca1:3b0b with SMTP id d9443c01a7336-231d45a9aa0mr177243175ad.40.1747627795807; Sun, 18 May 2025 21:09:55 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Daniel Henrique Barboza , Alistair Francis Subject: [PULL 53/56] hw/riscv/virt.c: use s->memmap in create_fdt_sockets() path Date: Mon, 19 May 2025 14:05:50 +1000 Message-ID: <20250519040555.3797167-54-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::535; envelope-from=alistair23@gmail.com; helo=mail-pg1-x535.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_FILL_THIS_FORM_SHORT=0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747628815622116600 Content-Type: text/plain; charset="utf-8" From: Daniel Henrique Barboza create_fdt_sockets() and all its fdt helpers (create_fdt_socket_aplic(), create_fdt_imsic(), create_fdt_socket_plic(), create_fdt_socket_aclint() and create_fdt_socket_memory()) can use s->memmap from their RISCVVirtState pointer instead of having an extra memmap argument. Signed-off-by: Daniel Henrique Barboza Reviewed-by: Alistair Francis Message-ID: <20250429125811.224803-7-dbarboza@ventanamicro.com> Signed-off-by: Alistair Francis --- hw/riscv/virt.c | 89 ++++++++++++++++++++++++++----------------------- 1 file changed, 47 insertions(+), 42 deletions(-) diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c index 8a703a0233..e66a46f524 100644 --- a/hw/riscv/virt.c +++ b/hw/riscv/virt.c @@ -301,14 +301,13 @@ static void create_fdt_socket_cpus(RISCVVirtState *s,= int socket, } } =20 -static void create_fdt_socket_memory(RISCVVirtState *s, - const MemMapEntry *memmap, int socket) +static void create_fdt_socket_memory(RISCVVirtState *s, int socket) { g_autofree char *mem_name =3D NULL; uint64_t addr, size; MachineState *ms =3D MACHINE(s); =20 - addr =3D memmap[VIRT_DRAM].base + riscv_socket_mem_offset(ms, socket); + addr =3D s->memmap[VIRT_DRAM].base + riscv_socket_mem_offset(ms, socke= t); size =3D riscv_socket_mem_size(ms, socket); mem_name =3D g_strdup_printf("/memory@%lx", (long)addr); qemu_fdt_add_subnode(ms->fdt, mem_name); @@ -319,7 +318,7 @@ static void create_fdt_socket_memory(RISCVVirtState *s, } =20 static void create_fdt_socket_clint(RISCVVirtState *s, - const MemMapEntry *memmap, int socket, + int socket, uint32_t *intc_phandles) { int cpu; @@ -340,21 +339,22 @@ static void create_fdt_socket_clint(RISCVVirtState *s, clint_cells[cpu * 4 + 3] =3D cpu_to_be32(IRQ_M_TIMER); } =20 - clint_addr =3D memmap[VIRT_CLINT].base + (memmap[VIRT_CLINT].size * so= cket); + clint_addr =3D s->memmap[VIRT_CLINT].base + + (s->memmap[VIRT_CLINT].size * socket); clint_name =3D g_strdup_printf("/soc/clint@%lx", clint_addr); qemu_fdt_add_subnode(ms->fdt, clint_name); qemu_fdt_setprop_string_array(ms->fdt, clint_name, "compatible", (char **)&clint_compat, ARRAY_SIZE(clint_compat)); qemu_fdt_setprop_cells(ms->fdt, clint_name, "reg", - 0x0, clint_addr, 0x0, memmap[VIRT_CLINT].size); + 0x0, clint_addr, 0x0, s->memmap[VIRT_CLINT].size); qemu_fdt_setprop(ms->fdt, clint_name, "interrupts-extended", clint_cells, s->soc[socket].num_harts * sizeof(uint32_t) * 4); riscv_socket_fdt_write_id(ms, clint_name, socket); } =20 static void create_fdt_socket_aclint(RISCVVirtState *s, - const MemMapEntry *memmap, int socket, + int socket, uint32_t *intc_phandles) { int cpu; @@ -381,8 +381,10 @@ static void create_fdt_socket_aclint(RISCVVirtState *s, aclint_cells_size =3D s->soc[socket].num_harts * sizeof(uint32_t) * 2; =20 if (s->aia_type !=3D VIRT_AIA_TYPE_APLIC_IMSIC) { - addr =3D memmap[VIRT_CLINT].base + (memmap[VIRT_CLINT].size * sock= et); + addr =3D s->memmap[VIRT_CLINT].base + + (s->memmap[VIRT_CLINT].size * socket); name =3D g_strdup_printf("/soc/mswi@%lx", addr); + qemu_fdt_add_subnode(ms->fdt, name); qemu_fdt_setprop_string(ms->fdt, name, "compatible", "riscv,aclint-mswi"); @@ -397,13 +399,13 @@ static void create_fdt_socket_aclint(RISCVVirtState *= s, } =20 if (s->aia_type =3D=3D VIRT_AIA_TYPE_APLIC_IMSIC) { - addr =3D memmap[VIRT_CLINT].base + + addr =3D s->memmap[VIRT_CLINT].base + (RISCV_ACLINT_DEFAULT_MTIMER_SIZE * socket); size =3D RISCV_ACLINT_DEFAULT_MTIMER_SIZE; } else { - addr =3D memmap[VIRT_CLINT].base + RISCV_ACLINT_SWI_SIZE + - (memmap[VIRT_CLINT].size * socket); - size =3D memmap[VIRT_CLINT].size - RISCV_ACLINT_SWI_SIZE; + addr =3D s->memmap[VIRT_CLINT].base + RISCV_ACLINT_SWI_SIZE + + (s->memmap[VIRT_CLINT].size * socket); + size =3D s->memmap[VIRT_CLINT].size - RISCV_ACLINT_SWI_SIZE; } name =3D g_strdup_printf("/soc/mtimer@%lx", addr); qemu_fdt_add_subnode(ms->fdt, name); @@ -420,14 +422,15 @@ static void create_fdt_socket_aclint(RISCVVirtState *= s, g_free(name); =20 if (s->aia_type !=3D VIRT_AIA_TYPE_APLIC_IMSIC) { - addr =3D memmap[VIRT_ACLINT_SSWI].base + - (memmap[VIRT_ACLINT_SSWI].size * socket); + addr =3D s->memmap[VIRT_ACLINT_SSWI].base + + (s->memmap[VIRT_ACLINT_SSWI].size * socket); + name =3D g_strdup_printf("/soc/sswi@%lx", addr); qemu_fdt_add_subnode(ms->fdt, name); qemu_fdt_setprop_string(ms->fdt, name, "compatible", "riscv,aclint-sswi"); qemu_fdt_setprop_cells(ms->fdt, name, "reg", - 0x0, addr, 0x0, memmap[VIRT_ACLINT_SSWI].size); + 0x0, addr, 0x0, s->memmap[VIRT_ACLINT_SSWI].size); qemu_fdt_setprop(ms->fdt, name, "interrupts-extended", aclint_sswi_cells, aclint_cells_size); qemu_fdt_setprop(ms->fdt, name, "interrupt-controller", NULL, 0); @@ -438,7 +441,7 @@ static void create_fdt_socket_aclint(RISCVVirtState *s, } =20 static void create_fdt_socket_plic(RISCVVirtState *s, - const MemMapEntry *memmap, int socket, + int socket, uint32_t *phandle, uint32_t *intc_phand= les, uint32_t *plic_phandles) { @@ -452,7 +455,8 @@ static void create_fdt_socket_plic(RISCVVirtState *s, }; =20 plic_phandles[socket] =3D (*phandle)++; - plic_addr =3D memmap[VIRT_PLIC].base + (memmap[VIRT_PLIC].size * socke= t); + plic_addr =3D s->memmap[VIRT_PLIC].base + + (s->memmap[VIRT_PLIC].size * socket); plic_name =3D g_strdup_printf("/soc/plic@%lx", plic_addr); qemu_fdt_add_subnode(ms->fdt, plic_name); qemu_fdt_setprop_cell(ms->fdt, plic_name, @@ -491,7 +495,7 @@ static void create_fdt_socket_plic(RISCVVirtState *s, } =20 qemu_fdt_setprop_cells(ms->fdt, plic_name, "reg", - 0x0, plic_addr, 0x0, memmap[VIRT_PLIC].size); + 0x0, plic_addr, 0x0, s->memmap[VIRT_PLIC].size); qemu_fdt_setprop_cell(ms->fdt, plic_name, "riscv,ndev", VIRT_IRQCHIP_NUM_SOURCES - 1); riscv_socket_fdt_write_id(ms, plic_name, socket); @@ -500,8 +504,8 @@ static void create_fdt_socket_plic(RISCVVirtState *s, =20 if (!socket) { platform_bus_add_all_fdt_nodes(ms->fdt, plic_name, - memmap[VIRT_PLATFORM_BUS].base, - memmap[VIRT_PLATFORM_BUS].size, + s->memmap[VIRT_PLATFORM_BUS].base, + s->memmap[VIRT_PLATFORM_BUS].size, VIRT_PLATFORM_BUS_IRQ); } } @@ -588,7 +592,7 @@ static void create_fdt_one_imsic(RISCVVirtState *s, hwa= ddr base_addr, qemu_fdt_setprop_cell(ms->fdt, imsic_name, "phandle", msi_phandle); } =20 -static void create_fdt_imsic(RISCVVirtState *s, const MemMapEntry *memmap, +static void create_fdt_imsic(RISCVVirtState *s, uint32_t *phandle, uint32_t *intc_phandles, uint32_t *msi_m_phandle, uint32_t *msi_s_phan= dle) { @@ -597,12 +601,12 @@ static void create_fdt_imsic(RISCVVirtState *s, const= MemMapEntry *memmap, =20 if (!kvm_enabled()) { /* M-level IMSIC node */ - create_fdt_one_imsic(s, memmap[VIRT_IMSIC_M].base, intc_phandles, + create_fdt_one_imsic(s, s->memmap[VIRT_IMSIC_M].base, intc_phandle= s, *msi_m_phandle, true, 0); } =20 /* S-level IMSIC node */ - create_fdt_one_imsic(s, memmap[VIRT_IMSIC_S].base, intc_phandles, + create_fdt_one_imsic(s, s->memmap[VIRT_IMSIC_S].base, intc_phandles, *msi_s_phandle, false, imsic_num_bits(s->aia_guests + 1)); =20 @@ -679,7 +683,7 @@ static void create_fdt_one_aplic(RISCVVirtState *s, int= socket, } =20 static void create_fdt_socket_aplic(RISCVVirtState *s, - const MemMapEntry *memmap, int socket, + int socket, uint32_t msi_m_phandle, uint32_t msi_s_phandle, uint32_t *phandle, @@ -696,18 +700,19 @@ static void create_fdt_socket_aplic(RISCVVirtState *s, =20 if (!kvm_enabled()) { /* M-level APLIC node */ - aplic_addr =3D memmap[VIRT_APLIC_M].base + - (memmap[VIRT_APLIC_M].size * socket); - create_fdt_one_aplic(s, socket, aplic_addr, memmap[VIRT_APLIC_M].s= ize, + aplic_addr =3D s->memmap[VIRT_APLIC_M].base + + (s->memmap[VIRT_APLIC_M].size * socket); + create_fdt_one_aplic(s, socket, aplic_addr, + s->memmap[VIRT_APLIC_M].size, msi_m_phandle, intc_phandles, aplic_m_phandle, aplic_s_phandle, true, num_harts); } =20 /* S-level APLIC node */ - aplic_addr =3D memmap[VIRT_APLIC_S].base + - (memmap[VIRT_APLIC_S].size * socket); - create_fdt_one_aplic(s, socket, aplic_addr, memmap[VIRT_APLIC_S].size, + aplic_addr =3D s->memmap[VIRT_APLIC_S].base + + (s->memmap[VIRT_APLIC_S].size * socket); + create_fdt_one_aplic(s, socket, aplic_addr, s->memmap[VIRT_APLIC_S].si= ze, msi_s_phandle, intc_phandles, aplic_s_phandle, 0, false, num_harts); @@ -715,8 +720,8 @@ static void create_fdt_socket_aplic(RISCVVirtState *s, if (!socket) { g_autofree char *aplic_name =3D fdt_get_aplic_nodename(aplic_addr); platform_bus_add_all_fdt_nodes(ms->fdt, aplic_name, - memmap[VIRT_PLATFORM_BUS].base, - memmap[VIRT_PLATFORM_BUS].size, + s->memmap[VIRT_PLATFORM_BUS].base, + s->memmap[VIRT_PLATFORM_BUS].size, VIRT_PLATFORM_BUS_IRQ); } =20 @@ -734,7 +739,7 @@ static void create_fdt_pmu(RISCVVirtState *s) riscv_pmu_generate_fdt_node(ms->fdt, hart.pmu_avail_ctrs, pmu_name); } =20 -static void create_fdt_sockets(RISCVVirtState *s, const MemMapEntry *memma= p, +static void create_fdt_sockets(RISCVVirtState *s, uint32_t *phandle, uint32_t *irq_mmio_phandle, uint32_t *irq_pcie_phandle, @@ -770,20 +775,20 @@ static void create_fdt_sockets(RISCVVirtState *s, con= st MemMapEntry *memmap, create_fdt_socket_cpus(s, socket, clust_name, phandle, &intc_phandles[phandle_pos]); =20 - create_fdt_socket_memory(s, memmap, socket); + create_fdt_socket_memory(s, socket); =20 if (virt_aclint_allowed() && s->have_aclint) { - create_fdt_socket_aclint(s, memmap, socket, + create_fdt_socket_aclint(s, socket, &intc_phandles[phandle_pos]); } else if (tcg_enabled()) { - create_fdt_socket_clint(s, memmap, socket, + create_fdt_socket_clint(s, socket, &intc_phandles[phandle_pos]); } } =20 if (s->aia_type =3D=3D VIRT_AIA_TYPE_APLIC_IMSIC) { - create_fdt_imsic(s, memmap, phandle, intc_phandles, - &msi_m_phandle, &msi_s_phandle); + create_fdt_imsic(s, phandle, intc_phandles, + &msi_m_phandle, &msi_s_phandle); *msi_pcie_phandle =3D msi_s_phandle; } =20 @@ -792,7 +797,7 @@ static void create_fdt_sockets(RISCVVirtState *s, const= MemMapEntry *memmap, * mode, we'll use only one APLIC instance. */ if (!virt_use_emulated_aplic(s->aia_type)) { - create_fdt_socket_aplic(s, memmap, 0, + create_fdt_socket_aplic(s, 0, msi_m_phandle, msi_s_phandle, phandle, &intc_phandles[0], xplic_phandles, ms->smp.cpus); @@ -806,11 +811,11 @@ static void create_fdt_sockets(RISCVVirtState *s, con= st MemMapEntry *memmap, phandle_pos -=3D s->soc[socket].num_harts; =20 if (s->aia_type =3D=3D VIRT_AIA_TYPE_NONE) { - create_fdt_socket_plic(s, memmap, socket, phandle, + create_fdt_socket_plic(s, socket, phandle, &intc_phandles[phandle_pos], xplic_phandles); } else { - create_fdt_socket_aplic(s, memmap, socket, + create_fdt_socket_aplic(s, socket, msi_m_phandle, msi_s_phandle, phan= dle, &intc_phandles[phandle_pos], xplic_phandles, @@ -1126,7 +1131,7 @@ static void finalize_fdt(RISCVVirtState *s) uint32_t irq_pcie_phandle =3D 1, irq_virtio_phandle =3D 1; uint32_t iommu_sys_phandle =3D 1; =20 - create_fdt_sockets(s, s->memmap, &phandle, &irq_mmio_phandle, + create_fdt_sockets(s, &phandle, &irq_mmio_phandle, &irq_pcie_phandle, &irq_virtio_phandle, &msi_pcie_phandle); =20 --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747628960; cv=none; d=zohomail.com; s=zohoarc; b=DPSyIBsgnVLdpRx6MUz50CnC8OfJsVQURz9UK55jozSFNXDG0TXoDH+lCwVX8B40p1hZRcQvL9RWFpsneZk+SN7CO75SWrTsoNXAGQfaLJxFs/G/wx5WsjVNOasnYD+031n0vgmWvvr7RHsnkMxBX9Ynfp0gbZv2OnXIvMSakvw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747628960; h=Content-Transfer-Encoding:Cc:Cc: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; bh=zQSw6D7ZUAhjEzYSKPNSeo9XeM/QAz6Kitga+BI42pg=; b=RzoV5SuWIq3fRiziVKyF9EMzp/KIS7peBUTpW90ctGCxYBGS0wYh3J/5jD5RbfIvBMMK2s1Q6knAFLl0kCKmkbWQOtgSlZxp7K+9g0nHD4ayKixkb/h2U7YYOfVw8yus5IH32CEix/e4oG4RRTGdRDAxeRa41EM664mAPJgh6Ag= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747628960524449.9556136628147; Sun, 18 May 2025 21:29:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGs3x-0001Xg-Nu; Mon, 19 May 2025 00:25:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGrpF-0000Gv-31 for qemu-devel@nongnu.org; Mon, 19 May 2025 00:10:06 -0400 Received: from mail-pg1-x52b.google.com ([2607:f8b0:4864:20::52b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGrpA-0004QW-6s for qemu-devel@nongnu.org; Mon, 19 May 2025 00:10:04 -0400 Received: by mail-pg1-x52b.google.com with SMTP id 41be03b00d2f7-af59c920d32so2500417a12.0 for ; Sun, 18 May 2025 21:09:59 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.09.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:09:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627798; x=1748232598; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=zQSw6D7ZUAhjEzYSKPNSeo9XeM/QAz6Kitga+BI42pg=; b=XFOadaYFgZiyr3xZP5g8IT0uswrSP5eBWZPxJfy4JVf+xC+4km/UGsX1lDflTbVMIE WgJ5rkXD/YiOXqHP+V9sW3NNw+oAz7h7/UQdnON+mhG2TaZ6ZiHCzzSBNxTUsXdUiRJ1 PzQyxlWpJ2+TGqL445WEbP/ic2zWciOxCulp6nGbTb49QSN0q0NxxSH4onDfHucGIcXr pl74E5XVX8gme7M2lyxL4HYSLhyziW9xvH2mNvRe856MGfHT7HQWUBopsUKeH01UtqIQ 5dewXJ+jF4QKraEWP++TOL73FdqNG5wOZ/qbJa8ZJwMx/h2nNm1IVRE3SKs9KMH4dmvX JmaA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627798; x=1748232598; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=zQSw6D7ZUAhjEzYSKPNSeo9XeM/QAz6Kitga+BI42pg=; b=sOoiOgn2Tm6nxUxBFOa/4KTFKFPSVE3sx0V3MIvPgHIs6g0UKgR6A1LeFOX2i9DGRe dtj1wwbZAzthzPk6lM6xUOm/a8N+sqlmETTsJmE7/0r4m8cWjW5YC8sSJqlGwqFjTfFw X6n3UWwN3B6FUgccwLayN1YA82+NCnM9pUHwznMvbyu1XpjHBA/PUpHa9458kl494WvU /MYZy5VdUMadocA+d8Y8BG02FamdfxPlRtCmQU6mXcGBjhtzCjkLW/Va0UvKv31BlYHX 7E9vxe5/VWcg7ZoxVX6rNIiWRCvgtRISUUXoW54mzJrEBuM9dd0qBRuK8VYGEbRHJ0qh arjw== X-Gm-Message-State: AOJu0YyXqp0E88xmiu/lR/AwRckQYO5ytXNJgwpfoOPvzu8vcQux9kft glsR4KeL46MXkhaxACeRiYSl3Qf3vZ0MBiz0q8ulTCBJ3B7Oo03koSoY2xnhig== X-Gm-Gg: ASbGncv4rbjw8gF3ffkJDw00ZZ1ztT2sWh4OgM8sj9MRifyDW5nCham45uCxbFi2AmS fgTVo7PB5XUQmbL56eoK1JVyUf0+2w7w5MIrI7lJY5j1HSoIZOBPAv4kg0VXEkRy3CUIUEBCv40 jve6v5LhCpp24XPz8T0onqbSOtosTvvGUSD0cYaokcqHFoxGRzQIUfzGy6u8lXEg01njqlS5Kue dVoZ/AkBjcdwqB1SrW8V7Is123/4OAepEiPBdH2xOeljywboggCw63dWVcLSOMrI/AqvER1CT8c aeQoigldpVRfl3cyZ6vOFA9yCg6wgXohn3WXCgcO8mHhymBiy092bJSsgGCyqLMzt5dQhShaHu+ 4MVXOOsDRKYCJG+LipYl4AcQdEoLkWcuo4RNF7wgXaMZdqMXTdFJ/WMM8 X-Google-Smtp-Source: AGHT+IHWPenBtXIRioYN0l8atPCzxKhZSrMrQygNwTTtUmeS3dR+Nv4iCcu9pZbEG+Ww6ZShTiJzLQ== X-Received: by 2002:a17:903:4b4b:b0:224:a74:28d2 with SMTP id d9443c01a7336-231d452c4bbmr172796695ad.26.1747627798495; Sun, 18 May 2025 21:09:58 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Daniel Henrique Barboza , Alistair Francis Subject: [PULL 54/56] hw/riscv/virt.c: use s->memmap in create_fdt_virtio() Date: Mon, 19 May 2025 14:05:51 +1000 Message-ID: <20250519040555.3797167-55-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52b; envelope-from=alistair23@gmail.com; helo=mail-pg1-x52b.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747628960991116600 Content-Type: text/plain; charset="utf-8" From: Daniel Henrique Barboza create_fdt_virtio() can use s->memmap instead of having an extra argument for it. While we're at it rewrite it a little bit to avoid the clunky line in 'name' and code repetition: - declare 'virtio_base' out of the loop since it never changes; - declare a 'size' variable. Use it to calculate the address of the virtio device in an 'addr' variable; - use 'addr' in the 'name' g_strdup_printf(); - use 'addr' and 'size' when creating the 'reg' property. Signed-off-by: Daniel Henrique Barboza Reviewed-by: Alistair Francis Message-ID: <20250429125811.224803-8-dbarboza@ventanamicro.com> Signed-off-by: Alistair Francis --- hw/riscv/virt.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c index e66a46f524..37bd720068 100644 --- a/hw/riscv/virt.c +++ b/hw/riscv/virt.c @@ -842,21 +842,24 @@ static void create_fdt_sockets(RISCVVirtState *s, riscv_socket_fdt_write_distance_matrix(ms); } =20 -static void create_fdt_virtio(RISCVVirtState *s, const MemMapEntry *memmap, - uint32_t irq_virtio_phandle) +static void create_fdt_virtio(RISCVVirtState *s, uint32_t irq_virtio_phand= le) { int i; MachineState *ms =3D MACHINE(s); + hwaddr virtio_base =3D s->memmap[VIRT_VIRTIO].base; =20 for (i =3D 0; i < VIRTIO_COUNT; i++) { - g_autofree char *name =3D g_strdup_printf("/soc/virtio_mmio@%lx", - (long)(memmap[VIRT_VIRTIO].base + i * memmap[VIRT_VIRTIO].size= )); + g_autofree char *name =3D NULL; + uint64_t size =3D s->memmap[VIRT_VIRTIO].size; + hwaddr addr =3D virtio_base + i * size; + + name =3D g_strdup_printf("/soc/virtio_mmio@%"HWADDR_PRIx, addr); =20 qemu_fdt_add_subnode(ms->fdt, name); qemu_fdt_setprop_string(ms->fdt, name, "compatible", "virtio,mmio"= ); qemu_fdt_setprop_cells(ms->fdt, name, "reg", - 0x0, memmap[VIRT_VIRTIO].base + i * memmap[VIRT_VIRTIO].size, - 0x0, memmap[VIRT_VIRTIO].size); + 0x0, addr, + 0x0, size); qemu_fdt_setprop_cell(ms->fdt, name, "interrupt-parent", irq_virtio_phandle); if (s->aia_type =3D=3D VIRT_AIA_TYPE_NONE) { @@ -1135,7 +1138,7 @@ static void finalize_fdt(RISCVVirtState *s) &irq_pcie_phandle, &irq_virtio_phandle, &msi_pcie_phandle); =20 - create_fdt_virtio(s, s->memmap, irq_virtio_phandle); + create_fdt_virtio(s, irq_virtio_phandle); =20 if (virt_is_iommu_sys_enabled(s)) { create_fdt_iommu_sys(s, irq_mmio_phandle, msi_pcie_phandle, --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747629153; cv=none; d=zohomail.com; s=zohoarc; b=ZfbEwwZbWlr54dcE3hAQfw6d9AxP5seJ4LSmFY7rK1ge1pCulXnUNgf5h6sgp3hRfdUjkbO9wtrT+Tk98/HD3LtkMHjvLx7i5u9sCqF0Oz1JwbTEWfHjyZY+/rapYyOsv7FVO5r5gu9059839dTsSFNq0nKNqCv1m+7F/fShgyg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747629153; h=Content-Transfer-Encoding:Cc:Cc: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; bh=PyLdyYCHN0qVxiYhTJKCmDnIpQOjoM3r03Xr3doFWjY=; b=aa+G4Zc73k9T3AfbtUGML5F3CWhqUyIJBijwvEMrYj6806JE1MxE3FTpqO6574CHZiOLL7yzMpN2FehYEz0vieQNdEp6g/gHFTOQyFx1h5x7c7tB1UgZMwxRONz41SC4+1nIse7G4VA9ld40BN94i5ib1jC+sljBYtR69+Oos70= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747629153036333.4431261400299; Sun, 18 May 2025 21:32:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGs4h-0003Lc-0K; Mon, 19 May 2025 00:26:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGrpH-0000K6-2v for qemu-devel@nongnu.org; Mon, 19 May 2025 00:10:08 -0400 Received: from mail-pg1-x52a.google.com ([2607:f8b0:4864:20::52a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGrpE-0004Qy-My for qemu-devel@nongnu.org; Mon, 19 May 2025 00:10:06 -0400 Received: by mail-pg1-x52a.google.com with SMTP id 41be03b00d2f7-af548cb1f83so3628827a12.3 for ; Sun, 18 May 2025 21:10:02 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.09.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:10:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627801; x=1748232601; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=PyLdyYCHN0qVxiYhTJKCmDnIpQOjoM3r03Xr3doFWjY=; b=IHe2+w9lk6eKOT9kk7mkrlX/bpgHfqIqiI17PB+50RO29SJC6RB6nHe3i361FN5Yct UXPRLXD6htd1uw3J/6NMXVaqUxZ8tN13gFND2kdad2pAarW0iofEca6tdv5voLSjqiW+ pZVGQVgewirkT3YCWyVwSnUpg+31S02vaUfHfBzmYHMssbKm0DYyCbAJWNltvFNn2w0J QLh1j0UMHGFi9BemWGntzpk5nJbz2IxckTBoaU2j10LlK7keVCovhkX+51PR9PtJBn47 7uTqu2JzOstx/lpaAPfkYL8uDB32QrHMyXLYw7lnC9903xQ7jUV/8i9yboKhObBVXj46 8Pvw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627801; x=1748232601; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=PyLdyYCHN0qVxiYhTJKCmDnIpQOjoM3r03Xr3doFWjY=; b=Qa17dTaDnqRdkILV+XWTlnt/s33DMOl5dei+MpREoZSLcnC9GcTPejeFZL82fmiTCG 9DckJhKYn/DySpaLf1Pa/Df8qkE0Lb+Pm7u1958sIMinYmdka+vhJVzRfIfWl/Qg719f GVLFSYwg63GOtVThOQo+PfRaEYQlMYDXUIBzcSlPeCe31ffrgfCSCZtE30NCQ9w4s3ec vd54dFlB5c9wUY6WpZzXcx//SRvEVITcTjMfRA8y5flMqtvpOxPdID6tXPeZs6K3RlUL 2PE5qaSdaaC3DORHpdNTbCP8vLsPi5OQJmqw7l6SjTk3dBNitTg4M9Sc8oN0y3bZdzND Cybw== X-Gm-Message-State: AOJu0YwQyMAwmevNnc7xI9Jel4FeSn0EwKgajtUSV4t8j/3CDUHADcM0 7VxlcAulH3lhX7gUC93stXQTNbJln2TRCUvWHhpWGVdBX/fglJYXHcUl8zjXVg== X-Gm-Gg: ASbGnctqHipcr/wTwzbxI1KXj6Pnz2C2zl8wI/lGajnjbNlmcATAsO5z0Jr5ODy1X3w 3ZvT/VAgCOoCalLXlCjab9oAy/gVVPvjovYKleI49aIHo52VWDxqGXk9SYq0LGcj9Byf+UBIsSM IqCgo5jusWN6oogNSFdU1DXSqCelipgOxNir+1/g6xKVkPelzgAVHa6V4ZBC+4Gaz26ih4PwVQL VT8KW/bIT6JI1AlkPfEeIRl13cRxlhkzidiEtpivPdIThHaR4Y85cJSgcmJv+Xpqn1dLHIvApju tV2WKicOS/bTPzakWMC5nDtGRFtJ8dkH2O/deTdqK1F9kDrLF8+5f/lNTogu0JCZ8qJDv6NUE8m nPjagnB4E86CWReCbtP7Dwx9b4upp9oGIFQ4AzxGdY57fayuZnXzz2U2f6gukndTYmso= X-Google-Smtp-Source: AGHT+IFWcWO3eLqf9814E9bYuVkcvKRxop+3cuSPpH39ttcBjNNY5SaNbyRE9rymtQXr30iNJHFugg== X-Received: by 2002:a17:902:db07:b0:223:f9a4:3fb6 with SMTP id d9443c01a7336-231de3515c1mr156101895ad.11.1747627801232; Sun, 18 May 2025 21:10:01 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Daniel Henrique Barboza , Alistair Francis Subject: [PULL 55/56] hw/riscv/virt.c: use s->memmap in finalize_fdt() functions Date: Mon, 19 May 2025 14:05:52 +1000 Message-ID: <20250519040555.3797167-56-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52a; envelope-from=alistair23@gmail.com; helo=mail-pg1-x52a.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747629155049116600 Content-Type: text/plain; charset="utf-8" From: Daniel Henrique Barboza Change create_fdt_pcie(), create_fdt_reset(), create_fdt_uart() and create_fdt_rtc() to use s->memmap in their logic. Signed-off-by: Daniel Henrique Barboza Reviewed-by: Alistair Francis Message-ID: <20250429125811.224803-9-dbarboza@ventanamicro.com> Signed-off-by: Alistair Francis --- hw/riscv/virt.c | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c index 37bd720068..edb6973100 100644 --- a/hw/riscv/virt.c +++ b/hw/riscv/virt.c @@ -872,7 +872,7 @@ static void create_fdt_virtio(RISCVVirtState *s, uint32= _t irq_virtio_phandle) } } =20 -static void create_fdt_pcie(RISCVVirtState *s, const MemMapEntry *memmap, +static void create_fdt_pcie(RISCVVirtState *s, uint32_t irq_pcie_phandle, uint32_t msi_pcie_phandle, uint32_t iommu_sys_phandle) @@ -881,7 +881,7 @@ static void create_fdt_pcie(RISCVVirtState *s, const Me= mMapEntry *memmap, MachineState *ms =3D MACHINE(s); =20 name =3D g_strdup_printf("/soc/pci@%lx", - (long) memmap[VIRT_PCIE_ECAM].base); + (long) s->memmap[VIRT_PCIE_ECAM].base); qemu_fdt_setprop_cell(ms->fdt, name, "#address-cells", FDT_PCI_ADDR_CELLS); qemu_fdt_setprop_cell(ms->fdt, name, "#interrupt-cells", @@ -892,19 +892,19 @@ static void create_fdt_pcie(RISCVVirtState *s, const = MemMapEntry *memmap, qemu_fdt_setprop_string(ms->fdt, name, "device_type", "pci"); qemu_fdt_setprop_cell(ms->fdt, name, "linux,pci-domain", 0); qemu_fdt_setprop_cells(ms->fdt, name, "bus-range", 0, - memmap[VIRT_PCIE_ECAM].size / PCIE_MMCFG_SIZE_MIN - 1); + s->memmap[VIRT_PCIE_ECAM].size / PCIE_MMCFG_SIZE_MIN - 1); qemu_fdt_setprop(ms->fdt, name, "dma-coherent", NULL, 0); if (s->aia_type =3D=3D VIRT_AIA_TYPE_APLIC_IMSIC) { qemu_fdt_setprop_cell(ms->fdt, name, "msi-parent", msi_pcie_phandl= e); } qemu_fdt_setprop_cells(ms->fdt, name, "reg", 0, - memmap[VIRT_PCIE_ECAM].base, 0, memmap[VIRT_PCIE_ECAM].size); + s->memmap[VIRT_PCIE_ECAM].base, 0, s->memmap[VIRT_PCIE_ECAM].size); qemu_fdt_setprop_sized_cells(ms->fdt, name, "ranges", 1, FDT_PCI_RANGE_IOPORT, 2, 0, - 2, memmap[VIRT_PCIE_PIO].base, 2, memmap[VIRT_PCIE_PIO].size, + 2, s->memmap[VIRT_PCIE_PIO].base, 2, s->memmap[VIRT_PCIE_PIO].size, 1, FDT_PCI_RANGE_MMIO, - 2, memmap[VIRT_PCIE_MMIO].base, - 2, memmap[VIRT_PCIE_MMIO].base, 2, memmap[VIRT_PCIE_MMIO].size, + 2, s->memmap[VIRT_PCIE_MMIO].base, + 2, s->memmap[VIRT_PCIE_MMIO].base, 2, s->memmap[VIRT_PCIE_MMIO].si= ze, 1, FDT_PCI_RANGE_MMIO_64BIT, 2, virt_high_pcie_memmap.base, 2, virt_high_pcie_memmap.base, 2, virt_high_pcie_memmap.size); @@ -918,8 +918,7 @@ static void create_fdt_pcie(RISCVVirtState *s, const Me= mMapEntry *memmap, create_pcie_irq_map(s, ms->fdt, name, irq_pcie_phandle); } =20 -static void create_fdt_reset(RISCVVirtState *s, const MemMapEntry *memmap, - uint32_t *phandle) +static void create_fdt_reset(RISCVVirtState *s, uint32_t *phandle) { char *name; uint32_t test_phandle; @@ -927,7 +926,7 @@ static void create_fdt_reset(RISCVVirtState *s, const M= emMapEntry *memmap, =20 test_phandle =3D (*phandle)++; name =3D g_strdup_printf("/soc/test@%lx", - (long)memmap[VIRT_TEST].base); + (long)s->memmap[VIRT_TEST].base); qemu_fdt_add_subnode(ms->fdt, name); { static const char * const compat[3] =3D { @@ -937,7 +936,7 @@ static void create_fdt_reset(RISCVVirtState *s, const M= emMapEntry *memmap, (char **)&compat, ARRAY_SIZE(compat)= ); } qemu_fdt_setprop_cells(ms->fdt, name, "reg", - 0x0, memmap[VIRT_TEST].base, 0x0, memmap[VIRT_TEST].size); + 0x0, s->memmap[VIRT_TEST].base, 0x0, s->memmap[VIRT_TEST].size); qemu_fdt_setprop_cell(ms->fdt, name, "phandle", test_phandle); test_phandle =3D qemu_fdt_get_phandle(ms->fdt, name); g_free(name); @@ -959,18 +958,19 @@ static void create_fdt_reset(RISCVVirtState *s, const= MemMapEntry *memmap, g_free(name); } =20 -static void create_fdt_uart(RISCVVirtState *s, const MemMapEntry *memmap, +static void create_fdt_uart(RISCVVirtState *s, uint32_t irq_mmio_phandle) { g_autofree char *name =3D NULL; MachineState *ms =3D MACHINE(s); =20 - name =3D g_strdup_printf("/soc/serial@%lx", (long)memmap[VIRT_UART0].b= ase); + name =3D g_strdup_printf("/soc/serial@%lx", + (long)s->memmap[VIRT_UART0].base); qemu_fdt_add_subnode(ms->fdt, name); qemu_fdt_setprop_string(ms->fdt, name, "compatible", "ns16550a"); qemu_fdt_setprop_cells(ms->fdt, name, "reg", - 0x0, memmap[VIRT_UART0].base, - 0x0, memmap[VIRT_UART0].size); + 0x0, s->memmap[VIRT_UART0].base, + 0x0, s->memmap[VIRT_UART0].size); qemu_fdt_setprop_cell(ms->fdt, name, "clock-frequency", 3686400); qemu_fdt_setprop_cell(ms->fdt, name, "interrupt-parent", irq_mmio_phan= dle); if (s->aia_type =3D=3D VIRT_AIA_TYPE_NONE) { @@ -983,18 +983,18 @@ static void create_fdt_uart(RISCVVirtState *s, const = MemMapEntry *memmap, qemu_fdt_setprop_string(ms->fdt, "/aliases", "serial0", name); } =20 -static void create_fdt_rtc(RISCVVirtState *s, const MemMapEntry *memmap, +static void create_fdt_rtc(RISCVVirtState *s, uint32_t irq_mmio_phandle) { g_autofree char *name =3D NULL; MachineState *ms =3D MACHINE(s); =20 - name =3D g_strdup_printf("/soc/rtc@%lx", (long)memmap[VIRT_RTC].base); + name =3D g_strdup_printf("/soc/rtc@%lx", (long)s->memmap[VIRT_RTC].bas= e); qemu_fdt_add_subnode(ms->fdt, name); qemu_fdt_setprop_string(ms->fdt, name, "compatible", "google,goldfish-rtc"); qemu_fdt_setprop_cells(ms->fdt, name, "reg", - 0x0, memmap[VIRT_RTC].base, 0x0, memmap[VIRT_RTC].size); + 0x0, s->memmap[VIRT_RTC].base, 0x0, s->memmap[VIRT_RTC].size); qemu_fdt_setprop_cell(ms->fdt, name, "interrupt-parent", irq_mmio_phandle); if (s->aia_type =3D=3D VIRT_AIA_TYPE_NONE) { @@ -1144,14 +1144,14 @@ static void finalize_fdt(RISCVVirtState *s) create_fdt_iommu_sys(s, irq_mmio_phandle, msi_pcie_phandle, &iommu_sys_phandle); } - create_fdt_pcie(s, s->memmap, irq_pcie_phandle, msi_pcie_phandle, + create_fdt_pcie(s, irq_pcie_phandle, msi_pcie_phandle, iommu_sys_phandle); =20 - create_fdt_reset(s, s->memmap, &phandle); + create_fdt_reset(s, &phandle); =20 - create_fdt_uart(s, s->memmap, irq_mmio_phandle); + create_fdt_uart(s, irq_mmio_phandle); =20 - create_fdt_rtc(s, s->memmap, irq_mmio_phandle); + create_fdt_rtc(s, irq_mmio_phandle); } =20 static void create_fdt(RISCVVirtState *s) --=20 2.49.0 From nobody Fri Dec 19 16:13:36 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747628723; cv=none; d=zohomail.com; s=zohoarc; b=k2d1k6OOoq55mYtfxFlBY5hvIDe8S7XJIHchEEl2wtsfzHVgstYXYEIgVYz8kr1MZW9mxBOQGN2tUNHoNDg4F94kbbRlpS99F94hzxjZnSz6+sSgWYBq7ax/7tg77hGG8bjmR5dZaz9ZWECF76vAra3fe9+NAfYXE5RNYs7SmJM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747628723; h=Content-Type:Content-Transfer-Encoding:Cc:Cc: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; bh=r2IPT0y4bR7Ad0h8qFIp+L+38iB43yKtbwvpNpqIgic=; b=Bm9nnqUez8F7GGdefv6aT3/NeBV3seoGkTdnh13pIDJisOeKUp8uYZhdiBMG1dZN4u7bT7CItHmVC1zPnB7QHabqZLrWTf7hSjQ13OagPDHGCc+B0cByj9+Ccz9RnrzpscOg96KvstntczoJlw54r7rlrGa+tdK98AKbw03P7YA= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747628722999565.208871760295; Sun, 18 May 2025 21:25:22 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGs3S-0000fn-LU; Mon, 19 May 2025 00:24:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uGrpI-0000KU-JT for qemu-devel@nongnu.org; Mon, 19 May 2025 00:10:09 -0400 Received: from mail-pl1-x635.google.com ([2607:f8b0:4864:20::635]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGrpG-0004c4-3T for qemu-devel@nongnu.org; Mon, 19 May 2025 00:10:07 -0400 Received: by mail-pl1-x635.google.com with SMTP id d9443c01a7336-22c336fcdaaso30461865ad.3 for ; Sun, 18 May 2025 21:10:05 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.10.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:10:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627804; x=1748232604; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=r2IPT0y4bR7Ad0h8qFIp+L+38iB43yKtbwvpNpqIgic=; b=ir9Z3u6ueWWxxvnJ4j1LimgDz9GXZiuCRG88zVAHwmAZ3dlhSzWfqPHyHs9AvYwx46 GzhLzCMXgHHg14CBrwzBCH8lRUyA/c3LtDOGuchk6Jv5YmTBFw+w7cb3YIvGHUvUasxb w38yRds076cROJifVWmt+T77IjuggmOK18M0PMVvuGtAgff2z2eB1ciDY+8Y511zVfbX 0JQc7JMIZu3pnkNNlE1M4GxJiKCe5VvbSKu8FBeiBvJDC1ANylDnY78DtdX5F2zj5b83 gHm05Lz+4nTp4/isz4f/5InqCZm5xY7BS5JrRZnEsBs933kXr5rfZ4snp8Rm0SfeqUvK Im2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627804; x=1748232604; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=r2IPT0y4bR7Ad0h8qFIp+L+38iB43yKtbwvpNpqIgic=; b=L869h7108AEqGtffkd6fxqdcEi/+WwBMOMZcSpB6sbCG8taRCewg4U+e43HlTaTU4t 8cBgnHsD9UhX+OC754CfMl7q0txFJhn3hAlxJAqMf0cQ2kfg3l5dAX15041BwwDC+FAv HI5ynqFYdom0La+oYwP3CsJjZz/cHG4LMiSnNvcQWgfQ/8HvrmNQ/XLQIC6kzIBvmJwS v+s4t+vlSIh+qZVL1TsijW4yDEo0zqE2UKb9GEoj2W0Ni8dZO7hTYcwB0VEs2OXF+xoq W1D1CvbdbTJ7JbhvrhnQ/e8lexHpuUzpSjz6avzVwuH8KaCtQQCQaBIssW7DnUM0/img /jsA== X-Gm-Message-State: AOJu0Yw6CyGgB4kyJND3tRgaON5yTOZxwgQ6w+hVOYzSgvBtzMOqbeQQ gL5Dh2F97a92d+3REbuRaK93CT64nV/WksajtAwW4Guqq5I4NuYroqKMSOAhUw== X-Gm-Gg: ASbGnctBJs5FTbiSm41TLpwsEx9jRsEXVd148RtEtpbEGpxkq360bYCNw9jMPpiUNyj cPMHxVqbsb0i78cTW9NIg10oOn1iD+YEFeeLsC9/cocYcMCi8fFNsyH3CVTlfHTFG4MzI3xIlIR iyn+PK/6xPbbvVaLMx/3cxJQhlbqB2HEGtSsj06dVtJwQE/tsdRsffaxpYwxNZMDAJYYbF2Vn5z 8jEkxr2JSwUs6edgvfuaWz89Mg8Myjpr0bOcQQMfPsUzkYg7hVDKscNQJGAtGQMLLsHyR1yvm9X O1VwKPTmDseGtWQKebrzv/8WOj80WJ+CGvzpAS7PmSuvrPWrdSwAgc2f4qhWB4YIKFS9cW6mY+g DJKLWdhGk6QGRpi+gV9iZcVFiMgOIbILLPtZdM3zjyguJBiRKt2CYGtwe X-Google-Smtp-Source: AGHT+IHivU+KOPgdtlJaJiG65/7WyySzhZYPjPBxvLEihINg2gmOSNhbW+0RqQZZqQ6zbaGmfEycmA== X-Received: by 2002:a17:902:e5d1:b0:223:54aa:6d15 with SMTP id d9443c01a7336-231d44e4599mr174413905ad.12.1747627804190; Sun, 18 May 2025 21:10:04 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Daniel Henrique Barboza , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis Subject: [PULL 56/56] hw/riscv/virt.c: remove 'long' casts in fmt strings Date: Mon, 19 May 2025 14:05:53 +1000 Message-ID: <20250519040555.3797167-57-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::635; envelope-from=alistair23@gmail.com; helo=mail-pl1-x635.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1747628724369116600 From: Daniel Henrique Barboza We can avoid the 'long' casts by using PRIx64 and HWADDR_PRIx on the fmt strings for uint64_t and hwaddr types. Signed-off-by: Daniel Henrique Barboza Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alistair Francis Message-ID: <20250429125811.224803-10-dbarboza@ventanamicro.com> Signed-off-by: Alistair Francis --- hw/riscv/virt.c | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c index edb6973100..0dcced1b49 100644 --- a/hw/riscv/virt.c +++ b/hw/riscv/virt.c @@ -304,12 +304,13 @@ static void create_fdt_socket_cpus(RISCVVirtState *s,= int socket, static void create_fdt_socket_memory(RISCVVirtState *s, int socket) { g_autofree char *mem_name =3D NULL; - uint64_t addr, size; + hwaddr addr; + uint64_t size; MachineState *ms =3D MACHINE(s); =20 addr =3D s->memmap[VIRT_DRAM].base + riscv_socket_mem_offset(ms, socke= t); size =3D riscv_socket_mem_size(ms, socket); - mem_name =3D g_strdup_printf("/memory@%lx", (long)addr); + mem_name =3D g_strdup_printf("/memory@%"HWADDR_PRIx, addr); qemu_fdt_add_subnode(ms->fdt, mem_name); qemu_fdt_setprop_cells(ms->fdt, mem_name, "reg", addr >> 32, addr, size >> 32, size); @@ -880,8 +881,8 @@ static void create_fdt_pcie(RISCVVirtState *s, g_autofree char *name =3D NULL; MachineState *ms =3D MACHINE(s); =20 - name =3D g_strdup_printf("/soc/pci@%lx", - (long) s->memmap[VIRT_PCIE_ECAM].base); + name =3D g_strdup_printf("/soc/pci@%"HWADDR_PRIx, + s->memmap[VIRT_PCIE_ECAM].base); qemu_fdt_setprop_cell(ms->fdt, name, "#address-cells", FDT_PCI_ADDR_CELLS); qemu_fdt_setprop_cell(ms->fdt, name, "#interrupt-cells", @@ -925,8 +926,8 @@ static void create_fdt_reset(RISCVVirtState *s, uint32_= t *phandle) MachineState *ms =3D MACHINE(s); =20 test_phandle =3D (*phandle)++; - name =3D g_strdup_printf("/soc/test@%lx", - (long)s->memmap[VIRT_TEST].base); + name =3D g_strdup_printf("/soc/test@%"HWADDR_PRIx, + s->memmap[VIRT_TEST].base); qemu_fdt_add_subnode(ms->fdt, name); { static const char * const compat[3] =3D { @@ -964,8 +965,8 @@ static void create_fdt_uart(RISCVVirtState *s, g_autofree char *name =3D NULL; MachineState *ms =3D MACHINE(s); =20 - name =3D g_strdup_printf("/soc/serial@%lx", - (long)s->memmap[VIRT_UART0].base); + name =3D g_strdup_printf("/soc/serial@%"HWADDR_PRIx, + s->memmap[VIRT_UART0].base); qemu_fdt_add_subnode(ms->fdt, name); qemu_fdt_setprop_string(ms->fdt, name, "compatible", "ns16550a"); qemu_fdt_setprop_cells(ms->fdt, name, "reg", @@ -989,7 +990,8 @@ static void create_fdt_rtc(RISCVVirtState *s, g_autofree char *name =3D NULL; MachineState *ms =3D MACHINE(s); =20 - name =3D g_strdup_printf("/soc/rtc@%lx", (long)s->memmap[VIRT_RTC].bas= e); + name =3D g_strdup_printf("/soc/rtc@%"HWADDR_PRIx, + s->memmap[VIRT_RTC].base); qemu_fdt_add_subnode(ms->fdt, name); qemu_fdt_setprop_string(ms->fdt, name, "compatible", "google,goldfish-rtc"); @@ -1042,8 +1044,8 @@ static void create_fdt_virtio_iommu(RISCVVirtState *s= , uint16_t bdf) g_autofree char *iommu_node =3D NULL; g_autofree char *pci_node =3D NULL; =20 - pci_node =3D g_strdup_printf("/soc/pci@%lx", - (long) s->memmap[VIRT_PCIE_ECAM].base); + pci_node =3D g_strdup_printf("/soc/pci@%"HWADDR_PRIx, + s->memmap[VIRT_PCIE_ECAM].base); iommu_node =3D g_strdup_printf("%s/virtio_iommu@%x,%x", pci_node, PCI_SLOT(bdf), PCI_FUNC(bdf)); iommu_phandle =3D qemu_fdt_alloc_phandle(fdt); @@ -1111,8 +1113,8 @@ static void create_fdt_iommu(RISCVVirtState *s, uint1= 6_t bdf) g_autofree char *iommu_node =3D NULL; g_autofree char *pci_node =3D NULL; =20 - pci_node =3D g_strdup_printf("/soc/pci@%lx", - (long) s->memmap[VIRT_PCIE_ECAM].base); + pci_node =3D g_strdup_printf("/soc/pci@%"HWADDR_PRIx, + s->memmap[VIRT_PCIE_ECAM].base); iommu_node =3D g_strdup_printf("%s/iommu@%x", pci_node, bdf); iommu_phandle =3D qemu_fdt_alloc_phandle(fdt); qemu_fdt_add_subnode(fdt, iommu_node); @@ -1181,8 +1183,8 @@ static void create_fdt(RISCVVirtState *s) * The "/soc/pci@..." node is needed for PCIE hotplugs * that might happen before finalize_fdt(). */ - name =3D g_strdup_printf("/soc/pci@%lx", - (long) s->memmap[VIRT_PCIE_ECAM].base); + name =3D g_strdup_printf("/soc/pci@%"HWADDR_PRIx, + s->memmap[VIRT_PCIE_ECAM].base); qemu_fdt_add_subnode(ms->fdt, name); =20 qemu_fdt_add_subnode(ms->fdt, "/chosen"); --=20 2.49.0