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 213BBC02181 for ; Mon, 20 Jan 2025 13:21:29 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3B9DE6B0082; Mon, 20 Jan 2025 08:21:29 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 36A376B0083; Mon, 20 Jan 2025 08:21:29 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 231676B0085; Mon, 20 Jan 2025 08:21:29 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 057526B0082 for ; Mon, 20 Jan 2025 08:21:28 -0500 (EST) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 664F2B2FD2 for ; Mon, 20 Jan 2025 13:21:28 +0000 (UTC) X-FDA: 83027891856.29.59923DE Received: from mail-ed1-f52.google.com (mail-ed1-f52.google.com [209.85.208.52]) by imf20.hostedemail.com (Postfix) with ESMTP id 46FBE1C001C for ; Mon, 20 Jan 2025 13:21:26 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=UvYSAD5H; spf=pass (imf20.hostedemail.com: domain of ioworker0@gmail.com designates 209.85.208.52 as permitted sender) smtp.mailfrom=ioworker0@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=1737379286; 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=zOsiU3uttG5ERQW6bS4vRRVqSwTYCtaIx/MzBYUE+qw=; b=dYyCpZbbjQy3mNevDI7px4RR/affGmIvKymiuQD5pKQNEeRoVWHuSjyIbuVFZC+JqmKaak Ex2cgaSod5ofbGzLm2Hjku7275nZczvhORh15QIBeRT5yV5McIZdEseP9NMUWjReW6QPPw EaJiOGOxEc29+b2gTuIscFAruWyW2Vw= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1737379286; a=rsa-sha256; cv=none; b=cQBM6/f9bUVSzMAJGx/Hq04/PpPkXW00VJomaZkDOHBwa1e76OR0RmrlkuxytcgZD4pTZL iPFSazFjf/JNVRAn2aCTuKcF+5Wy+thD07DzqakGIOVQdXtWGtZlJB2ncpewn3GU1a0LBd az0PejTWbeuNySjfaPtNsD+d4qAExvk= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=UvYSAD5H; spf=pass (imf20.hostedemail.com: domain of ioworker0@gmail.com designates 209.85.208.52 as permitted sender) smtp.mailfrom=ioworker0@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-ed1-f52.google.com with SMTP id 4fb4d7f45d1cf-5d3bbb0f09dso7761152a12.2 for ; Mon, 20 Jan 2025 05:21:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1737379284; x=1737984084; 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=zOsiU3uttG5ERQW6bS4vRRVqSwTYCtaIx/MzBYUE+qw=; b=UvYSAD5Hsp8WZXr10IYAH3F/iOK2mFfy1k51OBd/pX/y0ayosW6XtmQ+xIjMFsSYnf TPZhSj7RcCghFPMV96tq1kr0RxMZLziXACLJ5Jf9FwbNmN7Xu3RSw/FuYpNro996TFOk 0zSJUSo6xQ8axBIY32mMUEtMrIDmdtgSwB+om4enNbLif2tbvq+BEv6NNSa7GETXNsf3 UXcKn/ZJAywqlrOwl4tinpVdGHa23NwojG/pERzt6lRSM5wlLHfV4F6cOCdp/T9T0KF+ S3JAHHZgt2pffoT0/JnnDBSVRS6F4oTkN7821I3VLESeRib39SWpXFtp+bP5ueGJhwd+ ORTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1737379284; x=1737984084; 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=zOsiU3uttG5ERQW6bS4vRRVqSwTYCtaIx/MzBYUE+qw=; b=ZwoWaI54v/UUlBZ++WtZH6ywVKD8k7NA5VbbSiAn4haLFShVsSYdizqhBy1zpxWE6l tawug/SdJgMlO0foubxM6ekzX2RlIeZL6QJwu3vSrg4h/qLOaEucn48Eruhl+ixfkui+ 1Irzw6WCK6/b090j3VjxWZ7mm18j1VzMdqfsFiqokSm6F7NMwfYsLScBuQoQge1XtLyu hCI00CF+Vq+6t9mYUP/zpAAwhqrZRgwtM9l+OxvOdwhlZWxkGBG/Gr83gZIsgaP2+AA1 NNXanGolMjQRma9ApceP3Kwl2z5XP4tK70Ktqb69kMRu2gvb20HTQwwE1cw1rhBJxRpF +JTg== X-Forwarded-Encrypted: i=1; AJvYcCX1Kmb4akrLLYjTPWb/8udLuwVRZ0GEo+a+YQxp469TwmTfUO639YrDKu+or9BczzX/NlnlgDUwYg==@kvack.org X-Gm-Message-State: AOJu0YwggnnnNSRtVv6mFCkO6MLRDTh1P1LL6GA6W6f8YUAe9VG8me5l IYqBHAF3J76lv0JXnfWNydIkeR1BKlePVL560fUkulRPX1qzFyafSmqHtYn1T6PoX4f4zWH+XNq s4tL1kj5d73BrXu6S5Xsi6fSufb0= X-Gm-Gg: ASbGncsXxq02u1hhIntNYDDPjj4txZGtTvK0yztfAPmEaNhdoRlyafuBFmF3GgQTtxp 5pwgqWdQ+dnGDtzKBK08PNPwc5zo+jOrCCJhgOqxYlmx5pY5N3UQ= X-Google-Smtp-Source: AGHT+IFSYWG9nJcMNRmlGpuJWT12IcgcRt66xQTmrUFihzCC+2mEttJs/ajDGsu75Cp7stMtxkKIsjKPYLN9xxjSrVY= X-Received: by 2002:a05:6402:3483:b0:5d0:d30b:d53e with SMTP id 4fb4d7f45d1cf-5db7d318decmr11590143a12.19.1737379284407; Mon, 20 Jan 2025 05:21:24 -0800 (PST) MIME-Version: 1.0 References: <20250120012230.3343-1-ioworker0@gmail.com> <20250120012230.3343-3-ioworker0@gmail.com> In-Reply-To: From: Lance Yang Date: Mon, 20 Jan 2025 21:20:47 +0800 X-Gm-Features: AbW1kvbjjdMXegCG3KmUO-NsYBsaNq7hzaNCwJb8VRPo1quz3tQx7m3QcitXXzQ Message-ID: Subject: Re: [RFC 2/2] mm/mthp: relax anon mTHP PTE Mapping restrictions To: Barry Song <21cnbao@gmail.com> Cc: akpm@linux-foundation.org, ryan.roberts@arm.com, dev.jain@arm.com, david@redhat.com, shy828301@gmail.com, ziy@nvidia.com, libang.li@antgroup.com, baolin.wang@linux.alibaba.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Mingzhe Yang Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Stat-Signature: x4tk3np9fnxoaqizke56d4bsuorp8hg6 X-Rspam-User: X-Rspamd-Queue-Id: 46FBE1C001C X-Rspamd-Server: rspam03 X-HE-Tag: 1737379286-164012 X-HE-Meta: U2FsdGVkX1/sxRp2EW8yd6MpMLeH1SfVh2QJQ5nBV2ixurUS4sAakTXqxsXiuj5P0fNl+DH4Ksd9/wP2/EWt+eyXyycFudycjbJtAq/h9x0XyqVywyX57iyHx1x5osBGvYKY+Q1tHpR6+fLDY0Kt209sZSqEaFV52f99oDhRwTyu1hClYBeXMlPIyr2JuD50IC2f71tecWkwfAto1wMtvUyIw9wCFb3Yzpu6d59B5X3qfO4pKzAVP9WP67+Hkd/PD0GGMHWE8+2Y40ls2342GiohPQJZpZjFeGPmKjdO1jNWdg8srL2SEY/7Lm82fZI3TVVsI1TxpTXKI3AY8etqAmuk2auMtZwmDRy3oJviJ9vut3Uvm6tRBbPSQKBJvwfn5FJw/KP+ad/L/9S36JudhVBQ98J/TFs/S+aUZXzk8BpgM64wU50oRjVxcYyOPgk2u84w2eXUVqv9TxntdcPxOgjhT50Bn3/8JJLkRnBsV2RPeIC+n1XBfcgM4K/kGj9m7TpcoZbx06dN4z8ldnu7onbYeGNG5jqmNOVhfe2WHj7g0RFnz9NnHowIjlWn1ovbS6aipaRJfmGfNpZutGe8KOZWTjwo15ZT2Ouoq5nl5TiJ0OQks6gs5/NairXHq5/GKmmJCRhVNVBQX2rpmnsTeBxSUMoScGYNFWn5iNGEFssIZbor6969/9nwkl9brKXDB1SDkSKQl0xl7N3/dSmrB8mYQpBmGViEBer8NeFeAykpBI02OvA5dBbVjpMOdcOwfNUkSCzq1c+bFTTk5/GigP7HP1gtDdI6ayE5786UGd33W2rX1i3guEPtgC36b21CWyjrX+lV4AdK5EYsf7tNAsLYSVPCKY19Z7N43pu9U3a86RZ74xrzslO9HLHlZqi9Djbsk8oQVbp4ptQwe6WDYInjxITTEkl8QAOJQIymVMedtpi63K+DWqoi6yc9GKTQNzfCDB5HeZ+XVsUeXLV YnwIhork xzYTrbxujODnCjtFrx0ZSOFvEisUJE8jC4JdXSpB5tAWKEdUYLxGqXrkydprIbHVxVyExZY9B6uZPPfiLz8J08h8wlADSAtz8HTe62jIDt1xoKL4bbI2u1PcM9/vNJXFWsDZaTrqvwQuMR7DtqOmTOxZAidd4Xd62+2k5JB0/xtjNbQqnTX5peuTtS2YpmazyfztPB7lIqp8zPQlV5axuy2jRIyEsUYHHf5hN50Dmp0tUuWm3J+HoHXCA1X6g4nkhMsOxI5vStNBDL7ZZxMxn2zSaM8zcMok9MATcJyqzqezhRhMazNm3+JC2xYg3e+uuOJ2NzIEI0C9uB+Bv5i9EYZipdHbUfBm2DAt/GR1sOhvpFRNVZLMWAhBBQMDbZlCd2Pq2oVixSmv3YC56dui/zhmSFg== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000359, 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 Mon, Jan 20, 2025 at 10:15=E2=80=AFAM Barry Song <21cnbao@gmail.com> wro= te: > > On Mon, Jan 20, 2025 at 2:23=E2=80=AFPM Lance Yang = wrote: > > > > Previously, mTHP could only be mapped to PTEs where all entries were no= ne. > > With this change, PTEs within the range mapping the demand-zero page ca= n > > now be treated as `pte_none` and remapped to a new mTHP, providing more > > opportunities to take advantage of mTHP. > > > > Signed-off-by: Mingzhe Yang > > Signed-off-by: Lance Yang > > --- > > mm/memory.c | 11 +++++++++-- > > 1 file changed, 9 insertions(+), 2 deletions(-) > > > > diff --git a/mm/memory.c b/mm/memory.c > > index 4e148309b3e0..99ec75c6f0fe 100644 > > --- a/mm/memory.c > > +++ b/mm/memory.c > > @@ -4815,7 +4815,8 @@ static struct folio *alloc_anon_folio(struct vm_f= ault *vmf) > > order =3D highest_order(orders); > > while (orders) { > > addr =3D ALIGN_DOWN(vmf->address, PAGE_SIZE << order); > > - if (pte_range_none(pte + pte_index(addr), 1 << order)) > > + if (pte_range_none_or_zeropfn(pte + pte_index(addr), 1 = << order, > > + NULL)) > > break; > > order =3D next_order(&orders, order); > > } > > @@ -4867,6 +4868,7 @@ static vm_fault_t do_anonymous_page(struct vm_fau= lt *vmf) > > { > > struct vm_area_struct *vma =3D vmf->vma; > > unsigned long addr =3D vmf->address; > > + bool any_zeropfn =3D false; > > struct folio *folio; > > vm_fault_t ret =3D 0; > > int nr_pages =3D 1; > > @@ -4939,7 +4941,8 @@ static vm_fault_t do_anonymous_page(struct vm_fau= lt *vmf) > > if (nr_pages =3D=3D 1 && vmf_pte_changed(vmf)) { > > update_mmu_tlb(vma, addr, vmf->pte); > > goto release; > > - } else if (nr_pages > 1 && !pte_range_none(vmf->pte, nr_pages))= { > > + } else if (nr_pages > 1 && !pte_range_none_or_zeropfn( > > + vmf->pte, nr_pages, &any_zer= opfn)) { > > update_mmu_tlb_range(vma, addr, vmf->pte, nr_pages); > > goto release; > > } > > @@ -4965,6 +4968,10 @@ static vm_fault_t do_anonymous_page(struct vm_fa= ult *vmf) > > entry =3D pte_mkuffd_wp(entry); > > set_ptes(vma->vm_mm, addr, vmf->pte, entry, nr_pages); > > > > + /* At least one PTE was mapped to the zero page */ > > + if (nr_pages > 1 && any_zeropfn) > > + flush_tlb_range(vma, addr, addr + (nr_pages * PAGE_SIZE= )); > Thanks for taking time to review! > Do we also need mmu_notifier? > > mmu_notifier_range_init(...) > mmu_notifier_invalidate_range_start(&range); > > By the way, this is getting much more complex, but are we seeing any real > benefits? I=E2=80=99ve tested this before, and it seems that zeropfn-mapp= ed > anonymous folios are quite rare. Hmm... Agreed that it's getting more complex. I don't have any data showing real benefits yet, so let's put this patch aside for now until I do= . Thanks, Lance > > > + > > /* No need to invalidate - it was non-present before */ > > update_mmu_cache_range(vmf, vma, addr, vmf->pte, nr_pages); > > unlock: > > -- > > 2.45.2 > > > > Thanks > Barry