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 888F4C3DA7A for ; Tue, 3 Jan 2023 01:58:46 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 98E3A8E0002; Mon, 2 Jan 2023 20:58:45 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 93E4F8E0001; Mon, 2 Jan 2023 20:58:45 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8064E8E0002; Mon, 2 Jan 2023 20:58:45 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 6CAB78E0001 for ; Mon, 2 Jan 2023 20:58:45 -0500 (EST) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 36D88C0201 for ; Tue, 3 Jan 2023 01:58:45 +0000 (UTC) X-FDA: 80311829010.22.AFF046B Received: from szxga02-in.huawei.com (szxga02-in.huawei.com [45.249.212.188]) by imf18.hostedemail.com (Postfix) with ESMTP id 269F61C0007 for ; Tue, 3 Jan 2023 01:58:41 +0000 (UTC) Authentication-Results: imf18.hostedemail.com; dkim=none; dmarc=pass (policy=quarantine) header.from=huawei.com; spf=pass (imf18.hostedemail.com: domain of wangkefeng.wang@huawei.com designates 45.249.212.188 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=1672711122; 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=mlY8BcRKB6Imye5nEqt+avZrD4uN3xeA9z+o1kQdk+w=; b=CkSszneIv+mS9jRT2jJR9PACb0kpEdluAbAvdxRKGVoFvFWWErNy7kH6kTiaPsf/Ij1BpZ u94dJe7s4bZjwtvM5+uwEAK8z6iUnmWXUW4hvZd35MP6BGDQk5pPBraWXACBn52upHKdhk 1cN/EKTbUUS94kCkvbu1oI9XPULEvMU= ARC-Authentication-Results: i=1; imf18.hostedemail.com; dkim=none; dmarc=pass (policy=quarantine) header.from=huawei.com; spf=pass (imf18.hostedemail.com: domain of wangkefeng.wang@huawei.com designates 45.249.212.188 as permitted sender) smtp.mailfrom=wangkefeng.wang@huawei.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1672711122; a=rsa-sha256; cv=none; b=HMBvYy+lU1zXoVo1WAhKZPOT2xFXt9pPdrbzQ4ZLLGUBCDAMuGzgFXtV8RQeuRwXdggWl/ DU1U/6vsP1D9BkWKo544RSUthW70bWTsxeic6A5HJIfILYKrUsmuUjSwbgdk/Y0XPxk24T shTmnnNgUTFgHo6qCgezeSZ+5PZNsME= Received: from dggpemm500001.china.huawei.com (unknown [172.30.72.57]) by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4NmG863QvMzJqnq; Tue, 3 Jan 2023 09:57:26 +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, 3 Jan 2023 09:58:37 +0800 Message-ID: Date: Tue, 3 Jan 2023 09:58:36 +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 v2] mm: huge_memory: convert split_huge_pages_all() to use a folio Content-Language: en-US To: Andrew Morton CC: , , References: <20221230093020.9664-1-wangkefeng.wang@huawei.com> <20221230134535.240f49e0ad8bf6d82f8cc393@linux-foundation.org> From: Kefeng Wang In-Reply-To: <20221230134535.240f49e0ad8bf6d82f8cc393@linux-foundation.org> Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [10.174.177.243] X-ClientProxiedBy: dggems706-chm.china.huawei.com (10.3.19.183) To dggpemm500001.china.huawei.com (7.185.36.107) X-CFilter-Loop: Reflected X-Rspamd-Queue-Id: 269F61C0007 X-Stat-Signature: y3a7nnsypq1aknfjup8cojn1aaf6p8ef X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1672711121-991242 X-HE-Meta: U2FsdGVkX1++SYqqNi+2z8tg+hU70wrj7GCAPeVrmu1SDtiAsdYGynR1QyWf0utlsUNXAct1Ibvra7iBfjZzlPffRFLEpTbRTCAKniF6RbmMgpGY1Q1DrIyRCo2n98UYn/i8BppiLvyknDTz1zFhpgeXw+T6PhroVZ4x5QfRyTF+/h0XwNn31Dw79zLkvJJ/R4Zib2Jn3SnkWaLKW9J5LCmeW8Z28GDhR9a2QoLr8991DGwbkaZnpY4YrZZm5HvKwig/1NRaVPzufVU9XN1QT+GQhvO9Wxth3p4g5jymr1Q6v3jxLgPFVD+FJ8XzZShvR6Z/FWbfYX2FSNN25wR2XpIrxzvLfp7aqRiia5FjKqfqZFSwXh/apAw8a3V9+VZtBqgJxFIow/W9MtWfgeTQwmbjXmvMZbAX7nHAGnz1n8HXuM49Swzg/EvOmN5h+MKdDXBdDpb1jIgiLx1fGBF41uO8unycjpNwfBsgdefYFWImHuIaEEmh5OfxXJMa0VbSls9LeziI1wT3uj7kpCTRowma8AqHOdHdcfWcu8CY8L7SocPTQ6u7Y6t+tm2kl3sVCxOPsChLg0Co8XgN34MOrmvlsKgDaFE/OxepD/TG6GkCBTWartax/aNHS0UoapHzACY1I1aCf28uzRo8vOR0IDLaVZAX8hT0HRyUYT8DYqFRlIQCXCYlD/Hbii8sF4CptOr/ynCsGplPyY00sCdNqtkelcJvPXhNSmmgpC0ROFsJcqCafGwDRa2USo6QQnBxKepCBNS7MYebKER7btB0y1Q21ry+UsnBqgRfxzt/CKsJaKeL+w9yNh7XJEDNtvyXQMYrRuQLFPdleVAw2VflYV1RGjonUq9XMlMgEUSrDyAijgxtQENduQ== 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/31 5:45, Andrew Morton wrote: > On Fri, 30 Dec 2022 17:30:20 +0800 Kefeng Wang wrote: > >> Straightforwardly convert split_huge_pages_all() to use a folio. >> >> ... >> >> --- a/mm/huge_memory.c >> +++ b/mm/huge_memory.c >> @@ -2932,6 +2932,7 @@ static void split_huge_pages_all(void) >> { >> struct zone *zone; >> struct page *page; >> + struct folio *folio; >> unsigned long pfn, max_zone_pfn; >> unsigned long total = 0, split = 0; >> >> @@ -2944,24 +2945,32 @@ static void split_huge_pages_all(void) >> int nr_pages; >> >> page = pfn_to_online_page(pfn); >> - if (!page || !get_page_unless_zero(page)) >> + if (!page || PageTail(page)) >> + continue; >> + folio = page_folio(page); >> + if (!folio_try_get(folio)) >> continue; >> >> - if (zone != page_zone(page)) >> + if (unlikely(page_folio(page) != folio)) >> + goto next; >> + >> + if (zone != folio_zone(folio)) >> goto next; > > I'm still not understanding the above hunk. Why is the > "page_folio(page) != folio" check added? Should it be commented? There is a comment in try_get_folio(), is it enough?