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 32687E77197 for ; Tue, 7 Jan 2025 10:51:28 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A1BB76B00C3; Tue, 7 Jan 2025 05:51:27 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 9CBB66B00C4; Tue, 7 Jan 2025 05:51:27 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 86B6A6B00C5; Tue, 7 Jan 2025 05:51:27 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 688756B00C3 for ; Tue, 7 Jan 2025 05:51:27 -0500 (EST) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 1E055140869 for ; Tue, 7 Jan 2025 10:51:27 +0000 (UTC) X-FDA: 82980339414.09.5F56ED7 Received: from mail-pl1-f182.google.com (mail-pl1-f182.google.com [209.85.214.182]) by imf08.hostedemail.com (Postfix) with ESMTP id 769F7160018 for ; Tue, 7 Jan 2025 10:51:24 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=bodYtsCA; dmarc=pass (policy=quarantine) header.from=bytedance.com; spf=pass (imf08.hostedemail.com: domain of zhengqi.arch@bytedance.com designates 209.85.214.182 as permitted sender) smtp.mailfrom=zhengqi.arch@bytedance.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1736247085; a=rsa-sha256; cv=none; b=qxENfAoVQVqsL6TxAYZt2fINeInlBDBmsIat7wUaS2OWOQMb+vL+Ap+FVIDGr7adZtB0iE 4BjPNbnUi1p6xxWMcz7aBsKkVVOj5g23tvVWKaZ0thXXnS0VSpLGYvyIf/TMsuPQI3Asoe Aa+oe+eOlnF8LIyGGsjEX14M5wrgL48= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=bodYtsCA; dmarc=pass (policy=quarantine) header.from=bytedance.com; spf=pass (imf08.hostedemail.com: domain of zhengqi.arch@bytedance.com designates 209.85.214.182 as permitted sender) smtp.mailfrom=zhengqi.arch@bytedance.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1736247085; 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:dkim-signature; bh=ubzgdL9cLh9waK09x12ru+nh0CrFzuM9srghqESdiGM=; b=HAKWYxmz2rpTPmNZ5NwIy8/JC3G/c7NWvGMnoGDp04sgB7fx2hN5CGDHjNmZlYIFN8rZ/h PozWH0bnOvy+TgtdTW+6xQ93uiUx1Cl1AfvkVaf1eBOGOsT7EVEvaw2fschXNJLw/mm795 g8XIQkqxlN87l5SqQoy/H1VJuEPNS4w= Received: by mail-pl1-f182.google.com with SMTP id d9443c01a7336-2163b0c09afso222020555ad.0 for ; Tue, 07 Jan 2025 02:51:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1736247083; x=1736851883; darn=kvack.org; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=ubzgdL9cLh9waK09x12ru+nh0CrFzuM9srghqESdiGM=; b=bodYtsCAB9kS3da+2v6OvX2nCwAlmEYsZkodtNJk0i7Sr0YvyahR8TQPassOo7imMZ XSWyfiYRz85CdYaZbbDYdysnTwwNdliMpbA6U6C4ZzwGeIoIGuv0bBVSxHAk9vn3+Wdu QazQAQQSIBnR2tN0eOQqyWMvRT/bK2PuprTA61/Zzj1QZeBblGavfEMYBYmBoh8qKRSN v99xiJurLgoN/NQeRvhiNy/VGoJh6Ju7if3yphr1DRjLqveeaOx9bjJVVTTuVBg7oQn8 dkQkYWrWZws/SFkuwpR/HSrNNoiPLCZDdRInh8F1D+oSoaS+UkgPr2SnC1MLfCKCZ3zh cYdg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736247083; x=1736851883; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=ubzgdL9cLh9waK09x12ru+nh0CrFzuM9srghqESdiGM=; b=rCgKnHNlWgNanS3Ee7rO3nuRnnh6BAPf8NFXEuYFWbRk+fbKUsrXlNQmD0g/wNcKQT /AA+ffRSSZOhCFy6rnAeppHkgH8YbomM+ZgBB1m/7OPH0dlVA62CIBi0u0IUhHUY7g9G //bcXRt1BdOHuy75nojslfxx9asARuGgEYM/P/tKlNN2k4PnQMf//Fo8BDfcAlCxbIoV sumGvRzm3L+Bpnt0684g9+vOGFpyFLEEGdOlN47ey0upciSBRLfFy864A5vBeDq906n6 6UY5GDamyFDB/dt7wk3Ch6vPDS0TohNKn0mlQ9MTNoxkaUqc51SSfd0cWu/aUPZZTdp5 JTcg== X-Forwarded-Encrypted: i=1; AJvYcCUkY19/xJLkzgzEByW9ZGmFBhnO53PvvMiWjqJAiTtQTaAlAvC4Jol4fj3UIao3ExOh29gAHNgTag==@kvack.org X-Gm-Message-State: AOJu0YzSOVQ7ADYIsVSKt1CibW4BkWnpTeISauW5bL5SjrPlnBdZyyws QKDPSxSYGp/JAu5+5FZkaIk7ue0gS0VGgDa4uKSToO899RCQsqQzfu7PIFh5t8I= X-Gm-Gg: ASbGncuDHymZCmKbOV8ZOYtLSW9BC/9TfiyMrVCY7haHYPVvS74mta66PhmnaWdXSS7 4brv3Aq08ZTquTQiQ91UhVXGCnchL/3jQOZtA7x5Pn8Eo0FUKuGhqSrAGIoqG7nz4ZPWGkg7hpC TWD3zMon+LpbXc4206g2fku3B2hMjdcgSWYaQpPyAFhg8JO0mKOVRed6q+vPAfDRoXqbvQJqCUD Pd1X7XZhua4MTfrwMxHYYDWdytau37TOI0MrHTid8lEUyZGUmE8WnlA+4MZqCrj6YcDnHvXaDhg PEvu X-Google-Smtp-Source: AGHT+IFtbfiI9xlsmfuUVQ2Vnnc4auVp2ktX/5YZgw6vYG9rwgEZ2ifuqdpGqVP2TXFmBqefmQU79g== X-Received: by 2002:a17:902:ea08:b0:216:7410:7e14 with SMTP id d9443c01a7336-219e6eb5c15mr809959765ad.34.1736247082763; Tue, 07 Jan 2025 02:51:22 -0800 (PST) Received: from [10.4.33.153] ([139.177.225.247]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-219dca025d1sm307318475ad.254.2025.01.07.02.51.09 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 07 Jan 2025 02:51:22 -0800 (PST) Message-ID: <07e0c05f-cb69-4263-885d-6d20d4442152@bytedance.com> Date: Tue, 7 Jan 2025 18:51:07 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v4 10/15] riscv: pgtable: move pagetable_dtor() to __tlb_remove_table() Content-Language: en-US To: Kevin Brodsky Cc: agordeev@linux.ibm.com, palmer@dabbelt.com, tglx@linutronix.de, david@redhat.com, jannh@google.com, hughd@google.com, yuzhao@google.com, willy@infradead.org, muchun.song@linux.dev, vbabka@kernel.org, lorenzo.stoakes@oracle.com, rientjes@google.com, vishal.moola@gmail.com, arnd@arndb.de, will@kernel.org, aneesh.kumar@kernel.org, npiggin@gmail.com, dave.hansen@linux.intel.com, rppt@kernel.org, ryan.roberts@arm.com, linux-mm@kvack.org, linux-arm-kernel@lists.infradead.org, linuxppc-dev@lists.ozlabs.org, linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org, sparclinux@vger.kernel.org, linux-kernel@vger.kernel.org, x86@kernel.org, linux-arch@vger.kernel.org, linux-csky@vger.kernel.org, linux-hexagon@vger.kernel.org, loongarch@lists.linux.dev, linux-m68k@lists.linux-m68k.org, linux-mips@vger.kernel.org, linux-openrisc@vger.kernel.org, linux-sh@vger.kernel.org, linux-um@lists.infradead.org, peterz@infradead.org, akpm@linux-foundation.org References: <0e8f0b3835c15e99145e0006ac1020ae45a2b166.1735549103.git.zhengqi.arch@bytedance.com> <1b09335c-f0b6-4ccb-9800-5fb22f7e8083@arm.com> <7e2c26c8-f5df-4833-a93f-3409b00b58fd@arm.com> <31e1a033-00a7-4953-81e7-0caedd0227a9@bytedance.com> From: Qi Zheng In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Stat-Signature: aoe39rqy438tjhaqt68y4pcw19soxsdy X-Rspam-User: X-Rspamd-Queue-Id: 769F7160018 X-Rspamd-Server: rspam08 X-HE-Tag: 1736247084-11038 X-HE-Meta: U2FsdGVkX1/IyYxT4KReKkZXvcYEI2OvC8hO8CQ8p7aJGMgdhVK8zFQTkmRsncmUWfFwMyrYx1AUUjonoLYCDoqhcAyjWvHeLp706njhNjmTqDZIv+zRiwhgkPaBwf+kSVh3XsvCD6+rQxpPcHl9++LK1FxUrqbwvBxQZ054KhyBsyPl1GxU5NHhskI5MUW1aPxdRpsJ+korF6Zj8XSPv6wAADnq/MKsojklb/p5MyzdeAfn/GrHRLItGsM1xfnjvrOXJbyfqFJeGxCvrq/VtNwH6H2VFPBCkJ+Go9yo8W00jO9mdddIvlmMHpwsPrJ02tC9EexKektazMPhYTELAMUpgAx3tEwViv+ZEn9mLzhknvWkh1PmcEZsFVlDJgD5SYBtp9Gm/prsPfhynW9WYk0wUktljeIMm/wXJusgkxsTnT4zyfr8HZj6jSIz1aRSfEVU1u9FpMJOF6NVYTR9YNS+ud0il5+HN9euWpYpDyWhZwsmFemeI6Uf4YkWSH5hNAq7DdDaSaxv32su+f+WJQsLyCPJ36gZCMVZ/i6m9gR7U98zEVLppcYMStTTaNXmqsV/7ZM7DrkLhV9VbNp9O9R9jDGv77wRQN5Z3gGi9hYo0M94Pu0xoxswb47JUQk39tzMgcX6CVZ3p22c6SL2RK/OnUwD+cVKKHaWtiS2rl4mY/3NmFWe4oBEDyYup7gjPqXHgQijCcRsGrroixKY99w/xew/+pKbDJXrAnNOTMG2LL6oTEkFDd1Fg4K25aoqhYEgaXQFiyTRriQptpfrHoE/T5HCGMdLiFQjViBLkFlESA1J5IPRTPsIcs4+iLMvGfBm0qG93LY1PYidRbdMach1A/GwDBGK12fbiUkBZkjRofK2JYyq2fMNizer5nshDWXQuLyB1EeyqEpDaDAcTj5E298d2pbWIAlMrQPHexnyrSv0ciAZa2JfcP6SFkxps+4lOA4jEoKm9yP4mlJ /RHXTHd8 y9m/aoNbjUQdKP0QdU61vXfW65+Hj4RtViUG1rvGnQ9nNAfoFG8mho/8eTifp8Fi6VE6GQFE501vHrAOaXhU/IFKAONPampQPK2LL2UMNqCJxq5noutfEv8cXaR8VmhHKwCc/V5GyYgdrI36+0On5t7FgJ7M/pWMAEaY49OqXPYDBDRPmQt6YFem3v4g3x+wf2Go7ZN2WgtD6+bOsV7HxqANIRdmvKWKcDHrOg8ukPllLclO4p8yhiRk444SCLz1dI00X4ImCx8oTsjHb6NlP+YC6muCPY1RbS9Wu7ckcA2GtRi3utWh0UE9t+ba5BFu29kMptfuDCVZBTwVf2ShylVyDwHtot+bpaYmvLzWkpReAcq+bOb10mYADQvytB6gzaTEwZ0LaI+V/2Eq3Xqtkg5M6bM1FGj+yfyQdl4if1VOz54ectTZW4kn1WU3UpN3e8TUMAIx5IuHnOfxT9vLicrnaJKFmdaJ4JAeCspmsIkjn7d62rcb5w3WrtQ== 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 2025/1/7 17:57, Kevin Brodsky wrote: > On 06/01/2025 04:49, Qi Zheng wrote: >> [...] >> >>> Once this is done, we should be able to replace all those confusing >>> calls to tlb_remove_page() on PTPs with tlb_remove_table() and remove >>> the explicit call to pagetable_dtor(). AIUI this is essentially what >>> Peter suggested on v3 [2]. >> >> Since this patch series is mainly for bug fix, I think that these things >> can be done in separate patch series later. > > Sure that's fair. > >> >>> >>> [...] >>> >>>> Or can we just not let tlb_remove_table() fall back to >>>> tlb_remove_page()? Like the following: >>>> >>>> diff --git a/include/asm-generic/tlb.h b/include/asm-generic/tlb.h >>>> index a59205863f431..354ffaa4bd120 100644 >>>> --- a/include/asm-generic/tlb.h >>>> +++ b/include/asm-generic/tlb.h >>>> @@ -195,8 +195,6 @@ >>>>    *  various ptep_get_and_clear() functions. >>>>    */ >>>> >>>> -#ifdef CONFIG_MMU_GATHER_TABLE_FREE >>>> - >>>>   struct mmu_table_batch { >>>>   #ifdef CONFIG_MMU_GATHER_RCU_TABLE_FREE >>>>          struct rcu_head         rcu; >>>> @@ -219,16 +217,6 @@ static inline void __tlb_remove_table(void *table) >>>> >>>>   extern void tlb_remove_table(struct mmu_gather *tlb, void *table); >>>> >>>> -#else /* !CONFIG_MMU_GATHER_HAVE_TABLE_FREE */ >>>> - >>>> -/* >>>> - * Without MMU_GATHER_TABLE_FREE the architecture is assumed to have >>>> page based >>>> - * page directories and we can use the normal page batching to free >>>> them. >>>> - */ >>>> -#define tlb_remove_table(tlb, page) tlb_remove_page((tlb), (page)) >>> >>> We still need a different implementation of tlb_remove_table() in this >>> case. We could define it inline here: >>> >>> static inline void tlb_remove_table(struct mmu_gather *tlb, void *table) >>> { >>>      struct page *page = table; >>> >>>      pagetable_dtor(page_ptdesc(page)); >>>      tlb_remove_page(page); >>> } >> >> Right. As I said above, will add this to the updated patch #8. > > I think it would be preferable to make it a standalone patch, because > this is a change to generic code that could in principle impact other > arch's too. Agree, I have done that: ``` Author: Qi Zheng Date: Fri Dec 13 17:13:48 2024 +0800 mm: pgtable: completely move pagetable_dtor() to generic tlb_remove_table() For the generic tlb_remove_table(), it is implemented in the following two forms: 1) CONFIG_MMU_GATHER_TABLE_FREE is enabled tlb_remove_table --> generic __tlb_remove_table() 2) CONFIG_MMU_GATHER_TABLE_FREE is disabled tlb_remove_table --> tlb_remove_page For case 1), the pagetable_dtor() has already been moved to generic __tlb_remove_table(). For case 2), now only arm will call tlb_remove_table()/tlb_remove_ptdesc() when CONFIG_MMU_GATHER_TABLE_FREE is disabled. Let's move pagetable_dtor() completely to generic tlb_remove_table(), so that the architectures can follow more easily. Signed-off-by: Qi Zheng diff --git a/arch/arm/include/asm/tlb.h b/arch/arm/include/asm/tlb.h index b8eebdb598631..ea4fbe7b17f6f 100644 --- a/arch/arm/include/asm/tlb.h +++ b/arch/arm/include/asm/tlb.h @@ -34,10 +34,6 @@ __pte_free_tlb(struct mmu_gather *tlb, pgtable_t pte, unsigned long addr) { struct ptdesc *ptdesc = page_ptdesc(pte); -#ifndef CONFIG_MMU_GATHER_TABLE_FREE - pagetable_dtor(ptdesc); -#endif - #ifndef CONFIG_ARM_LPAE /* * With the classic ARM MMU, a pte page has two corresponding pmd diff --git a/include/asm-generic/tlb.h b/include/asm-generic/tlb.h index 69de47c7ef3c5..53ae7748f555b 100644 --- a/include/asm-generic/tlb.h +++ b/include/asm-generic/tlb.h @@ -220,14 +220,20 @@ static inline void __tlb_remove_table(void *table) extern void tlb_remove_table(struct mmu_gather *tlb, void *table); -#else /* !CONFIG_MMU_GATHER_HAVE_TABLE_FREE */ +#else /* !CONFIG_MMU_GATHER_TABLE_FREE */ +static inline void tlb_remove_page(struct mmu_gather *tlb, struct page *page); /* * Without MMU_GATHER_TABLE_FREE the architecture is assumed to have page based * page directories and we can use the normal page batching to free them. */ -#define tlb_remove_table(tlb, page) tlb_remove_page((tlb), (page)) +static inline void tlb_remove_table(struct mmu_gather *tlb, void *table) +{ + struct page *page = (struct page *)table; + pagetable_dtor(page_ptdesc(page)); + tlb_remove_page(tlb, page); +} #endif /* CONFIG_MMU_GATHER_TABLE_FREE */ #ifdef CONFIG_MMU_GATHER_RCU_TABLE_FREE ``` and will send v5 later. Thanks! > > - Kevin