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 lists.ozlabs.org (lists.ozlabs.org [112.213.38.117]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id B295FC98304 for ; Thu, 24 Sep 2026 02:41:56 +0000 (UTC) Received: from boromir.ozlabs.org (localhost [127.0.0.1]) by lists.ozlabs.org (Postfix) with ESMTP id 4hqylk6Bq4z2yD3; Thu, 24 Sep 2026 12:41:54 +1000 (AEST) Authentication-Results: lists.ozlabs.org; arc=none smtp.remote-ip=95.215.58.226 ARC-Seal: i=1; a=rsa-sha256; d=lists.ozlabs.org; s=201707; t=1790217714; cv=none; b=f8OEc/nCPw9IRzmUKevNWPbu6IYpho/4PlW83KDP8IEWhjc/nFO59KilXl1/gkjghmVaPtQeLGK1+J5wDidhKv8/HbbQwe6ts7/xj/BxcYfL+kBjLcn/SLnlidKSg1B0oTpPLFKWZs0jPR3XYSQ0rRyVn9O2XTt+YV6E8SZOmW1C/oifn7PUfvprgFuKTZqQcKGbNo/MfbTPF9LzgmTnqlhQCeWy6aGzfFAZuiL/g9AqINZ+yuIb+gsSagVmuVMmEI5J0yoe+XUhJ51KXJPy0mLSRR2BQiT1ti/m2HnqRdP+P6B5KDzqMyvrk7IDFcHZIVfS0Y9Dq+Kgkc/WsVcA2Q== ARC-Message-Signature: i=1; a=rsa-sha256; d=lists.ozlabs.org; s=201707; t=1790217714; c=relaxed/relaxed; bh=4JyEcF/oNMZQFBpW+pWfHZaiat0WqM84Tbff9DsrqFA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=ZVyUkprvLvPjyI4+lw6Y8q69zVazZ4OHLpaOG2CrwkMJP4l2cWEr3jqzFGrdu5cEM3k1UZoE5/uQkjj6iuxH6iw+qjSzSCnE5ZGpEMT0GOdezknLmhmiOLpdpdK6ruenD0Kw3vZ61JfAI1Hj8PpeK/k7BQQlh08ETADnTKs9upSPzulY2St5ofUM+W0SFiKzV+IlO1CdoQki2RgC+BxCZF7H3L726oOWCjKfOzQlnWLECRowcA+ey12G78h5DpgkibmD0LFSmVfFUA/LOE39Bc5GKCkP9rQRZkQ0szImONzAGDByRXXw23/WcQ55IL2GKwEgqzUAyXwU1DXCGOB1iw== ARC-Authentication-Results: i=1; lists.ozlabs.org; dmarc=pass (p=none dis=none) header.from=linux.dev; dkim=pass (1024-bit key; unprotected) header.d=linux.dev header.i=@linux.dev header.a=rsa-sha256 header.s=key1 header.b=VPiRC6gZ; dkim-atps=neutral; spf=pass (client-ip=95.215.58.226; helo=mta1.migadu.com; envelope-from=lance.yang@linux.dev; receiver=lists.ozlabs.org) smtp.mailfrom=linux.dev Authentication-Results: lists.ozlabs.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: lists.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=linux.dev header.i=@linux.dev header.a=rsa-sha256 header.s=key1 header.b=VPiRC6gZ; dkim-atps=neutral Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=linux.dev (client-ip=95.215.58.226; helo=mta1.migadu.com; envelope-from=lance.yang@linux.dev; receiver=lists.ozlabs.org) Received: from mta1.migadu.com (out-226.mta1.migadu.com [95.215.58.226]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4hqylg57SMz2xBK for ; Thu, 24 Sep 2026 12:41:49 +1000 (AEST) X-Envelope-To: linuxppc-dev@lists.ozlabs.org DKIM-Signature: a=rsa-sha256; bh=4JyEcF/oNMZQFBpW+pWfHZaiat0WqM84Tbff9DsrqFA=; c=simple/simple; d=linux.dev; h=from:to:subject:date:message-id:mime-version:content-type; s=key1; t=1790217691; v=1; x=1790822491; b=VPiRC6gZba8yFYNQpqTSni09Egij5edXFDUUnAj7i3M5zkd80EAj4aqT/N7XfWc5F2OixOop 0Q8er/e7zgITLXB2+juST/5TNsyW+iFj5/5dlwLxHT1bp2FoRxxnk5B5dayr/3EMAq3bR/sEbdT lo3p2/Fk0ljGasHRnRbYD/Zo= X-Envelope-To: linuxppc-dev@lists.ozlabs.org Received: by smtp.migadu.com with ESMTPS id 1489725b085043fe; Thu, 24 Sep 2026 02:41:26 +0000 X-Mizu-Trace-ID: 1489725b085043fe X-Migadu-Flow: FLOW_OUT From: Lance Yang To: ljs@kernel.org Cc: akpm@linux-foundation.org, david@kernel.org, ziy@nvidia.com, baolin.wang@linux.alibaba.com, liam@infradead.org, nico.pache@linux.dev, ryan.roberts@arm.com, dev.jain@arm.com, baohua@kernel.org, lance.yang@linux.dev, usama.arif@linux.dev, kas@kernel.org, guoren@kernel.org, bcain@kernel.org, geert@linux-m68k.org, dinguyen@kernel.org, schuster.simon@siemens-energy.com, jonas@southpole.se, stefan.kristiansson@saunalahti.fi, shorne@gmail.com, dalias@libc.org, glaubitz@physik.fu-berlin.de, pjw@kernel.org, palmer@dabbelt.com, aou@eecs.berkeley.edu, alex@ghiti.fr, linux@armlinux.org.uk, vgupta@kernel.org, monstr@monstr.eu, chris@zankel.net, jcmvbkbc@gmail.com, will@kernel.org, aneesh.kumar@kernel.org, npiggin@gmail.com, peterz@infradead.org, davem@davemloft.net, andreas@gaisler.com, richard.henderson@linaro.org, mattst88@gmail.com, linmag7@gmail.com, catalin.marinas@arm.com, mark.rutland@arm.com, chenhuacai@kernel.org, kernel@xen0n.name, tsbogend@alpha.franken.de, James.Bottomley@HansenPartnership.com, deller@gmx.de, maddy@linux.ibm.com, mpe@ellerman.id.au, chleroy@kernel.org, hca@linux.ibm.com, gor@linux.ibm.com, agordeev@linux.ibm.com, borntraeger@linux.ibm.com, svens@linux.ibm.com, richard@nod.at, anton.ivanov@cambridgegreys.com, johannes@sipsolutions.net, tglx@kernel.org, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com, arnd@arndb.de, vbabka@kernel.org, rppt@kernel.org, surenb@google.com, mhocko@suse.com, jgg@ziepe.ca, jhubbard@nvidia.com, peterx@redhat.com, ysato@users.sourceforge.jp, shakeel.butt@linux.dev, corbet@lwn.net, rdunlap@infradead.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-csky@vger.kernel.org, linux-hexagon@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-openrisc@vger.kernel.org, linux-sh@vger.kernel.org, linux-riscv@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-snps-arc@lists.infradead.org, linux-arch@vger.kernel.org, sparclinux@vger.kernel.org, linux-alpha@vger.kernel.org, loongarch@lists.linux.dev, linux-mips@vger.kernel.org, linux-parisc@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-s390@vger.kernel.org, linux-um@lists.infradead.org, hughd@google.com, qi.zheng@linux.dev, linux-doc@vger.kernel.org Subject: Re: [PATCH v4 10/12] mm: enable MMU_GATHER_RCU_TABLE_FREE for sparc32 Date: Thu, 24 Sep 2026 10:41:20 +0800 Message-ID: <20260924024120.14225-1-lance.yang@linux.dev> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20260922-rcu-pagetable-freeing-v4-10-fe1ad1f1e303@kernel.org> References: <20260922-rcu-pagetable-freeing-v4-10-fe1ad1f1e303@kernel.org> X-Mailing-List: linuxppc-dev@lists.ozlabs.org List-Id: List-Help: List-Owner: List-Post: List-Archive: , List-Subscribe: , , List-Unsubscribe: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On Tue, Sep 22, 2026 at 04:35:41PM +0100, Lorenzo Stoakes (ARM) wrote: >Careful handling is required for sparc32 which implements page tables as >part of a shared backing page. > >To support this, a custom __tlb_remove_table() function is required, as >specified by CONFIG_HAVE_ARCH_TLB_REMOVE_TABLE. > >This allows __pte_free_tlb() and __pmd_free_tlb() to specify which page >table level is being freed, which is transmitted to __tlb_remove_table() >through setting the lowest bit of the page table to 1 for a PMD and 0 for a >PTE (the page tables are 256-byte aligned so this is safe to do). > >Next, since the page table freeing is done via RCU callback, and thus might >be executed in softirq context, update the spin locks to IRQ save/restore. > >Then, in __tlb_remove_table(), figure out whether to free a PMD page table >via free_pmd_fast() or a PTE via the newly introduced __pte_free() >function, using the lower bit encoded in __pte_free_tlb() or >__pmd_free_tlb() to determine which to call. > >As part of this change use this spin lock rather than mm->page_table_lock >for all shared page table exclusion, as RCU freeing means that page tables >can be freed from soft IRQ context so both don't have an mm and also >mm->page_table_lock is not IRQ-safe. > >Note that the specification of CONFIG_HAVE_ARCH_TLB_REMOVE_TABLE disables >CONFIG_PT_RECLAIM for sparc32, which mirrors sparc64. > >This forms part of an overall effort to switch every architecture to this >mode, and with it complete, means every architecture now supports >CONFIG_MMU_GATHER_RCU_TABLE_FREE. > >Acked-by: Kiryl Shutsemau (Meta) >Signed-off-by: Lorenzo Stoakes (ARM) >--- Also ran page-table teardown stress on qemu-system-sparc (SS-20, sun4m, CONFIG_SPARC32=y). All 24 rounds ran cleanly :) Feel free to add: Tested-by: Lance Yang Acked-by: Lance Yang