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 96F76C4332F for ; Tue, 13 Dec 2022 12:13:39 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E1CA88E0003; Tue, 13 Dec 2022 07:13:38 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id DA6C48E0002; Tue, 13 Dec 2022 07:13:38 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C46A58E0003; Tue, 13 Dec 2022 07:13:38 -0500 (EST) 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 B162A8E0002 for ; Tue, 13 Dec 2022 07:13:38 -0500 (EST) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 43B5F1404FF for ; Tue, 13 Dec 2022 12:13:38 +0000 (UTC) X-FDA: 80237173716.29.1403F96 Received: from szxga08-in.huawei.com (szxga08-in.huawei.com [45.249.212.255]) by imf19.hostedemail.com (Postfix) with ESMTP id C8D561A0019 for ; Tue, 13 Dec 2022 12:13:35 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=none; dmarc=pass (policy=quarantine) header.from=huawei.com; spf=pass (imf19.hostedemail.com: domain of wangkefeng.wang@huawei.com designates 45.249.212.255 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=1670933616; 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=BTz6RZTnhBf9EiE5Qq46Tm8dQJWhsNi0+I4Zrfj9W7k=; b=oKijyGFaUvfmOLBzKoV1bW6B6X+3Te6FKi8XixSYlSwSTdkQQrNygk5YsyBFhcQS3Zs1Vz klSW5NlNNY5+3OPaux8BwQuXqV6yWRTxnncjWeiQOOQtCU84kCpDYTd/LUm8dNxjNkCQAr BKV2oDtdVMh6PO5P+YNHzUWvfGxlw2w= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=none; dmarc=pass (policy=quarantine) header.from=huawei.com; spf=pass (imf19.hostedemail.com: domain of wangkefeng.wang@huawei.com designates 45.249.212.255 as permitted sender) smtp.mailfrom=wangkefeng.wang@huawei.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1670933616; a=rsa-sha256; cv=none; b=K3wi9b64vpSoj/ItOopPtP1k/nGnxowT1Cbei30Hc2PyU+AGL9m5dO424a+4p4wBGDflg0 zM0crLBB7B3Q89CzGfYLT0TSQ7nPzdkDI9R1ce5b+FiOw6+HDr+FvHmCr9yMHaDRfC0aGR uCRLkpSL8Qtrie6ff1LpPN8ipfzQkB0= Received: from dggpemm500001.china.huawei.com (unknown [172.30.72.53]) by szxga08-in.huawei.com (SkyGuard) with ESMTP id 4NWcnb0yDsz15NHW; Tue, 13 Dec 2022 20:12:35 +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; Tue, 13 Dec 2022 20:13:31 +0800 Message-ID: <801ccbe2-08b8-e1cb-9aee-614d59a807d2@huawei.com> Date: Tue, 13 Dec 2022 20:13:31 +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: David Hildenbrand , Andrew Morton , Oscar Salvador , SeongJae Park CC: , , , , References: <20221213092735.187924-1-wangkefeng.wang@huawei.com> <20221213092735.187924-2-wangkefeng.wang@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: dggems701-chm.china.huawei.com (10.3.19.178) To dggpemm500001.china.huawei.com (7.185.36.107) X-CFilter-Loop: Reflected X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: C8D561A0019 X-Rspam-User: X-Stat-Signature: eccf1jfgi67t1wg4wrkqga7ee7ybo5uu X-HE-Tag: 1670933615-162198 X-HE-Meta: U2FsdGVkX18mslIyjKzji23qQeNveg4WefIri/Nkd9BXMLLDYK6KJNw79l7TT/k3AviKSU0rz36/TIy766e0DAb/xEEKAAbFr9ivoouYmUaiwQCd0MJfPBEgBhkaDqyQLK8YtXn6CJDliDLdGyrDg+OsJUuzGcqpQFSA/vfCkvFEEPi+o7gpxxvZspDDOuXrKToltwyN506md6kb529o4xjIECk+0GF3l/OSGIenkZ3mtuIVCsLWzUnW7kjTNU3GL85J5AGl2DCJj2+lbavufL/mFaMNTEqbFD+sd2uWX/MNpQZLcxcuvL0/4RVR0iN917U8uW0CsMJYMENbVRRWA6/qjCmCYICHa1FR7vXSTVXreaE9FzS7VpZiY0rzVLdcgwcMO9iMC3V6Q9VC6cKp9F4GjLJZzvVAHAhhWKR2eQ77mR0sL7vWlDWbXaaGbCigHhwcaFsUuuJEFVwaCTkxEb0iq+DW9UfzqHU8nEO6EMBAG6Vb3ByVmmAB1H3xczRyUtICcxRc0IckH1h119KEPOFdEb1L/5KXS5pZpl1sIyuoNI0rOns3upJ4yLGQQQzFD9VP7a3VoVMmDcFPkKTb2E8rNQLOy3WfL3HRDTTQ7ad1oInYlAto3skId56L0zlzM9h24wklg8PhewYj4CW1kTS0MrbMIMS5gboqQO4w9PzoOROX8+b7BfdX+W5/J/FNeVNwxN5y5Igt/qzfbFhPyB51Ej6TJ5qESi1dZnxurqdRHVPNcAWhlGQgpBGn0OMXRPJvF/3Gl6fhO15NXlx7unzm62tEn7r21PKRD3avgeNT351m6tzZJ5PpcbppfLJ4JpqEb3rnxi5oCT9iFw71pJ6G+dzkwxHAQwxzPNHdIXlSCWc8upd6ThTlL+FMGoXLj6YlCZLJY2pEhZ8OzXwVt34ET7DZQ0NIi0UMjcpWUHc8Yui2s+8zNV9OofxsSElO 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 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?