From nobody Mon Feb 9 12:58:14 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=reject dis=none) header.from=sifive.com ARC-Seal: i=1; a=rsa-sha256; t=1765471129; cv=none; d=zohomail.com; s=zohoarc; b=JHEILXafYTwkecX6kZJpranWAgt3zSomUthOnsGzp1xG41QnOaNOb1BGEzUhz8k7H9L4+JPBakFBj4RLbS6mJiPaCn/kxYun6GIe+r0PyHtuoC+e8t/62j6pbeE3X81qHUJOi4HYE/JpLD4YTI/LfkikiaxLmmDtl7FVd4IaSVo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765471129; 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=pFjzAt3V16vj8pMOvPT4tfpSGw4vX8nwSrhUGNpwdlI=; b=NPqqvOpYk0uKvck4KlxagFtiXX0oBOWgeYXAw8bcqIon0iAGTNG5XYsB0d4NEg8kglyPWBt1kK5KCcfS0lpyvuzqhyaKOtSKhvOTpZdCRSsXU4sNH7eBqzQ1Cov6HgwCxID0ej1MzQWQhh9ScK3ztoE19w0mCgpD4DckZtDk0ck= 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=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1765471129557657.2511162811953; Thu, 11 Dec 2025 08:38:49 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vTjgc-00034N-IA; Thu, 11 Dec 2025 11:38:38 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTjga-00032w-JR for qemu-devel@nongnu.org; Thu, 11 Dec 2025 11:38:36 -0500 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 1vTjgZ-0003t9-59 for qemu-devel@nongnu.org; Thu, 11 Dec 2025 11:38:36 -0500 Received: by mail-pl1-x631.google.com with SMTP id d9443c01a7336-29806bd47b5so1846325ad.3 for ; Thu, 11 Dec 2025 08:38:34 -0800 (PST) Received: from hsinchu16.internal.sifive.com ([210.176.154.34]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29eea016c63sm28962965ad.48.2025.12.11.08.38.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Dec 2025 08:38:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; t=1765471113; x=1766075913; 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=pFjzAt3V16vj8pMOvPT4tfpSGw4vX8nwSrhUGNpwdlI=; b=CX8R2dOQxXYUM4Pc3uvoSMPFKTV1yNF9Uy75eKeUuAtc4PTjMOT4TLmiY/BdfJ/lEA AAkoOs82CO30NZsDLfHbEtHbVNMEulDNyrxZaAKSirNfLaIvYmdhq+PSF6KnYve1oH7E yRYgqp9Pv3rH/I7p8vp5T2Ui3s42PYY6I95pZQqZwlKGbfb2ghCT073YAMK7cmWdFjAM S+Qm8b25ismR2eyUfzhW4hHhL5kFY+QuL45sP/NlOQG3mBo+QUmSwR5H+5gEJp3H8gb/ n4sQ6aYB2EbCc7DYq60rWM7egYYdjJOQDomqRrwBHrjHoWmeA0E9xpQ0tR72udlDx/9P m0yQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765471113; x=1766075913; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=pFjzAt3V16vj8pMOvPT4tfpSGw4vX8nwSrhUGNpwdlI=; b=OZCSKNo0q3cSv9YywhKhCC6IeiFg0p8+/VME6VSfdoamN2b7ZBgU6BQrBSeWIkSa6f TqE4M4ppuB0bFJwO7IoU/r8L6WXO8gFQBMz8E8ECnWqIIAsOQztU6KsTufn5kbLoad9S CGJ7n1dBmtAU5rClaxLc7kYXiCjNFfbZlxjgc79ck5bMOdNKnyCy5b/ESTkXbHLSjcjR Gm+bAQ2lIjwc3rxDphgJkYqKgdNhmxWtUeVi+eiZCUShkXSM1X3ia3baugB2kBz9y3wJ CiqDulXBMu5ZBclKYj0R4azTDEw0Gd/K890POxwLL7a8QwDYehXSeoV3GVGEdhzOTWu0 YA6Q== X-Gm-Message-State: AOJu0Yxs0U4XQR4Z9Di/EqXyDCgbr1J4tUQ28/S2o6CHNVXINd9sYJBh nVBBboCau8rJyUqVQR0YHA0b3mbpCEsXC+8BfG16J5MU3buMI/4Y+O6FwQyZn3ffkPvrpcDzj3v TN2e1EkIZ4eR+MEabOzsC/J1GWC9Es+jgU15+QQ5QfIUP8pVISb+U8MmowIikOHCW+Qgrk2efsR Z8O4i2VyhxlX7tFTTK8h6vfEi+18k88rTR53aiZZ8D19Q= X-Gm-Gg: AY/fxX6CwK4XqhcgPSFct4mqjrJN/BD6FuH4cWMiki8kPAy8XRPVmVt4NewvGK3mQ0w 7riauEKiQ4ugEPcDZWAtvc0qnIvlFaEP9VtOKkaUSgk3D3z+KhCi09yv7d+PnLObNqU9YtlNg75 lM1IysPLZ/Ndw7s2ubn9nrsePQQXXlxYP0QHaxCEXxPuCLzkY1Thmc75z4qrnAYzLI2YcudguAa X3YZVUxoErOYsGiVKPyJP0BhA02HEPBIMl8GF3eKUxrjaNasE5r3PlG2czEAFNtUvWS1bZm4Yhk zp5ObIGxRNpFfHZuv/p9ZmhJxRILnimKMoXaG6Dp55uWFA8OsBMdN5SK1STjuchbVwt1GdyCPzl TDDh5z/tqpb3GpdqCq4yx38rbKBRjVu3K7w0ZNiv1bJhQ5bsuDUHjyqLgJT0uJ17mrg5rM7/0TD EPDh5CsFLEZnOMeB6yJJ0EW/NxUJFzVFnaQs9Htg== X-Google-Smtp-Source: AGHT+IHLQi81XNmf60owEyBqaCe2pQozfVYqDqUGIyU9jOmygm9KTR5wX+2KzxEaQYsDwwZnCgECCw== X-Received: by 2002:a17:902:e54f:b0:29d:9f5a:e0d1 with SMTP id d9443c01a7336-29ec27be9f9mr67461425ad.27.1765471113097; Thu, 11 Dec 2025 08:38:33 -0800 (PST) From: frank.chang@sifive.com To: qemu-devel@nongnu.org Cc: Palmer Dabbelt , Alistair Francis , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , qemu-riscv@nongnu.org (open list:RISC-V TCG CPUs), Yong-Xuan Wang Subject: [PATCH v3 1/6] target/riscv: fix address masking Date: Fri, 12 Dec 2025 00:38:20 +0800 Message-ID: <20251211163826.3998266-2-frank.chang@sifive.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251211163826.3998266-1-frank.chang@sifive.com> References: <20251211163826.3998266-1-frank.chang@sifive.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=frank.chang@sifive.com; helo=mail-pl1-x631.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @sifive.com) X-ZM-MESSAGEID: 1765471131900158500 Content-Type: text/plain; charset="utf-8" From: Yong-Xuan Wang The pmlen should get the corresponding value before shifting address. Signed-off-by: Yong-Xuan Wang Reviewed-by: Daniel Henrique Barboza --- target/riscv/internals.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/riscv/internals.h b/target/riscv/internals.h index 172296f12e2..9b3f01144d2 100644 --- a/target/riscv/internals.h +++ b/target/riscv/internals.h @@ -203,8 +203,8 @@ static inline target_ulong adjust_addr_body(CPURISCVSta= te *env, if (!is_virt_addr) { signext =3D riscv_cpu_virt_mem_enabled(env); } - addr =3D addr << pmlen; pmlen =3D riscv_pm_get_pmlen(pmm); + addr =3D addr << pmlen; =20 /* sign/zero extend masked address by N-1 bit */ if (signext) { --=20 2.43.0 From nobody Mon Feb 9 12:58:14 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=reject dis=none) header.from=sifive.com ARC-Seal: i=1; a=rsa-sha256; t=1765471172; cv=none; d=zohomail.com; s=zohoarc; b=kviQH7HeF8EvXtkKww/q5tybRmLwwJm38BG9PhnkfO5TjXaW5DH5TOCQmFS+rNxMM2Pgt4OjUJj7yVm3yvMtFr2jxcwWnSTvR/iYFF0Z7iSF8iT00bmeaZ1ltjAhKV3Aemt8N0I8yz/pqEWh2xc630gqfYiOoOLLsbVl4OeMXcI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765471172; 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=UVWFqoOUqt7aIczGI8aZPPXvdgXYb1Y6uc2z33+iKKs=; b=LFORSQd0IdLP1fxCr+CgZ/i6bCPqriZekoEgn268tKGIFer9iPVe3XXiG/J0eMVRdIK9BvH92HZQ5ZbmRAGkqZXbEa0ThFUw5uQFrvKQaYoIvz95HxSCvuV1hglLONLn/VSAkq4u/il33f9cTxvhYkKQjXz2l7naRtfqaP96H4A= 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=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1765471172387162.18462813208077; Thu, 11 Dec 2025 08:39:32 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vTjge-00035F-Nq; Thu, 11 Dec 2025 11:38:40 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTjgc-00034W-Tj for qemu-devel@nongnu.org; Thu, 11 Dec 2025 11:38:38 -0500 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 1vTjgb-0003uM-Dr for qemu-devel@nongnu.org; Thu, 11 Dec 2025 11:38:38 -0500 Received: by mail-pl1-x62f.google.com with SMTP id d9443c01a7336-297dd95ffe4so2732595ad.3 for ; Thu, 11 Dec 2025 08:38:37 -0800 (PST) Received: from hsinchu16.internal.sifive.com ([210.176.154.34]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29eea016c63sm28962965ad.48.2025.12.11.08.38.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Dec 2025 08:38:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; t=1765471116; x=1766075916; 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=UVWFqoOUqt7aIczGI8aZPPXvdgXYb1Y6uc2z33+iKKs=; b=F2uIKD0F+M/lbcc477As8hd7Wu+kAONxki5SnVWPSKOJwyz9wdJ4Eihm+7NmccoCl1 cD+iMCqIWpfZxf6ApJYuCLoU2Czmj6+PGyjYqeM0ez8mBuBZ3RN6MRlhdNGU3rGYE0OY kcaHYpmOf2F2Soqmct3EhSlomfq2RsmGEuw1sEi7baDvKbHcUZpayCoD3nQwwDhKpwip ikdzEoYdDPH5oG+k4t/EcJibQCu5ZcGN9nudcMasmejdNyL+ocCpBvGpSXIHWiGmxa4H lEqR0OPBC2g2Gl86H3VxEBVvfJIPY/BmlspsjOYTJ3i1tbpHLA7SrGqG1Vr5DoR+tOMK og4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765471116; x=1766075916; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=UVWFqoOUqt7aIczGI8aZPPXvdgXYb1Y6uc2z33+iKKs=; b=e+8QsPxdSEkUDXySy7ph4efqwptWzXidTTeKvTBs/4xSjM8jd7YGCN/VfqX0gsBkaP sHwm9qyowZpJCso58i/u6t5ofBjRGBsDTVwx4z9U7K6JXH2M0YV39YsyC4UF2i2KFrQX SHlxApdpLszFUEhua3AQbba7ntY85eUgPThxpSNhuWTGvVU7lv1FoDmK43tn7kMitX5y tXCFigua/d4VWa55+JIs+C9jkvtl9RhoVAofthtYGpKiJDuG9vGsgxWJidON6garXXUz 4CLxQmxET7sUoLwO3Mz+jt45jrPE3HoYJJNvmtSPkLdYg4tKErLj2Q2G2tXlL8a/JhrL oj+g== X-Gm-Message-State: AOJu0YxP9AEwc71ItSxcxZahV1e4nUIrs1yCl90pWngzIfWN8koz5MlI MO/4303VVs+hdfSdsaOX6DSLxgdGPmkVB1M9HEHKafaIHGAvv8samzhC2CzxlF38sFkuyjAeA4I OxAXDQa11yOCK7lbx0IXRSN7nXniXI6q++Z8rTrahnWwjsqmlxpUOqOcf52RdGm3d7ivdXo5cGC BepD1OGu18QQk8EjeQU3tiGhPC3lPzLlRnTVoGgVhVWmM= X-Gm-Gg: AY/fxX7vzZmREqCHF+v5hGYLhT2izOvLkO+mfwqKnKRBoV/UI74y+AiL2SJK5DVNJQa HDE5aKcgYzRInuNitPoPdmr3Dv1RmfaNQSRnOjvvRRbk2gMGPV5kIw8XNE3eT8PfqBwD6xDpRdk RpwY8CoHZ0sM0XVtzitkhiQOWQS4RsnSqg6rbGXXydw7peRaafBlTa64QukVpiOuiNz3g4tuyvr lMDL8bqdfCdHWOEK1KDEtlpULRJA4oxOhhjNKrk5HfotuU3J/OHcSJW66oWn6fatdEtSUZ20ro8 p9Boh78adcy/G0uDJushFf00Z6dwxyzmXelC3jVmizVQKx5/DYis3Y5d5weKDMJTofV562P4hke QEKpSzlf0v3/lTEUGC76+l14mu5XXJmdLz8maY7TTcBaUeLRjo0pSJI/M2rEutiyImY7B4hwpAP CzVl8U2COjUpPQ64XwvXoYrQU2ibCCG6a1Zvu8XgwxgRVwXdpj X-Google-Smtp-Source: AGHT+IGZx9jS4SSwtn/bgeFbQTrd376w9Cr/XzpWoKbZ577lS7HoTpN0dihv61pW9p49yYnBlIA25A== X-Received: by 2002:a17:902:e784:b0:297:f0a8:e84c with SMTP id d9443c01a7336-29ec28030b9mr73060695ad.52.1765471115390; Thu, 11 Dec 2025 08:38:35 -0800 (PST) From: frank.chang@sifive.com To: qemu-devel@nongnu.org Cc: Palmer Dabbelt , Alistair Francis , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , qemu-riscv@nongnu.org (open list:RISC-V TCG CPUs), Frank Chang Subject: [PATCH v3 2/6] target/riscv: Add a helper to return the current effective priv mode Date: Fri, 12 Dec 2025 00:38:21 +0800 Message-ID: <20251211163826.3998266-3-frank.chang@sifive.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251211163826.3998266-1-frank.chang@sifive.com> References: <20251211163826.3998266-1-frank.chang@sifive.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=frank.chang@sifive.com; helo=mail-pl1-x62f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @sifive.com) X-ZM-MESSAGEID: 1765471173969158500 Content-Type: text/plain; charset="utf-8" From: Frank Chang This helper returns the current effective privilege mode. Signed-off-by: Frank Chang --- target/riscv/cpu.h | 37 +++++++++++++++++++++++++++++++++++++ target/riscv/cpu_helper.c | 15 +++++---------- 2 files changed, 42 insertions(+), 10 deletions(-) diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index 8899bf7667a..f59052fe7dc 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -799,6 +799,43 @@ static inline RISCVMXL riscv_cpu_sxl(CPURISCVState *en= v) } #endif =20 +/* + * Returns the current effective privilege mode. + * + * @env: CPURISCVState + * @priv: The returned effective privilege mode. + * @virt: The returned effective virtualization mode. + * + * Returns true if the effective privilege mode is modified. + */ +static inline QEMU_ALWAYS_INLINE +bool riscv_cpu_eff_priv(CPURISCVState *env, int *priv, bool *virt) +{ + int mode =3D env->priv; + bool virt_enabled =3D false; + bool mode_modified =3D false; + +#ifndef CONFIG_USER_ONLY + if (mode =3D=3D PRV_M && get_field(env->mstatus, MSTATUS_MPRV)) { + mode =3D get_field(env->mstatus, MSTATUS_MPP); + virt_enabled =3D get_field(env->mstatus, MSTATUS_MPV) && (mode != =3D PRV_M); + mode_modified =3D true; + } else { + virt_enabled =3D env->virt_enabled; + } +#endif + + if (priv) { + *priv =3D mode; + } + + if (virt) { + *virt =3D virt_enabled; + } + + return mode_modified; +} + static inline bool riscv_cpu_allow_16bit_insn(const RISCVCPUConfig *cfg, target_long priv_ver, uint32_t misa_ext) diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index dd6c861a90e..da6e2d8fe3a 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -45,19 +45,14 @@ int riscv_env_mmu_index(CPURISCVState *env, bool ifetch) #else bool virt =3D env->virt_enabled; int mode =3D env->priv; + bool mode_modified =3D false; =20 /* All priv -> mmu_idx mapping are here */ if (!ifetch) { - uint64_t status =3D env->mstatus; - - if (mode =3D=3D PRV_M && get_field(status, MSTATUS_MPRV)) { - mode =3D get_field(env->mstatus, MSTATUS_MPP); - virt =3D get_field(env->mstatus, MSTATUS_MPV) && - (mode !=3D PRV_M); - if (virt) { - status =3D env->vsstatus; - } - } + mode_modified =3D riscv_cpu_eff_priv(env, &mode, &virt); + uint64_t status =3D (mode_modified && virt) ? env->vsstatus : + env->mstatus; + if (mode =3D=3D PRV_S && get_field(status, MSTATUS_SUM)) { mode =3D MMUIdx_S_SUM; } --=20 2.43.0 From nobody Mon Feb 9 12:58:14 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=reject dis=none) header.from=sifive.com ARC-Seal: i=1; a=rsa-sha256; t=1765471186; cv=none; d=zohomail.com; s=zohoarc; b=hMxMnmf7F6Pt5gLrSkrZy0MB6em8jPr6ZmqGhIYRseiWGi0c+eUClX8v+0FgQwBLR8e5ifp5qhFV/nO3PSUw8AFEbxwhxN64dO+9YUGL9jL6iTrsB4d0dVZZ6gmTyy3gptfWfdvzeLLsM8K0WvkHsvSTNIDwRwQnnH9tTt13vYU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765471186; 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=3DRRc31U2dAwfcZXx7v8kYgdUw1nw6KYRX9k66akdTU=; b=Kxf3d3p1TP9C0aWyVWnIrOrSREH2ujUq3YWEz6OJ8PC5Kh9GUaN3l8d9lnD0kPOK21YnoZVs8caOnbGSIWyhCXcC9OBLGcMGbWROFVRyitVOgm09ye19mm+7WrSOCCGJOTY2CeKleOsCF7P0FlNeS0O7xOFLPGw3U4EXETCXDqk= 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=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1765471186759311.7448780869945; Thu, 11 Dec 2025 08:39:46 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vTjgg-00035q-19; Thu, 11 Dec 2025 11:38:42 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTjgf-00035h-0b for qemu-devel@nongnu.org; Thu, 11 Dec 2025 11:38:41 -0500 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 1vTjgd-0003v4-GN for qemu-devel@nongnu.org; Thu, 11 Dec 2025 11:38:40 -0500 Received: by mail-pl1-x633.google.com with SMTP id d9443c01a7336-29f0f875bc5so2796965ad.3 for ; Thu, 11 Dec 2025 08:38:39 -0800 (PST) Received: from hsinchu16.internal.sifive.com ([210.176.154.34]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29eea016c63sm28962965ad.48.2025.12.11.08.38.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Dec 2025 08:38:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; t=1765471118; x=1766075918; 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=3DRRc31U2dAwfcZXx7v8kYgdUw1nw6KYRX9k66akdTU=; b=mgDRc1++O/McAuKrP/w3DzEJB1WEG46KWrudq//rtMSWPwJm+6JuARlfPYDFopCqG9 x85mLFvXkT+vZwn4LUakqrQzjXQHsoidcmRvOI0nvqG3O2Wx9GE+ip0AbF4EKcvYhJQB KrD2HBZIRLHkcji7vktbvYiJ86UxAkJBihyvOkev3kAztoBrUCddO5BYWYj511OjmJj6 GgBL1qVX+TuWbYCwgKm7wLlO6eHVhygHC9LHQWa3nZ8bdwHcYNvbvaPGtOrsW25wNye7 yO8FfKEQiG+59PBVmtpbthFZF7IE9B3JCAiedZuxaBYxfcfrCdE2hYHxnuhe1c01ei0E MW+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765471118; x=1766075918; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=3DRRc31U2dAwfcZXx7v8kYgdUw1nw6KYRX9k66akdTU=; b=dLfyGcv4skcLWyTc07C7Y17QhoAFphVtaeVtRcV7bvTpFmNDRJqeD+1bk/c1u8+e38 dCgkOAuwpxj0L9G7n1QXXRoTYR7sLFC6ChlIfOZTcqePZQmKc59/u5/7n56KQZuphn+0 F+D8Ei22nUJkLkOlHSFBpuiLy01YJxmTFNjnViHZi846vpQeshC9qO1xMhif+WRRkMc0 lkRohxFWeKd8FfaPrQ7tugsxmxrhWf0Hcqw24+XKVy7F8k2Q1KSIXw8osT4JdtGil3h/ QwJzlcNzFaIm9uB6rCPQz7p71NaPMbn3c7UDJvKincINxaejw6YVI36LGeFZgV+LB+Cf 51qw== X-Gm-Message-State: AOJu0YzkkrppnBOpEX3JMuQ5h+gByudZweiHsfn7WMd9jh515Ha2eNWK eeguStt6T7Xi69/YFzf7vVf1LwjLZATfqhvzkgfERtf3ziiJER4Wl4K6und9wNAfIJUdRjXlrA5 DwgehHSIURclvBb79oOdVJSlZ4mDo4Gbe0B3LmQHMh7I7SDwrYc+lpugKmw1RHLqlpIxy/KPlBh SkSDpO2zzZQmGWdKHfqT1gTeE4yejr/rnQ3eEpK34HwDg= X-Gm-Gg: AY/fxX49//hS92ib9xjYu7LKbDU/5TbKy4kc/09RWGZCVeQhXN6IgdwrjF5sCnQwQmD k2uTqViqfIE0ONG1hjeGnC+NR9fGeFTXAnkRWmygjPPqUBQ7mdu1kmggNMFjVGf90tDBs9XCfgx eu4LQqfwq9dgNOBeMa+cEBKKEyePrIuSy0uciMibuiNfD/KDZMZ1ljVnV7OYFoD51VZfr80wq4h 7UX4jpFzT2PlTniZtv7ogj4b2fWkTNRLcyoyytl8OTBHAEK7H5QpCizurkkQNYZNwsY4zc5k71h F9KltVkmu5LUAW4/ca/tgIFQqAGCQwnq3wV/7Lmu8xK+YGwI0oXwLNfT3gId4vpiZIps8Xu1l0D DWS0LrZUzl1LUkwXxmPzlCuItgYC/kDTW9SYZ6Ptv3cP3fRIKL5/VIxXW22YBL4KK7RCNg4eioO shgQeoUeEIgiP7XixK3q3J1Y7ufPpdEiZFKl5DBw== X-Google-Smtp-Source: AGHT+IFAkqOvMpE/L5/EtWhkjhwaeEOsUGexj6iq7CAkZtAc53oxFWH7CUOMfSl3G6ULCILTYAwnEQ== X-Received: by 2002:a17:903:3d0f:b0:296:549c:a2b with SMTP id d9443c01a7336-29ec229aec7mr63252875ad.3.1765471117586; Thu, 11 Dec 2025 08:38:37 -0800 (PST) From: frank.chang@sifive.com To: qemu-devel@nongnu.org Cc: Palmer Dabbelt , Alistair Francis , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , qemu-riscv@nongnu.org (open list:RISC-V TCG CPUs), Frank Chang Subject: [PATCH v3 3/6] target/riscv: Fix pointer masking PMM field selection logic Date: Fri, 12 Dec 2025 00:38:22 +0800 Message-ID: <20251211163826.3998266-4-frank.chang@sifive.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251211163826.3998266-1-frank.chang@sifive.com> References: <20251211163826.3998266-1-frank.chang@sifive.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=frank.chang@sifive.com; helo=mail-pl1-x633.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @sifive.com) X-ZM-MESSAGEID: 1765471187996158500 Content-Type: text/plain; charset="utf-8" From: Frank Chang mstatus.MPV only records the previous virtualization state, and does not affect pointer masking according to the Zjpm specification. This patch rewrites riscv_pm_get_pmm() to follow the architectural definition of Smmpm, Smnpm, and Ssnpm. The resulting PMM selection logic for each mode is summarized below: * mstatus.MXR =3D 1: pointer masking disabled * Smmpm + Smnpm + Ssnpm: M-mode: mseccfg.PMM S-mode: menvcfg.PMM U-mode: senvcfg.PMM VS-mode: henvcfg.PMM VU-mode: senvcfg.PMM * Smmpm + Smnpm (RVS implemented): M-mode: mseccfg.PMM S-mode: menvcfg.PMM U/VS/VU: disabled (Ssnpm not present) * Smmpm + Smnpm (RVS not implemented): M-mode: mseccfg.PMM U-mode: menvcfg.PMM S/VS/VU: disabled (no S-mode) * Smmpm only: M-mode: mseccfg.PMM Other existing modes: pointer masking disabled Signed-off-by: Frank Chang Reviewed-by: Daniel Henrique Barboza --- target/riscv/cpu_helper.c | 51 +++++++++++++++++++++++++++++++++------ 1 file changed, 44 insertions(+), 7 deletions(-) diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index da6e2d8fe3a..4347153d794 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -131,13 +131,47 @@ bool riscv_env_smode_dbltrp_enabled(CPURISCVState *en= v, bool virt) #endif } =20 +/* + * Returns the effective PMM field. + * + * @env: CPURISCVState + * + * The PMM field selection logic for each effective privilege mode + * is as follows: + * + * - mstatus.MXR =3D 1: disabled + * + * - Smmpm + Smnpm + Ssnpm: + * M-mode: mseccfg.PMM + * S-mode: menvcfg.PMM + * U-mode: senvcfg.PMM + * VS-mode: henvcfg.PMM + * VU-mode: senvcfg.PMM + * + * - Smmpm + Smnpm (RVS implemented): + * M-mode: mseccfg.PMM + * S-mode: menvcfg.PMM + * U/VS/VU: disabled (Ssnpm not present) + * + * - Smmpm + Smnpm (RVS not implemented): + * M-mode: mseccfg.PMM + * U-mode: menvcfg.PMM + * S/VS/VU: disabled (no S-mode) + * + * - Smmpm only: + * M-mode: mseccfg.PMM + * Other existing modes: disabled + */ RISCVPmPmm riscv_pm_get_pmm(CPURISCVState *env) { #ifndef CONFIG_USER_ONLY - int priv_mode =3D cpu_address_mode(env); + int priv_mode; + bool virt; + + riscv_cpu_eff_priv(env, &priv_mode, &virt); =20 - if (get_field(env->mstatus, MSTATUS_MPRV) && - get_field(env->mstatus, MSTATUS_MXR)) { + if ((priv_mode !=3D PRV_M && get_field(env->mstatus, MSTATUS_MXR)) || + (virt && get_field(env->vsstatus, MSTATUS_MXR))) { return PMM_FIELD_DISABLED; } =20 @@ -149,12 +183,14 @@ RISCVPmPmm riscv_pm_get_pmm(CPURISCVState *env) } break; case PRV_S: - if (riscv_cpu_cfg(env)->ext_smnpm) { - if (get_field(env->mstatus, MSTATUS_MPV)) { - return get_field(env->henvcfg, HENVCFG_PMM); - } else { + if (!virt) { + if (riscv_cpu_cfg(env)->ext_smnpm) { return get_field(env->menvcfg, MENVCFG_PMM); } + } else { + if (riscv_cpu_cfg(env)->ext_ssnpm) { + return get_field(env->henvcfg, HENVCFG_PMM); + } } break; case PRV_U: @@ -171,6 +207,7 @@ RISCVPmPmm riscv_pm_get_pmm(CPURISCVState *env) default: g_assert_not_reached(); } + return PMM_FIELD_DISABLED; #else return PMM_FIELD_DISABLED; --=20 2.43.0 From nobody Mon Feb 9 12:58:14 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=reject dis=none) header.from=sifive.com ARC-Seal: i=1; a=rsa-sha256; t=1765471196; cv=none; d=zohomail.com; s=zohoarc; b=jAO8WvNSSWc9PQ1jxnYZwo9zHJpn5jzwk6v9cUHMhSvVy5HY0BMHToygr4OssPQ1diuG6oA79boz8oZjOI7Z+7zPyYmzimff/gP+XYZyN09APw+IwYWuNYiOXhlBhMOqpudqPTDmQ/jan5QEaY33mH9AEp0NDLBIYuzQBbJMEbs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765471196; 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=8wUNshzy7TiVfB+mByD3i/H6Ikd2eT08vib1DJFSU7w=; b=a26dO4FgirSxLk/nXc79p6NseFRjYn9FbRSfo1NAjQ+T6EETTXgFK2sUnLPc7kj4VPVmAJ+6zdqRCJe823Ra7Htfnu78XftwzqxBIEyQS2ryQsahsBgbcGNKzkp8W+tGN/b4OBUQnO0jTCF+M5HoPe7eYClgti0MG1Dd7o1cqiw= 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=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1765471196911609.5934810618985; Thu, 11 Dec 2025 08:39:56 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vTjgi-000373-Mi; Thu, 11 Dec 2025 11:38:44 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTjgh-00036T-5q for qemu-devel@nongnu.org; Thu, 11 Dec 2025 11:38:43 -0500 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 1vTjgf-0003vb-Pt for qemu-devel@nongnu.org; Thu, 11 Dec 2025 11:38:42 -0500 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-29845b06dd2so3362335ad.2 for ; Thu, 11 Dec 2025 08:38:41 -0800 (PST) Received: from hsinchu16.internal.sifive.com ([210.176.154.34]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29eea016c63sm28962965ad.48.2025.12.11.08.38.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Dec 2025 08:38:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; t=1765471120; x=1766075920; 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=8wUNshzy7TiVfB+mByD3i/H6Ikd2eT08vib1DJFSU7w=; b=AVPC3EoM5Guw6zvFZaYVJKpqh70qyvHyuEVlJnIkHmdeADOeREeZkVSi89HuVurTNc j6yXJcSmp+NmjwnN0CGsfGyANDTnLhIBFP4fCCqhFQyZ4GlIQ16Vns1zPrp8R//76s8g Bwh2FwxRhvD2b2kukpvg616F8GaZH5TItzYU2DEqza5JO6urqwvzxHcFciP/SaajHF4C MKmYBLEgoAuLFnWSm/a3x/CV2tmrcZBtHZ6aTJVoC85xXQgSU9ZtRdE5y3dN4Il4NIAD PRj7YWn9alA9xj6P965kzEVX+Osq3yYr6sLvbJy7F1m6z+Ep85pghXFJLj7hfZx3jsWP HvIg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765471120; x=1766075920; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=8wUNshzy7TiVfB+mByD3i/H6Ikd2eT08vib1DJFSU7w=; b=C+w+tN5rFpA07gh20HuC94k6HlWg6J4GmUMz/up4j7nwOxXSLNlvI5b/y/VaTC4r3D j2yAzyVREFqQRekdHfaR10FR8YjK737NmhXlpRFhy35ydbWgaxfDhQdPL9Ri/oqxI2e0 sIw/sCGgf+QM6Plz1p5F8GGElJbpI0ogxyBu7MgE9fZVDL+HpduoL0mYP1bpdikniPTJ 7lV6HphpBptj8Hg44UBG8/fVQoJ5HDEaJbKge3KK5glZ15WtOmf/YYXE/Duz0e+qBW/c LEQeguhsxPf7W995xkom7/t0zIpvBR/WnbSE/sOobT2J9UwlpfQq/He64eJFUf4mdfds Bq6g== X-Gm-Message-State: AOJu0YyMRg5lFxIZCaD8xqFA/syFdtDkXPtHGblHFuqDdaydv4rz7QmA 1PJPJl3jGUfDp4H2FUb/Q4u8WPWZH1P1HbDdFekD3zk7i+phe8fMFOSaGmCjzop/o3oJsU1YVs9 JQsnA8fBZXT8HTfr+87LR715KpAeZXxoxa182zdGDlQ4ckNuxEDgUA5985wmmQbi3FUTAoTmr0y ErlNrQsm6SDQoSQ4bGhZEJMWfPsTf3qbFD3xcvJ7VEmjI= X-Gm-Gg: AY/fxX7qTIwIl9ru2yTaCCEhj99PGorqkUCuFLCcQ0D1QPz2Wl5W6gDQV5m1IEsMUiq Ovbp8bSCbJk2ACtvutIMH2bwcQ7C4zki203n8ZeZHBI9y2iupXyq5+H4F1fbnpw92mmGwHmg2e3 mMQxoOV4SxKWZxeQGyJLmZYbL9J+FGVMQ7/TFuf5UMFZfZiJxN3AiwTsgGAwYXaTg16+cM9C8ZH yQrrWVMKin2GL959KFvSTgs7FfhX0EOqhYBud40GSG0rDiVlqEAWNCOgL1J5dV9Wf4470CZopKy clw9Ux0vLvOrU6ENqyGy4ywIMYHLMygp52Mxmn7FEbkYsCv33/k6agcWiXBGwih3eEK2hRaydf9 JFWX9hpxkDgnTPz0+AqSJw/5Mep/RwxyHhN593aczpDQeFKQY93macpFkKrYFdXngXJTwxfV8nG N3BHnHmo5KU7wBHsKtyNjkiv1rDOSEFDsWOjm82Ob3o50RXOqq X-Google-Smtp-Source: AGHT+IGSsHxPXGNLabwg+xZjalN6xJlpeGIGpuODBIb9IMh3sO0GuZUgbmNjjCYzZ+7kdpuJGRuk2A== X-Received: by 2002:a17:903:1987:b0:295:6d30:e268 with SMTP id d9443c01a7336-29ec27f12f2mr73100675ad.59.1765471119940; Thu, 11 Dec 2025 08:38:39 -0800 (PST) From: frank.chang@sifive.com To: qemu-devel@nongnu.org Cc: Palmer Dabbelt , Alistair Francis , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , qemu-riscv@nongnu.org (open list:RISC-V TCG CPUs), Frank Chang Subject: [PATCH v3 4/6] target/riscv: Fix pointer masking for virtual-machine load/store insns Date: Fri, 12 Dec 2025 00:38:23 +0800 Message-ID: <20251211163826.3998266-5-frank.chang@sifive.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251211163826.3998266-1-frank.chang@sifive.com> References: <20251211163826.3998266-1-frank.chang@sifive.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=frank.chang@sifive.com; helo=mail-pl1-x636.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @sifive.com) X-ZM-MESSAGEID: 1765471198280158500 Content-Type: text/plain; charset="utf-8" From: Frank Chang The effective privilege of explicit memory accesses made by virtual-machine load/store instructions (HLV.* and HSV.*) is controlled by hstatus.SPVP. mstatus.MPRV does not affect these virtual-machine load/store instructions. Signed-off-by: Frank Chang --- target/riscv/cpu_helper.c | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index 4347153d794..8f2a7234184 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -217,16 +217,23 @@ RISCVPmPmm riscv_pm_get_pmm(CPURISCVState *env) RISCVPmPmm riscv_pm_get_virt_pmm(CPURISCVState *env) { #ifndef CONFIG_USER_ONLY - int priv_mode =3D cpu_address_mode(env); + int priv_mode; + + if (!riscv_cpu_cfg(env)->ext_ssnpm || + get_field(env->mstatus, MSTATUS_MXR) || + get_field(env->vsstatus, MSTATUS_MXR)) { + return PMM_FIELD_DISABLED; + } + + priv_mode =3D get_field(env->hstatus, HSTATUS_SPVP); =20 - if (priv_mode =3D=3D PRV_U) { - return get_field(env->hstatus, HSTATUS_HUPMM); + if (priv_mode =3D=3D PRV_S) { + /* Effective privilege mode: VS */ + return get_field(env->henvcfg, HENVCFG_PMM); } else { - if (get_field(env->hstatus, HSTATUS_SPVP)) { - return get_field(env->henvcfg, HENVCFG_PMM); - } else { - return get_field(env->senvcfg, SENVCFG_PMM); - } + /* Effective privilege mode: VU */ + return (env->priv =3D=3D PRV_U) ? get_field(env->hstatus, HSTATUS_= HUPMM) : + get_field(env->senvcfg, SENVCFG_PMM); } #else return PMM_FIELD_DISABLED; --=20 2.43.0 From nobody Mon Feb 9 12:58:14 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=reject dis=none) header.from=sifive.com ARC-Seal: i=1; a=rsa-sha256; t=1765471170; cv=none; d=zohomail.com; s=zohoarc; b=ARN6eQLCYJk7yzN74P2ZqD7Lr/d9PzF5U1FSyjjjypy8jae0aNTOJWM2Vg5ChBcYSGu2DKnbFrckw9A73ELIm9HBn+fngeym0kPXUJoS6tPONg30pg1IinLmevrvgz/cfsTAfI5o2obZ+8e6FUJQ9hToGY2Ft6y3UT2pX73XlYY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765471170; 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=qGa2OReBRhkwkplSgIby1jlHjdvdP9VfQlGsI8OAwZE=; b=YyOc8JZU0/mACGU90pU+2wrIkkJUgl++++8TDenslDIPo1pAziT59srnk519ASMUzaxsnUW0VDlYkeGlgigswvqXFc7QUlvTEa0roiHkkjTMpQAfhzPC1Xq6aVwAiaSFsTuUD60AfVhErvVmBaLTsKJsvKE+dsVlWcrP/QtYocs= 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=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1765471170252113.4229243931826; Thu, 11 Dec 2025 08:39:30 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vTjgl-00038O-6B; Thu, 11 Dec 2025 11:38:47 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTjgj-00037U-HY for qemu-devel@nongnu.org; Thu, 11 Dec 2025 11:38:45 -0500 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 1vTjgi-0003vy-3l for qemu-devel@nongnu.org; Thu, 11 Dec 2025 11:38:45 -0500 Received: by mail-pl1-x632.google.com with SMTP id d9443c01a7336-29568d93e87so2611725ad.2 for ; Thu, 11 Dec 2025 08:38:43 -0800 (PST) Received: from hsinchu16.internal.sifive.com ([210.176.154.34]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29eea016c63sm28962965ad.48.2025.12.11.08.38.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Dec 2025 08:38:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; t=1765471122; x=1766075922; 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=qGa2OReBRhkwkplSgIby1jlHjdvdP9VfQlGsI8OAwZE=; b=iEbtf+vmpfksH3WsuSRQyujfOLexaX1+h1EBsk7XydRIV0j3Ceu53T7i3h54owczqX sri9kCmxDF3VBIEkxh4HSAzITDpehfHH5Z08WD4uHU1gsFPSHDHChOl3OjCRODL6+t3K 91tTUWGZCp6mpdU2gsM+icB70UQrW3a6MRrJ5zdk4z66nymzg3lD2i8mXymIS6mtFUvo UzwzvGyAcl41ZPyOrBhf92htNhcLnk1HPmWOlowrAeN9b2V0xlMRytE9ubQuLV4FE+TE M2gps8qO4K3H3FwQvmFQGO/yuJRy17UzOzYTuDQmsTI0rEVKneJx8LNLvvV9MPPi42Wh 3HgA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765471122; x=1766075922; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=qGa2OReBRhkwkplSgIby1jlHjdvdP9VfQlGsI8OAwZE=; b=M/xVBjhbDIJTOXiRYrMegbUDcVHLcHXR4uvBtXYyBg5HpWDbzI0u5rut+Mv1aLhC/0 B4E6kQHpZVgqJUtWpT5GssdpZK3Zzl1IPKt3Bwk7wM3I8P6AipStAP+X14cBQXwB+XUn jQvEV7NKBRDzDlc3ufLm0vVKXNdarHaeP28rVeoqXgj0mwYhasxv5akOnE2G+ukeUysE H2XXc7vDudLIXgeqy4aB3axIge+soHUpWzZOxDWV9THkpfIOdbRERipPmijp5cSDBdN5 HcjqaFcC7EfUtY1mtldt9Jb20odGBGo7mBgMfZhkjDry+X6Zaq5K3BDe2xnmzil23GwJ lq+g== X-Gm-Message-State: AOJu0Yxk0GnduuUr6i0eT70XkxjAU34+/nPXNea+LHE1yNs5I6ZJQIvS PL4xJkP5u3Eoc1LT2ebprRJgFv4mQW3dWFyeaqf+DyrnSSGhVQak17sASyTQhxSIj+Y/KlY11jA dcA9aurXTxhBzcIHXHzWwwlYx4/qGR0oQ4ax59cOtpg4fz6DCBwgWhX3E+Uw9yLi5rkxMvQmmUK rzkI/aprLj+Cb/e+yeKqGVYVa9bx1cCfoj9AgCHswupb0= X-Gm-Gg: AY/fxX6XbB99zLnDrPhzKS8UJX6TdJ6wLtXbyAeuels9vqolm81WSox2TE/6EMhSafz zknOQI6mK67ea+kaMxEHpGAScyzqXcPxBOcJcaNg6GHPCtzPqC1OBE+1as3CdbwQDOrXOtYdg6W 1aSbXfKWUzuyNCbCGVJ3o6vCRlBxfwneHQRNQoFVj6r0TnxL3iHP3XmGvwSqSGcvjV0wdQKGGBW aK/0ji2JkLKs7zCDEIHaEthrgENEwal1Stog6+N4w2fAWHToaJrzXQePsI+1Xrfr+nwDAhEggMY mD0rtCKHhPcrW8bzezcQyReQUrtCqb0nGIevkYahvpsXQli+twhFHPupADOz/wsTjihcyi2mgPX Ph4lRh+GqlsvMpR/pp3v/bI0h22YtHb7mspDWTcAGkZKllHI462k/KzpsQ9NFA5XhfAsUcRi5FN XB/fMm+RJM0Mam/VBNDFLHruR59takIHW4C/Iufg== X-Google-Smtp-Source: AGHT+IFNSY3kHjK/SFmRZ61MXmehHFMngla/5U6zKFs/VrxrASW6dOzVPpQjU57Ss99sF+Rjbn7IWA== X-Received: by 2002:a17:902:e849:b0:29d:df04:fcc1 with SMTP id d9443c01a7336-29ec27d2be3mr69355345ad.53.1765471122075; Thu, 11 Dec 2025 08:38:42 -0800 (PST) From: frank.chang@sifive.com To: qemu-devel@nongnu.org Cc: Palmer Dabbelt , Alistair Francis , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , qemu-riscv@nongnu.org (open list:RISC-V TCG CPUs), Frank Chang Subject: [PATCH v3 5/6] target/riscv: Rename riscv_pm_get_virt_pmm() to riscv_pm_get_vm_ldst_pmm() Date: Fri, 12 Dec 2025 00:38:24 +0800 Message-ID: <20251211163826.3998266-6-frank.chang@sifive.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251211163826.3998266-1-frank.chang@sifive.com> References: <20251211163826.3998266-1-frank.chang@sifive.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=frank.chang@sifive.com; helo=mail-pl1-x632.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @sifive.com) X-ZM-MESSAGEID: 1765471171915158500 Content-Type: text/plain; charset="utf-8" From: Frank Chang Rename riscv_pm_get_virt_pmm() to riscv_pm_get_vm_ldst_pmm() to better reflect its actual usage. This function is used when checking the PMM field for virtual-machine load/store instructions (HLV.* and HSV.*), rather than for VS/VU modes. Signed-off-by: Frank Chang Reviewed-by: Daniel Henrique Barboza --- target/riscv/cpu.h | 2 +- target/riscv/cpu_helper.c | 2 +- target/riscv/internals.h | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index f59052fe7dc..b4cf86e4f61 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -883,7 +883,7 @@ bool riscv_cpu_is_32bit(RISCVCPU *cpu); =20 bool riscv_cpu_virt_mem_enabled(CPURISCVState *env); RISCVPmPmm riscv_pm_get_pmm(CPURISCVState *env); -RISCVPmPmm riscv_pm_get_virt_pmm(CPURISCVState *env); +RISCVPmPmm riscv_pm_get_vm_ldst_pmm(CPURISCVState *env); uint32_t riscv_pm_get_pmlen(RISCVPmPmm pmm); =20 RISCVException riscv_csrr(CPURISCVState *env, int csrno, diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index 8f2a7234184..f6856a10bb5 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -214,7 +214,7 @@ RISCVPmPmm riscv_pm_get_pmm(CPURISCVState *env) #endif } =20 -RISCVPmPmm riscv_pm_get_virt_pmm(CPURISCVState *env) +RISCVPmPmm riscv_pm_get_vm_ldst_pmm(CPURISCVState *env) { #ifndef CONFIG_USER_ONLY int priv_mode; diff --git a/target/riscv/internals.h b/target/riscv/internals.h index 9b3f01144d2..b17b661e2a8 100644 --- a/target/riscv/internals.h +++ b/target/riscv/internals.h @@ -190,7 +190,7 @@ static inline target_ulong adjust_addr_body(CPURISCVSta= te *env, =20 /* get pmm field depending on whether addr is */ if (is_virt_addr) { - pmm =3D riscv_pm_get_virt_pmm(env); + pmm =3D riscv_pm_get_vm_ldst_pmm(env); } else { pmm =3D riscv_pm_get_pmm(env); } --=20 2.43.0 From nobody Mon Feb 9 12:58:14 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=reject dis=none) header.from=sifive.com ARC-Seal: i=1; a=rsa-sha256; t=1765471201; cv=none; d=zohomail.com; s=zohoarc; b=h2OYx3J0dnDKDFIQgYkVj4olnXB9ZVJFXh+0EC2WqMcwR7pXRMRAMFI5KLAF4RbkGgsRWpkz9H69gUJdOY+dFUinm3r/e/c1ELohegWc2Mw/MbO5R2R2NccLScf2kyLWzMX0Mqf6ctpqDW/J3MIb/00c42/nIqCqJHttTPNvlTI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765471201; 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=8gMOHVXuY6juwq1/G/Cog0GEKPBUSSrmxKitrA4STZk=; b=j6hW+uJRfwCZ/Zf7ILv2DIkAcvXbBb3izz1espK2EZlr8rg7Ez/B9/X2rdR8TltIjwPRtfcTPrJ5DCTZFFZsGZeCxXrP5yF6PQNJkZDeLxdTjcA1kTyW7mHb7FoMYXwV8erG3DYg24ytz4NVlEBIN4JRZeAin2THouodQIwG8Ac= 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=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1765471201583828.9494779218837; Thu, 11 Dec 2025 08:40:01 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vTjgn-0003Bt-Ok; Thu, 11 Dec 2025 11:38:49 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTjgm-00038b-43 for qemu-devel@nongnu.org; Thu, 11 Dec 2025 11:38:48 -0500 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 1vTjgk-0003wN-HH for qemu-devel@nongnu.org; Thu, 11 Dec 2025 11:38:47 -0500 Received: by mail-pl1-x62d.google.com with SMTP id d9443c01a7336-29555415c5fso3063355ad.1 for ; Thu, 11 Dec 2025 08:38:46 -0800 (PST) Received: from hsinchu16.internal.sifive.com ([210.176.154.34]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29eea016c63sm28962965ad.48.2025.12.11.08.38.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Dec 2025 08:38:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; t=1765471125; x=1766075925; 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=8gMOHVXuY6juwq1/G/Cog0GEKPBUSSrmxKitrA4STZk=; b=F8mbBDqSitlEn7u3HeakwFraKTkrJcp4JjD2WMsitrmKtk1QYGX50C41GONticcKfO ujfEc6kDUmcoUxUCS60ysIguA61Wwzmyrhy2UNEA/gKSvchXUS425xjKpDxUf1vRwfak II4B5RwQrqv3B20QqyemlFVaSPkBB6jiBLFfFe3KIzuHhHB9J54ftAypbVRNzGoXf8eA r4tRWJStznSvZ/3Q5TKI/p980eGMPtuHocfx5ywiRV9qcRzfmNgAmo2d8mzDauhiOGVk g+TV30af/O2lZllRd9DtPE8NCUyBbAID/c9LCQxgm1iyNMCoKt2gcgdPEfhcuxB5W7Fn ixGg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765471125; x=1766075925; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=8gMOHVXuY6juwq1/G/Cog0GEKPBUSSrmxKitrA4STZk=; b=pcH7cN39aOmYC6tAdEtu6Nnr7LdhjhlZetKrZkuJWm85wYJ8e5dlcIizF48tCJNFqt Y0LMqNsj8wRgjXwPtoicdpGUZ6A4OOXAXZ/wmI673uDVSp4+a+qXLFkoMgC5qiqZHhta 9Brwc5dJ4eVqBywhN69PyW66nFt/OXf2Y4eVGeChx+mQCzKRe6mcO3Zn1UOCFMZg4bbG +yOYhVV/yQ69vtd54anJuVKQbk2eBfDRTgo0H9eyMp4O6T5gdPIVz+xvsKvjETCy1Xnm ey+m6Y82wOgM29JnmoZNtDMFzhcvt6dSInmJgX3M0afVPH5nUr8vSxuNQuJYifT6oIeM J73A== X-Gm-Message-State: AOJu0YzkG6qb91ZA6AIizlhvYqJ7O3h9OFdkf887g4dXmkhPSwqgoVT3 JaNnNAE4sOxe+fS1Tyi1XY0W/UFuMKYX/uepsg/NHESeR5FJMs1CIwze31qnGlXVGOniJC3mLKb /7PK/TDhU87mkJaxHxOpVtZE+hF7bOyAUi4/ofkwEoKtye8uHzs1NLlRwxn1/Me9h73K/iHaDw8 JF7FBI3Wg49PLvHsPVfJewhdbLgKWVHWwHCV2i2tMe7uY= X-Gm-Gg: AY/fxX4dXp+7jiH8apkkT7GaIgEmM31mHXhn1ay71FqpHNCXHI22katoyoFFLGv/sxZ GZ0ZnfVK8xnvgn9b0TvyyyPYeROOJhm0+Zy7QfHXYug+HeS4wzbfY9V9b9IsIOK/pyn4iczSaHW BmE2amIyCmmqWAB+6nOaEyQJnJeMjL3iB9DpHta4IEjB7bC9hB/0eFDFx52RPHt51pDvedXnlBo Rz6pQRl3qce03j88w2tjf0hp73FiLcy4/SkKLgGCdHZNY4LfJGBeaut9Ax+shSevF4Eza4nJq9P 1qJbMy4FMoKgxI4oXVkFBigsaCr/5gmPfyLESKNDg3/H7nP29bHJ3T6Vb/kLrCXVK0VKnazRQrx uW7bNMH6aUI5tIUoVloQkXCWfL7paBvLhzH+zaG4umQ8AbVx/XiRGOe6D4xJJOl3LosUwoayAs6 6T30RyJc8qI+1Tg/hew/mNUoK0pwq6ns7EamCFFj9iUptlitDZ X-Google-Smtp-Source: AGHT+IH2+yffI0un14sRzQKiXdPZgI2rB6HarL/M5bRWiSB/5EfBGCvgqjsdBycJAu6UiM44i9E3kw== X-Received: by 2002:a17:902:ce91:b0:29f:f44:cfc4 with SMTP id d9443c01a7336-29f0f44d7bdmr7661415ad.47.1765471124430; Thu, 11 Dec 2025 08:38:44 -0800 (PST) From: frank.chang@sifive.com To: qemu-devel@nongnu.org Cc: Palmer Dabbelt , Alistair Francis , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , qemu-riscv@nongnu.org (open list:RISC-V TCG CPUs), Frank Chang , =?UTF-8?q?Radim=20Kr=C4=8Dm=C3=A1=C5=99?= Subject: [PATCH v3 6/6] target/riscv: Fix pointer masking translation mode check bug Date: Fri, 12 Dec 2025 00:38:25 +0800 Message-ID: <20251211163826.3998266-7-frank.chang@sifive.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251211163826.3998266-1-frank.chang@sifive.com> References: <20251211163826.3998266-1-frank.chang@sifive.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=frank.chang@sifive.com; helo=mail-pl1-x62d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @sifive.com) X-ZM-MESSAGEID: 1765471201991158500 From: Frank Chang When running with virtualization in VS/VU mode, or when executing the virtual-machine load/store instructions (HLV.* and HSV.*), the type of address that determines which pointer masking rules apply should be checked against vsatp rather than satp. As a result, sign extension also applies to the virtual-machine load/store instructions. Signed-off-by: Frank Chang Reviewed-by: Radim Kr=C4=8Dm=C3=A1=C5=99 --- target/riscv/cpu.h | 2 +- target/riscv/cpu_helper.c | 19 +++++++++++++++---- target/riscv/internals.h | 4 +--- target/riscv/tcg/tcg-cpu.c | 4 ++-- 4 files changed, 19 insertions(+), 10 deletions(-) diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index b4cf86e4f61..93c837024a0 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -881,7 +881,7 @@ static inline uint32_t vext_get_vlmax(uint32_t vlenb, u= int32_t vsew, =20 bool riscv_cpu_is_32bit(RISCVCPU *cpu); =20 -bool riscv_cpu_virt_mem_enabled(CPURISCVState *env); +bool riscv_cpu_virt_mem_enabled(CPURISCVState *env, bool is_vm_ldst); RISCVPmPmm riscv_pm_get_pmm(CPURISCVState *env); RISCVPmPmm riscv_pm_get_vm_ldst_pmm(CPURISCVState *env); uint32_t riscv_pm_get_pmlen(RISCVPmPmm pmm); diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index f6856a10bb5..587adaeec73 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -240,16 +240,27 @@ RISCVPmPmm riscv_pm_get_vm_ldst_pmm(CPURISCVState *en= v) #endif } =20 -bool riscv_cpu_virt_mem_enabled(CPURISCVState *env) +bool riscv_cpu_virt_mem_enabled(CPURISCVState *env, bool is_vm_ldst) { #ifndef CONFIG_USER_ONLY int satp_mode =3D 0; - int priv_mode =3D cpu_address_mode(env); + uint64_t satp; + int priv_mode; + bool virt =3D false; + + if (!is_vm_ldst) { + riscv_cpu_eff_priv(env, &priv_mode, &virt); + } else { + priv_mode =3D get_field(env->hstatus, HSTATUS_SPVP); + virt =3D true; + } + + satp =3D virt ? env->vsatp : env->satp; =20 if (riscv_cpu_mxl(env) =3D=3D MXL_RV32) { - satp_mode =3D get_field(env->satp, SATP32_MODE); + satp_mode =3D get_field(satp, SATP32_MODE); } else { - satp_mode =3D get_field(env->satp, SATP64_MODE); + satp_mode =3D get_field(satp, SATP64_MODE); } =20 return ((satp_mode !=3D VM_1_10_MBARE) && (priv_mode !=3D PRV_M)); diff --git a/target/riscv/internals.h b/target/riscv/internals.h index b17b661e2a8..38d438fbf93 100644 --- a/target/riscv/internals.h +++ b/target/riscv/internals.h @@ -200,9 +200,7 @@ static inline target_ulong adjust_addr_body(CPURISCVSta= te *env, return addr; } =20 - if (!is_virt_addr) { - signext =3D riscv_cpu_virt_mem_enabled(env); - } + signext =3D riscv_cpu_virt_mem_enabled(env, is_virt_addr); pmlen =3D riscv_pm_get_pmlen(pmm); addr =3D addr << pmlen; =20 diff --git a/target/riscv/tcg/tcg-cpu.c b/target/riscv/tcg/tcg-cpu.c index 440626ddfad..2b4bcefa0c9 100644 --- a/target/riscv/tcg/tcg-cpu.c +++ b/target/riscv/tcg/tcg-cpu.c @@ -104,7 +104,7 @@ static TCGTBCPUState riscv_get_tb_cpu_state(CPUState *c= s) RISCVCPU *cpu =3D env_archcpu(env); RISCVExtStatus fs, vs; uint32_t flags =3D 0; - bool pm_signext =3D riscv_cpu_virt_mem_enabled(env); + bool pm_signext =3D riscv_cpu_virt_mem_enabled(env, false); =20 if (cpu->cfg.ext_zve32x) { /* @@ -255,7 +255,7 @@ static vaddr riscv_pointer_wrap(CPUState *cs, int mmu_i= dx, return result; } =20 - pm_signext =3D riscv_cpu_virt_mem_enabled(env); + pm_signext =3D riscv_cpu_virt_mem_enabled(env, false); if (pm_signext) { return sextract64(result, 0, 64 - pm_len); } --=20 2.43.0