From nobody Thu Dec 18 19:32:54 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; 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=fail(p=quarantine dis=quarantine) header.from=opensource.wdc.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 164877058499732.30564694502948; Thu, 31 Mar 2022 16:49:44 -0700 (PDT) Received: from localhost ([::1]:55220 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1na4Xv-0006yM-IN for importer@patchew.org; Thu, 31 Mar 2022 19:49:43 -0400 Received: from eggs.gnu.org ([209.51.188.92]:51054) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1na4TP-0004ez-PS for qemu-devel@nongnu.org; Thu, 31 Mar 2022 19:45:03 -0400 Received: from esa6.hgst.iphmx.com ([216.71.154.45]:51368) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1na4TN-00007o-9S for qemu-devel@nongnu.org; Thu, 31 Mar 2022 19:45:03 -0400 Received: from uls-op-cesaip01.wdc.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 01 Apr 2022 07:45:00 +0800 Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 31 Mar 2022 16:16:39 -0700 Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip02.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 31 Mar 2022 16:45:00 -0700 Received: from usg-ed-osssrv.wdc.com (usg-ed-osssrv.wdc.com [127.0.0.1]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTP id 4KV0K71lS9z1SVp0 for ; Thu, 31 Mar 2022 16:44:59 -0700 (PDT) Received: from usg-ed-osssrv.wdc.com ([127.0.0.1]) by usg-ed-osssrv.wdc.com (usg-ed-osssrv.wdc.com [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id CbHnxx0qtaVG for ; Thu, 31 Mar 2022 16:44:58 -0700 (PDT) Received: from toolbox.alistair23.me (unknown [10.225.165.114]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4KV0K351vrz1Rvlx; Thu, 31 Mar 2022 16:44:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1648770302; x=1680306302; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=dr5DFYtEwc8z5mTl6J0dwGTBJnbp99CDmAQ6LgWqGik=; b=mAFDtw/CEnjZKrLuSnWWdPQyDZHaqajzsRVwEbNmtw4WVs4nnypUxyF0 T+upOZTXA3BrGdh8ZgB7Y27Jg5h5pFmzl5OaFuA+BsFqVq43v6jM4X1ZP 0mZg3FCGRvjI/B/Ktgolg/I4q7g7KMFFAJoDdDlh6Nqag2Wcgp18nE6vi U/5HFWpKVsFBsEANBpeVVysyYOcwHfFQcxlmRWrPU4+W3oX/nlY+hSnIO /RU4uGPXVGJqTJBoHEw/NZclJgG2k7Y5kKwBTnClv4fCVYXO/sswUN3sL g+VTuB5EoKUL0aq17mnWP3eeDtB+Zq6/3pDPqz0jqjb+cDtfXY5jrfYfx Q==; X-IronPort-AV: E=Sophos;i="5.90,225,1643644800"; d="scan'208";a="197691427" IronPort-SDR: sBPoUw3s7cRJIGhF83DPwXCUCq0RYJTkMfp3BRdSMA1BE28ErgtW7PKXYJBQFAQB1Ssv/bwMal YIz412Z03nT4Sb2/LSNs3n4q/emeYnCpON/y/V19Px+GYSpcNogw+dG27HrMSZt2HHD7VHEjXc bBaCAqoK4Q63mwyBMDRlJrFNY9UdNz2vWCu+kpN9K9Ju7ojX7JphYYdNo1nxSjOGfgOYLP+IOb QtS+T9EfWlQftCGW/l2vy5kuaV3wCpUKIc/9HpJ2egM43VlK5cfy+F+JBFRCswwKzJSR93U+gb MJ3UAA+NRqg2KzUFwSNxuqn4 IronPort-SDR: vnUqgwIBuEX+I+dy0JlGgjPxT1gWBLzByxYom1nh7806i/IwUrRjqC9XEIc15G30s/SPzna9rr Mbl0m0N+jzuWOgqt9rH8wsasDgs5oCxM5LlqnGrlUC0MOj+aP4ekL1/3ZHp9yetyiAtttkPadW b1pIKs0OvmCcQcd4M1krKdNCXcEmEcDjNkw9HnkMCa1lco8DRk5lEjtFAbrD0sEqmhFupC5dIF ckMvs4OmlvyCYAcepw6+9TQkAbSa65zjzZp/NUWI5/yhC7/Vv9lIG7LNP7oPCquB84ViBjBGDh qSs= WDCIronportException: Internal Authentication-Results: usg-ed-osssrv.wdc.com (amavisd-new); dkim=pass reason="pass (just generated, assumed good)" header.d=opensource.wdc.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d= opensource.wdc.com; h=content-transfer-encoding:mime-version :references:in-reply-to:x-mailer:message-id:date:subject:to :from; s=dkim; t=1648770298; x=1651362299; bh=dr5DFYtEwc8z5mTl6J 0dwGTBJnbp99CDmAQ6LgWqGik=; b=aK1hRMwkOOCTsvvllN4tjV6gcANmrApIY8 8O2NeDRKoVn5tXZ8Pt6kUf8MJVEgcRP+kIyG11IAfzh7Okb5oJEErBRjaQPit9Gr nVyGXn6yA46PMxzzuZ6omyU0WkO3LWi7IgbAeX0LR1hpHCZNQZvIxFHLw0icwge2 Zqe+RKypcdPLk3rzpXfZtA2kpuYZH5mgDRm76gH2YdZTTP0B6QH2FWBwggNdwpgq FHbfOhjlyHcwLPa1CMgGvK/En6aojD2ODB2k8deMpg9nzOQbbc0+C/iPVspawI1J Vq//zMiX7Z8tp5DnB7RaT+4NGhLHwUR5x/wzm8XFKxA8gJvcF0uA== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Palmer Dabbelt , phantom@zju.edu.cn, Alistair Francis Subject: [PULL 1/2] target/riscv: Avoid leaking "no translation" TLB entries Date: Fri, 1 Apr 2022 09:44:40 +1000 Message-Id: <20220331234441.15920-2-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220331234441.15920-1-alistair.francis@opensource.wdc.com> References: <20220331234441.15920-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.71.154.45; envelope-from=prvs=08287e7cc=alistair.francis@opensource.wdc.com; helo=esa6.hgst.iphmx.com X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 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_MED=-2.3, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZM-MESSAGEID: 1648770585841100003 Content-Type: text/plain; charset="utf-8" From: Palmer Dabbelt The ISA doesn't allow bare mappings to be cached, as the caches are translations and bare mppings are not translated. We cache these translations in QEMU in order to utilize the TLB code, but that leaks out to the guest. Suggested-by: phantom@zju.edu.cn # no name in the From field Fixes: 1e0d985fa9 ("target/riscv: Only flush TLB if SATP.ASID changes") Signed-off-by: Palmer Dabbelt Reviewed-by: Alistair Francis Message-Id: <20220330165913.8836-1-palmer@rivosinc.com> Signed-off-by: Alistair Francis --- target/riscv/csr.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/target/riscv/csr.c b/target/riscv/csr.c index 0606cd0ea8..341c2e6f23 100644 --- a/target/riscv/csr.c +++ b/target/riscv/csr.c @@ -1844,7 +1844,7 @@ static RISCVException read_satp(CPURISCVState *env, i= nt csrno, static RISCVException write_satp(CPURISCVState *env, int csrno, target_ulong val) { - target_ulong vm, mask, asid; + target_ulong vm, mask; =20 if (!riscv_feature(env, RISCV_FEATURE_MMU)) { return RISCV_EXCP_NONE; @@ -1853,20 +1853,22 @@ static RISCVException write_satp(CPURISCVState *env= , int csrno, if (riscv_cpu_mxl(env) =3D=3D MXL_RV32) { vm =3D validate_vm(env, get_field(val, SATP32_MODE)); mask =3D (val ^ env->satp) & (SATP32_MODE | SATP32_ASID | SATP32_P= PN); - asid =3D (val ^ env->satp) & SATP32_ASID; } else { vm =3D validate_vm(env, get_field(val, SATP64_MODE)); mask =3D (val ^ env->satp) & (SATP64_MODE | SATP64_ASID | SATP64_P= PN); - asid =3D (val ^ env->satp) & SATP64_ASID; } =20 if (vm && mask) { if (env->priv =3D=3D PRV_S && get_field(env->mstatus, MSTATUS_TVM)= ) { return RISCV_EXCP_ILLEGAL_INST; } else { - if (asid) { - tlb_flush(env_cpu(env)); - } + /* + * The ISA defines SATP.MODE=3DBare as "no translation", but w= e still + * pass these through QEMU's TLB emulation as it improves + * performance. Flushing the TLB on SATP writes with paging + * enabled avoids leaking those invalid cached mappings. + */ + tlb_flush(env_cpu(env)); env->satp =3D val; } } --=20 2.35.1 From nobody Thu Dec 18 19:32:54 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; 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=fail(p=quarantine dis=quarantine) header.from=opensource.wdc.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1648770588169475.7183736798295; Thu, 31 Mar 2022 16:49:48 -0700 (PDT) Received: from localhost ([::1]:55240 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1na4Xx-0006ys-RO for importer@patchew.org; Thu, 31 Mar 2022 19:49:46 -0400 Received: from eggs.gnu.org ([209.51.188.92]:51092) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1na4TR-0004f9-DG for qemu-devel@nongnu.org; Thu, 31 Mar 2022 19:45:05 -0400 Received: from esa6.hgst.iphmx.com ([216.71.154.45]:58851) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1na4TP-00007b-NG for qemu-devel@nongnu.org; Thu, 31 Mar 2022 19:45:05 -0400 Received: from uls-op-cesaip01.wdc.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 01 Apr 2022 07:45:04 +0800 Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 31 Mar 2022 16:16:43 -0700 Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip02.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 31 Mar 2022 16:45:03 -0700 Received: from usg-ed-osssrv.wdc.com (usg-ed-osssrv.wdc.com [127.0.0.1]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTP id 4KV0KB5MTNz1Rwrw for ; Thu, 31 Mar 2022 16:45:02 -0700 (PDT) Received: from usg-ed-osssrv.wdc.com ([127.0.0.1]) by usg-ed-osssrv.wdc.com (usg-ed-osssrv.wdc.com [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id Gn1hXYcWcrpi for ; Thu, 31 Mar 2022 16:45:02 -0700 (PDT) Received: from toolbox.alistair23.me (unknown [10.225.165.114]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4KV0K76Rkkz1Rvlx; Thu, 31 Mar 2022 16:44:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1648770304; x=1680306304; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=xjmMS+kIAcQinSufgq5Ahmy6xPuVneaoFUn5VAHI1is=; b=AfdDqldNgxWzIrEoWLdI/htPsz8vMhhcKw8YNfvvahCB78LYr0b8MGk7 WtYu866I5IegAqp/jA7tKrfNnUNI965+Cuv3/PtBs7IVLBTWie1q3oEmx jiMNBqF7LDXzh7dxn4AVxJ2M5eV9Xvgnzcyp4dhOlgkrWto4StYOPadM4 +Zsm4qDuHDS3d/MWRvdsttcjQsEThZKD1g7bec1B/tUyRysjlQf2cigLR nKtc4LEuWIRUs2PGMy+KBLLaxwRM56clLg1WSdQqU450dkwTS/u7YZFqC yzAKqA+CL3sP1BQev2Yg7nclZdgEJ01ro047cpXtjU6UkIHCN7/dGn6uh w==; X-IronPort-AV: E=Sophos;i="5.90,225,1643644800"; d="scan'208";a="197691433" IronPort-SDR: 1yl1ERdSMQ+AWz0Lzr0sLSB2CE+Svwws8cDHyZpSSylwJ2I3D0eoHzZYtaFf5vNTmTtNEF4V83 H6tZiSCAki9B3s3rETkXzCh3mYOMkxoSUvZ9/n0Ei3o/D9/iLe9sXK+2FiL0HvxmXlezi4MiHe GZk4/J9na1QPwN/tG9GeA5p5e48dfvWdHKCnAt0/ibU8JXVwz9ZF5IoeyPGmMkuY5qRPL+OWzu /DGDgAmW4+6HnyyJnp8OSU5XN84nwt6PhdyQsgupfiPvTA/e9NMVvNNjuBvhT0GsUxv+EaGckm WkzPG//15gqMBDpUOrSjCLLQ IronPort-SDR: IsPoxiDV3FLJQILtMtYPRHOiML82jB2B7U/uuddxF+rGm4bbN36cW+SdTDc44x8TiRHFv3rdaD b0haIyH00ReuTkT2Aou5ghHjpX3+3c0vmDMvPmwbIw19hch3nnDZiNpg4XYuW4Dy+hHU7TVIdL C1bBoJOwoy6o83Qqw8dS4Xt3t6FG/LNQyEt137O8CVB1/F6HAIZzU6hyXn7WQPntFE0mIUo96/ vpgpTpuD1WFoZ06aS2Z9DLMSLTXHjywF30s99h/T7WPF1ZbvI6r0tP5T51fHtiRWV+5ATy5NXR cAc= WDCIronportException: Internal Authentication-Results: usg-ed-osssrv.wdc.com (amavisd-new); dkim=pass reason="pass (just generated, assumed good)" header.d=opensource.wdc.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d= opensource.wdc.com; h=content-transfer-encoding:content-type :mime-version:references:in-reply-to:x-mailer:message-id:date :subject:to:from; s=dkim; t=1648770302; x=1651362303; bh=xjmMS+k IAcQinSufgq5Ahmy6xPuVneaoFUn5VAHI1is=; b=flbnGs2HOt/l5V1X3F3R3P9 ufavgRfLwBaXtkOZmYJJDiwIFY62RZyVMj06aisIWQd2zJXZ7ApZjbLQ2LG78cLg o6W/U0JB9/agpzkR9EnKTHDya7xrFjDRkZwtXGRezcVOwY+hS0rCgaFd5i0eEyLx vgfIYWtP96CK/hHL3JhX9Iy5tLIYNRHuGu1HXQO7QONR0eKV9tTcAOlgG0Bu8Jpa CB8/u2WCr6leK0Ct5u/3bBnOa2m5XTzgeDsrp2Sjj3j0Rkohc1qi96YNb0eYxeQU vekXt3Sii5NM5yweaEJLGP1eR3EpXyXrAKT3RAuvvYGLNXNduquMql8sbIKGSbg= = X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, "Yueh-Ting (eop) Chen" , Frank Chang , Alistair Francis Subject: [PULL 2/2] target/riscv: rvv: Add missing early exit condition for whole register load/store Date: Fri, 1 Apr 2022 09:44:41 +1000 Message-Id: <20220331234441.15920-3-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220331234441.15920-1-alistair.francis@opensource.wdc.com> References: <20220331234441.15920-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.71.154.45; envelope-from=prvs=08287e7cc=alistair.francis@opensource.wdc.com; helo=esa6.hgst.iphmx.com X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 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_MED=-2.3, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZM-MESSAGEID: 1648770589456100001 Content-Type: text/plain; charset="utf-8" From: "Yueh-Ting (eop) Chen" According to v-spec (section 7.9): The instructions operate with an effective vector length, evl=3DNFIELDS*VLE= N/EEW, regardless of current settings in vtype and vl. The usual property that no elements are written if vstart =E2=89=A5 vl does not apply to these instruc= tions. Instead, no elements are written if vstart =E2=89=A5 evl. Signed-off-by: eop Chen Reviewed-by: Frank Chang Reviewed-by: Alistair Francis Message-Id: <164762720573.18409.3931931227997483525-0@git.sr.ht> Signed-off-by: Alistair Francis --- target/riscv/insn_trans/trans_rvv.c.inc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/target/riscv/insn_trans/trans_rvv.c.inc b/target/riscv/insn_tr= ans/trans_rvv.c.inc index 275fded6e4..4ea7e41e1a 100644 --- a/target/riscv/insn_trans/trans_rvv.c.inc +++ b/target/riscv/insn_trans/trans_rvv.c.inc @@ -1121,6 +1121,10 @@ static bool ldst_whole_trans(uint32_t vd, uint32_t r= s1, uint32_t nf, gen_helper_ldst_whole *fn, DisasContext *s, bool is_store) { + uint32_t evl =3D (s->cfg_ptr->vlen / 8) * nf / (1 << s->sew); + TCGLabel *over =3D gen_new_label(); + tcg_gen_brcondi_tl(TCG_COND_GEU, cpu_vstart, evl, over); + TCGv_ptr dest; TCGv base; TCGv_i32 desc; @@ -1140,6 +1144,7 @@ static bool ldst_whole_trans(uint32_t vd, uint32_t rs= 1, uint32_t nf, if (!is_store) { mark_vs_dirty(s); } + gen_set_label(over); =20 return true; } --=20 2.35.1