From nobody Tue Apr 21 14:38:41 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=1776764309; cv=none; d=zohomail.com; s=zohoarc; b=Hsx/HoQbRjrofmkPtvbNdAGGxGDidvaOig1a/Mpbpz9Qx7w0BtLPGZKUbvJa4W7+6HJ5lyAJuuQFLhEkPfqImAWvYvhbHBVtu1R0QJ+Gp9YzCBerSjRSrcjMpINGbkKZlhJOX3j+q0ghqVaoNZ/8IQ8vokUy1//D76Am7FdEPng= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776764309; 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=YE9BDIqY+24bLK0kZ7UcvW9+EgeTMrYBvGuCfwOpwsw=; b=FKm4PIy5vuGjEaxRxmyxBJqeZ739ReDPdVa08PutLdymyVo/plv9KMBGIIRRW0mIFn8YjM8X0Ncr1o0wn8gyNFqNtDZ0lywKNcKZkzImKxdjaVuFu1zWxKEd9pFJx56LFyvwbz59I5cDYLFkOsVgYHkSV+iXoy22tn3SeL3nMQ4= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1776764309374310.6778610473208; Tue, 21 Apr 2026 02:38:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wF7Y1-00006f-ST; Tue, 21 Apr 2026 05:37:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wF7Xs-0008W0-32 for qemu-devel@nongnu.org; Tue, 21 Apr 2026 05:37:28 -0400 Received: from mail-pf1-x434.google.com ([2607:f8b0:4864:20::434]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wF7Xq-0007qY-Kx for qemu-devel@nongnu.org; Tue, 21 Apr 2026 05:37:27 -0400 Received: by mail-pf1-x434.google.com with SMTP id d2e1a72fcca58-824c9da9928so1939526b3a.3 for ; Tue, 21 Apr 2026 02:37:26 -0700 (PDT) Received: from hsinchu16.internal.sifive.com ([210.176.154.34]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82f8e981be6sm15904589b3a.9.2026.04.21.02.37.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2026 02:37:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; t=1776764245; x=1777369045; 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=YE9BDIqY+24bLK0kZ7UcvW9+EgeTMrYBvGuCfwOpwsw=; b=GaiJafvFGp5bpXeoKQEqQMWneo45MD5WEQbVcn2lsOmtTOWv2huKaF/BWqwg7eDzTt W7gFqDasPgpPNfgh9EvE/oCoBe3pFVhpLRkpfEbdM9+KfBrVemPAaeLto9wPyhu9il0q 6LfWk73Z090A4vSYU55kv8Dpy18Uxza3ETGIPidKauRdnVdEn/TUbs+sJpCtj4lrpigB 5t/O0Vo/coZG2w+GV4Ja6/Es5chUbi77eAZd6FSZFO0iSd81KDBt6ZEbKWC7f8e8+GSP wIYd3LUFZsO/wWK+2sL8LjCzG+QH3H7moW+2t+G6tUaAtl78MiAf8Jb7/qEEIQkGBsDd XFNw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776764245; x=1777369045; 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=YE9BDIqY+24bLK0kZ7UcvW9+EgeTMrYBvGuCfwOpwsw=; b=Xb5isFzgcC9iclT+cFJCC9fCchLW2kojL5apUf2ByalYbptlWofmRshn/OsvlwgHLm AnGQhqdaOau28J+AVYS5ssqONwFL+Bye7+KzRq3ZI+4T7x+UI44041GpSXhkCBzDXJWB SGT9WcoVBre9WDDn7vTa/B6SctFmwMj67dGkINSQZoIxrJ4aoqJ+zXmXmsnkij2Qo/av mTNnoupcahyzvjNsmT046rCzluQpVV/4A/DTwyoej4dvUttA7NfzQzdh4PDRq+n3YTYR 3o4MZkehnVWkdgfuM9h32ePptO3z06faPEhWWxaPDsEUSDd++PoEB/2peEnVL6ou4LNV Lhig== X-Gm-Message-State: AOJu0YwzvKr0Dk0hUoe/t3+SE/X1HnDWmqmo91/HBKwr8ohbv4aOgh6d zxSKSmQt9ycv06p8U4trqhMDsSRn+ILAmtH+lJyV5ztJ9xcQBivfputI1gtqkK5xdd3865lqqz/ DvcaMfapvTFqMmgHi0oI1bKw7ZpxETN6hq/HiBPzfvJnJZ/xuo+nIY8itO07B0vOSbgZgyfPDJa s7weBPxH1dPCSqs95fcOxIqOzzdkto+ZlcmU9KngnLc9rd258B X-Gm-Gg: AeBDietFGLlBvpYLrDZ3wSCMJtnaX0gOAJ0pP6k2SsELR53w082J6ZGboIGSM8DqGhT wahB14UagjcLnFiqPnusi2IcE5UFc/1kO/v2f4UOqVRj2iQaAHaRAk2R7YqFJeQVBhhGZqwBHVN rn6F7/dk+JlLmgzpXEHt14wTwxj9Wx/lFYn+PBy/2Lccrq2QQJIgks4ONzQ+WO01CZI0yWPQ7VE q0cH1PLoSc4mp6KFQMhoUyt7LsKiEEaZPoFP3dVMfNdmEDtngSbSFeoyofgtK9GQ8zw2KYnnaQN /XCf1+oEopZvgvUheA3s6+GJKGT6QAAQTMFPxhlhavGszTIpGKF+hPmyM6ce3DWEjul69Mn8fDP cH1jYLQtmYrNjI5UiRkQdjukuHo+nJcToUcPIDqyFRvNpkN0um1FNwJNyZ8YV0zSjYHNmliwuyj nCq/mG24+RxlEjdupdhS4H9IPxXEoAX+uEjwjptgs3KsCb9J8Z4yWxsiKEfv4I X-Received: by 2002:a05:6a00:2288:b0:82c:e76b:c68c with SMTP id d2e1a72fcca58-82f8c3f2b00mr17734196b3a.0.1776764244656; Tue, 21 Apr 2026 02:37:24 -0700 (PDT) From: frank.chang@sifive.com To: qemu-devel@nongnu.org Cc: Palmer Dabbelt , Alistair Francis , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , Chao Liu , qemu-riscv@nongnu.org (open list:RISC-V TCG CPUs), Yong-Xuan Wang , Daniel Henrique Barboza Subject: [PATCH v4 1/6] target/riscv: fix address masking Date: Tue, 21 Apr 2026 17:37:10 +0800 Message-ID: <20260421093715.2995067-2-frank.chang@sifive.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260421093715.2995067-1-frank.chang@sifive.com> References: <20260421093715.2995067-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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::434; envelope-from=frank.chang@sifive.com; helo=mail-pf1-x434.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @sifive.com) X-ZM-MESSAGEID: 1776764310390154100 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 b001cbc080a..43b77d30f27 100644 --- a/target/riscv/internals.h +++ b/target/riscv/internals.h @@ -216,8 +216,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 Tue Apr 21 14:38:41 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=1776764294; cv=none; d=zohomail.com; s=zohoarc; b=j+I42j+ma4BPt1e28/AxjZL6Rpm3onTHDp8eHVlj2ugJxY447PmF3kaMqD2IRx+b344nV67EGh2czBlxy0cVIffbR5twbfiE9SCLTfNpUdsxadTLkaCFFa4IOgxMYiiNxDpHX5Pm6e1tZNMhQbF6bdj/a6G9RR1UzTBTSi3MdX0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776764294; 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=VEioh2IayfhJrxVNIwfPDLydV5qmzTqIwQsaJf8KtQk=; b=Gkr3BODmMa5MqanqcZ53YrK7V4FS/S5JJz9jqTMXYl69AMlXXVOTWhzFE9TV1jM7Ve9MlijCv/mE2DnyGtiigyGQXQw9GpL6Rv/LsPSYhauKmqEu1B8zP8cNFUEbRKBLq8+gwBKanPNSO8iCeQzOlhMCSIsrmejWYMFCJjMkvKc= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1776764294663960.670140677773; Tue, 21 Apr 2026 02:38:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wF7Y0-00006R-03; Tue, 21 Apr 2026 05:37:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wF7Xu-000055-Rp for qemu-devel@nongnu.org; Tue, 21 Apr 2026 05:37:32 -0400 Received: from mail-pf1-x430.google.com ([2607:f8b0:4864:20::430]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wF7Xt-0007rT-6j for qemu-devel@nongnu.org; Tue, 21 Apr 2026 05:37:30 -0400 Received: by mail-pf1-x430.google.com with SMTP id d2e1a72fcca58-82d0b68837aso2571395b3a.2 for ; Tue, 21 Apr 2026 02:37:28 -0700 (PDT) Received: from hsinchu16.internal.sifive.com ([210.176.154.34]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82f8e981be6sm15904589b3a.9.2026.04.21.02.37.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2026 02:37:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; t=1776764247; x=1777369047; 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=VEioh2IayfhJrxVNIwfPDLydV5qmzTqIwQsaJf8KtQk=; b=asuohknoNkKAiPelRxAJVnTuUSZuaVZDZeiNSP9bDEqFK0dac5Zlpg2kit5I5iYGXX TYPkeRZoDF+SmrrOV0brWnCnUhicU4bxizslRaapqbQp8g/06y3JPSI2+FoLEEB3u82M gnRnbWtXDwFbQcbyp562MCoMUrN3K00Yvbcwpo+ZX8RUipd1ufd1ZYJb0PYV4cf0whyw UAH8p/QRBIfFZdIhpYy+G6jg28/RfsuIJtgq84hmLPaBIefHLT4xGorenE7iL71m6L51 7dKki5YuXrt8XBYw4jlTpZrDKReo+aSS8H+ZdhQqrmKDcri7wapI8wwbYXYjKlwXi4aw 3pZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776764247; x=1777369047; 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=VEioh2IayfhJrxVNIwfPDLydV5qmzTqIwQsaJf8KtQk=; b=p6nD9kGInmQe85ML5uKUayq0rdVda8D1J813ep1wWcXfp98cti8F9n4qw84tU6TTHP U0hsLL2uKP+Tf94uHvD+Bp60E5JZvK8hzDIeuTaS5X95o6xDnHQH7swZiLw+/8Fl4Va6 SHBiGXyfDpGW9UKNMGN2f9XdM4R+urbj3HryEEGysogpz5u1sKQP1Hv+8m8fqQQ/fTI9 Eoh1F/fiP1IopttCv64qzewIxcR7uU+lgOalDxTXDLmyssTMy7hWXRM4V4oDhfi7tv82 J22+RhSAGHLMvp0EyGEZvgY4+o+S5g1fFg+F5FzWYrehwrZxzYHaOBlEBnzrboEQOUBp yC9w== X-Gm-Message-State: AOJu0YxP9lft/614s/m2M2BkYTLsjKpV4qB1KBc6cfqSwY8WCJ/SIfgB kwzFAoenz+jcR/NZkY77AzrJiLjJKsQtcIARzrbz7TUokGq0GBJZyuq6iApuogydB/0FsCpXQHa rXs49WzLt3rp6j6uSpoOqSsve2szmvIP09VhtOJ62xfocmr36NNcBMJ7c6Gi+/86nlmYEsSiWzS A09+a5XXItR50BfjQQGE6lHfxR7J7eTvz/KKVNNHNburb5Yd25 X-Gm-Gg: AeBDiesF03K4S0Eax06TI2m9mHlVChZ0q6g3J12+E9A58I+kAVXiOX98MDnOI3wYOEl f7yJcMJZiNJXnDN88JQk294tYVGI6zT2I/PvnqsvvAQ2TUloh2Rw7S3Z3GDEMB6T5JUGYPCXw5w umOG6ubzCdPoQtSLIvEMDXjnR+RbFOHc2nOQnNsFioAr5mJuFDzFcXQVr6xh0kPJmReEwnAQzli SW33GVyqtTMZ0Qd9QjG9xly7HcL/KEnMpsRTA3PJIDg62896gTAMrn3M3AO/u5lNT9YjZr1ChCc mcNMrGDsNqBhDdd6MSSulQPNvJVSdV3v4+D4k2FbLvnppYfY6tNLgMT1KcycQodwmpqEn2dqHRj vZYstx2c5B+MimfWa5Q/WUOMtkaqHNEFlVOI58c9jJZ/90RJIBdyTmyXq4n13cpeIerxrIF3KZj FIuoh2lWzIlWARBefyhAd+RALEpbSgY8ZrSdwrX1GtqsqQWM9OTAMmjFzekjx/ X-Received: by 2002:a05:6a00:93a8:b0:82f:9c37:ea65 with SMTP id d2e1a72fcca58-82f9c37fbdcmr11126305b3a.42.1776764247101; Tue, 21 Apr 2026 02:37:27 -0700 (PDT) From: frank.chang@sifive.com To: qemu-devel@nongnu.org Cc: Palmer Dabbelt , Alistair Francis , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , Chao Liu , qemu-riscv@nongnu.org (open list:RISC-V TCG CPUs), Frank Chang Subject: [PATCH v4 2/6] target/riscv: Add a helper to return the current effective priv mode Date: Tue, 21 Apr 2026 17:37:11 +0800 Message-ID: <20260421093715.2995067-3-frank.chang@sifive.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260421093715.2995067-1-frank.chang@sifive.com> References: <20260421093715.2995067-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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::430; envelope-from=frank.chang@sifive.com; helo=mail-pf1-x430.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @sifive.com) X-ZM-MESSAGEID: 1776764296443154100 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 4c0676ed53b..672f0dab0fb 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -806,6 +806,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 659150c6462..513bad21afa 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 Tue Apr 21 14:38:41 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=1776764329; cv=none; d=zohomail.com; s=zohoarc; b=FPlNnSNoN/AVZusOdejBonLcXZp9GuJUxVf7kJhgoX2aiRpWM6fXW1XeQRqbSPZ16eMZyxIYEltGC0BBespLh9tG24KAuwr4IXxbB5dRprgqugwp8xm2MGoAWr6j4MpYm2sMg5O9wdT6b1dtluHx8owzwsu6XVOORzhuXn8NeMA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776764329; 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=PyfgNwxD7uW39nGLmk9krGfH2I0Eiy0mWwuB3E99/8o=; b=fU0wHCYOydfJ3tbH5zpWOnaFmYfwTGvlAmQJTBWCOAAPOO2Zrnxfx4QwJRBkI+VV2TCv1Zt6oDhjMIEZWmC4SoRjUNCt2fS+gwicvXSSl1BZN9UOKO7h5eIMc6SBjgX6ZkwZ2pX/M+Fsg0AHfFIJk/xzwCK3bOEgOkMNL+c4c8U= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1776764329410743.2891977505942; Tue, 21 Apr 2026 02:38:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wF7Y4-000097-J0; Tue, 21 Apr 2026 05:37:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wF7Xx-000068-R1 for qemu-devel@nongnu.org; Tue, 21 Apr 2026 05:37:34 -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 1wF7Xv-0007rn-PA for qemu-devel@nongnu.org; Tue, 21 Apr 2026 05:37:33 -0400 Received: by mail-pf1-x433.google.com with SMTP id d2e1a72fcca58-82f2766905fso1751598b3a.3 for ; Tue, 21 Apr 2026 02:37:31 -0700 (PDT) Received: from hsinchu16.internal.sifive.com ([210.176.154.34]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82f8e981be6sm15904589b3a.9.2026.04.21.02.37.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2026 02:37:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; t=1776764250; x=1777369050; 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=PyfgNwxD7uW39nGLmk9krGfH2I0Eiy0mWwuB3E99/8o=; b=gVbrOvasM8DnZBsGXzegdfdAIaePtk+I82/7UXZ0Ge7sj34Nl7q9LFeqWBjsJZYzdu uB20l7f8P4aVBCe/lZxNfx62JCjvMPY2k+Fyngsq/lsKOSYpywHo78wxMR/EAyzF6MnC 5BMA7ceLykKB8UI89F8P4TwecrQNY5Dlpr+1CTGSbIEvYuu+Gs7tpeD95CPCcGmT2Lpo Fr3ABuT+FjzzDEBI1sk6w7ewSEl9SgR/5bGRs0pQ9c443lQwo8UsVFym17alROtqfxgs zsBHv4TKk0KlxSU2pseSByk78q2BYAJSqC0Dq6uem4W/uc4QGkmeyPQd3hge/Lrh197o cXBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776764250; x=1777369050; 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=PyfgNwxD7uW39nGLmk9krGfH2I0Eiy0mWwuB3E99/8o=; b=q7pXMNU6SXbGhaGs523GgHQuf0BeMTFCa2PcNsH/Iw0en15e4bvUObAUlcf3onTCwd TPwFVUo/CSYi7eWgB74t5rxcAjR95+bPC2UmG6LyT1oMOP3eitSViNfqRAyvqQD+ENKO B0wNtkJhghiYZEVOAXtPKtuSP36ptpZz+cr8Zvwkv9mE7OvnYViAOumNQR4LmZXq2jzE NTWnn1IakVXoxHQC1TFtIfKHPCNYuTW4/2bhI+iHwRwoI6F3KeLKc1r0ZrfcMqhDKp+B OAvjo1uIdlC4EvLbVgq+T7eS++8MqGlLiDn3LJoAKk4FNDwlyhN4Flh4ufaKnA1Wj76h OVIg== X-Gm-Message-State: AOJu0YyD2YxB7H03tSycH6RYJtJeA1cgs2LX80SX8JVfDlydzhkXdT7O NzwGH38TWwmLcKRDHDW90ABXcsnU5fRJr7snfC9i95TVsTCFTGua6beEP3mEL0bEEqV9CbspzE8 YBoJRbtKdGFUdh6Mc93vIbdvOue0Nj2BobCmLbItnVNCowtKDGPx6vfUS7m0jLFYauqr3Jvn5Ru 2vbMIOOTnN81wszAa9ZKW9K7A8WSTLxQoRM/CY3XvArm4TqZ8J X-Gm-Gg: AeBDiet9q0eAmBGI2exWyf8J/+kGr+KVfLc7AswGz4bJlTdLDHY8l+kYEjDpFATQU5O nXC6t5tpfaoKFgEKs0AWFY+AJrBAucLn4j5shwTbibxBMZY02EKxz0LtTp1CjWn395WQsGea3Le VF9or42QMvinw22RoDaaWtladzzCnmWu11cjNY259Zt7uSzDvLMuueK6M2y/VpBTh70Z3JAooqf 2Gk2ZJcZoyVYucH9z3MzUmXHxfCaX6BRmFno3SdFI6qgEQ7DAikMBmTpsb98mT/ey6SQO1DQrkn lrBC0Ltn7WiNVvb73Ym4JS9FpMG81mKYkSmIDMuiHZeVyGOYEI1DjyQSe2wDKT09bESj58Jk2ix a/NQiTSWbvtllsaCerUChqLwj+YK9sfmBby8k2xsTfBjetBkYsmd6YS+KhKnvy1F43gt4Xitmws 8f0nusHEHIaodKIArDdmMVGWfsNmVxXLgkpdVHGmSHEWc14MHm0kKc6Vy1CBCi X-Received: by 2002:a05:6a00:340a:b0:82c:ae0e:dea with SMTP id d2e1a72fcca58-82f8c8c39b8mr15692296b3a.32.1776764249647; Tue, 21 Apr 2026 02:37:29 -0700 (PDT) From: frank.chang@sifive.com To: qemu-devel@nongnu.org Cc: Palmer Dabbelt , Alistair Francis , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , Chao Liu , qemu-riscv@nongnu.org (open list:RISC-V TCG CPUs), Frank Chang , Daniel Henrique Barboza Subject: [PATCH v4 3/6] target/riscv: Fix pointer masking PMM field selection logic Date: Tue, 21 Apr 2026 17:37:12 +0800 Message-ID: <20260421093715.2995067-4-frank.chang@sifive.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260421093715.2995067-1-frank.chang@sifive.com> References: <20260421093715.2995067-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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::433; envelope-from=frank.chang@sifive.com; helo=mail-pf1-x433.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @sifive.com) X-ZM-MESSAGEID: 1776764330700154100 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 513bad21afa..bab4153e53b 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 Tue Apr 21 14:38:41 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=1776764277; cv=none; d=zohomail.com; s=zohoarc; b=KF50QqG56fjdGhukg074Ze3deyZMOkEb5FGfEmUKrtnfxQRS2d/ea8c0E81+NyskclQXuwmizWW/oR4RvYL3si/904RB4GeaWCBC45S5Tnp8+5Xmp/XZkk2CU0tqYG+VmyR/FvEQ2Y5m72m1OCduPd6irjaJpbhkVAOT/mQA5kc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776764277; 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=WTz8TCQOdQ53voh1Q1agVywI6+gd84Ne0Cae+aCo9jE=; b=k0os9Aj2eMWjktkV1wFlYXiYJqj5C+vK9y1f4W2MwGEYmXDqH93k79bDm40TFxjZFLIVULR9zzd3jc2lFqyqHhGPASUvyu0W4PDp0by+uTYd+8cvdk4QcbZB7B2wjXkrYOqwTPKsGOK1ewjvgNl5lVDeAfL3kzcaV15sidmhagc= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1776764277095221.83041033643565; Tue, 21 Apr 2026 02:37:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wF7Y5-00009L-4b; Tue, 21 Apr 2026 05:37:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wF7Xz-00006X-Ak for qemu-devel@nongnu.org; Tue, 21 Apr 2026 05:37:35 -0400 Received: from mail-pf1-x42b.google.com ([2607:f8b0:4864:20::42b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wF7Xx-0007s5-SX for qemu-devel@nongnu.org; Tue, 21 Apr 2026 05:37:35 -0400 Received: by mail-pf1-x42b.google.com with SMTP id d2e1a72fcca58-82f68b3aaf7so1491859b3a.0 for ; Tue, 21 Apr 2026 02:37:33 -0700 (PDT) Received: from hsinchu16.internal.sifive.com ([210.176.154.34]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82f8e981be6sm15904589b3a.9.2026.04.21.02.37.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2026 02:37:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; t=1776764252; x=1777369052; 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=WTz8TCQOdQ53voh1Q1agVywI6+gd84Ne0Cae+aCo9jE=; b=fuNAf4XW+zI5duPQf5L3WDKLfnjP1+iCmI0Uzfcq8XrvctIyGUlfFuyILZArv/6Myn KLjyunjXbVUSrA5wwE5rtVaYmrY50TR8Ewi0vhvU0xJdM2z2rOCNwgqFAFhgr5aajsYy NHrDFiweNLrXdmT2bixEVIaWu14s3UmLyEzO0G3A0Hpy3r+mnTLsnjhTdVAAqMRdbB5K OWrPizhL51DLO8YtJkwNn6c94tZrvbKRx/u1KQkFPZj8y9x8o6trc+N4iS8UQ8lq3hUM u0Rr5wEVd8/FhLpfN/plY48sAvHxqW0yN/1YP6qFHqRwybgmlcb+0JxwyH/rui9/q6iU 41qQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776764252; x=1777369052; 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=WTz8TCQOdQ53voh1Q1agVywI6+gd84Ne0Cae+aCo9jE=; b=etdi6vE5eUzbmXfa0CjEOHPmA2wZXSIRSvXToKvBhDlRBXjiyjoP4Lut+kDpU7zGFS Qc87N7jxPHmkPLcz7hiNNIwBo1WTGer8GaLYtaqBaM258j/9cSwsRhwQ8bztdsrW4Q8c dhoBCRjNLlB/KxufGWLZi9DRzTYztxBs45quPOQkJtysX8Qzcq5W9dcEepBaPep+DPDh gGizDFJQuiZrkItYXOWBrNz44S3TvQSprHjdNclRmlTWGwRFJorstMQWUgq31y6Y/6nE w2KCF4k6k2XMJB0pdQgcHfhncAdTJlV86ZTKAKrCzz+ZD3kQpZmGUwtpI4qMEGb5tEQK RtlQ== X-Gm-Message-State: AOJu0YzcBt8PBMG83JDg6CM8SOkyWCoOQHnw1Bu5vvjiYybX+7v6OTsp F0/OqiZEdjxkJqRAoIE3PamUTyfCqUiQZ+jnf0fKODIRPGOo5CiL+ZbNPM1/pkoOr4bNt2WFCe4 k4lYAck9lv+doGYfOzh+BM2urPRBzm6SeGkUoFjFHlV7kQE8uns8vtyW6O6LNCU4acQFK9qSilT x3uk1xf8h/67JE/s/xJ5dPDxrXwmBIaKupys7LIr6g7wwoP8El X-Gm-Gg: AeBDiesu5NPtKa3cYkpeIsy50UIqU5VLX+UiRj3q7yEpRhLCk/uENvldExl4YpTWtMu +WWLhw82HwyYZBW0V/4nE1YaUHzuQLtcVJnmWpY9gWGA277eEJJjTPhZ8JNzOoTla8g677iEQrd m9ZMunXcKBvTkNFJz1Iqhaup3dbYJUFFIpNczD0BObHTN5+99egTp2vDBJrbG2jm2vv1H5dr+Bu LjLYfsm66mWJkO6dVODaYyi0HxAMwDsRKb2mXbKCrJpi3LWRcRbGI02bhu4vHV9b7Tti1yT/Zis Zw47X5OcCdzc7zBvDN70FtOHjij0JE+4QEVn3VS42BljgshU4d3m/Ybzj+bosaK5YNtJoUEJBF0 pyed2wN+OXNTWqPtEcG3JJeML+F3Y2kMmY3UFVYYk9mcDo/9v1nQCV+bRFmvid8QSdLadVX2GR4 EVFqe6z9PUK4MfezaSZGIuvPe1WIHY2zkNOx1mCNvPsNpjO2GSgSr5xg/pnS3N X-Received: by 2002:a05:6a00:2d87:b0:82a:ea3:c172 with SMTP id d2e1a72fcca58-82f8c9341f5mr17547340b3a.46.1776764252104; Tue, 21 Apr 2026 02:37:32 -0700 (PDT) From: frank.chang@sifive.com To: qemu-devel@nongnu.org Cc: Palmer Dabbelt , Alistair Francis , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , Chao Liu , qemu-riscv@nongnu.org (open list:RISC-V TCG CPUs), Frank Chang Subject: [PATCH v4 4/6] target/riscv: Fix pointer masking for virtual-machine load/store insns Date: Tue, 21 Apr 2026 17:37:13 +0800 Message-ID: <20260421093715.2995067-5-frank.chang@sifive.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260421093715.2995067-1-frank.chang@sifive.com> References: <20260421093715.2995067-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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42b; envelope-from=frank.chang@sifive.com; helo=mail-pf1-x42b.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @sifive.com) X-ZM-MESSAGEID: 1776764278746158500 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 bab4153e53b..2b3fea81d50 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 Tue Apr 21 14:38:41 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=1776764329; cv=none; d=zohomail.com; s=zohoarc; b=SCHsqKrqj3YM8APVu2G9F1BiKLi6sxn8yeenaONBJBWKstRys98Zpd6FNhIw/puPOvOsbO8BxUwwHAs7AqxjSj5dvnx+1CxqclkICOXCDnAzLPzXFDWKi+PslYrIaczIFUlFYccMwwzpXiGIdCgLVKiqGYgB/qMdIbMfRnSlS74= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776764329; 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=eIeQ72MINFLwiJyja9lYXXTVaJXOtPeuJ5tBq73U/30=; b=YrWS1vou9hGENlYhLHcxNaj9QJcdl8K+3AemiHpDDqu+SSNhS3RugigncEUP2QJvtMaqTQUJfbU1ftMe1wshVDZK1nMi+NGQWZ5cDypTQxcRO4CIGwPShQTQx8VBBqlusXrLYX9GHOitC5keByCXyPo9hjkvt61E0mA9DXaHkBU= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1776764329199509.02209859428854; Tue, 21 Apr 2026 02:38:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wF7Y6-0000AJ-M8; Tue, 21 Apr 2026 05:37:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wF7Y2-00007w-2x for qemu-devel@nongnu.org; Tue, 21 Apr 2026 05:37:39 -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 1wF7Y0-0007si-HS for qemu-devel@nongnu.org; Tue, 21 Apr 2026 05:37:37 -0400 Received: by mail-pg1-x52a.google.com with SMTP id 41be03b00d2f7-c70fb6aa323so1357214a12.3 for ; Tue, 21 Apr 2026 02:37:36 -0700 (PDT) Received: from hsinchu16.internal.sifive.com ([210.176.154.34]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82f8e981be6sm15904589b3a.9.2026.04.21.02.37.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2026 02:37:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; t=1776764255; x=1777369055; 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=eIeQ72MINFLwiJyja9lYXXTVaJXOtPeuJ5tBq73U/30=; b=enyY/qiKAPWFvjtMAKvTX4gAnVBP4oBykdS1lwKvcZ1IfkE9vIpxcyQOAMNVs9RMPA z0VrXYPHSSIIPDJrXDCLryqWUWK6v6Ethmp4tgId5PUyHFcYZ3YSG74BVsUkF3BWq3HD sxtA0a9J2e18YupsodB1qYCRv/ydbvDan7GVGmYPpQDwUg8yprHVZW2lKTJD0HDyJVd8 /WiOH3LySsUocSe5yBJsQKqAVDRLPWnURTdUfeDrwsoAEospzWPLKRQCMIN3yFMRHC6N sUZsOitsrGdSd8b6CgouEebnRMq0IkE5BLxOkG/CEDnYyfbxIHFDpK8jJG46sWM390ND Bsog== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776764255; x=1777369055; 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=eIeQ72MINFLwiJyja9lYXXTVaJXOtPeuJ5tBq73U/30=; b=BrkRd4uHgjk/ElxxPqd0Do6TDMSFK/q9AIZlrQDX6g7GOkHQhK7PDv+bbE96Fb4Im0 7qmdE3ryRIBKlZqImLD9k5H8vYGAnUTKyYnFgQOAnyZDjfm1t24LOn7da5CZPkTgPga/ Gl6tEblTXlSBzcR8UofTIx7F0BfBCJUtekzaijHrCld+4EWayVwWIEni7EZrUKyZEdbV aiif+Ts07Yj0Jz31ax66KC3eMnUYAph+VNyOF/vJQldTl5ta7XBk79w5DWu2GnoPZ7Hr ZG5YcMtRppC1XhphEzTf4uRrl2ZiQK+sNL89ingt8H4tbnzp+mcBiu7ZrNzF+NgRd2hX oOZA== X-Gm-Message-State: AOJu0YyQaLFAdGdSGkiW1soKMybTvchKbymvq70WMg91+yB27mAGRlrT MrLroK6r18saAlePlcSDmdOjUJ1zUfNGi3GumwfvSYsak+rwL7o0kYcgCWSqVF7DqxhDtwKqgf7 1R+5j2uG9L4E5De763V+D1rtTC66NJQqaSpjxXrHkMw+kjVmfvBKEIjNZtKIPju06G5Wpsyw+tX BPNzR3inbaY2fiR7yHG9ux6rOAh27oe6zkV7mnWikyLsGsb4zN X-Gm-Gg: AeBDieuPGgnKM9NoP7zwzJgT1gESTuT0Emm9m41sm06waCH9zW9pMQOOND4aUaxxJin 8h1FnsbUEkdN9cUFp+WmUTApi24Ec88PbMG4Sg6qr9tMTYmORV6cMH08GjWhKjQY5fHlIq8kR61 zyiDo/RtM0twUQXmDVTOYwwJSgU4tzyoOx7BxEOnwyKUtWF0fb/tzrTZBsmGXFJbKFtto9ufSDD bJHWqC01t7xXx5nOVWlwnnpZSNdQ0X80sYFaoXNomSQMmR4MCEX9fEkpJU5E31FxC1k0geZwu7L byJJTmwuZQgL+VKPciDaMugVlnwPKlw453eTm9Eywsdbl41hk7TFhCp3x6ZZjLJOndHagFPSmD0 ShO++rBO5X7xjTMwNwhyQ5lOy8pvouGZnFvXz8nWk430aA5ozaEXoj0Z0kVby3u1t3NuEjdoiRy kcgTcF1Nm5LNW5mHjMva6qleETkusxk5ImuFOB9dxDIhbMI8hf2QsoWXXKkdqM X-Received: by 2002:a05:6a20:394c:b0:39c:4af6:4309 with SMTP id adf61e73a8af0-3a08d748b55mr18530051637.12.1776764254611; Tue, 21 Apr 2026 02:37:34 -0700 (PDT) From: frank.chang@sifive.com To: qemu-devel@nongnu.org Cc: Palmer Dabbelt , Alistair Francis , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , Chao Liu , qemu-riscv@nongnu.org (open list:RISC-V TCG CPUs), Frank Chang , Daniel Henrique Barboza Subject: [PATCH v4 5/6] target/riscv: Rename riscv_pm_get_virt_pmm() to riscv_pm_get_vm_ldst_pmm() Date: Tue, 21 Apr 2026 17:37:14 +0800 Message-ID: <20260421093715.2995067-6-frank.chang@sifive.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260421093715.2995067-1-frank.chang@sifive.com> References: <20260421093715.2995067-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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52a; envelope-from=frank.chang@sifive.com; helo=mail-pg1-x52a.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @sifive.com) X-ZM-MESSAGEID: 1776764330936158500 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 672f0dab0fb..138183e017c 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -890,7 +890,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 2b3fea81d50..ef1ff7cb0bd 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 43b77d30f27..82d24f433dc 100644 --- a/target/riscv/internals.h +++ b/target/riscv/internals.h @@ -203,7 +203,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 Tue Apr 21 14:38:41 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=1776764348; cv=none; d=zohomail.com; s=zohoarc; b=oIo7hyAs/l7fo+AgsmpOfL1sHKpoMoxXrovR1MRR+ylwtMTUAThkpP0/8GkMEbS0JqEPVtxM9l+VMgbtzwbboFo5o8buGVyFJ+PxSBnqSmJOgW03VC4+O+DQlU0xghvuqrBa0HPDzmx3oMgfse6md1/tuFxp+d1ErZNRyN5HKHo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776764348; 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=mfwLARxELoq8ANLXoGfCo6a2UvGWGx8gKCesGr9dyns=; b=UEILZu6CCOtoc3iMRIxi6HrNhN74Vuo13vRpP8MkFPil8EhGkV5tmdk/VBahCxWRfXjAJsl38RHrNGWmdTmZ9+5GCpy5fnACjqrl1zo2av6uNnwBTubBtCYJD+jdMu24ZhGlkCJzG4aB2lSc5NcplQEeQpCEfOs8yDgsvQ26gJ4= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1776764348207121.58571280787521; Tue, 21 Apr 2026 02:39:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wF7Y7-0000C9-C4; Tue, 21 Apr 2026 05:37:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wF7Y5-00009i-MJ for qemu-devel@nongnu.org; Tue, 21 Apr 2026 05:37:41 -0400 Received: from mail-pf1-x42e.google.com ([2607:f8b0:4864:20::42e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wF7Y3-0007uY-PH for qemu-devel@nongnu.org; Tue, 21 Apr 2026 05:37:41 -0400 Received: by mail-pf1-x42e.google.com with SMTP id d2e1a72fcca58-82fbdd60b64so1142228b3a.3 for ; Tue, 21 Apr 2026 02:37:38 -0700 (PDT) Received: from hsinchu16.internal.sifive.com ([210.176.154.34]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82f8e981be6sm15904589b3a.9.2026.04.21.02.37.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2026 02:37:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; t=1776764257; x=1777369057; 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=mfwLARxELoq8ANLXoGfCo6a2UvGWGx8gKCesGr9dyns=; b=lnhmGP9xOU/KamEMMuk7D6oPtzjtJzX/xfZMKBINaPtmz1WHBmsv9b5fNUkVrOr5sZ dzOiOqW7e6w4Ja+Al7HP7Z22Aed0QfIS9AbLrTZvlv0pWgcQeMu6U/r/cA551YTCRcRB 6MipGkAFXKUUnxRzDb0lZOdz4t2wDcgtJqWKFf+DAjuR3wevUsqrCSUHoe0xTREfq+Gb dTOIf3v6s2iwuXpP0pNM5eZLcUv+RI/7enwa2GJB16zz/ez5AtsqECayHvoa9PlN2Dbt d0Q1iXAhUxh5IVUGrT5SGK80BdQAB0ERrbRAgbSvzd8VOhcJ2p1QJTMB+FlPbh2qkM26 AP5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776764257; x=1777369057; 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=mfwLARxELoq8ANLXoGfCo6a2UvGWGx8gKCesGr9dyns=; b=EWfw/41nNkeWlxag++ObOpHtHYkZ9mFh7vc+A9ShvhjrIKoqRRNetmbU2NXmhjvvhK BJyF+PcWVwz74BBYhmfFADJAn/QqLa3wQ0gqd9z/ytUIB+5t5zZx3bywKba8S7q9BkVA 1HCQF3UfKCQgOCYBmkWjaEPCQ/qFhra/enY4Lk9vBVhEqtnR8o3YHtmQoRSKhBA/ezvG 8QNW2cgVf90c/YwF4jNkrTF3MDXctLUengmDgpRj1+1j/C1djrKfGAUJEoygkaQH/JA8 nlFC/dR74wb/vEBWDZnGgoxFkNWYBNcBuomtKmgdUZ4FuEUuv9sXJzbqmCfhl4+oWIk3 hXlw== X-Gm-Message-State: AOJu0YxzxfliqePrBcpP18dSrdqOwNZzimKWWOWHIabB1x6ubtl8Codd 4CvJDxlUCIBja6qtsUEE4IJLOx+dDOqZfWH/wIcDSze8zDNFp0N2weuDBa2uY4+BCTsrBqnbIb3 qg4Ra0JrPkIMWHdVAwY/o5eXNhdbpeHo8gjyt389yWnmEK5rPQbQxylJ0N7EAi8MfTUPHcv+OaO FuJGXVPV2CbOPcqtqVG0Fr+Gk1Tdx3i6raWPlU186L4bACXVgE X-Gm-Gg: AeBDievZuxtdexhX2kvAUNcUqERuPevU2zci6+WkUokk26JFQNk0JLTxnZ6ddVkpiF7 Q3egicbvdQ6M1KqtvA3YHw4czE2M/OFJREovwzFJ+Gij8EMyq7KfIi5w2G4PLhuTCThBUNAkB/p skX2Nt24Wd4RfBBhpeUhIowl0/uNSFkUAvQedH39Z+JyEEq7aVeQj7ZGC5kgu16C7BhYCFLqE6R HQJbHodyk1wRkiY7oaVxmvvHArx26ck9xudGqKHHcc32rFdFwgGvNEN7wJ59+rq5jNT3UrB5veJ 2KYERxDyQ4cVrVWlKNMbrLb+l4mv9AiDntC9AGufqqcIwYclbbZcMt9CMsEkdvtJW/Ez1NDUnpd krgmSCcVGlcuwfjymWfG5UyA0Z09wbZd7RpQA3dcz5l2t7wK2no2MP2md4HE+5ZY2QHn0C2eGfg w5mrZzWQ8H7pwD8VGlHQ4SckNi2ufuG90gi6gFL6KqeGihzd6W3p8htHW7VCf+ X-Received: by 2002:a05:6a00:e1a:b0:82f:2a78:6302 with SMTP id d2e1a72fcca58-82f8c9027b0mr19297692b3a.26.1776764257214; Tue, 21 Apr 2026 02:37:37 -0700 (PDT) From: frank.chang@sifive.com To: qemu-devel@nongnu.org Cc: Palmer Dabbelt , Alistair Francis , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , Chao Liu , 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 v4 6/6] target/riscv: Fix pointer masking translation mode check bug Date: Tue, 21 Apr 2026 17:37:15 +0800 Message-ID: <20260421093715.2995067-7-frank.chang@sifive.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260421093715.2995067-1-frank.chang@sifive.com> References: <20260421093715.2995067-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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42e; envelope-from=frank.chang@sifive.com; helo=mail-pf1-x42e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @sifive.com) X-ZM-MESSAGEID: 1776764348946158500 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 138183e017c..81c41e34296 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -888,7 +888,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 ef1ff7cb0bd..39c3486ae0f 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 82d24f433dc..683bb3bce3e 100644 --- a/target/riscv/internals.h +++ b/target/riscv/internals.h @@ -213,9 +213,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 f3f78088956..02c98cc2dbb 100644 --- a/target/riscv/tcg/tcg-cpu.c +++ b/target/riscv/tcg/tcg-cpu.c @@ -105,7 +105,7 @@ static TCGTBCPUState riscv_get_tb_cpu_state(CPUState *c= s) RISCVExtStatus fs, vs; uint32_t flags =3D 0; uint64_t ext_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) { /* @@ -260,7 +260,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