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 D9AE9C77B76 for ; Sun, 23 Apr 2023 05:20:01 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 192116B0072; Sun, 23 Apr 2023 01:20:01 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 141D86B0074; Sun, 23 Apr 2023 01:20:01 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 009446B0075; Sun, 23 Apr 2023 01:20:00 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id E11B56B0072 for ; Sun, 23 Apr 2023 01:20:00 -0400 (EDT) Received: from smtpin27.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id A10861201CC for ; Sun, 23 Apr 2023 05:20:00 +0000 (UTC) X-FDA: 80711504160.27.99F7151 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf05.hostedemail.com (Postfix) with ESMTP id E9030100008 for ; Sun, 23 Apr 2023 05:19:57 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=KrK++LDY; dmarc=pass (policy=none) header.from=kernel.org; spf=pass (imf05.hostedemail.com: domain of rppt@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=rppt@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1682227198; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=YatBaMHmo8Uu/78rkzF78gdF8uiWfmvJ4H9ai28838s=; b=VYDylx5P7e4tzXz6oHMW8zSxkxMgfpOswKMAF/iI07N6bG/dLNt7eQnHj9/cuaypVy8BIz L8MEUJ0qC13F4g592x/u6SJvO+Yvg7b7Bg+RATed5Os6+wIWaoT6ojwlLTUAep8hmXTLv5 ElPU7yUCnJDFT/EIiXOmzgnk/cj4bCA= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=KrK++LDY; dmarc=pass (policy=none) header.from=kernel.org; spf=pass (imf05.hostedemail.com: domain of rppt@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=rppt@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1682227198; a=rsa-sha256; cv=none; b=TigInTShGTKHjR5K6vcoS9a1/4CUb5VedGhf9TRd5xMLksoqfY9jfd2M6lE+or8Z9Jl7lq Q68wgqQ7MlNBDORuE6jUxAoV+sjXnk9E1AJDhfR6UQ9izOKZqfRVqVPPGdk/oyIf9HP4e7 8PAWzMj65I7ncoGJyw3qoopo91YdGS8= Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id D7BEF6131B; Sun, 23 Apr 2023 05:19:56 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5F285C433D2; Sun, 23 Apr 2023 05:19:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1682227196; bh=3PDZm9BiZEEETNhdvASh02SE/wUksEg3iKZOOpAuxps=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=KrK++LDYcJEMTpdahkeJfxFn85sgAPdxsExLG3PS5KUgk+iwQcXUUrYRH7RTjaMub BPqc8/dWd2YlXug6TtCX5tahqzhWtfKLe+uybSGE6/K2blhLO0ckfirVaAt+XcDUrG NdqHi1Ty4PaWSpeh29iisTpIH6FWx4t40w3LHtcRBvGDZ9lF92RmQzZfPb4u+Q76zt G/gZXlvVpm/1l61pchX1CgJ77r759YoGK/Of+JaXR4TRAJ5g2ljTntjvQuL4lE3K6l jr1Q4LgG47bH4299flYs6zj46LTlkJN1z52+KMMLmmaknme3YXqYIb8cc9Dw/ax+XM ifz/UcNEFsZlA== Date: Sun, 23 Apr 2023 08:19:43 +0300 From: Mike Rapoport To: Baolin Wang Cc: akpm@linux-foundation.org, ying.huang@intel.com, mgorman@techsingularity.net, vbabka@suse.cz, mhocko@suse.com, david@redhat.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 2/2] mm/page_alloc: add some comments to explain the possible hole in __pageblock_pfn_to_page() Message-ID: References: <02defcbe9d7a797a2257e5f6a28ff7ea78e394e5.1682158312.git.baolin.wang@linux.alibaba.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <02defcbe9d7a797a2257e5f6a28ff7ea78e394e5.1682158312.git.baolin.wang@linux.alibaba.com> X-Rspam-User: X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: E9030100008 X-Stat-Signature: 86cdxryrtacbxng5s1o61p468eabif6r X-HE-Tag: 1682227197-354436 X-HE-Meta: U2FsdGVkX19YvduLyOHC1l0LL/OZZqNicsKVvQnpGyhTVBOz1sCdK8hJ+gGf2go3uBe5vBdK8iuahVwFHb8krKXLr9/IDekVmfLSHFOImSrTL1YvMVAIEq3sjDYBnBeeC8DNdDcFI7CwA0d2AvZ4IkYhGAGjVLN8FPUIUYMJAlWOQg4371w2KVi3CeNCz0zeBv1UIGOvrIKaD3O/hF+BpImSNHiSlzJVprMqnH6hQnr7+MNcXYv/IJX/AnP2nVOw/eFRkuaYrIXNGwDSjVAd+W61JxsIHZdLyu14RyufmUpcRvC14na8eb/73k1V5mjIognzINdzZSs/9t+xmzr13MiQS1uo5zQzD9HnYbI6cj7NK3rAAthfaoWyvFh0AtmcETFgRBeGVSe0NKo5XGeMaW/+OzDFG875rBu6yA6NH7JqI3TCkpRzyuhLxghrJSdEZsaEzb+4233a9WV+GrxUIJ5W9AlOosPKY9YcgEr9jBeDfI48Ib3qx9sUpDinVGPNy7dJXnPutrsWomaubGijfyWOTY2RT9kSNx6t6nR1PrRsDpYe8KeHYlA+5duIct0EkjmyP3+K4a1LIZr5WVM8ZWMPl97aKxdpjPcjbTKVp40uSIKrEotbj19HwEh86ISgc1L6cD1yUzVCeRqivdP2QurgnY3a9ECo0WBD8pG1HsagZ4ertD9oo4EcSklZFpixk6ynUxm2DlmvKElhqPf9ZheYJXiUYBO4e4+RgSkgPnbTclnc3JciGR4JZ5vcoLSb6J+B9cNHy6plC4AtGAOPatot4dsa3CJH/6PyKdWmTK9wSCeuJ2acxYBhN9rAVrMbNeyZ2FukM6bguBTxeY/mx5qFquAnhtWGLAaqyDABtDEZXCPTgwVrP4HCupCFQnVNsy51diMkeE4MIH43SPldCzxunLni4b6WEQBAmYjZbCm+VEhS4YaUHrinejhZysIrbvy+VxnnveS3inwSDik k/L3Lw4s Skg0RYkkFBHd6w9tkGsgG7jjDFeBxXPLAKL2yLTANPJ3+QhouI7AexMQrgf52Cegf03pZmL826B570l6SA+nfUa4KwDH0Q8BF0n5/bDSiATXdrsRlzl70tTezG8Zq7DxlwVSzVTnJcsDqFDAQTtb8sk4Fqsc5qscvLqUVgqCEe+w86U2EeU50NlJxB5XCgYm2brVJzNza7euUSahRiYvl6+hOn6MuzYQTpWLNzURYmzPIkwzNQuaezYwNMO76ijzM9QVZzuJwZgK4Hasny2AqJJQeMGibJ2lxTHqdsKXmHnLWWhll4kW0melUvWvOJfR8Ia7F0wzkba26A/TloZnOVjPv8Y3NoaNLjfzgqNBBkesLmTKfsVXTYlXn7hyT00rhyybSaBapHciCGXD7NXPaFpHGUnQKRb1JoZl+jnmWDwgaBilFjwz2tRAv1kxUdfJFAVpVhLf3wBAHF8yrv8nW75JmYY5dSFLoiEUIFNes7WlwiRURPSb/4ZYw+9H4QKnbLBvL 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: Hi, On Sat, Apr 22, 2023 at 06:15:18PM +0800, Baolin Wang wrote: > Now the __pageblock_pfn_to_page() is used by set_zone_contiguous(), which > checks whether the given zone contains holes, and uses pfn_to_online_page() > to validate if the start pfn is online and valid, as well as using pfn_valid() > to validate the end pfn. > > However, though the start pfn of a pageblock is valid, it can not always > guarantee the end pfn of the pageblock is also valid (may be holes) in some > cases. For example, if the pageblock order is MAX_ORDER - 1, which will fall Nit: in the current mm tree the default pageblock order is MAX_ORDER. > into 2 sub-sections, and the end pfn of the pageblock may be hole even though > the start pfn is online and valid. > > This did not break anything until now, but the zone continuous is fragile > in this possible scenario. So as previous discussion[1], it is better to > add some comments to explain this possible issue in case there are some > future pfn walkers that rely on this. > > [1] https://lore.kernel.org/all/87r0sdsmr6.fsf@yhuang6-desk2.ccr.corp.intel.com/ > > Signed-off-by: Baolin Wang > --- > mm/page_alloc.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > index 6457b64fe562..dc4005b32ae0 100644 > --- a/mm/page_alloc.c > +++ b/mm/page_alloc.c > @@ -1502,6 +1502,14 @@ void __free_pages_core(struct page *page, unsigned int order) > * interleaving within a single pageblock. It is therefore sufficient to check > * the first and last page of a pageblock and avoid checking each individual > * page in a pageblock. > + * > + * Note: if the start pfn of a pageblock is valid, but it can not always guarantee > + * the end pfn of the pageblock is also valid (may be holes) in some cases. For > + * example, if the pageblock order is MAX_ORDER - 1, which will fall into 2 > + * sub-sections, and the end pfn of the pageblock may be hole even though the > + * start pfn is online and valid. This did not break anything until now, but be > + * careful this possible issue when checking if the whole pfns are valid of a careful about ... > + * pageblock. > */ > struct page *__pageblock_pfn_to_page(unsigned long start_pfn, > unsigned long end_pfn, struct zone *zone) > -- > 2.27.0 > > -- Sincerely yours, Mike.