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 2E9AAC27C5E for ; Mon, 10 Jun 2024 06:42:47 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 442996B0088; Mon, 10 Jun 2024 02:42:46 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 3F1C26B0089; Mon, 10 Jun 2024 02:42:46 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2B9AA6B008C; Mon, 10 Jun 2024 02:42:46 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 0EC9F6B0088 for ; Mon, 10 Jun 2024 02:42:46 -0400 (EDT) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 98D061C16D5 for ; Mon, 10 Jun 2024 06:42:45 +0000 (UTC) X-FDA: 82214035890.19.9EA535A Received: from sin.source.kernel.org (sin.source.kernel.org [145.40.73.55]) by imf03.hostedemail.com (Postfix) with ESMTP id 57B8320004 for ; Mon, 10 Jun 2024 06:42:41 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=NZYX+4Er; dmarc=pass (policy=none) header.from=kernel.org; spf=pass (imf03.hostedemail.com: domain of rppt@kernel.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=rppt@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1718001763; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=FZXXpHqqTvUtQth+yV0q2tBgrk9dO3vwt/D4qhnAW54=; b=XrJC5CZ4bnRrQWipB1fWNH9HwiNDJhH0Cb2l353sGCR1eLbhFY0ZZZ704zvOoAActxGcU8 f+Ay6ppqEHFjxkJ1iAg1+4MBA/X2KCCuyuISU0PoN7V8rbakndT4RnWctO/YiZns+xWV/h oFjDvH3CQXHeeaqMT/IZsKjCn4wib8M= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=NZYX+4Er; dmarc=pass (policy=none) header.from=kernel.org; spf=pass (imf03.hostedemail.com: domain of rppt@kernel.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=rppt@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1718001763; a=rsa-sha256; cv=none; b=VT16qQABAkDzr+6q7RZBRWNfUwzPSWk0BSNUGpB6tCSLOQMFRgcqXZ/Hiz3yseYHaqy1Uh FWAaKFLPA1Z8leZcOhinLX0gXfHw3/DiKxaUEIq+frz75NvtO96dXa/LT6ktpyOmqOtk93 kejlzdvs/VRWcLI9Dq8mFoc8KdXECtY= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id 78588CE0ED4; Mon, 10 Jun 2024 06:42:38 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id EC5E4C2BBFC; Mon, 10 Jun 2024 06:42:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1718001757; bh=KBtQiD8AYaNSYn1GYuxF7Y9h0MnKvSzEydobptQacDU=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=NZYX+4Er59m3Y763XnXmvvsNAo70bHBjcFeRap/fS4V7fSPzNWU5B+vSvcDiXaoKV VDYcTHfv2RCG9giW9Gewk8ASbq57nMLa0MTm9M5rJDPm/6S6VKiiLDf2fdpVeqkuVe HC5MZRI771OS4yx3ymCof8agBazmg8gBxX3gnKA4vt7/Mwg0fU/2inbFKPXM9GiNVd rbNnyHcMXXNatrcXF3t2GFWlCuyiQufd1/BiQHW8Rg6Yg9Y9uQzCM0+vRg8Jsfp0aX d0boto28doJA0mat59cu6tAJOjuD0awUW7dCCyT2Z9LGALO1tDwarFQMcsyDeNUgyw nicd6XGJu8gDQ== Date: Mon, 10 Jun 2024 09:40:33 +0300 From: Mike Rapoport To: Wei Yang Cc: akpm@linux-foundation.org, linux-mm@kvack.org, "Kirill A . Shutemov" , David Hildenbrand Subject: Re: [PATCH] [RFC] mm/mm_init.c: simplify logic of deferred_[init|free]_pages Message-ID: References: <20240605010742.11667-1-richard.weiyang@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20240605010742.11667-1-richard.weiyang@gmail.com> X-Rspamd-Queue-Id: 57B8320004 X-Stat-Signature: k9784cbzs7g4tgupxp6amfr5q6dytbn7 X-Rspam-User: X-Rspamd-Server: rspam04 X-HE-Tag: 1718001761-492789 X-HE-Meta: U2FsdGVkX193VJSgqVoj8N3rvMLhwzh2j2fnh+hN7b2QAwJ1fOpOvxDLQjgMCSIuu6mBab/jXnBt+IOcg2lvIYF2wcsR8bcfmXP5bWmAWe5pSkzHb7vnljfscDZXvpTBVhSqeiPk65urWSXKCVacqlNSGw4XJ7ju6lVzYpy2gMR1UofMOGIf8VRVztONBofAMaoQRxEtqcy24Jy5mwaK6BVsE6EKR6SETq+Z6trK+HU2i7T6R1RCSOeLBv3CVjWrKDDoAU4Fdpew5MIbCWqbJL02JN67W3gSclL5x4bmeXddprdgeAvhuhdxOE8ZvEfWJ14APilBPdmR+rV4RAgAK1BooNol36qR56hgH274lFdjljGBiUES2aYlMM2bD9uWHfozGkAfO/0/8EA2svhiFGCyjxNYlgZw3618tlCfPW1NsoxE742VMoTmHEk031FXo+0lohsVhD0CHWoGa61VksU6NrJ5byISPb1dHFDn3ugm8VQ/OaDppZb68NcuAJOMaGkvEDURkLVGT+MQrnmnRC0VWnrWM8+6CA28L+QSphn7ywgerO59oXpM6YlC3RAJXAUvMUF+HXyZUnUImwabndP6Edj1C8fg/cxHaz71t4epT+zFPPhOKq/iFrIec2+daUTsqTPFAVSiPfovz7ochrlrqwlvrfmWB2tPGdiq/mYAJGeXCWgyExfNqUrhIPRKmWfoTA+mUgbINsGIxsE8FUoBceRBmPzizrDs2QcJC/1eGibJ+C4/vDJtzTPY4Fcjgw/EuCzoIPjwxTLuOfOcsO7EsDZ/q8s/9KXnemBc1OU26qDsaRVtCMMeEdVYyxq1cU2uT5GT4Sv6zIWiiB+PCOTw64zToF8NPuS/wJ4emzDSd/odfKhfLKF+WYgl9ReaZ9C0pnpygrLEKlgj9/ioCtgFQCJpJLSYZ4nGiBSJBXILEUzBZArcMEAWK8XAvFQ1ZjL4Pe5/3+AgKLNMNcL gb0nhhyZ 8HMqU7qg5U2OheREjQBZoe9vrtfWvnM6clKDP3DEzUtzE2CW7+T1m/py+dEV8VBaEs1bLEwE21s5VCgSPVIKY2PC4efoJRXCmF4YpYTHX7JkIRi10xNDLI54+8sakIcWd/SwWOacyd+fb/LP0qeZ92wQCqgEgZva1A0ac0I+hm+v8PDqGwpqXWL+nrtUxg3ZW+Lugl5i6SlebpJgzuqCCNZuCleUP9B1aMXbJRHUNC5f7+9Ksyvi+psq6/ZcW4ewfQ5K7/UUNY0X+BsUgSupOi9D6Ghox9bAqIg8/QuoizroV1MDBqzkR2VeTFbQySqYF0Bm1ROCDEA4/xiOIsPm9/CZLZ6lX3wCq/djbnRzJ+CoxhOlKlp+M/o1OdiyQj3KqgUQl6YUtwAi0jmwVTntQMeABgWcpUSUGddcE7yTQ8M9mb7sZjJ87PnjKgw== 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: List-Subscribe: List-Unsubscribe: On Wed, Jun 05, 2024 at 01:07:42AM +0000, Wei Yang wrote: > Function deferred_[init|free]_pages are only used in > deferred_init_maxorder(), which makes sure the range to init/free is > within MAX_ORDER_NR_PAGES size. > > With this knowledge, we can simplify these two functions. Since > > * only the first pfn could be IS_MAX_ORDER_ALIGNED() No, the first pfn is not necessarily IS_MAX_ORDER_ALIGNED(). Start pfn is a beginning of a region in memblock.memory, and there's no guarantee on it's alignment. > Signed-off-by: Wei Yang > CC: Kirill A. Shutemov > CC: Mike Rapoport (IBM) > CC: David Hildenbrand > > --- > But my question is why we just test pfn_valid for the > IS_MAX_ORDER_ALIGNED pfn? I thought we should test pfn_valid for each > pfn until the first one in MAX_ORDER pages. Do I miss something? > --- > mm/mm_init.c | 43 ++++++++++++++----------------------------- > 1 file changed, 14 insertions(+), 29 deletions(-) > > diff --git a/mm/mm_init.c b/mm/mm_init.c > index bbaf3a2c1cfd..6a4adf9e7d9a 100644 > --- a/mm/mm_init.c > +++ b/mm/mm_init.c > @@ -1970,21 +1970,10 @@ static inline bool __init deferred_pfn_valid(unsigned long pfn) > static void __init deferred_free_pages(unsigned long pfn, > unsigned long end_pfn) > { > - unsigned long nr_free = 0; > - > - for (; pfn < end_pfn; pfn++) { > - if (!deferred_pfn_valid(pfn)) { > - deferred_free_range(pfn - nr_free, nr_free); > - nr_free = 0; > - } else if (IS_MAX_ORDER_ALIGNED(pfn)) { > - deferred_free_range(pfn - nr_free, nr_free); > - nr_free = 1; > - } else { > - nr_free++; > - } > - } > - /* Free the last block of pages to allocator */ > - deferred_free_range(pfn - nr_free, nr_free); > + if (!deferred_pfn_valid(pfn)) > + pfn++; > + > + deferred_free_range(pfn, end_pfn - pfn); > } > > /* > @@ -1992,27 +1981,23 @@ static void __init deferred_free_pages(unsigned long pfn, > * by performing it only once every MAX_ORDER_NR_PAGES. > * Return number of pages initialized. > */ > -static unsigned long __init deferred_init_pages(struct zone *zone, > - unsigned long pfn, > - unsigned long end_pfn) > +static unsigned long __init deferred_init_pages(struct zone *zone, > + unsigned long pfn, > + unsigned long end_pfn) > { > int nid = zone_to_nid(zone); > unsigned long nr_pages = 0; > int zid = zone_idx(zone); > struct page *page = NULL; > > - for (; pfn < end_pfn; pfn++) { > - if (!deferred_pfn_valid(pfn)) { > - page = NULL; > - continue; > - } else if (!page || IS_MAX_ORDER_ALIGNED(pfn)) { > - page = pfn_to_page(pfn); > - } else { > - page++; > - } > + if (!deferred_pfn_valid(pfn)) > + pfn++; > + > + page = pfn_to_page(pfn); > + nr_pages = end_pfn - pfn; > + > + for (; pfn < end_pfn; pfn++, page++) > __init_single_page(page, pfn, zid, nid); > - nr_pages++; > - } > return nr_pages; > } > > -- > 2.34.1 > -- Sincerely yours, Mike.