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 1A289C48286 for ; Sun, 4 Feb 2024 11:39:51 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6BCEA6B0072; Sun, 4 Feb 2024 06:39:50 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 645A76B0074; Sun, 4 Feb 2024 06:39:50 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4BF476B0078; Sun, 4 Feb 2024 06:39:50 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 362A66B0072 for ; Sun, 4 Feb 2024 06:39:50 -0500 (EST) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 6DC15A0215 for ; Sun, 4 Feb 2024 11:39:49 +0000 (UTC) X-FDA: 81753926898.01.F5E2B4A Received: from mail-pg1-f174.google.com (mail-pg1-f174.google.com [209.85.215.174]) by imf29.hostedemail.com (Postfix) with ESMTP id B0914120016 for ; Sun, 4 Feb 2024 11:39:46 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b="HS/dshxF"; dmarc=pass (policy=quarantine) header.from=bytedance.com; spf=pass (imf29.hostedemail.com: domain of zhengqi.arch@bytedance.com designates 209.85.215.174 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=1707046787; 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=+4UlMXgB1iSnvfZPma6T9agF6v1a63qxzKfCzYcsbL8=; b=zW9Mr4+U9K3Ofvt0ZaPaXoX6+YEaiwX3o+9XLyb7ZH1t555NCcZqJhXnODOOGWLcbnw+mZ SHEl8UO7Aka5YoWSUuAGfHKHbswDo2gc2tx2b9Io7+tGYb/MV9DnJALhIsaBOVujCRov+a RqHBMfmMDN47m3sA5rTFVQXzNTAvhOU= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b="HS/dshxF"; dmarc=pass (policy=quarantine) header.from=bytedance.com; spf=pass (imf29.hostedemail.com: domain of zhengqi.arch@bytedance.com designates 209.85.215.174 as permitted sender) smtp.mailfrom=zhengqi.arch@bytedance.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1707046787; a=rsa-sha256; cv=none; b=M2omUbp4JEfenjwUPFUYI6ls5Wlvb6JQ2UyUP7L2McMQ6O6bhcWp9l1DqooO5o/inoB0zi cvIQMc81yiwPEVf5XSOq6InXdISSGj0sXIEpJpi3VfGBu+ZjgGBMAX94lvPJQE0fVabzBp /Pcfc5j7LU/RbQbwMgE4ZlbneiQ+wb0= Received: by mail-pg1-f174.google.com with SMTP id 41be03b00d2f7-5cfcf509fbdso1027745a12.1 for ; Sun, 04 Feb 2024 03:39:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1707046785; x=1707651585; darn=kvack.org; h=content-transfer-encoding:in-reply-to:content-language:from :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=+4UlMXgB1iSnvfZPma6T9agF6v1a63qxzKfCzYcsbL8=; b=HS/dshxFVZx0s0SLaS4hC4HWb4M/TwVlmG4pR3kK2uvi6vk4R600tkmUDEHJ11Ki/T b1Ob13gzGpkX8likwmqGtCTIPWwipa1YvQDBOV3+URGpTsKHAceS71J7gsF/jTsyQqNi lXayareIDbzvXUNdnIcJts2rWUuQuCnrOEhV8qQcMKjEtpPJB6gFia8wbDIzK6/26Rkd 3z5sN9iglfzvBtfleG2reiVXr5PiocMDIIs1I5XYRj1pLjlTgSaUR15yR1Qyyl3QKmiz 7+kQpfzt9vr0AoIlMz4yL36Va/3KLRtVrO9I1FcGIedM5VwqMQVMXji36pDOHtcIKDrN 1wFQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707046785; x=1707651585; h=content-transfer-encoding:in-reply-to:content-language:from :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=+4UlMXgB1iSnvfZPma6T9agF6v1a63qxzKfCzYcsbL8=; b=q00mAl4hXqIXtktJvbId+7o72FKEmX3JiOCYwdspTGrKls4OLi434uyxwDZwda+cWT yj61o9gORsc5fOAuZ/uxH9H0uXleSK4mIhhN4L5Emk5N5MILVtdXiP3ytddaE8g7l9t0 8OamupkzuPN7BccKpH6uz/eZf5qzEPEQsYVN+m/atvE65NoiJb6o9dReHpVkW6b8ln+v HDP3CUcIarxm0A31j+p4b9BGkgXhRNsNAyHCGcZ1C6cvRjBpMmsUSvGRIJ2iaUYvc9aX O0IZbALao0ezsA+7u0c8Tizl+ZuI+nE2YzrBWgrKyBz4FLjcPG0MDTnf2pZVVsCE/cpq RDxQ== X-Forwarded-Encrypted: i=0; AJvYcCVyxQsPXRVG32tz0qLeE0EpEo+FqYKKW0vj06pr5unQkORodKpYe8nbQuTkdh/GHrGolBvLKDKerBlZ5afjA7TAV60= X-Gm-Message-State: AOJu0YyuakjcPtJowVW/7WnufHgEVyzinfTV1VWUn1y9VdcNOljg9Vun mSDduLhqPTkIRtWF16RLjYdhh4R1w3O3r5/zefQoP64W6kVs34eLqhIS2BQft4w= X-Google-Smtp-Source: AGHT+IE2DD5V3CgKYDy8mdE5bBy2Gf+zkQGDNsL7UW0p+H2rn/ScLbWb+QgJgAT32mIB+Y/G0mD8ag== X-Received: by 2002:a17:90b:3506:b0:292:e812:19e8 with SMTP id ls6-20020a17090b350600b00292e81219e8mr11432390pjb.0.1707046785208; Sun, 04 Feb 2024 03:39:45 -0800 (PST) X-Forwarded-Encrypted: i=0; AJvYcCUPl6IT911qvaWU6uhUXMMaas1HjkIVSffCYjMe+8bBADFT6Nog/Aj0/Alk0iMO8M2MoAZz3bBIYRlCrWf3XeqRt77L2UWDuwuTmLbIpW6ajjZMjTtLf0u4kNXpkX07Op7tpVA2wJlouq8WVLnADwGAwgHC2GA7ltb5UEa5dxDm++e+okbz7/mDKGC0kZG5t6CzaxJgMrKbP0hZGCWR3xU5bnm+sfHn86kFNgIkUQN45trvTbNWv42CmWuXvByjVV5KBVmHtp1vt1M= Received: from [10.255.145.2] ([139.177.225.250]) by smtp.gmail.com with ESMTPSA id pw2-20020a17090b278200b00295fdf538e1sm3250889pjb.12.2024.02.04.03.39.41 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 04 Feb 2024 03:39:44 -0800 (PST) Message-ID: <3b7e9435-d78e-4430-98d1-f4a839899425@bytedance.com> Date: Sun, 4 Feb 2024 19:39:38 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 1/2] mm: pgtable: add missing flag and statistics for kernel PTE page To: Mike Rapoport 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 References: From: Qi Zheng Content-Language: en-US In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Rspamd-Queue-Id: B0914120016 X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: s1qz9jiwrnyass7h4tia15813uha5imt X-HE-Tag: 1707046786-255470 X-HE-Meta: U2FsdGVkX1/J0Ii56pQL12GpM8I9j1fAYPzKVxRZC/aRZplTsMvVL6cXMNIFr6JhIwX2DnRTH9fZVvwi/wSsa7rauEyeH1eC6NnQDzfR6o2CEqRJt/U2NF5PjoQm4k/azEeoMo/NVDLxRVnmxgr0xPj8hQj9IHupV4ZwpPNg/h+89RVNCpL6DryG/4Jtxi+cjDit0AOCjxClHA3ioUdVcv1QPsOh6wRXDvwTEtxbMLfPNBPKdHn9XsH9Rg/xmt/MQtZMtQlD9D3EppJBonSynvoLHciTqyYuSz1wdJ9YaMKRShGPteZcaXCpYBz0jQVRp+1PeDI+EjJfbDJ2h1RCkAgjAnv9ZoOC4Xj1w7ntYR+qpZFGJbBhRL8bu0UQUJ0LiQbetY6n2LeKJnzJA2aCxyQEdUD/U4wAuyE2BRNnLZREmUe7NAeiRrXQtxkb8UVX0QxTz368mcIemZpo1Mw3QRkX9DLkJa8hnwYROtZsT6KSRr9pBUR7tt7FkvPEoK1qmzCWc3h2F7cXifVkmhyosvsRNfRNnj0fe+StuomINXL0BOA2Rc79u2zAcw0j2AY/JXd88PuPdVohBkyVUhct8rv6biVN9cCTglza5T72KwI366aOZiXhG8tWit7Jvu0VuY1mnCcUBF1Gsg1E6NBoxXXXNI5Zc0HsYoA2RZwwrQ2dvbjwhKOfkJmCwfz74gDqBDRJVGfruLcok9J/HVbZQm7XvuWWt9UoeBi65Finb2Z/yW2jtOPPJ2lJ8GOmNbjg0c15EIpvBZES3Ry8nHSM4ImvvztMfKBhOeCnOkqut9BCwzUAy0HgKQA/aceyaQ4ecxuR/xJ4nWyA1rP8sWZzknMVtu83S/LaaUXRuPLJzxeSIWXGCMobLF1WKLcDtzOaJw56ARLKMqVGA4PP5eZ+kVC+BeiLPWOXG1fsinLKZJA8ZqADKq50C/KrrWGL/CP1x424G0K22eBRWLtNj1W ohooQHAn ohD2AacTJWZ2g2vT3UO8uuK5QmGvHqkv54NTn2nglf5TcM53uLiQdcorrStSjKdsDJC0pp6R3w3CmrKyq/YjrenoKzuY0hFEj+4jWxfLZQ6uL/q8zFJC5ReMDT8+AzsxkfRw6QY7RrA2OYqGUm6+uN3BrxfMkrveTx63RxdGf/fN+caMcfOyz1CCfcMw5YdSfmWS07QyCXbSETts8HiPeQGRAJ32j+eDgcndE48pA+hb15Gwk2LZqh9EVAhDgG0o7/BXxhsX/OxWlInJq5z2EvyvE3uJsy7Q16/SjaEE9zXa9akz4wfNVZ3ouWCi+XcdBePTqcc8hK1BF5wEUu9rrdaSfWuDEHaI23xBv4/qDiACT3Y7rQEUHNdjNKlHlHfXH+/FnUpRHEI2jVoYkj/zfj1KzjNQQ0HnJrpB+6QRh9Qdx0TrHWfseaHhyDSM5Qbs5KX/vpZxhY/fXxooOjKbwjkdn4g== 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: Hi Mike, On 2024/2/4 18:58, Mike Rapoport wrote: > 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. Yes, this patchset only focuses on the generic implementation. For those architectures that define __HAVE_ARCH_PTE_ALLOC_ONE_KERNEL, some reuse the generic __pte_alloc_one_kernel(), but some have their own customized implementations, which indeed need to be fixed. I wasn't familiar with those architectures and didn't investigate why they couldn't reuse the generic __pte_alloc_one_kernel(), so I didn't fix them. It would be better if there are maintainers corresponding to the architecture who can help fix it. After all, they have a better understanding of the historical background and have a testing environment. ;) > > Another related thing is that many architectures have custom allocations > for early page tables and these would also benefit form NR_PAGETABLE > accounting. Indeed, this is also a point that can be optimized. Thanks. > >> 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 >> >> >