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 E2C9AC52D7F for ; Thu, 15 Aug 2024 21:06:40 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 7C6EB6B00C6; Thu, 15 Aug 2024 17:06:40 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 778226B00CA; Thu, 15 Aug 2024 17:06:40 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 640606B00C8; Thu, 15 Aug 2024 17:06:40 -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 4365B6B0255 for ; Thu, 15 Aug 2024 17:06:40 -0400 (EDT) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id B6D904189F for ; Thu, 15 Aug 2024 21:06:39 +0000 (UTC) X-FDA: 82455713718.08.2FFA07F Received: from mail-oo1-f45.google.com (mail-oo1-f45.google.com [209.85.161.45]) by imf14.hostedemail.com (Postfix) with ESMTP id F2146100023 for ; Thu, 15 Aug 2024 21:06:37 +0000 (UTC) Authentication-Results: imf14.hostedemail.com; dkim=none; dmarc=fail reason="SPF not aligned (relaxed), No valid DKIM" header.from=kernel.org (policy=none); spf=pass (imf14.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.161.45 as permitted sender) smtp.mailfrom=21cnbao@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1723755916; 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; bh=DBVHLny5yK9Q2nKOUSqphhaawlBVWCd0AIRG3t50TKw=; b=uailRcFe0lGBo7HHIKVPE2+dWjyRO2iphYox7ST2+KgjNFUAY18ANhiUJ50f+TYEhoy3FW TSEVWyFVLFfiX5Sy9SX1HgiP/DUeWfIbhnvY4BJJDoHyl1Xg0LYsIsEU7ZCaOddFRdWiS6 k4RpEz0iVuJfm6tQk1TOAonh1S37hb0= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1723755916; a=rsa-sha256; cv=none; b=PfqfcpFvF7RsK9C1rbDgOTCs/Lg19ju86QX+8hUemkLReNo0bCTRNdmOjmnx2qBpwPybNo Cu3XZhi0+E0i34Y68m6WFWUlCzhkXnZriq6QE87eMRFgoj++xob1taja3G/aiPbe0CGFEL dvo2HM5dj4w67dFSHdM7g6wUGemgrHA= ARC-Authentication-Results: i=1; imf14.hostedemail.com; dkim=none; dmarc=fail reason="SPF not aligned (relaxed), No valid DKIM" header.from=kernel.org (policy=none); spf=pass (imf14.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.161.45 as permitted sender) smtp.mailfrom=21cnbao@gmail.com Received: by mail-oo1-f45.google.com with SMTP id 006d021491bc7-5c669a0b5d1so955574eaf.3 for ; Thu, 15 Aug 2024 14:06:37 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1723755997; x=1724360797; 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=DBVHLny5yK9Q2nKOUSqphhaawlBVWCd0AIRG3t50TKw=; b=vl+VRTCkVI2LtC/8bd4Fotpn7viPt1vU17DHTyhpi3vxK7Snsfn7DahzYCqaUsEMnA PY18xoIFm9mu+JcKwQbyt1jny4BSYFOo4pT2meNUENbd9CyJSKELOvzDKeYBImhx7ZzI Sv5EIBNji3N85BaGZ4NCYcTx6pIZvB+vAn0pIb82UyxzzDRNfus+W/9lfbCiz6JXR2mL LZ1Y0H4hYtYRLEXHcomeT4UzuhKoTV8VCuC0vYgCQcSGcfpJf2UKZUimOfXO1XdCOYaI f0wY8KamPYWN7nJlTVUW3JWoJAzwhD64UYYd37BduAw7keXwGm+ZKday+ZC+En+LJNmS R7Jw== X-Forwarded-Encrypted: i=1; AJvYcCUyq6NAXGjSbuW0gG27rLk9K6694QhOTmAV26IW2xYvsaVyzAQhYfreUxCqLBsS3i/YbKZVQ8m8kI21JJoniVKicY8= X-Gm-Message-State: AOJu0YyYSld5J5Vd9yijLqeOetfZipPUXHim8pBLlM8NiMzhSkDZ5uxe CArxNIudkNsYGkYfDd1WRkd+nl4ftxEqg7LzCsm7WuTc9wfohAUzybAUbb2WrEHZYpNXpf9QUqC lmS1vSANge0aW249d11r6THecijk= X-Google-Smtp-Source: AGHT+IFFWlPCy7bquLwJlr+dwtVXggyxh5k2BGEL/yS7SoLWSNhHUDwl6p6DKB/qYAbJxARNC2n/1UXH14Z8b0MFwHA= X-Received: by 2002:a05:6218:260d:b0:1ad:471:9b7 with SMTP id e5c5f4694b2df-1b3931bfd1amr147959255d.18.1723755996967; Thu, 15 Aug 2024 14:06:36 -0700 (PDT) MIME-Version: 1.0 References: <20240813120328.1275952-1-usamaarif642@gmail.com> <20240813120328.1275952-5-usamaarif642@gmail.com> In-Reply-To: From: Barry Song Date: Fri, 16 Aug 2024 09:06:25 +1200 Message-ID: Subject: Re: [PATCH v3 4/6] mm: Introduce a pageflag for partially mapped folios To: Usama Arif Cc: David Hildenbrand , akpm@linux-foundation.org, linux-mm@kvack.org, hannes@cmpxchg.org, riel@surriel.com, shakeel.butt@linux.dev, roman.gushchin@linux.dev, yuzhao@google.com, ryan.roberts@arm.com, rppt@kernel.org, willy@infradead.org, cerasuolodomenico@gmail.com, corbet@lwn.net, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, kernel-team@meta.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: F2146100023 X-Stat-Signature: wox69gum35sc8jg9c77pjsjeqmmkbbqq X-Rspam-User: X-HE-Tag: 1723755997-669240 X-HE-Meta: U2FsdGVkX1+f5ecKS5i6+iCrmD9FWV7u0PqvKBU4z1w8KG1JP7HOyX5TxL7Nf/OR52L6C7Klqj0o8fyvH2jwJXLQ3Hluc8HwdG4khQbXPTHgmhdU8VgTGG0/d2r7vgnbBhEfwuxspDNzGjmHvy6NyPaIsvhWQQ9pOj5RYzWUYqamRwxJ1uDivKXUlwucnuQIPkqw22V1gDqY+Tu+0pOLMqU3BMdZpCO1N1wZRkrSqz6zj1o1uf6kL1kd7MgTCOlkHf/cwrMc+93w4g8Kkm/xRZ6cmpkzv1QOhn0RsllXWWKgwBn2jDfnCwPrA1IbmivBn6J/OJlATBOnqu7O6BRlwnYNRT276lBzGb0B7uQDCfB7MFFVdymJopoe9J29tWG8tGAvEA/cyA6L9byKyB4GdQR2pEEktnJCpRC9m52Pmi0NPl5sAZrhuTHJq8uIhs0GFM1ukDFFbJ86oV31JwdUcfOjBtTFKvGaudliV0wYVYlu7J/+VSjsM0D3lJk4qYOHPEZs7vD2Y8FbPgfP8j2K3L0UAUbTKzRUXKUxoqY7zRdKbUU0agw+XV8dasa16yCnGjH3AY0cVy7V2wExvzwYxxA1DDMNzlDqhIotCm1JpHPn9JRFZylIbE8D9r5wQ/rxV0+HkEyg2XC9sjU8VWJencEvV0OVAmKpqOFnJcWZcZiTpGYYuHR12kStZu6wcMr0XijgyLATKvBU/vzfSQVFbZjkrzlU75m/lJGOwgL3iNBaNwoSRhfx7knLBddxV8pZIWvljEn3vSonARc83ajb4k2XvVaqUqY98EyBQRIy11ge8u7+5lqwXXAoVlwcEwXOzRuKa8CJcHLSxa6CIL2hcpVaQmCa3iAMrTcSqfc4XklcQQixAiHSUT56q/Av7WZ55H+prZib7jpKJ6Bz25INjFYqZXys+n8Fi8LvfgjWOEwEbaglSVQdLbQ7F+4Tm/F5lZmZLQla+YDvilrv/Ip HLpZtWvu xwVFDBOg5LkD1YNEEEwjKnlcpaALt/YQ9jJiPoLBeYpY93YHNdPO9mnFkUFIrHAMEBFkXcyw4AujJE8BtObvK0IECSbLwM27L4ch2Rzk0JyEyw3fDZg6NFcTDptGdYjs/sNJjavc5dfkOl27YVLixRv53b/fEG1j9vbeGB1+ehnrzMNEN/JIHk+8bxfsOIqAwPgs7pUMX68iwkiotmTcrkabtlyarGl6KHKKorfCtXFpWtvAPHfEiRFo1vmDrjlaBCAoPRpmDGZ0l6Mw97OC+f24KHu0M2+CJNPzjmGUPZ2D8gRM= 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 Fri, Aug 16, 2024 at 5:10=E2=80=AFAM Usama Arif = wrote: > > > > On 15/08/2024 17:33, David Hildenbrand wrote: > >> diff --git a/mm/huge_memory.c b/mm/huge_memory.c > >> index 6df0e9f4f56c..c024ab0f745c 100644 > >> --- a/mm/huge_memory.c > >> +++ b/mm/huge_memory.c > >> @@ -3397,6 +3397,7 @@ int split_huge_page_to_list_to_order(struct page= *page, struct list_head *list, > >> * page_deferred_list. > >> */ > >> list_del_init(&folio->_deferred_list); > >> + folio_clear_partially_mapped(folio); > >> } > >> spin_unlock(&ds_queue->split_queue_lock); > >> if (mapping) { > >> @@ -3453,11 +3454,12 @@ void __folio_undo_large_rmappable(struct folio= *folio) > >> if (!list_empty(&folio->_deferred_list)) { > >> ds_queue->split_queue_len--; > >> list_del_init(&folio->_deferred_list); > >> + folio_clear_partially_mapped(folio); > >> } > >> spin_unlock_irqrestore(&ds_queue->split_queue_lock, flags); > >> } > >> -void deferred_split_folio(struct folio *folio) > >> +void deferred_split_folio(struct folio *folio, bool partially_mapped) > >> { > > /* We lost race with folio_put() */> list_del_init(&foli= o->_deferred_list); > > Was there some comment here? I just see ">" remove from the start of /* W= e lost race with folio_put() */ > > >> + folio_clear_partially_mapped(folio); > >> ds_queue->split_queue_len--; > >> } > >> if (!--sc->nr_to_scan) > >> @@ -3558,7 +3564,6 @@ static unsigned long deferred_split_scan(struct = shrinker *shrink, > >> next: > >> folio_put(folio); > >> } > >> - > >> spin_lock_irqsave(&ds_queue->split_queue_lock, flags); > >> list_splice_tail(&list, &ds_queue->split_queue); > >> spin_unlock_irqrestore(&ds_queue->split_queue_lock, flags); > >> diff --git a/mm/hugetlb.c b/mm/hugetlb.c > >> index 1fdd9eab240c..2ae2d9a18e40 100644 > >> --- a/mm/hugetlb.c > >> +++ b/mm/hugetlb.c > >> @@ -1758,6 +1758,7 @@ static void __update_and_free_hugetlb_folio(stru= ct hstate *h, > >> free_gigantic_folio(folio, huge_page_order(h)); > >> } else { > >> INIT_LIST_HEAD(&folio->_deferred_list); > >> + folio_clear_partially_mapped(folio); > >> folio_put(folio); > >> } > >> } > >> diff --git a/mm/internal.h b/mm/internal.h > >> index 52f7fc4e8ac3..d64546b8d377 100644 > >> --- a/mm/internal.h > >> +++ b/mm/internal.h > >> @@ -662,8 +662,10 @@ static inline void prep_compound_head(struct page= *page, unsigned int order) > >> atomic_set(&folio->_entire_mapcount, -1); > >> atomic_set(&folio->_nr_pages_mapped, 0); > >> atomic_set(&folio->_pincount, 0); > >> - if (order > 1) > >> + if (order > 1) { > >> INIT_LIST_HEAD(&folio->_deferred_list); > >> + folio_clear_partially_mapped(folio); > > > > Can we use the non-atomic version here? > > > > I believe we can use the non-atomic version in all places where set/clear= is done as all set/clear are protected by ds_queue->split_queue_lock. So b= asically could replace all folio_set/clear_partially_mapped with __folio_se= t/clear_partially_mapped. > right. That is why I thought the below is actually safe. but i appreciate a test_set of course(and non-atomic): + if (!folio_test_partially_mapped(folio)) { + folio_set_partially_mapped(folio); + if (folio_test_pmd_mappable(folio)) + count_vm_event(THP_DEFERRED_SPLIT_PAGE); + count_mthp_stat(folio_order(folio), MTHP_STAT_SPLIT_DEFERRED); + } > But I guess its likely not going to make much difference? I will do it an= yways in the next revision, rather than sending a fix patch. There haven't = been any reviews for patch 5 so will wait a few days for any comments on th= at. > > Thanks Thanks Barry