From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id AABD4EE7FF4 for ; Sat, 9 Sep 2023 20:17:49 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3B0F66B0126; Sat, 9 Sep 2023 16:17:49 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 2EC7E6B0127; Sat, 9 Sep 2023 16:17:49 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0EEA86B0128; Sat, 9 Sep 2023 16:17:49 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id E78FE6B0126 for ; Sat, 9 Sep 2023 16:17:48 -0400 (EDT) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id B26DB805E2 for ; Sat, 9 Sep 2023 20:17:48 +0000 (UTC) X-FDA: 81218169816.06.3E4B81B Received: from wout4-smtp.messagingengine.com (wout4-smtp.messagingengine.com [64.147.123.20]) by imf02.hostedemail.com (Postfix) with ESMTP id 9E54580016 for ; Sat, 9 Sep 2023 20:17:46 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=sholland.org header.s=fm2 header.b="J 8U6+zD"; dkim=pass header.d=messagingengine.com header.s=fm1 header.b="b M27lb4"; dmarc=pass (policy=none) header.from=sholland.org; spf=pass (imf02.hostedemail.com: domain of samuel@sholland.org designates 64.147.123.20 as permitted sender) smtp.mailfrom=samuel@sholland.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1694290666; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=a7RQskjaETnUB7Hp/T92jpvvET5ms5jF4Eb+hZaDEyI=; b=y3wzX5knm9PhLpS2B5V5Fl6iRWPtcLCtMecwdVQQ+AxpIDyjeI/aBlBt6GWEdSkrGtwpHs 9VJ/MSFeDAS9FtLfu5va3KLW5/Ck9D2ibxgSHPSAJjp+ufQECSSFgqEOSMCUJ+RdIcjLGG 2mfX7aGmshoqS2A8GzxyAymlnLq3fQg= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=sholland.org header.s=fm2 header.b="J 8U6+zD"; dkim=pass header.d=messagingengine.com header.s=fm1 header.b="b M27lb4"; dmarc=pass (policy=none) header.from=sholland.org; spf=pass (imf02.hostedemail.com: domain of samuel@sholland.org designates 64.147.123.20 as permitted sender) smtp.mailfrom=samuel@sholland.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1694290666; a=rsa-sha256; cv=none; b=b2Zk6uhYg5dbioZrI0W8Mwqwf0MZ7VKgFNS2en7wfB3ITjhnJwNm0jQW/TqUuZ+sGi4LN0 ZlSUFqNMHAfUOXthMXTuEG0jl8IHF/hce074OZVBaQWGfTFns9fXa7+kfs0m6XFul4wZ7g t8JzBg3som+ay2CcTCW3eB1pAdKDcNU= Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) by mailout.west.internal (Postfix) with ESMTP id DF3C4320090E; Sat, 9 Sep 2023 16:17:44 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute3.internal (MEProxy); Sat, 09 Sep 2023 16:17:45 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sholland.org; h= cc:cc:content-transfer-encoding:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to; s=fm2; t=1694290664; x= 1694377064; bh=a7RQskjaETnUB7Hp/T92jpvvET5ms5jF4Eb+hZaDEyI=; b=J 8U6+zD6CiKtlWqKDAskkYFhuDtgIckiPB/7lksw946WKmDxpWUgYdbbEDm0RclGl vDY74H5Yr4DdxccX57XaVRToiLWYDmlTbO0luKq3/cIrsBDx9pxmD+O04EwVAJXy Z21t93Ly8W6i0Ahhc5B5/eFQ7QBQT3UpVbqQK0MNoer5pr3h4xjtVgL60X6P4i1H ivUx277V8FX//1JY4wlhJ2ZwxJLn1p4QtQQP8W7r9gDllhtb0BH9vrjQ8IHf9k7B RZYPilLZGpkEPRe42T2nppigHi+ANLbEsRK64ycR8vSZGjBdFJ9mIfhFOWLTATBk aUBt2R3LPMlA1XLxVcrZQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1694290664; x= 1694377064; bh=a7RQskjaETnUB7Hp/T92jpvvET5ms5jF4Eb+hZaDEyI=; b=b M27lb4EWA9BmB3m23H9K7njzrwz1bmIeiC5n4OWhUv2bwrE3fqlPBd/kAKAq3I9T e5xwcraAUx0Gc+NwOYzt8ojKyH3/XxxiNv1oVipM8loatwq/R2656NXKOYmYKmNi O21F3BqBHB2BTq1h+mMfnaq1iypcjKCMUukjOpNMPVr32ts1eBC4LMBohZWu+Oj7 XIThvzOMEr/coKW8CccbNQsAKKcGQYFdbNpx0mDpETtmLShxDxs8IRZt1mJDC6tC FWSYgAAhfceLtWGniOn7cqvbhIGsHYCwX7xj3I/kK4U/xdM8i/oeAhkk4N5YvzQH ckFKYFs9xZRm+KPQViSKw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedviedrudehledgudegiecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh necuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmd enucfjughrpefhvfevufffkffojghfggfgsedtkeertdertddtnecuhfhrohhmpefurghm uhgvlhcujfholhhlrghnugcuoehsrghmuhgvlhesshhhohhllhgrnhgurdhorhhgqeenuc ggtffrrghtthgvrhhnpedukeetueduhedtleetvefguddvvdejhfefudelgfduveeggeeh gfdufeeitdevteenucevlhhushhtvghrufhiiigvpedunecurfgrrhgrmhepmhgrihhlfh hrohhmpehsrghmuhgvlhesshhhohhllhgrnhgurdhorhhg X-ME-Proxy: Feedback-ID: i0ad843c9:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sat, 9 Sep 2023 16:17:43 -0400 (EDT) From: Samuel Holland To: Palmer Dabbelt , Alexandre Ghiti , linux-riscv@lists.infradead.org Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Samuel Holland Subject: [PATCH 7/7] riscv: mm: Combine the SMP and non-SMP TLB flushing code Date: Sat, 9 Sep 2023 15:16:35 -0500 Message-ID: <20230909201727.10909-8-samuel@sholland.org> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230909201727.10909-1-samuel@sholland.org> References: <20230909201727.10909-1-samuel@sholland.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 9E54580016 X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: ozuqkiexyhkfqmzaf8cqee7uein1ygm1 X-HE-Tag: 1694290666-122139 X-HE-Meta: U2FsdGVkX19VoQNM22mGBk0DDiVMUUNnNshW4YG1sZA9iX8Vg8kTyhCqqaTkrUJ14XXWGhqCfyiYiijOp2L7BW49IAUMNlVpg5MXTxzNIzp9TqE4JdWARJCVwAX10S7+KL2pC+5WsT0I9xyuebh1pdkeJgbOhVPfCrrzuxqJLXDxBBrr5TvAk7sf/bJtXu4utpM6wdzpBGJ0XgbpxYtjDE1NI8b/yJKyQE0BlN4PdEvPh4abne7Sa0q3+oOHeazYxWdFgdIBP34ZWk0Y9blzuj+juDnxOA9GCBCJyKtZ0V9ZmlBdmNui3t8h2wcDAHKt3/dGiSZkd04a0DOGLv2iL1F53BC9nPym6EiVAxafV19r0T0HK6BC/QsZWG590hzU/ga7sJM57X+ii2nGRKg8N/6YY9aTdL7AqaPKTXpquzYZGaRgNfHaXniV1mAfc/0vbRqmMy9JTpTq+DPJURskvHrcMPWHjYvnvdhYZ0QXap43H7DW3uRvyuy/3FwD2IrcDLXdL2ylEkemcqsVqFZXdxy6xGMqf+PO5vfNxWD6L3S/BxamwD3Jawg5CgEtJkxv71Z51n+FWClNfirAYdjeb4bR759qWZMeCwYZBiQBiSEMnDwowqVdzZIy1agim9RrGI6pimOCnxb62tGDBAMaG2FqYOt81x0U/Bpay73ktLgEBv9ek+gaUGqi6LuLNoLHK94eXMKpscbv6vg54eNmg+TkksDvpEzm1t5lwMjW3KcyT999OaTT+oQwz4NuG2OA0gl6Phr2tfbP3+RbZOVTa/wN/joB9+l6TlzwJchxUJys2c+INcIYUkiD+JDMX/0ea2wFkRnaRHRmO2xS8ry121ZwMYY4PU7ItPWIqZaDKuuxKX2h2nvdzPXcgIUCmvKjTtYlZiwn1DsWiBUv8/+QETmrKvtwweAMGAW1YwMFjvMC8n5A9V3YlhilWb/fQ+qNjzrad5bEj3fHbu4KQKA jwHy4BxR Rxz3PfCV1zEYsOjv59rBYYPZlc3IRMuqXjLQ5DtGXA3KyxIPi/5HZ+o9RS8Va4w/ZQV1V4bNkNA+wiLP31lpUz6Gdl4RJqZbwaqC9hSWxzj3dCrymwGN9Uefazvm8pbGauxcGZ4P8uwW5Vtc8zwIpNlsHgzaGhANriPqts9Qri1MyTboEQYdo+fN+z9fGaEK6xjSXzUB46VzKMapVjUNEphysaeLvYSwSXuNS7FnrVs7cL/p4Dbe63IFS7ewOt4ulUEKIKzjjO02pfVMEh93EuaFuvg== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: This allows non-SMP configurations to take advantage of improvements to the code in tlbflush.c, such as support for huge pages and flushing multiple-page ranges. Signed-off-by: Samuel Holland --- arch/riscv/include/asm/tlbflush.h | 31 ++++++++----------------------- arch/riscv/mm/Makefile | 5 +---- arch/riscv/mm/tlbflush.c | 7 ++++++- 3 files changed, 15 insertions(+), 28 deletions(-) diff --git a/arch/riscv/include/asm/tlbflush.h b/arch/riscv/include/asm/tlbflush.h index ba27cf68b170..a947ae3afd28 100644 --- a/arch/riscv/include/asm/tlbflush.h +++ b/arch/riscv/include/asm/tlbflush.h @@ -33,13 +33,12 @@ static inline void local_flush_tlb_page_asid(unsigned long addr, { ALT_SFENCE_VMA_ADDR_ASID(addr, asid); } -#else /* CONFIG_MMU */ -#define local_flush_tlb_all() do { } while (0) -#define local_flush_tlb_page(addr) do { } while (0) -#endif /* CONFIG_MMU */ -#if defined(CONFIG_SMP) && defined(CONFIG_MMU) +#ifdef CONFIG_SMP void flush_tlb_all(void); +#else +#define flush_tlb_all() local_flush_tlb_all() +#endif void flush_tlb_mm(struct mm_struct *mm); void flush_tlb_page(struct vm_area_struct *vma, unsigned long addr); void flush_tlb_range(struct vm_area_struct *vma, unsigned long start, @@ -49,24 +48,10 @@ void flush_tlb_range(struct vm_area_struct *vma, unsigned long start, void flush_pmd_tlb_range(struct vm_area_struct *vma, unsigned long start, unsigned long end); #endif -#else /* CONFIG_SMP && CONFIG_MMU */ - -#define flush_tlb_all() local_flush_tlb_all() -#define flush_tlb_page(vma, addr) local_flush_tlb_page(addr) - -static inline void flush_tlb_mm(struct mm_struct *mm) -{ - unsigned long asid = cntx2asid(atomic_long_read(&mm->context.id)); - - local_flush_tlb_all_asid(asid); -} - -static inline void flush_tlb_range(struct vm_area_struct *vma, - unsigned long start, unsigned long end) -{ - flush_tlb_mm(vma->vm_mm); -} -#endif /* !CONFIG_SMP || !CONFIG_MMU */ +#else /* CONFIG_MMU */ +#define local_flush_tlb_all() do { } while (0) +#define local_flush_tlb_page(addr) do { } while (0) +#endif /* CONFIG_MMU */ /* Flush a range of kernel pages */ static inline void flush_tlb_kernel_range(unsigned long start, diff --git a/arch/riscv/mm/Makefile b/arch/riscv/mm/Makefile index 9c454f90fd3d..64f901674e35 100644 --- a/arch/riscv/mm/Makefile +++ b/arch/riscv/mm/Makefile @@ -13,15 +13,12 @@ endif KCOV_INSTRUMENT_init.o := n obj-y += init.o -obj-$(CONFIG_MMU) += extable.o fault.o pageattr.o +obj-$(CONFIG_MMU) += extable.o fault.o pageattr.o tlbflush.o obj-y += cacheflush.o obj-y += context.o obj-y += pgtable.o obj-y += pmem.o -ifeq ($(CONFIG_MMU),y) -obj-$(CONFIG_SMP) += tlbflush.o -endif obj-$(CONFIG_HUGETLB_PAGE) += hugetlbpage.o obj-$(CONFIG_PTDUMP_CORE) += ptdump.o obj-$(CONFIG_KASAN) += kasan_init.o diff --git a/arch/riscv/mm/tlbflush.c b/arch/riscv/mm/tlbflush.c index 56c2d40681a2..587b3bb084b2 100644 --- a/arch/riscv/mm/tlbflush.c +++ b/arch/riscv/mm/tlbflush.c @@ -15,6 +15,7 @@ static inline void local_flush_tlb_range_asid(unsigned long start, local_flush_tlb_all_asid(asid); } +#ifdef CONFIG_SMP static void __ipi_flush_tlb_all(void *info) { local_flush_tlb_all(); @@ -41,12 +42,12 @@ static void __ipi_flush_tlb_range_asid(void *info) local_flush_tlb_range_asid(d->start, d->size, d->stride, d->asid); } +#endif static void __flush_tlb_range(struct mm_struct *mm, unsigned long start, unsigned long size, unsigned long stride) { unsigned long asid = cntx2asid(atomic_long_read(&mm->context.id)); - struct flush_tlb_range_data ftd; struct cpumask *cmask = mm_cpumask(mm); unsigned int cpuid; @@ -54,9 +55,12 @@ static void __flush_tlb_range(struct mm_struct *mm, unsigned long start, return; cpuid = get_cpu(); +#ifdef CONFIG_SMP /* check if the tlbflush needs to be sent to other CPUs */ if (cpumask_any_but(cmask, cpuid) < nr_cpu_ids) { if (riscv_use_ipi_for_rfence()) { + struct flush_tlb_range_data ftd; + ftd.asid = asid; ftd.start = start; ftd.size = size; @@ -68,6 +72,7 @@ static void __flush_tlb_range(struct mm_struct *mm, unsigned long start, sbi_remote_sfence_vma_asid(cmask, start, size, asid); } else +#endif local_flush_tlb_range_asid(start, size, stride, asid); put_cpu(); } -- 2.41.0