From patchwork Thu May 18 13:09:59 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guo Ren X-Patchwork-Id: 95883 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp495600vqo; Thu, 18 May 2023 06:32:47 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ7H6TtHem96FGftyNTDhlkbfX7+cyNvP9Q3lhApGx7In4H8JcPC3zfguRF7+QouOQWf9XLo X-Received: by 2002:a17:90b:1298:b0:253:3eb5:3ade with SMTP id fw24-20020a17090b129800b002533eb53ademr2619617pjb.8.1684416767588; Thu, 18 May 2023 06:32:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1684416767; cv=none; d=google.com; s=arc-20160816; b=RnxFaK1yAHb8AgvQIUvf9asl10RM9fMNRZkO7lbdkEmLxbmW9LlMJLYs+YrK5q/NB1 e9QySEn35NIwEZS7ph2K8ivNdYd8yTZcw4qUL2J8AySJiyTr6lSEP8+rpveK6AGZYaRb Y4hSMAs1KtfoPb3L37e6iqYCls5kRcjgdG+KpUsfRQOGbRPq96dH2WMsgWE1mn3J7SZD B9EizAf8bHOBPPZvd3LB5FMQI0IF5a+2D+bK0q/Ik3zyyvtwUZrRlDTq/wA9/976350y tFEzA6rn8Zm+LP/rDUl0vPbeDDWW1Jkhc23pajKFn7H52i/FetRm58K1AqW8mIcf01Vj WmGg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=PwBm6ePRxfwm7nCtOhN7A19oa1a9rO4lmuXfy6HDNBY=; b=SwSajXKpabKSyeVT/oFd72u8wX2qOR/YcXZxRTO62R9eO2Oaoq1rDtphVcee0CVJpx eL9rLEwrfoI9muOFMS19bI7VVBvbcmHm8JMln+LW6Ag87Xx1lDV4TOp5KgGaCIw4+DTs 7pYqQRlV2yYgxxy5KGIGtFEtV5B8tgo+tZ02ZbLhoXgRz9QBMrdn+pcUQJTg2BoRYlYP FRgZqd+hkfm6QqLK4BDhn/WeHq6UCN60YUmlDTDELeS8IfAzy3tXwSSiRp+62vezRGZL A/PjVw05kdOhMDeJjR/BxZzpVHCBGXDRizRlNdc2DIRNzFrrrJ+3gjtAPGc6JrWuOoWR Cj5w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=dpq2AALe; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id n17-20020a17090a929100b00250bf29b6d6si4156764pjo.165.2023.05.18.06.32.32; Thu, 18 May 2023 06:32:47 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=dpq2AALe; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231537AbjERNN1 (ORCPT + 99 others); Thu, 18 May 2023 09:13:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44938 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231379AbjERNM6 (ORCPT ); Thu, 18 May 2023 09:12:58 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 500A61FD8; Thu, 18 May 2023 06:12:33 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 53A0064F4E; Thu, 18 May 2023 13:12:22 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 61FCFC433EF; Thu, 18 May 2023 13:12:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1684415541; bh=z5mkr//0fNawn45SMn5US81wCUZHNT6No8cwVZ30STk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=dpq2AALe0mn8e3ICXMEMakWoQf7l4LZI9XJRL/KK8OthBuOAkkVBTJ2R5CWP7TUiJ Lijji9TT0GYg9fBUfTLk6wPK4WXm+jxmpEbBajfcmdzmeRiy0ygmmAsUBKmbllOfBm GnZ+bAVUV7Wyjr+nH981VRaTHsDByS7vGYmUPcEtDXWsZSvAZolKa4MH222LURagYw uPbNeSwfdDlP5bA43XtY6Onzy+BfMiZeJw1Yzm2DsAiO+M2GjYFej3rCH4OuDLXcD6 4jGrdnCY/T2Ybpkves9qxyv/jU92PgqrXB11ZASrYjazL2MnM291C7EyiNIopSXqXE IqaXJF5DKqkRA== From: guoren@kernel.org To: arnd@arndb.de, guoren@kernel.org, palmer@rivosinc.com, tglx@linutronix.de, peterz@infradead.org, luto@kernel.org, conor.dooley@microchip.com, heiko@sntech.de, jszhang@kernel.org, chenhuacai@kernel.org, apatel@ventanamicro.com, atishp@atishpatra.org, mark.rutland@arm.com, bjorn@kernel.org, paul.walmsley@sifive.com, catalin.marinas@arm.com, will@kernel.org, rppt@kernel.org, anup@brainfault.org, shihua@iscas.ac.cn, jiawei@iscas.ac.cn, liweiwei@iscas.ac.cn, luxufan@iscas.ac.cn, chunyu@iscas.ac.cn, tsu.yubo@gmail.com, wefu@redhat.com, wangjunqiang@iscas.ac.cn, kito.cheng@sifive.com, andy.chiu@sifive.com, vincent.chen@sifive.com, greentime.hu@sifive.com, corbet@lwn.net, wuwei2016@iscas.ac.cn, jrtc27@jrtc27.com Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, Guo Ren Subject: [RFC PATCH 08/22] riscv: s64ilp32: Add asid support Date: Thu, 18 May 2023 09:09:59 -0400 Message-Id: <20230518131013.3366406-9-guoren@kernel.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20230518131013.3366406-1-guoren@kernel.org> References: <20230518131013.3366406-1-guoren@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1766238996435768207?= X-GMAIL-MSGID: =?utf-8?q?1766238996435768207?= From: Guo Ren The s32ilp32 uses 9 bits as asid_bits because of the xlen=32 limitation of CSR. The xlen of s64ilp32 is 64 bits in width, and the SATP CSR format is the same for Sv32, Sv39, Sv48, and Sv57. So this patch makes asid mechanism support s64ilp32 with maximum num_asids. Signed-off-by: Guo Ren Signed-off-by: Guo Ren --- arch/riscv/mm/context.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/arch/riscv/mm/context.c b/arch/riscv/mm/context.c index 80ce9caba8d2..696a7ca41f55 100644 --- a/arch/riscv/mm/context.c +++ b/arch/riscv/mm/context.c @@ -20,9 +20,9 @@ DEFINE_STATIC_KEY_FALSE(use_asid_allocator); -static unsigned long asid_bits; +static xlen_t asid_bits; static unsigned long num_asids; -static unsigned long asid_mask; +static xlen_t asid_mask; static atomic_long_t current_version; @@ -225,14 +225,18 @@ static inline void set_mm(struct mm_struct *mm, unsigned int cpu) static int __init asids_init(void) { - unsigned long old; + xlen_t old; /* Figure-out number of ASID bits in HW */ old = csr_read(CSR_SATP); asid_bits = old | (SATP_ASID_MASK << SATP_ASID_SHIFT); csr_write(CSR_SATP, asid_bits); asid_bits = (csr_read(CSR_SATP) >> SATP_ASID_SHIFT) & SATP_ASID_MASK; - asid_bits = fls_long(asid_bits); +#if __riscv_xlen == 64 + asid_bits = fls64(asid_bits); +#else + asid_bits = fls(asid_bits); +#endif csr_write(CSR_SATP, old); /* @@ -265,9 +269,9 @@ static int __init asids_init(void) static_branch_enable(&use_asid_allocator); pr_info("ASID allocator using %lu bits (%lu entries)\n", - asid_bits, num_asids); + (ulong)asid_bits, num_asids); } else { - pr_info("ASID allocator disabled (%lu bits)\n", asid_bits); + pr_info("ASID allocator disabled (%lu bits)\n", (ulong)asid_bits); } return 0;