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 1CE3DC04FFE for ; Tue, 14 May 2024 09:30:52 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9AC666B0136; Tue, 14 May 2024 05:30:51 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 95C846B030B; Tue, 14 May 2024 05:30:51 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8258E6B030D; Tue, 14 May 2024 05:30:51 -0400 (EDT) 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 6693E6B0136 for ; Tue, 14 May 2024 05:30:51 -0400 (EDT) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id C8297A122D for ; Tue, 14 May 2024 09:30:50 +0000 (UTC) X-FDA: 82116481860.18.04985B1 Received: from mail-ua1-f46.google.com (mail-ua1-f46.google.com [209.85.222.46]) by imf01.hostedemail.com (Postfix) with ESMTP id E84FE40012 for ; Tue, 14 May 2024 09:30:48 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=eBj7NlEB; spf=pass (imf01.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.222.46 as permitted sender) smtp.mailfrom=21cnbao@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1715679049; a=rsa-sha256; cv=none; b=riWlmRhdvU0KcOEeTh5jg7P7I4km7Yh8ymJRxZSwzqbWUBl7zaMUpdwJNaGzFzC2pE9hhK 6NPrUqt98NEpybPOKLo9l5CTrV/dSc07AZIIqUhFA/S4++43t+kdN3Qv3VQo9QRMts1qVR bDOa3lDr0k085iokFcBT6XMvkak0YC4= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=eBj7NlEB; spf=pass (imf01.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.222.46 as permitted sender) smtp.mailfrom=21cnbao@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1715679048; 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=wdHFnHTcKzscSCgje4pLV0ENAixI1q19eindkQ9bbmI=; b=nw0/fhqrlAPrvP+qrquGGNSiWoOmIh6oqtvdBNJiKLTR1eRNc3ZosfulaAM/GBQV19jqgL agd3zgqJytwW8/xaSqOVpcFH8OQ7Lt55oCT7YSuATXGn5hRyU3UODYa+n5/CxgucDjcSEm u9ffnyULpa2I4xzcdWWa8k/DIkx4ibk= Received: by mail-ua1-f46.google.com with SMTP id a1e0cc1a2514c-7f16ff3aa5aso2000246241.0 for ; Tue, 14 May 2024 02:30:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1715679048; x=1716283848; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=wdHFnHTcKzscSCgje4pLV0ENAixI1q19eindkQ9bbmI=; b=eBj7NlEBqEqSlrmau6iH9cBppZEVPWe7KkctXnZFx6sSdI3udS9VfbC9liLvmTrqDk VecHPMHye9Mq8aAy2noWW3ruzdfw6koyoHKnnMsekdfFeunsDUucE8ZtxqKqJIBPVNwh jAHvRRJTnBWOarWsGOrDvGOKer1KzMEEU51O7ww71N+C++texh/VAv1PRw6jpBkKGMF4 O/4z9zToA+PgLfPyJM0RGFPJUqzs8fyRmUlnaBYseCut/sFfkd/qJrGCjX0ORScB8m/Y F4Ze+doj8igJCU2LryIIlK5NKoCi0DT1H2FHZBJILyaoohsAjE8OOH2rsOZr8pqU3NUh k5CA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1715679048; x=1716283848; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=wdHFnHTcKzscSCgje4pLV0ENAixI1q19eindkQ9bbmI=; b=kF9ihq4xmh2hBIewGt0lS85ayhFXFPRqHG92WdQab93ryyPBdCYFJ1xi4hxT0q6/4/ p3xMT4K4DOInzxQnDcKo7m90BxVB5KrqXS3mfrN/+7kG0g+AWUV3Pmr6q/o5rO3RDzdQ Yl9MqgyR0wVqfdlgqjuzyU7lugZ9cNF9jwIEDZj+JUAHcNc4IVpy4RR9DqvwmN4k8Ttq VrgO+LkcITzqwPP2jwyjv7ZwuUC/9jUg/O7PGj6gofa3DDYfGSYLWK0d7cd4p2uXzP5l ne/I2CBEKVPJolLv1+ESnNOn5yoRwtSsPIblqsBjtPuzKPw1l5MgjQoSG0seASUJgHx6 fLiQ== X-Forwarded-Encrypted: i=1; AJvYcCX2PI9Z4yWEvaCl0mB67MaF9j4hbPVkufJm0W1nwLVANRT6jpbtZ9bM2OS18CLwm8CMaYOABBO7EXeNdMvUpqedgdE= X-Gm-Message-State: AOJu0YyH3Jm/Idd7ETVIzvn/eI5bFdEfATiLb4tS3nNgSFI0i+1Z9zzH LbXL4l+p0k1xOhvY+bFPupEKIomOmsqYe4S4FxjJik9eQ6Ou7CKlje851/6bzq5EQtP/LNXB9eF onmkgfmfnTumsI6+H3I2vJ+/GSTg= X-Google-Smtp-Source: AGHT+IFsXlUYAyC/dVyPAc91tSYUW8lcOIZYX7vhSynTmD9ch/K7amSJeNqyvopCZMfgCDfYyurmNf0h2XrY9tF0I4Y= X-Received: by 2002:a05:6102:2acc:b0:47e:f686:ccf with SMTP id ada2fe7eead31-48077e83663mr12661860137.23.1715679047234; Tue, 14 May 2024 02:30:47 -0700 (PDT) MIME-Version: 1.0 References: <20240508191931.46060-1-alexghiti@rivosinc.com> <20240508191931.46060-2-alexghiti@rivosinc.com> In-Reply-To: From: Barry Song <21cnbao@gmail.com> Date: Tue, 14 May 2024 21:30:36 +1200 Message-ID: Subject: Re: [PATCH 01/12] mm, arm64: Rename ARM64_CONTPTE to THP_CONTPTE To: Alexandre Ghiti Cc: Ryan Roberts , Catalin Marinas , Will Deacon , Alexander Potapenko , Marco Elver , Dmitry Vyukov , Paul Walmsley , Palmer Dabbelt , Albert Ou , Ard Biesheuvel , Anup Patel , Atish Patra , Andrey Ryabinin , Andrey Konovalov , Vincenzo Frascino , Andrew Morton , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, kasan-dev@googlegroups.com, linux-riscv@lists.infradead.org, linux-efi@vger.kernel.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-mm@kvack.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: E84FE40012 X-Rspam-User: X-Rspamd-Server: rspam12 X-Stat-Signature: 7gcboahdah8khk5e14f6iu15irj91sm5 X-HE-Tag: 1715679048-506829 X-HE-Meta: U2FsdGVkX1+Sa+eEE9Zke9WrrvuPJ9D1AEd/fkwHNMi9NGjmjGQUIZSLsALr/zRxwZS3yOLZnIc/TDXWXXT7sKnEOV4/AkSr/LC1szUPgVIzO5Q/opXjolmv/vBoR4C8apkNFbET/8K7Co9ms0wsQNB/R76wQI6UuL+uEXCDCnzEI2twGdSXRYZc2QUmZTsox8CkxxjNYIM4IZdaAljmgEQJR7A0P79q0UX9qx/tBR6vB6fFKYDNJO8Pwqen9zSavHyRrP1XujMDmPhHYwH4rAX8LoC0J0LgCzzm69HtjNfuX9IHcF7KhimCPDgMddpNbCAjvUbY1Ykg15ABmQ5YzhmYrzOoNTT6gbCt+672ilVt3MYTN3c0zfzCoByGoYdote2q9qHCvs+V+cUVwarOwMZpO727d3idSBDq4N7ZDkMc/ujfiofuIan2Fh+wVkui9+Cw3G1IlM1rrwC7GJp/OotRuNM38fl3WbgEE/sz0L3okELPmFBbUX3bITv43E0u5SMwvEFc1FOL4ESjil5vwquU5MC0CdhLu7CJxcq1SXgqP1DSgomHAaqkFrdf7YOwZvaAUYCM4R1Lca+MTAMyn/yFMchkuHjkmpffy0coTSd48EGOF5FSga1Wf/RbzbQlzbAM/4P9k1P1R7Iiq/ITKBPJ+UO/OuwF7CLSxA+M7TaptkXCzxy4rJDi8K/y+SnMLnj3xfl66ISTb8i97Ncv59rCPXCVjLQ9imcRWUjqKYhnQY8UU0qnIH9dF3Fk3LW5tXHMqzdQBoQ9O9QqPzDBn/NibBQM4YS+DhVY2rYTwTy9GlrN51TfkjoflPJFjNSR9Z67Ov3ZDl9FN+kaw9C2JTi6cAC8ADEXn7YJswIIeOjDZ7NCbecz9+27oF1qaQBx+NJW1cURvNr6i534bse427cQFw2fCmlZyZJVwPFSOkpzlw3/tacZ+2n2XNlBO5g1yoePKesaYO9nuNFmfjz Ie3yRcIB gPO1brhV7L3evCYbFITDfbmSWEMxDvWr7xa1ANe9ZOn/xEKGl/r+0d1u57hB532kLUW/DkEuesZXVSdphlBfpDedOrFu1Oj+C4PeLPGNoJhEnt2Nv8pj+wW8Zp3WdVvXr4dgFBCH0//w9IwJl95bOxQRnGKueO8JRwevQzlQXOSrhrs6rXNnKp0wgo3n+Uc1a6D6b4pXs7R4HyRX1he13/DHGve2I5MzSxkqHyBW775n/AMkd629UGcKWXy4oQu/sxQ7yOOTjI6vS6CtxXWe0nMqJqiL6fLrdW2cgSdIh4/W1BV61xS0GB4vukekCYdreNSLrJiIN5hrvrYGIdHbw0A0BN/5645/+poROYyeFEuO5O0c7KO+x7jeDhQHZbEH6THtJqg+Gj2UDhkaJLNTSEyirfODGrAn4sVItudnyjCvsOndFvrKxN0uvbM03K5CHhR/VTBX61sCNE600tDEQNwyqADQSXlaXhQjg5C1O4KwReLP1pMxDffBj3FOoTqEnrHD8G7JS2eqsPLjpuE2VT82eQNcAEc8LgqbjCA6KXMrhXhXnGDCy5GeeQnFnJXc1vq/ErXXAcW216l8S8ISFM7+lJnfAjx9iimM+zIWxHAUtPWTw+kskPeGJ+np8TNq3VTa42eTdHYRiPwAr2VS4Pr12rsuw0hJugXbqDNSrCegymeg= 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 Tue, May 14, 2024 at 1:09=E2=80=AFAM Alexandre Ghiti wrote: > > Hi Barry, > > On Thu, May 9, 2024 at 2:46=E2=80=AFAM Barry Song <21cnbao@gmail.com> wro= te: > > > > On Thu, May 9, 2024 at 7:20=E2=80=AFAM Alexandre Ghiti wrote: > > > > > > The ARM64_CONTPTE config represents the capability to transparently u= se > > > contpte mappings for THP userspace mappings, which will be implemente= d > > > in the next commits for riscv, so make this config more generic and m= ove > > > it to mm. > > > > > > Signed-off-by: Alexandre Ghiti > > > --- > > > arch/arm64/Kconfig | 9 --------- > > > arch/arm64/include/asm/pgtable.h | 6 +++--- > > > arch/arm64/mm/Makefile | 2 +- > > > mm/Kconfig | 9 +++++++++ > > > 4 files changed, 13 insertions(+), 13 deletions(-) > > > > > > diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig > > > index ac2f6d906cc3..9d823015b4e5 100644 > > > --- a/arch/arm64/Kconfig > > > +++ b/arch/arm64/Kconfig > > > @@ -2227,15 +2227,6 @@ config UNWIND_PATCH_PAC_INTO_SCS > > > select UNWIND_TABLES > > > select DYNAMIC_SCS > > > > > > -config ARM64_CONTPTE > > > - bool "Contiguous PTE mappings for user memory" if EXPERT > > > - depends on TRANSPARENT_HUGEPAGE > > > - default y > > > - help > > > - When enabled, user mappings are configured using the PTE co= ntiguous > > > - bit, for any mappings that meet the size and alignment requ= irements. > > > - This reduces TLB pressure and improves performance. > > > - > > > endmenu # "Kernel Features" > > > > > > menu "Boot options" > > > diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/as= m/pgtable.h > > > index 7c2938cb70b9..1758ce71fae9 100644 > > > --- a/arch/arm64/include/asm/pgtable.h > > > +++ b/arch/arm64/include/asm/pgtable.h > > > @@ -1369,7 +1369,7 @@ extern void ptep_modify_prot_commit(struct vm_a= rea_struct *vma, > > > unsigned long addr, pte_t *ptep, > > > pte_t old_pte, pte_t new_pte); > > > > > > -#ifdef CONFIG_ARM64_CONTPTE > > > +#ifdef CONFIG_THP_CONTPTE > > > > Is it necessarily THP? can't be hugetlb or others? I feel THP_CONTPTE > > isn't a good name. > > This does not target hugetlbfs (see my other patchset for that here > https://lore.kernel.org/linux-riscv/7504a525-8211-48b3-becb-a6e838c1b42e@= arm.com/T/#m57d273d680fc531b3aa1074e6f8558a52ba5badc). > > What could be "others" here? I acknowledge that the current focus is on Transparent Huge Pages. However, many aspects of CONT-PTE appear to be applicable to the mm-core in general. For example, /* * The below functions constitute the public API that arm64 presents to the * core-mm to manipulate PTE entries within their page tables (or at least = this * is the subset of the API that arm64 needs to implement). These public * versions will automatically and transparently apply the contiguous bit w= here * it makes sense to do so. Therefore any users that are contig-aware (e.g. * hugetlb, kernel mapper) should NOT use these APIs, but instead use the * private versions, which are prefixed with double underscore. All of thes= e * APIs except for ptep_get_lockless() are expected to be called with the P= TL * held. Although the contiguous bit is considered private to the * implementation, it is deliberately allowed to leak through the getters (= e.g. * ptep_get()), back to core code. This is required so that pte_leaf_size()= can * provide an accurate size for perf_get_pgtable_size(). But this leakage m= eans * its possible a pte will be passed to a setter with the contiguous bit se= t, so * we explicitly clear the contiguous bit in those cases to prevent acciden= tally * setting it in the pgtable. */ #define ptep_get ptep_get static inline pte_t ptep_get(pte_t *ptep) { pte_t pte =3D __ptep_get(ptep); if (likely(!pte_valid_cont(pte))) return pte; return contpte_ptep_get(ptep, pte); } Could it possibly be given a more generic name such as "PGTABLE_CONTPTE"? > > Thanks for your comment, > > Alex > > > > > > > > > /* > > > * The contpte APIs are used to transparently manage the contiguous = bit in ptes > > > @@ -1622,7 +1622,7 @@ static inline int ptep_set_access_flags(struct = vm_area_struct *vma, > > > return contpte_ptep_set_access_flags(vma, addr, ptep, entry, = dirty); > > > } > > > > > > -#else /* CONFIG_ARM64_CONTPTE */ > > > +#else /* CONFIG_THP_CONTPTE */ > > > > > > #define ptep_get __ptep_get > > > #define set_pte __set_pte > > > @@ -1642,7 +1642,7 @@ static inline int ptep_set_access_flags(struct = vm_area_struct *vma, > > > #define __HAVE_ARCH_PTEP_SET_ACCESS_FLAGS > > > #define ptep_set_access_flags __ptep_set_access_fla= gs > > > > > > -#endif /* CONFIG_ARM64_CONTPTE */ > > > +#endif /* CONFIG_THP_CONTPTE */ > > > > > > int find_num_contig(struct mm_struct *mm, unsigned long addr, > > > pte_t *ptep, size_t *pgsize); > > > diff --git a/arch/arm64/mm/Makefile b/arch/arm64/mm/Makefile > > > index 60454256945b..52a1b2082627 100644 > > > --- a/arch/arm64/mm/Makefile > > > +++ b/arch/arm64/mm/Makefile > > > @@ -3,7 +3,7 @@ obj-y :=3D dma-mapping.o ex= table.o fault.o init.o \ > > > cache.o copypage.o flush.o \ > > > ioremap.o mmap.o pgd.o mmu.o \ > > > context.o proc.o pageattr.o fixmap= .o > > > -obj-$(CONFIG_ARM64_CONTPTE) +=3D contpte.o > > > +obj-$(CONFIG_THP_CONTPTE) +=3D contpte.o > > > obj-$(CONFIG_HUGETLB_PAGE) +=3D hugetlbpage.o > > > obj-$(CONFIG_PTDUMP_CORE) +=3D ptdump.o > > > obj-$(CONFIG_PTDUMP_DEBUGFS) +=3D ptdump_debugfs.o > > > diff --git a/mm/Kconfig b/mm/Kconfig > > > index c325003d6552..fd4de221a1c6 100644 > > > --- a/mm/Kconfig > > > +++ b/mm/Kconfig > > > @@ -984,6 +984,15 @@ config ARCH_HAS_CACHE_LINE_SIZE > > > config ARCH_HAS_CONTPTE > > > bool > > > > > > +config THP_CONTPTE > > > + bool "Contiguous PTE mappings for user memory" if EXPERT > > > + depends on ARCH_HAS_CONTPTE && TRANSPARENT_HUGEPAGE > > > + default y > > > + help > > > + When enabled, user mappings are configured using the PTE co= ntiguous > > > + bit, for any mappings that meet the size and alignment requ= irements. > > > + This reduces TLB pressure and improves performance. > > > + > > > config ARCH_HAS_CURRENT_STACK_POINTER > > > bool > > > help > > > -- > > > 2.39.2 > > Thanks Barry