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 C1E7AC83F01 for ; Wed, 30 Aug 2023 08:23:20 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 35FCF8E0047; Wed, 30 Aug 2023 04:23:20 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 30F818E0009; Wed, 30 Aug 2023 04:23:20 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1D7A38E0047; Wed, 30 Aug 2023 04:23:20 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 0D8528E0009 for ; Wed, 30 Aug 2023 04:23:20 -0400 (EDT) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id C43F8140311 for ; Wed, 30 Aug 2023 08:23:19 +0000 (UTC) X-FDA: 81180081318.08.C64BDEC Received: from out-244.mta0.migadu.com (out-244.mta0.migadu.com [91.218.175.244]) by imf19.hostedemail.com (Postfix) with ESMTP id C633F1A000C for ; Wed, 30 Aug 2023 08:23:17 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=wlvrZHMt; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf19.hostedemail.com: domain of muchun.song@linux.dev designates 91.218.175.244 as permitted sender) smtp.mailfrom=muchun.song@linux.dev ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1693383798; 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=pHraHGCa+eMYVWrdhCdj2e2/Ka04G10CflJqIQdAXTQ=; b=TSkoE0SCXs4IrW/y+B7uJdoxU4zsQXu+rkup9CSLEL+VVkuYp3XSkrIeLY5HmDW8oykVLL X7KzX+yGaK8Jx3tyems4HHzjGRBNY/2HS8sysJPlcek45PcnL5TibZRI86jjheklqn8xzO o9ViZZshxqdP9/kTjFAfCBmCO/zfaTA= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=wlvrZHMt; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf19.hostedemail.com: domain of muchun.song@linux.dev designates 91.218.175.244 as permitted sender) smtp.mailfrom=muchun.song@linux.dev ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1693383798; a=rsa-sha256; cv=none; b=mG2D2AIEzDtWtmut4RoHGpaTfKTTV8v9CfCyYkm7SwktPVyUSs0DryANS8dY4y5cZNw/wn 7ZG1fn/HUAin28hNAulbFK1dU/I2gzb6CYn4VlAQ/ya5XPK5AgTpuh0RN+PDjO/nGMoIz7 hIwUqdDAxvHjrsNVKqRuXQU//cnAT1k= Message-ID: <2154ede0-aac1-c802-5470-3648113fcaff@linux.dev> DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1693383795; h=from:from: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; bh=pHraHGCa+eMYVWrdhCdj2e2/Ka04G10CflJqIQdAXTQ=; b=wlvrZHMtrVhIQI9zVAVgZG4lV11zO6hpHULr3seM45il3HviNFwgmgeKbC3nySsv/BWE1l hFASq43tTwPEPAI8JsIngOgutLio4NSIq/m+olD2nLhNGnTCUO+Mw3WRrdhCa9j9mZeeoO vBG0je/1Bi34oA0tNqGRwytUrD/sHuw= Date: Wed, 30 Aug 2023 16:23:05 +0800 MIME-Version: 1.0 Subject: Re: [PATCH 11/12] hugetlb: batch TLB flushes when freeing vmemmap To: Mike Kravetz , Joao Martins Cc: Muchun Song , Oscar Salvador , David Hildenbrand , Miaohe Lin , David Rientjes , Anshuman Khandual , Naoya Horiguchi , Barry Song , Michal Hocko , Matthew Wilcox , Xiongchun Duan , Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org References: <20230825190436.55045-1-mike.kravetz@oracle.com> <20230825190436.55045-12-mike.kravetz@oracle.com> X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. From: Muchun Song In-Reply-To: <20230825190436.55045-12-mike.kravetz@oracle.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Migadu-Flow: FLOW_OUT X-Rspamd-Queue-Id: C633F1A000C X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: gmpbfpoccg1mp8s9safx3jzgfshwp6xo X-HE-Tag: 1693383797-369588 X-HE-Meta: U2FsdGVkX19vTYoChGF3ZfOZEjaFuAyrnUXbjvKnwC9HA/OdRAgvfNXKU1FApQo3RvKSFN7Hqu+pu6F2kNrjkIoiU8fcg+6NiDPFeNcTbOHe4BtO4brduaB95zyiQ/FRywReTShhfDXdvGtxhCDvpVTQP/aDMrjLrzeH2Hg5T4VSMGtuUlcxj/9hS9crUrlYC4cGU5oxRQ1bmyrqjoEhxhcaSoXBAOCntcCrSQmDgWLLVy859o405IEnssVnnZDopGe9fslGZy6HCBluS++Q40Z/uCEanawOcgFIzmriq8q0HxilEgL7rh9Rt94efbL5I830pLijxqnBxjqCWcICOUAWm6GZVQZ/2VhwFCVc6gw9d5Dyomx8iZeiNd8hMHnYSUJeMgYUgbWoGBUiVOMjrWdkIUqHTwkCg+4HmoO7SEJAIxFahhLpEjuTv1X6DTA0qnh8UthVP81JEDgXzWoISbjRQuWhzUT9Y4G6B7HfJWwa9PYU6pP/nlj/cZaWd5lQy3beMMSmUKK7jGuyzvjvyWJPmW+oeLEvwRQrJj2ErPdRUDbLv/SYH+uTXjEE4gpbR8D7QicjFM/GDWkWI2FOogO2xCwifO39wZjoV5IsWK4wpzdeDvVlXjEpYjXPcqxdJI9acLb28Z7UdQEt5o/2ZP3sr/vPpGoxjROG+EgnRMy0A59ZSyGm6g/SmY8MbZMAxHNJwi7YQJhZBrGVgolKLhEjcHbL0fv1ge7NA1l0l4QdzB7IIYxQm0ZqZ9v+bzL2sFcCtGnXIJUEx07WwSXLFFUNdfG64Rb+iD1+PnI+1Zu/320qkoWlTkVBLi8fQvmtwumtcMNd6e+dxM6NRRsOFx3kISAbNu4PHU9i4c9evVbYTkDJandmLjY3TjYfZDI9rAGWg5+G2xPY7fLya6IyGR4F5qi4hP9Trw4odfTcikSf+VnPNNe6uZmQjWST8SvEkbhoBxEr88x/cgWG7IM Y0E858lY 39eaH8LTJXRdfzk3O4xL0EqmeeEnYhkj4MGREzvStxWiW2U0xC50e7nuXkzZzsDYrk5/qSu1GuCTJMZ8zZCQqFQJT0kiWgb46Yyx/+4K7WhXBdGv0qErFUV1pkkd690+YkLer8FsGeVXsf6FG/4DKVgKI+w== 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: On 2023/8/26 03:04, Mike Kravetz wrote: > From: Joao Martins > > Now that a list of pages is deduplicated at once, the TLB > flush can be batched for all vmemmap pages that got remapped. > > Add a flags field and pass whether it's a bulk allocation or > just a single page to decide to remap. > > The TLB flush is global as we don't have guarantees from caller > that the set of folios is contiguous, or to add complexity in > composing a list of kVAs to flush. > > Modified by Mike Kravetz to perform TLB flush on single folio if an > error is encountered. > > Signed-off-by: Joao Martins > Signed-off-by: Mike Kravetz > --- > mm/hugetlb_vmemmap.c | 9 +++++++-- > 1 file changed, 7 insertions(+), 2 deletions(-) > > diff --git a/mm/hugetlb_vmemmap.c b/mm/hugetlb_vmemmap.c > index 904a64fe5669..a2fc7b03ac6b 100644 > --- a/mm/hugetlb_vmemmap.c > +++ b/mm/hugetlb_vmemmap.c > @@ -36,6 +36,7 @@ struct vmemmap_remap_walk { > unsigned long reuse_addr; > struct list_head *vmemmap_pages; > #define VMEMMAP_REMAP_ONLY_SPLIT BIT(0) > +#define VMEMMAP_REMAP_BULK_PAGES BIT(1) We could reuse the flag (as I suggest VMEMMAP_SPLIT_WITHOUT_FLUSH) proposed in the patch 10. When I saw this patch, I think the name is not suitable, maybe VMEMMAP_WITHOUT_TLB_FLUSH is better. Thanks. > unsigned long flags; > }; > > @@ -211,7 +212,8 @@ static int vmemmap_remap_range(unsigned long start, unsigned long end, > return ret; > } while (pgd++, addr = next, addr != end); > > - if (!(walk->flags & VMEMMAP_REMAP_ONLY_SPLIT)) > + if (!(walk->flags & > + (VMEMMAP_REMAP_ONLY_SPLIT | VMEMMAP_REMAP_BULK_PAGES))) > flush_tlb_kernel_range(start, end); > > return 0; > @@ -377,7 +379,7 @@ static int vmemmap_remap_free(unsigned long start, unsigned long end, > .remap_pte = vmemmap_remap_pte, > .reuse_addr = reuse, > .vmemmap_pages = &vmemmap_pages, > - .flags = 0, > + .flags = !bulk_pages ? 0 : VMEMMAP_REMAP_BULK_PAGES, > }; > int nid = page_to_nid((struct page *)start); > gfp_t gfp_mask = GFP_KERNEL | __GFP_THISNODE | __GFP_NORETRY | > @@ -427,6 +429,7 @@ static int vmemmap_remap_free(unsigned long start, unsigned long end, > .remap_pte = vmemmap_restore_pte, > .reuse_addr = reuse, > .vmemmap_pages = &vmemmap_pages, > + .flags = 0, > }; > > vmemmap_remap_range(reuse, end, &walk); > @@ -700,6 +703,8 @@ void hugetlb_vmemmap_optimize_folios(struct hstate *h, struct list_head *folio_l > list_for_each_entry(folio, folio_list, lru) > hugetlb_vmemmap_optimize_bulk(h, &folio->page, &vmemmap_pages); > > + flush_tlb_kernel_range(0, TLB_FLUSH_ALL); > + > free_vmemmap_page_list(&vmemmap_pages); > } >