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 5D398C61DB2 for ; Fri, 13 Jun 2025 08:41:07 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D883C6B0089; Fri, 13 Jun 2025 04:41:06 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D39216B008A; Fri, 13 Jun 2025 04:41:06 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C4FA86B008C; Fri, 13 Jun 2025 04:41:06 -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 A3C2F6B0089 for ; Fri, 13 Jun 2025 04:41:06 -0400 (EDT) Received: from smtpin05.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id D33E9140F7A for ; Fri, 13 Jun 2025 08:41:04 +0000 (UTC) X-FDA: 83549732448.05.354995D Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf23.hostedemail.com (Postfix) with ESMTP id 2D4C6140008 for ; Fri, 13 Jun 2025 08:41:02 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=none; spf=pass (imf23.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@arm.com; dmarc=pass (policy=none) header.from=arm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1749804063; 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-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=CMgnkMIG/DukeBtP6vVNc/sfMhj00uMw9w2nlSoRpiU=; b=oQdwfT2Xnsx2+TsUOJgxBQAZCkvIPBhw2JyVtMQ2Wo0rrryO+KCld9qC2ggADruJ4iCJbD qbQS+MBJC6utdM1fV3sOJVZeyMsKyCbDhZQJttuSUi7RmqDqoMpcl1IkNo4cfT34cTji6p ed+TK6XXZygLMHkLLUQ1sgHoUtR3gNo= ARC-Authentication-Results: i=1; imf23.hostedemail.com; dkim=none; spf=pass (imf23.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@arm.com; dmarc=pass (policy=none) header.from=arm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1749804063; a=rsa-sha256; cv=none; b=32PGdHV1mpzP7uENE3Va4BnssK3EBim3bwRJY0TUBYCVMrfri/3r+ElyCIS9g/uFtSQN+y EvPBGtkt9bbMs80IfArP4QLysmw9itbFZ2vdqmIdeH7wchDcnQy2a5MFJGz+vuW24T57M7 Fs6NFZboC+DgIVHxSsCh1fWE8aJA/KQ= Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 5C1C41CDD; Fri, 13 Jun 2025 01:40:42 -0700 (PDT) Received: from [10.57.84.117] (unknown [10.57.84.117]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 6DA213F66E; Fri, 13 Jun 2025 01:41:00 -0700 (PDT) Message-ID: <0ba9820d-f498-42b0-a663-6f4dca5374b4@arm.com> Date: Fri, 13 Jun 2025 09:40:58 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 4/6] sparc/mm: Do not disable preemption in lazy MMU mode Content-Language: en-GB To: Alexander Gordeev , Andrew Morton Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, sparclinux@vger.kernel.org, xen-devel@lists.xenproject.org, linuxppc-dev@lists.ozlabs.org, linux-s390@vger.kernel.org, Hugh Dickins , Nicholas Piggin , Guenter Roeck , Juergen Gross , Jeremy Fitzhardinge References: From: Ryan Roberts In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Rspamd-Queue-Id: 2D4C6140008 X-Rspamd-Server: rspam07 X-Stat-Signature: omrgi7ebfgyf99qeqmxaobnmopm4ai9w X-Rspam-User: X-HE-Tag: 1749804062-621771 X-HE-Meta: U2FsdGVkX1+IN2lBarkUKOCHtmyhgezr++svTGAJ8p7d1dG+1UW+WhBz1fplFMlXeBk5wdkDdRtCDLlWt/eFBhixYJG60YTFAk30E6WdPceaSRLVXKEhyctYAAgYbWJJPtrObo0NHKznClr4vnoZ9wvJUEoKokSok7uZ+c+VrAGlhz/RB9Ct3ni37lIer7fgOjIaBwfc/hQSqzG8VOdKAeQwwhzIdQRxLR9WHRTOttL8jVOfeU1ZbFfAMhPFuTYaxOSndHSiTBn5+nyltaFd3dDGEU40TdCq26hno9AbGM5xpipUTQVY1bPS7Oj3kYCnt/CUYsgQPa9NJJWmc2QQkkJcpBYwpD6jQF7P9LOXgtLndZRlLIurJAEgOGY9/EoRLp0Is4o5/j/yliuLr3IGygB12DGsUykB94P9eZSP1p1+ZBAOB7zTnPAeE+8kD0i+c/HPwlL6s102egAggsz4GDbmey+NiSOZYiDRKoI4oXWlPoxSt9AA94IU2fLNsfZVOHFobMh2fp5Dt+q0aQlpK1yBectpxujcYT2TJ2kLlgwfjUhWOUuq8zQNO732PGgyyFEOQTxSyyMCFANKg35G6yMBacRdY73ZiRMDEtXjM6biu1/LgXkvaxr9jU5xpqGP/unY6V0Y9q/e3/dbCW+dW6noyNjonLUWEPPUgNndtOLJAHEPS3rUsNzG11o5bd2T3enoKGH6chMdpjB7FrxXarejB0DwD4LcEh9vHUvrOhDQbwKP7d8hAwrLTB4sdd6N9qxXXahzdZkOC7oibzwfF9GiYHTpSADt1WkyHzLnyXLthPMXBuDFQLXoIH5YcyHucuZhLy1DxPPujPCmKwZljv9PG4JdvVa4MJrZ0tPWe9q8sm6SMl9JXpTUk6Idjab4mYq9o65u9F8K+9z9ay7lyQszdXUVOnFjUDLJ3FbYKNydWOE62ix/xl1Sfn7hhY2LxTBgJ6Fq8VoiZ1AOcJb cpCN/hv6 RUFfFPrFCpZ/raoz1lYeSTaZ4yG80tMJOY+mFaBDGt3EfFeyMQymEDs14DdLdvd3N2Ar87+5hW+dw3U70QChIw/TBHN99vV8PPo7PstmxgAerRUUXPMHq60AB+I7BddEz098vumEEtsxAiOXWEdSNvIX+hrSMPL73q/fI90ERlMraV2g= 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: List-Subscribe: List-Unsubscribe: On 12/06/2025 18:36, Alexander Gordeev wrote: > Commit a1d416bf9faf ("sparc/mm: disable preemption in lazy mmu mode") > is not necessary anymore, since the lazy MMU mode is entered with a > spinlock held and sparc does not support Real-Time. Thus, upon entering > the lazy mode the preemption is already disabled. Surely given Sparc knows that it doesn't support PREEMPT_RT, it is better for it's implementation to explicitly disable preemption rather than rely on the spinlock to do it, since the spinlock penalizes other arches unnecessarily? It also prevents multiple CPUs from updating (different areas of) kernel pgtables in parallel. The property Sparc needs is for the task to stay on the same CPU without interruption, right? Same goes for powerpc. > > Signed-off-by: Alexander Gordeev > --- > arch/sparc/include/asm/tlbflush_64.h | 2 +- > arch/sparc/mm/tlb.c | 12 ++++++++---- > 2 files changed, 9 insertions(+), 5 deletions(-) > > diff --git a/arch/sparc/include/asm/tlbflush_64.h b/arch/sparc/include/asm/tlbflush_64.h > index 8b8cdaa69272..a6d8068fb211 100644 > --- a/arch/sparc/include/asm/tlbflush_64.h > +++ b/arch/sparc/include/asm/tlbflush_64.h > @@ -44,7 +44,7 @@ void flush_tlb_kernel_range(unsigned long start, unsigned long end); > void flush_tlb_pending(void); > void arch_enter_lazy_mmu_mode(void); > void arch_leave_lazy_mmu_mode(void); > -#define arch_flush_lazy_mmu_mode() do {} while (0) > +void arch_flush_lazy_mmu_mode(void); > > /* Local cpu only. */ > void __flush_tlb_all(void); > diff --git a/arch/sparc/mm/tlb.c b/arch/sparc/mm/tlb.c > index a35ddcca5e76..e46dfd5f2583 100644 > --- a/arch/sparc/mm/tlb.c > +++ b/arch/sparc/mm/tlb.c > @@ -52,10 +52,9 @@ void flush_tlb_pending(void) > > void arch_enter_lazy_mmu_mode(void) > { > - struct tlb_batch *tb; > + struct tlb_batch *tb = this_cpu_ptr(&tlb_batch); > > - preempt_disable(); > - tb = this_cpu_ptr(&tlb_batch); > + VM_WARN_ON_ONCE(preemptible()); > tb->active = 1; > } > > @@ -63,10 +62,15 @@ void arch_leave_lazy_mmu_mode(void) > { > struct tlb_batch *tb = this_cpu_ptr(&tlb_batch); > > + VM_WARN_ON_ONCE(preemptible()); > if (tb->tlb_nr) > flush_tlb_pending(); > tb->active = 0; > - preempt_enable(); > +} > + > +void arch_flush_lazy_mmu_mode(void) > +{ > + VM_WARN_ON_ONCE(preemptible()); > } > > static void tlb_batch_add_one(struct mm_struct *mm, unsigned long vaddr,