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 5DD3EC48286 for ; Sun, 4 Feb 2024 10:59:12 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B37DD6B0078; Sun, 4 Feb 2024 05:59:11 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id ABFF36B007B; Sun, 4 Feb 2024 05:59:11 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 939846B007D; Sun, 4 Feb 2024 05:59:11 -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 7D0126B0078 for ; Sun, 4 Feb 2024 05:59:11 -0500 (EST) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 4B38616069A for ; Sun, 4 Feb 2024 10:59:11 +0000 (UTC) X-FDA: 81753824502.28.EF66F8F Received: from sin.source.kernel.org (sin.source.kernel.org [145.40.73.55]) by imf13.hostedemail.com (Postfix) with ESMTP id EAA4B20003 for ; Sun, 4 Feb 2024 10:59:08 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=sIqwg0mm; dmarc=pass (policy=none) header.from=kernel.org; spf=pass (imf13.hostedemail.com: domain of rppt@kernel.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=rppt@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1707044349; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=5ckTjBM+i6lP/xytKgIqTJ+2Cl5zE+M0XULDgVmloKQ=; b=E77RbWaeRS/kP/FRtGslSACUHSqoxWUcw1aTqgmqKcaj8IZzcGole1UqLry5J4yZrRAa9G MJ0UBsnX5W5wwN0NGcblocsqHEqC8bO05+K44CsJswL8PkVoY0xj6aqqjlxu3f6D2DW3r0 I23DN/4/bLx+gA6LDHJWyemChiqnAaY= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=sIqwg0mm; dmarc=pass (policy=none) header.from=kernel.org; spf=pass (imf13.hostedemail.com: domain of rppt@kernel.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=rppt@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1707044349; a=rsa-sha256; cv=none; b=FfsELHYxFNklkZzlXv3ftn88Nc6n5lpfy4L7aYf84ME+zkWiBrWOkfqP8oUI0Ni+7mRQR8 bYygJvKDZE9rsr+DLEOhCWBy/H9gOXfBaqdXcZm6IHwNi0abugsgNA2nag6O+OldwOt/3w BYXPj5/EipuEGJTpfQovY/XU/iN9i5k= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id 2FFCECE01BD; Sun, 4 Feb 2024 10:59:05 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6B4ADC433C7; Sun, 4 Feb 2024 10:59:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707044344; bh=gPTH20pU/DzXXCAXEMnct3tWfsC+YYsXBZazocgU+S8=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=sIqwg0mmHnhbdBmB15Jd2Ku+Ap5LAoIwr6QSz7o7M4ZQTYQZNHoVqNxKgnyy6J0sk cQGgupOTlS0eE6ZI6WmrYNYOQY5HtjxzHsyzlmZJO80HZYVWSgNtsrLI2djvpGMY6Q RT6TNTAGHp6/ZPG8+jiB8rdBQYR2m6MgkHb7XGemcewjva4EtldPcruD8mUCs6S0p+ p3tG4JX7atakUDdJDDmkgNCulbCBf9R5YfT2AAtcPUA/aHquPJ2cAKhfvOKpdR7mTv 88hYwbIzhmqf2S9LAoF3AAc4OC5vAJjoAnSnKDvVv1WwveCQf8Z2NKAkzAxvOFRitI h5glOgXAF/1uw== Date: Sun, 4 Feb 2024 11:58:53 +0100 From: Mike Rapoport To: Qi Zheng Cc: akpm@linux-foundation.org, arnd@arndb.de, muchun.song@linux.dev, david@redhat.com, willy@infradead.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org Subject: Re: [PATCH 1/2] mm: pgtable: add missing flag and statistics for kernel PTE page Message-ID: References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Rspamd-Queue-Id: EAA4B20003 X-Rspam-User: X-Rspamd-Server: rspam04 X-Stat-Signature: s88ikswpxaqcqu118zcziiu3ji1o4urg X-HE-Tag: 1707044348-444853 X-HE-Meta: U2FsdGVkX1+5DqjeqkCJMzjXAe7e1fgmoyXcZ904AfSBUsHx8Qag3r0Sp8EHksW0hnjXzrG3G0xORztgisxPaTnWd5b1gbzCpiwosXJ0OR3e2rWy4GZmE0yJefaqQOlyGNLlm0074luNc3e5EJ+UT1QmP1/IhC72RSRFzrPEr/055JoYc1wA5HytY8YC9MgU4Gjd5yvwxUfVJCq6RS7K7fOC4pUOM1uD766bJsqNg0tdfyfu7fy2ldREn8N+JKxI+bLEdfLwNuPoKFk6CrkEjkf8Hv+mu1xGGIA0GOKGImcJ2Zrx/NGkNIiODrh+AGAFwj6I+Xjo4GYiGW02kdSWFNM2hGIRGPM6zg75bCYLTs/0Nmfv6KoFhFHC2JEtr71oZYW2bkK5q5AOZGZ/VjUEmQl+XnXehw10tQVesAiGdEc8+RnHJbTNHidk5im5GVTvZvG2TTmZC/fTfuJHDq4PRlBb2W0EBPGVlp06mxiVGbFmZgGcD44rHDuM3rz0Ec7GO0ostJEAqtm2tE5tijAkbKPnRBawFPebD4yDHFY068sA1lGqsyVnL8kAjSRaUf5e6i97QM4IDNvuVWVrQO2Q//SKh4nm7LpTbL6MyW8778kVl5M6zIPHp6VJ7WAm+VZLhtM1dFlsTaBDzVv1LDzgxJZasORFu80CrPnLAH8aTSpOCSj1x1a7etG4zebyv/aWD9mcsEdwTa2GGY0iAdxcrOJ0edGmMAwGg2P94vDu7IWrzwMQoR/9NzBMbOzZ9CvJQKD549kyMOrDUMXQ8i1cymF9IXaUe6Slir1y8ogVFBG4hN2HlxgdCK+4A+i8KxWBclnxSlaWq436yKSiGEvsgx71kct6bhGosvqbbRsWQpuqoAiqbzb45jLG/SYKcoTNwgaVcExnOrh/bpHLLVvd1xB2esk8diDlzZpe3H23pkZs5+HPf/acc5Qi/gEU18gsrMXSrNooJYGt685BmfA GZ7UOUFf bLonTYpHH0gHXGQf2UxJosbaceOP59BRIoFCN4q/X7G3voaJk0ei8QnXZ5R+arRV6zZFhn/GlTv1ChGAA2GVU3tJWbOCMRmn7+DU9R+A34sAzY9CuIPAd+qLwwi1cMwVjGnAnBwcBrFWWx0utsTS7V2i1p3jBXSf3SnnOZjX1rUffQTTwYW+LDk0bVBNKkKUViJGJaa6SdHaHyTMbczcv6Huyg5OPewclepBnalU7ZD2f/BEk48pe6e3M4w== 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 Thu, Feb 01, 2024 at 04:05:40PM +0800, Qi Zheng wrote: > For kernel PTE page, we do not need to allocate and initialize its split > ptlock, but as a page table page, it's still necessary to add PG_table > flag and NR_PAGETABLE statistics for it. > > Signed-off-by: Qi Zheng > --- > include/asm-generic/pgalloc.h | 7 ++++++- > include/linux/mm.h | 21 ++++++++++++++++----- > 2 files changed, 22 insertions(+), 6 deletions(-) This should also update the architectures that define __HAVE_ARCH_PTE_ALLOC_ONE_KERNEL, otherwise NR_PAGETABLE counts will get wrong. Another related thing is that many architectures have custom allocations for early page tables and these would also benefit form NR_PAGETABLE accounting. > diff --git a/include/asm-generic/pgalloc.h b/include/asm-generic/pgalloc.h > index 879e5f8aa5e9..908bd9140ac2 100644 > --- a/include/asm-generic/pgalloc.h > +++ b/include/asm-generic/pgalloc.h > @@ -23,6 +23,8 @@ static inline pte_t *__pte_alloc_one_kernel(struct mm_struct *mm) > > if (!ptdesc) > return NULL; > + > + __pagetable_pte_ctor(ptdesc); > return ptdesc_address(ptdesc); > } > > @@ -46,7 +48,10 @@ static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm) > */ > static inline void pte_free_kernel(struct mm_struct *mm, pte_t *pte) > { > - pagetable_free(virt_to_ptdesc(pte)); > + struct ptdesc *ptdesc = virt_to_ptdesc(pte); > + > + __pagetable_pte_dtor(ptdesc); > + pagetable_free(ptdesc); > } > > /** > diff --git a/include/linux/mm.h b/include/linux/mm.h > index e442fd0efdd9..e37db032764e 100644 > --- a/include/linux/mm.h > +++ b/include/linux/mm.h > @@ -2922,26 +2922,37 @@ static inline bool ptlock_init(struct ptdesc *ptdesc) { return true; } > static inline void ptlock_free(struct ptdesc *ptdesc) {} > #endif /* USE_SPLIT_PTE_PTLOCKS */ > > -static inline bool pagetable_pte_ctor(struct ptdesc *ptdesc) > +static inline void __pagetable_pte_ctor(struct ptdesc *ptdesc) > { > struct folio *folio = ptdesc_folio(ptdesc); > > - if (!ptlock_init(ptdesc)) > - return false; > __folio_set_pgtable(folio); > lruvec_stat_add_folio(folio, NR_PAGETABLE); > +} > + > +static inline bool pagetable_pte_ctor(struct ptdesc *ptdesc) > +{ > + if (!ptlock_init(ptdesc)) > + return false; > + > + __pagetable_pte_ctor(ptdesc); > return true; > } > > -static inline void pagetable_pte_dtor(struct ptdesc *ptdesc) > +static inline void __pagetable_pte_dtor(struct ptdesc *ptdesc) > { > struct folio *folio = ptdesc_folio(ptdesc); > > - ptlock_free(ptdesc); > __folio_clear_pgtable(folio); > lruvec_stat_sub_folio(folio, NR_PAGETABLE); > } > > +static inline void pagetable_pte_dtor(struct ptdesc *ptdesc) > +{ > + ptlock_free(ptdesc); > + __pagetable_pte_dtor(ptdesc); > +} > + > pte_t *__pte_offset_map(pmd_t *pmd, unsigned long addr, pmd_t *pmdvalp); > static inline pte_t *pte_offset_map(pmd_t *pmd, unsigned long addr) > { > -- > 2.30.2 > > -- Sincerely yours, Mike.