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 C833CC77B61 for ; Tue, 25 Apr 2023 12:29:29 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 084846B0071; Tue, 25 Apr 2023 08:29:29 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 0352E6B0074; Tue, 25 Apr 2023 08:29:28 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E66BB6B007B; Tue, 25 Apr 2023 08:29:28 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id D8F456B0071 for ; Tue, 25 Apr 2023 08:29:28 -0400 (EDT) Received: from smtpin15.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id A7FF2120156 for ; Tue, 25 Apr 2023 12:29:28 +0000 (UTC) X-FDA: 80719844016.15.D342372 Received: from out30-132.freemail.mail.aliyun.com (out30-132.freemail.mail.aliyun.com [115.124.30.132]) by imf25.hostedemail.com (Postfix) with ESMTP id 0868BA0036 for ; Tue, 25 Apr 2023 12:29:23 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=alibaba.com; spf=pass (imf25.hostedemail.com: domain of baolin.wang@linux.alibaba.com designates 115.124.30.132 as permitted sender) smtp.mailfrom=baolin.wang@linux.alibaba.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1682425767; 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=Nen/IB6bou3RsJvUIhw8ql3Ds/k6dr2lBjYLig9ldsM=; b=dOWmPxqUGf7iMT4fm59R5UpUfFRR5zc2JS1AzaWplNz1FJsEB4wenX5sWM3CFtGc8I/NVV QYGX1ST301dajhz0kLhS7eyY8I0hNWJvTwGvwo5u0HDeKF/p7iHiq3pt/qECfYNt60YO9p CZA8U4VXTTrbp7PbUq/HvSbSl78b4/w= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=alibaba.com; spf=pass (imf25.hostedemail.com: domain of baolin.wang@linux.alibaba.com designates 115.124.30.132 as permitted sender) smtp.mailfrom=baolin.wang@linux.alibaba.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1682425767; a=rsa-sha256; cv=none; b=HV/CZ3cQazVSetnIKFdeJvU1X8N8dTgn5ik2e2Eibzso/6m4SmeiHTX0ZNhvTdfC61K/A7 GmrTPNJyhQlZlaSb3opm7SrrVAL7Tq5d/Qec6Z5sVyV5h645CLkjSy0AUqxogyIgJkkH5j Y2LlnoOHWCHstoFdBd7Zdhszf9If3lE= X-Alimail-AntiSpam:AC=PASS;BC=-1|-1;BR=01201311R841e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=ay29a033018046050;MF=baolin.wang@linux.alibaba.com;NM=1;PH=DS;RN=9;SR=0;TI=SMTPD_---0Vh-Qtpb_1682425758; Received: from 30.15.221.179(mailfrom:baolin.wang@linux.alibaba.com fp:SMTPD_---0Vh-Qtpb_1682425758) by smtp.aliyun-inc.com; Tue, 25 Apr 2023 20:29:19 +0800 Message-ID: <98fa0a22-77d1-cdb3-1ce2-48a00c3ed5a9@linux.alibaba.com> Date: Tue, 25 Apr 2023 20:29:16 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.10.0 Subject: Re: [PATCH v3 2/2] mm/page_alloc: add some comments to explain the possible hole in __pageblock_pfn_to_page() To: Michal Hocko Cc: "Huang, Ying" , akpm@linux-foundation.org, rppt@kernel.org, mgorman@techsingularity.net, vbabka@suse.cz, david@redhat.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org References: <50b5e05dbb007e3a969ac946bc9ee0b2b77b185f.1682342634.git.baolin.wang@linux.alibaba.com> <87zg6wkdy8.fsf@yhuang6-desk2.ccr.corp.intel.com> <060aab79-8170-56ad-797d-9d339f6c0b61@linux.alibaba.com> From: Baolin Wang In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Rspam-User: X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: 0868BA0036 X-Stat-Signature: rc83x3kxkpb3gew5ge6t4fpiju5nosfh X-HE-Tag: 1682425763-244633 X-HE-Meta: U2FsdGVkX1/lEwCjcgjywVU6Xqn/T4CX6N5RKVoGJw2iR27Pzvj2pZJ+dhxljipa0z4CY6REMXhnjTLopvHR3/f7TSbeyVlPE0ECjBM8toNKjQ/7zAh/Q9AaE4PiI7hxbCbcIEXROZj/RpA5BdeMhO96TKrlH2/dcP2jAOmoZZsiB2wDpXhlUNRXjWwfwWGNk0WGyw4vGMWibtdiCBrV6NG0Bdm0ESiMPF5Cho3E9LGHaE62nPRZivcpQkT3dwPx/CCG42V7KWTcmNzlTjS7Sc+pNBkSv+/v/R+kNYZmXrWFg6fSFK5FGNbcQMHO6SY7i+zkyi61PE01+kGa6z3GoM8clQFAdxBGIKilFRPRr/oeFSKn1vNglcJ/dpEs/yuGWql0EJW813JcOZJLgoAoV6uyadziqcgY0CMQyj7HMQkKX1x7qVDhFKO6kPi7VyueavoYiEDBtt0ModSt5htilFh0Jdz0gWGP6Xippqs45/kUi4i+LFFBcveLd1y+VrPV/SWkoPkxRk6ZiT1LpivudieRWkPkbXGtmtV8QB4FRNwWCJrLJtN3Ig3PNOUEsU/T2reQgwOk7XeRqP35lxd9pwSllyKdSgHWIpUn+Vgff2BMNJlJp1WbyQkN2RMCR9seGj5t/5ctM9AOgCYeNpQdPEY3CPMYFiQFbG1R6hdrLI4Blgct0HqVpSYTpvGd3PJkBerWXGx+ekYFq99dSxz3EMqaUwTC/aiOf5OYtgfMLbqEhjWNbZpmoHxpoV2pEWSJV/SiNyAUPX5mD4Byf1ZrvKJMJaXRFO21uSYhI8+ypmYU9bcMVTsonOsjCZP+qUUgmHmjr/jlZxefPoIvAfEYS87L+rA0XIGDnhuh1xzoRu+Cu7pVl5it+4jWTlXGNXKaXSngrsSD2VqeLW2h+FUpksFLIUqCNAyQFT24PciqE1pSwoLBzualro+26HD4ckxaNVYF1lucQrILQUXLbvk ZNFUYWeE gqH1Eicp6CRZFD1EvjqMwJcHy6vpAhJvYv9Rek+fOxcDR11TtYghzmCMjmIeZf38W2/hVms8NQtHZ2pgqe/Le7J/7Fc+EE1fcuXUKO092Eq6x+AMwsXgwqzUt1yrOelrnS1WHfhlhxU5yHQu6J3dRtAJLhbu+R/l/uH0VXV0ZLWoIU6vVStjU0peHjQ== 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 4/25/2023 5:05 PM, Michal Hocko wrote: > On Tue 25-04-23 09:27:23, Baolin Wang wrote: >> >> >> On 4/25/2023 8:22 AM, Huang, Ying wrote: >>> Baolin Wang writes: > [...] >>>> diff --git a/mm/page_alloc.c b/mm/page_alloc.c >>>> index 6457b64fe562..bd124390c79b 100644 >>>> --- a/mm/page_alloc.c >>>> +++ b/mm/page_alloc.c >>>> @@ -1502,6 +1502,15 @@ 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: the function may return non-NULL struct page even for a page block >>>> + * which contains a memory hole (i.e. there is no physical memory for a subset >>>> + * of the pfn range). For example, if the pageblock order is MAX_ORDER, 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 should be safe most of >>>> + * the time because struct pages are still zero pre-filled and pfn walkers >>> >>> I don't think the pfn is just zero-filled even it's a hole. Can you >>> confirm that? In memmap_init() and memmap_init_zone_range(), >>> init_unavailable_range() is called to initialize the struct page. >> >> Yes, what I mean is the page frames were initialized to zero firstly, and >> some fields were initialized to default value. The "zero pre-filled" seems >> confusing, may be change to "initialized"? > > Huang Ying is correct. Holes should have struct pages initialized and > init_unavailable_range actually marks those pages reserved. Which > is really good because they mean "do not touch unless this page is > yours". For some reason I thought those struct pages are simply zero > filled. I was clearly wrong. Maybe it would be good to reference > init_unavailable_range in the comment so that it is easier to track the > whole code path. OK, will do as you and Huang Ying suggested. Thank you both. > Sorry about that! never mind:)