From nobody Sat Nov 15 12:30:08 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1752824596448199.07075442041537; Fri, 18 Jul 2025 00:43:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ucfjb-00034E-30; Fri, 18 Jul 2025 03:42:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ucfW5-0002eD-FQ for qemu-devel@nongnu.org; Fri, 18 Jul 2025 03:28:25 -0400 Received: from mail.loongson.cn ([114.242.206.163]) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ucfW0-0002jm-Rb for qemu-devel@nongnu.org; Fri, 18 Jul 2025 03:28:25 -0400 Received: from loongson.cn (unknown [10.2.5.213]) by gateway (Coremail) with SMTP id _____8CxG6yN93loz8ksAQ--.51423S3; Fri, 18 Jul 2025 15:28:13 +0800 (CST) Received: from localhost.localdomain (unknown [10.2.5.213]) by front1 (Coremail) with SMTP id qMiowJCxocKI93lo0QwcAA--.17387S10; Fri, 18 Jul 2025 15:28:13 +0800 (CST) From: Bibo Mao To: Song Gao Cc: Jiaxun Yang , qemu-devel@nongnu.org Subject: [PATCH v2 8/9] target/loongarch: Use correct page size when flush tlb Date: Fri, 18 Jul 2025 15:28:06 +0800 Message-Id: <20250718072807.3585466-9-maobibo@loongson.cn> X-Mailer: git-send-email 2.39.3 In-Reply-To: <20250718072807.3585466-1-maobibo@loongson.cn> References: <20250718072807.3585466-1-maobibo@loongson.cn> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: qMiowJCxocKI93lo0QwcAA--.17387S10 X-CM-SenderInfo: xpdruxter6z05rqj20fqof0/ X-Coremail-Antispam: 1Uk129KBjDUn29KB7ZKAUJUUUUU529EdanIXcx71UUUUU7KY7 ZEXasCq-sGcSsGvfJ3UbIjqfuFe4nvWSU5nxnvy29KBjDU0xBIdaVrnUUvcSsGvfC2Kfnx nUUI43ZEXa7xR_UUUUUUUUU== 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=114.242.206.163; envelope-from=maobibo@loongson.cn; helo=mail.loongson.cn X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1752824597104116600 Content-Type: text/plain; charset="utf-8" On LoongArch system, there are two pages with one TLB entry. If the whole TLB entry is flushed, two pages will be flushed. Otherwise if tlb is flushed one by one, page size is one page at a time. Also virtual address of odd page is fixed here. Signed-off-by: Bibo Mao --- target/loongarch/tcg/tlb_helper.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/target/loongarch/tcg/tlb_helper.c b/target/loongarch/tcg/tlb_h= elper.c index 76ec469341..47eb3ee318 100644 --- a/target/loongarch/tcg/tlb_helper.c +++ b/target/loongarch/tcg/tlb_helper.c @@ -112,20 +112,19 @@ static void invalidate_tlb_entry(CPULoongArchState *e= nv, int index) } =20 tlb_ps =3D FIELD_EX64(tlb->tlb_misc, TLB_MISC, PS); - pagesize =3D MAKE_64BIT_MASK(tlb_ps, 1); - mask =3D MAKE_64BIT_MASK(0, tlb_ps + 1); + pagesize =3D BIT_ULL(tlb_ps); + mask =3D ~((pagesize << 1) - 1) & TARGET_VIRT_MASK; + addr =3D (tlb_vppn << R_TLB_MISC_VPPN_SHIFT) & mask; =20 if (tlb_v0) { - addr =3D (tlb_vppn << R_TLB_MISC_VPPN_SHIFT) & ~mask; /* even */ mmu_idx =3D BIT(FIELD_EX64(tlb->tlb_entry0, TLBENTRY, PLV)); tlb_flush_range_by_mmuidx(env_cpu(env), addr, pagesize, mmu_idx, TARGET_LONG_BITS); } =20 if (tlb_v1) { - addr =3D (tlb_vppn << R_TLB_MISC_VPPN_SHIFT) & pagesize; /* odd= */ mmu_idx =3D BIT(FIELD_EX64(tlb->tlb_entry1, TLBENTRY, PLV)); - tlb_flush_range_by_mmuidx(env_cpu(env), addr, pagesize, + tlb_flush_range_by_mmuidx(env_cpu(env), addr + pagesize, pagesize, mmu_idx, TARGET_LONG_BITS); } } --=20 2.39.3