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 9B6FFC4332F for ; Wed, 14 Dec 2022 01:10:15 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 36C748E0003; Tue, 13 Dec 2022 20:10:15 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 31C2B8E0002; Tue, 13 Dec 2022 20:10:15 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1E3AE8E0003; Tue, 13 Dec 2022 20:10:15 -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 0807C8E0002 for ; Tue, 13 Dec 2022 20:10:15 -0500 (EST) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id D1FFB402C3 for ; Wed, 14 Dec 2022 01:10:14 +0000 (UTC) X-FDA: 80239130748.18.45479DA Received: from szxga01-in.huawei.com (szxga01-in.huawei.com [45.249.212.187]) by imf28.hostedemail.com (Postfix) with ESMTP id B7251C000B for ; Wed, 14 Dec 2022 01:10:11 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; dkim=none; dmarc=pass (policy=quarantine) header.from=huawei.com; spf=pass (imf28.hostedemail.com: domain of wangkefeng.wang@huawei.com designates 45.249.212.187 as permitted sender) smtp.mailfrom=wangkefeng.wang@huawei.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1670980213; 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=X4C1oZaT106+Ho2bVrspYVOZv0KHLIsIlQGdUDj8Tuk=; b=ZQIzjKq1Uq/93lKQJZcVjDuk25IlpJRJv9t3GFOMm/vZJhQ2D3tSUuQxCoUMZoj5lrLTqt Puy9BEpNYSEIBw/0GuBPBXqYv+KhDVDQTFJj9pRC3Z8pD+tK8tLcr1TxaDlkENtDm1kffs YpMTB1nvdAXyrWL97wSCt45f1/cK7uw= ARC-Authentication-Results: i=1; imf28.hostedemail.com; dkim=none; dmarc=pass (policy=quarantine) header.from=huawei.com; spf=pass (imf28.hostedemail.com: domain of wangkefeng.wang@huawei.com designates 45.249.212.187 as permitted sender) smtp.mailfrom=wangkefeng.wang@huawei.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1670980213; a=rsa-sha256; cv=none; b=h3+WOMW3WwQbCNYPY7yFtTiajmu5os+yah7AUtJ9DPV6A74OPVtJMCTd0LlQ7GMt2imD7Z vVJI52wlWuEM5uBKFey1zckAsBo+Igw8X8Cp6RE6Vqv4zZ+UmCe2NPwVFMj6Rcfeir/8Mr V4s0PWU/+FtdfTS8kDaQQ4sPfimB9jo= Received: from dggpemm500001.china.huawei.com (unknown [172.30.72.56]) by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4NWy1c43YRzlW11; Wed, 14 Dec 2022 09:09:08 +0800 (CST) Received: from [10.174.177.243] (10.174.177.243) by dggpemm500001.china.huawei.com (7.185.36.107) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Wed, 14 Dec 2022 09:10:06 +0800 Message-ID: <8693c37b-f709-4c63-eac6-418c32b80e7e@huawei.com> Date: Wed, 14 Dec 2022 09:10:06 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.5.1 Subject: Re: [PATCH -next 1/8] mm: memory_hotplug: add pfn_to_online_folio() Content-Language: en-US To: Matthew Wilcox CC: David Hildenbrand , Andrew Morton , Oscar Salvador , SeongJae Park , , , , References: <20221213092735.187924-1-wangkefeng.wang@huawei.com> <20221213092735.187924-2-wangkefeng.wang@huawei.com> <801ccbe2-08b8-e1cb-9aee-614d59a807d2@huawei.com> From: Kefeng Wang In-Reply-To: Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 8bit X-Originating-IP: [10.174.177.243] X-ClientProxiedBy: dggems702-chm.china.huawei.com (10.3.19.179) To dggpemm500001.china.huawei.com (7.185.36.107) X-CFilter-Loop: Reflected X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: B7251C000B X-Stat-Signature: gr6uo33z6em8rr4sfms67x71jf1cydjr X-Rspam-User: X-HE-Tag: 1670980211-926191 X-HE-Meta: U2FsdGVkX19tMU3Mm++MfR9gaaqUUrbNXTMc8ffpQzDox8Pv9PTxlvtW3kdpV98W8tFuqPCk2Tosx1ZpJjMaf/mx6GbcjMgug9RH5AysdYCUHFItD+/mtTCMzW9WY2JOcSpiWfbkrmpKScfgO/utNdeu1IPEWSZXzIKIG8jGzgVpkLDuCsXesX3FIOcAnY/WoLkO7XER3n3m85AvpzHLreYxSeZWyqILKQNaWxTPZ7N97ARb6LdHCzuWPNV74MgDGEORnOjzDu1+r/C3IDpL/P0m0Lexhi2lOHNQ7acGf73GGfNg4o1bCEAvXvuliYHqrbZXzOsgZBX8YPIUE4yiS3b0hGDEucruBR687lDObKadr1zB44uSiO4LwNpFzNZ5WGlDV26NfDvCk9ppwBGOb3rYt+VmyPjnNCfcxTIxY09DP1KWScwNic9UHWU4gvpt+6tNIhit1X6y9UFlBVtDQaar9ZvbkFRv7kMV8QJ37S/Wa3//BHK9gA+KvcBkkux7zu9l29RkVeG4ak3hBc3trSzd8lXUKqBGDRFuUWJ+T5UMJydgmGjiEJwQjC3kp53xMsIy6zJbXDorma8ZNLv2c/B7t5Bop/BvOa/K99KTR3KACGeI6tfTJZyLs2l+toN6wPO7g6ncSVTQmdlm1elgrVqxGSaQlGeooxuVICG6YUCyPrHSjAdr68Vf38wYs/iWhJDE+PcOCwtrJbHLSK02aqlXhltPc97dvhq5gpplMMJvR4kG4y18UlRgQFd7yolQ1lYX/XoyJ6VpEI8kUTP5xjkU4xHg0SW2H9uLNLF9Ysk2Y/4yUBXFGsq0wwAdQp8/eFhngljws9OlNTZ3wI8OQuuucVgyS968eEsHCVc4y9FlmgAbymC/JgoIO5pqMZzeoyioiWW7cgFZuuOX+UzCVhoPtLwgTheGPrPj70imeCzScnAeMXwGOkrX9WgEssEe 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 2022/12/13 22:47, Matthew Wilcox wrote: > On Tue, Dec 13, 2022 at 08:13:31PM +0800, Kefeng Wang wrote: >> On 2022/12/13 19:40, David Hildenbrand wrote: >>> On 13.12.22 10:27, Kefeng Wang wrote: >>>> Introduce a wrapper function pfn_to_online_folio(), which calls >>>> pfn_to_online_page() and returns the folio of the page found, >>>> or null if no page. >>>> >>>> Signed-off-by: Kefeng Wang >>>> --- >>>>   include/linux/memory_hotplug.h | 7 +++++++ >>>>   1 file changed, 7 insertions(+) >>>> >>>> diff --git a/include/linux/memory_hotplug.h >>>> b/include/linux/memory_hotplug.h >>>> index 9fcbf5706595..e841e4fb52a7 100644 >>>> --- a/include/linux/memory_hotplug.h >>>> +++ b/include/linux/memory_hotplug.h >>>> @@ -265,6 +265,13 @@ static inline void >>>> pgdat_kswapd_unlock(pg_data_t *pgdat) {} >>>>   static inline void pgdat_kswapd_lock_init(pg_data_t *pgdat) {} >>>>   #endif /* ! CONFIG_MEMORY_HOTPLUG */ >>>>   +static inline struct folio *pfn_to_online_folio(unsigned long pfn) >>>> +{ >>>> +    struct page *page = pfn_to_online_page(pfn); >>>> + >>>> +    return page ? page_folio(page) : NULL; >>>> +} >>> Who guarantees that page_folio() is safe and stable at that point? >>> >>> IIRC, that's very tricky. We could have the page concurrently getting >>> freed and the folio dissolved. >> So the caller should consider this,  lock or get the folio in the caller? > The caller only has a pfn; it doesn't have the folio at the time of > the call. David is right, this function cannot safely exist. Thanks fro all the advises from David/Matthew/SeongJae,  will rethink this converting. >