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 4B74CC4332F for ; Tue, 13 Dec 2022 14:47:52 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id CBF4E8E0003; Tue, 13 Dec 2022 09:47:51 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id C46438E0002; Tue, 13 Dec 2022 09:47:51 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B34D68E0003; Tue, 13 Dec 2022 09:47:51 -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 9D7C48E0002 for ; Tue, 13 Dec 2022 09:47:51 -0500 (EST) Received: from smtpin27.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 6DDA8A0A71 for ; Tue, 13 Dec 2022 14:47:51 +0000 (UTC) X-FDA: 80237562342.27.D90AC19 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf05.hostedemail.com (Postfix) with ESMTP id E51FE100012 for ; Tue, 13 Dec 2022 14:47:49 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=Kt4Whzya; spf=none (imf05.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1670942870; 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:dkim-signature; bh=vAgoNGGNFWw+Ql8a9hTqqWYJABEeT5+mK+PPBOcML5g=; b=VmNpo7CMKphtcewHH+3LJq4YqKYoCT4ofj22+6AKpVpJQh2BOENWBCOm+ViSSXtXS1q6YT c4uf2O69ymjArFQQl1zuSYFX2kWHa98LnoKoml+Fb34/VFaflLUldMoY5yQNFoB/lpLkEr YE5+fgDC80Fk+ev1iJR7NQQufkE+P8s= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=Kt4Whzya; spf=none (imf05.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1670942870; a=rsa-sha256; cv=none; b=jClIrewqbIcPGon79yg79jJuskUOAtw4eZ0YeLSU0stcVv3vawiblhjzCAlqKPHeiYzc8N d/2vRcRwc+S/E6IFijyTEK+zj6is2cwyj8eSRSwCON6R77Flc79dTrdiTIGLKSi2ttKxAr 6Yh8ab9YsnG14nSTTzMYuO6IXCNcOlM= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=In-Reply-To:Content-Transfer-Encoding: Content-Type:MIME-Version:References:Message-ID:Subject:Cc:To:From:Date: Sender:Reply-To:Content-ID:Content-Description; bh=vAgoNGGNFWw+Ql8a9hTqqWYJABEeT5+mK+PPBOcML5g=; b=Kt4Whzyah49ucXbgVrZGqQ1Ihe M+uGhzv8248mtUrrmhdcEYwxAmSOGlvLwFwue332mfvfafg7LXpMM2I0dCf+sN1R+ZUv1UgFSokhU x8bMk1B6AsiL0KYsaEJ5DwwlOW3ozuVIwuwUCR26f4QKZLXhLyAidkTXj9ZDuxQW1IQ+xMw0LXHO8 XsHBsAS0A/b2aPzlW/2sezuWXRouMmuTB//p5OAHlraHdIphAGKeRv64VFGQ+YX03EPot2uQkHysJ fgS4j/us5Kvl4+dR6qo77YPUmk3LiUStfhYcYYVXeO1Pj3NS60D2eD6Vu483aCwO29Pxb78yWMbT2 6z8gUIog==; Received: from willy by casper.infradead.org with local (Exim 4.94.2 #2 (Red Hat Linux)) id 1p56ZO-00CJUz-OK; Tue, 13 Dec 2022 14:47:46 +0000 Date: Tue, 13 Dec 2022 14:47:46 +0000 From: Matthew Wilcox To: Kefeng Wang Cc: David Hildenbrand , Andrew Morton , Oscar Salvador , SeongJae Park , linux-mm@kvack.org, linux-kernel@vger.kernel.org, damon@lists.linux.dev, vishal.moola@gmail.com Subject: Re: [PATCH -next 1/8] mm: memory_hotplug: add pfn_to_online_folio() Message-ID: References: <20221213092735.187924-1-wangkefeng.wang@huawei.com> <20221213092735.187924-2-wangkefeng.wang@huawei.com> <801ccbe2-08b8-e1cb-9aee-614d59a807d2@huawei.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <801ccbe2-08b8-e1cb-9aee-614d59a807d2@huawei.com> X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: E51FE100012 X-Stat-Signature: nd94zf58uz71xecthzuyf38suk7rfpt3 X-Rspam-User: X-HE-Tag: 1670942869-994312 X-HE-Meta: U2FsdGVkX196u1dzUJ88OZMu9H9ykjCoK3uqkUrPWTEoICug+2qilKyS2S2aBBOGKVpMj/iNEV6OaEwxdhwvUx+GUqZFPFUCWjbI9e4OkPl+LMCuJgjGhJG3qm++Ef/rZN8NbZdgOhTVFcWZ2wWYnvhPeVWdDw+ou7VXAilBvZvi0t0ro4EtfemkdCxatZzqf6OwI9UpO96yri89/smYv86CIhEya/urqLlCzd3Osml0OmBBu/E3IN81nbiSEo68aTKsXGHSR/CTXImFLormrsaNh1Q2TU4tKIpDQXk9kthI5mu85PGeViAmyHEzTkmxdPVAlPzVtm3J9jE4CIPJZdG+Tx6eaxtmSVGjOmXbunTjbBo3377fjUYuWD1Y93oQJAeCCCm95fUyJmAAl7Qg3WGgjwow8tFaY5NRrBYXOxImASoW2gA72K+mIhueftIdUui74WAKtr32f7Ac2NjNzR6jlTP66rMQY5wpUjXMUDLBHr10+TBR+Y+qu7o9ZUa6duSeImdDKNdFKl3/KvX24NQCDrCrHYFan1AwQmQubNGGG3P2/6UT0Qwhsk/sd4iQNbAeqBLhID11qN85cn2zL5xvrtKNEkhI+vruymBhWKNF7z8/ro1srSYZBRwjeme1ANUySRq4F8l8sOV94qO9LlGpzSewkw0h4GtowjGb6hmW1az2fKdWqcFmNttebVhFU/lc2elD6KFTHBG1X7ICNaZKnRdfPNgsArixBFFH4nIo47y/XqPBpk1VOto+TUAUGxBkLdKQOMLbTC/zo69YkTlUWIVbEuqaUk+ZrSZRmgGiRK7sDvJkcEz+jGC+QOISiYUdFhuMMbJZ2Zif3vdmboqEeH0gf5yj7rI1OyFXDo8mldLjLRLQTashgyqcWxvhuD3oPtgmSc10RQhENk0vHHdOW+lytUwR1fpFXkfoMw0fOh7EXjaUhv4BzP9prFVQxsE0CP8voZ7I4MxH/uO W58wZC5G YGBft 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 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.