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 72209C27C79 for ; Tue, 11 Jun 2024 14:57:09 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id DCA956B00AA; Tue, 11 Jun 2024 10:57:08 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D53326B00AB; Tue, 11 Jun 2024 10:57:08 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BCCD16B00AC; Tue, 11 Jun 2024 10:57:08 -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 993EF6B00AA for ; Tue, 11 Jun 2024 10:57:08 -0400 (EDT) Received: from smtpin05.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 41B134157C for ; Tue, 11 Jun 2024 14:57:08 +0000 (UTC) X-FDA: 82218910536.05.D1B040A Received: from mail-ed1-f50.google.com (mail-ed1-f50.google.com [209.85.208.50]) by imf19.hostedemail.com (Postfix) with ESMTP id 4BCB51A001A for ; Tue, 11 Jun 2024 14:57:06 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=gNXLvQ5P; spf=pass (imf19.hostedemail.com: domain of richard.weiyang@gmail.com designates 209.85.208.50 as permitted sender) smtp.mailfrom=richard.weiyang@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1718117826; h=from:from:sender:reply-to: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=ROGkGCMTEc85yjYFS49yo7Ed2bpqyjWlLW4d1kqrlqg=; b=YDVG9wx38Q9jjYNB0KEOmsGPGbMNz3a9T4O/UD+2musYywW7Q0lnaj4HRvtYyHsplKIT70 JjzXF0v8P4wdPg/amgql0NzIefMjwmKBjDAfLVNs/+a1W25bmDDiksquUDOHhRgwxcXvgQ NKMdJ8oXSv9qGz5UTNN3RwDzoJvP9Es= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=gNXLvQ5P; spf=pass (imf19.hostedemail.com: domain of richard.weiyang@gmail.com designates 209.85.208.50 as permitted sender) smtp.mailfrom=richard.weiyang@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1718117826; a=rsa-sha256; cv=none; b=1HQV45cTU2BW3iATL0LS/ZA/cCUuXxn98W7Q2zew7wLyfUD4WNgN3vvxY1UPsMKd3uGSKr ovMK1rkLsby2S53g3rNLtvfl5mMXE6A0rV0ZFpSiD/zTnVH9eNyllq+/JOeTHBbX+tJPC/ mH++veirMH7BrtRhg/f8dYP9xhMJi5c= Received: by mail-ed1-f50.google.com with SMTP id 4fb4d7f45d1cf-57c681dd692so4500354a12.3 for ; Tue, 11 Jun 2024 07:57:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1718117825; x=1718722625; darn=kvack.org; h=user-agent:in-reply-to:content-disposition:mime-version:references :reply-to:message-id:subject:cc:to:from:date:from:to:cc:subject:date :message-id:reply-to; bh=ROGkGCMTEc85yjYFS49yo7Ed2bpqyjWlLW4d1kqrlqg=; b=gNXLvQ5PS32AuOedEacXaF4GfEJakm8/mZJIeRNpZ9kenrRKZLP/4ZVVdPiHEVztxQ Hh6rACz01WFkVeszSOsiMTUkUgvRQ4MzhSvTEZgRiYbBrtHmKLk6xI10VfRBSqWfxzBG /OTki5hZbOHbj/XImgzT0kVADPdqRm2RlSHF/Nu2oj5dZQxaJgAsbEv1gd7eGCYtLeWX DzKFMK8EcT7KraE9st3Aa+3AvlhHMlpCB7XDWFyinOPeZ2/hhhev/sMxVvgz2NDSnTfx R8VdAsX9XwPrqLJk4eAEIVcTlMoBF82Um/GtnRZadUx5Ups/lFtU8JDXlzyOf2Bk9Lcz snYQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718117825; x=1718722625; h=user-agent:in-reply-to:content-disposition:mime-version:references :reply-to:message-id:subject:cc:to:from:date:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=ROGkGCMTEc85yjYFS49yo7Ed2bpqyjWlLW4d1kqrlqg=; b=p1SkrVrJ3KHFocrb8uGsMSUgkPgrrGYEQSeFSdqkPfPwQk0DvoPWIXb7NWmxPLa0Zl fShc0l6RuLNmBdTtPbgeFkrmGTBqRq0DXC3I/rpeVObVcC9/rdVhsIBAcNiVtyPM46+s LqnYsFvEwDpKQ0I9KBvV2bha0TnSMeZGnO19VtWfGHdyujdP4ME5tl6atiEpSchVQvIP ZzELJ1+nw+nUJDffKXMgmoSTmOYQckHG1NQV0CMmnMui49gL79P/7InSDKnxZjkpYR6t gykjEabpUKyjY2QoSASsCW+PvHPlfOg2qWhs377KZny6FCdh4YqyNHUu9tPPUcd1fx6q YEsg== X-Forwarded-Encrypted: i=1; AJvYcCVUIambDFaVBnoO4xy7idcSIoZWS72TPE56aGLUF0fDnproImPton7uWdkdhVSjR9kUsl+Y8qY1s8b3AIW2ymuEhxk= X-Gm-Message-State: AOJu0YzOPZqS69rPIFk0EqyZsZMk8tT0lpQuUeNQCh7oqw2Y5YPYhnaZ dT3EhiudWrg7dWvzA/iQOFn4aIFDf6IHPmjdI/9JjAnFGVvB4SBS X-Google-Smtp-Source: AGHT+IGvoaYbcdp8yRiP477ZEbFm1ODfQz+/IWGS/GZQpPlQFrTclUj8hTUPrHkI7q+OH0WI9NT2SQ== X-Received: by 2002:a50:d648:0:b0:57c:8bdc:fddf with SMTP id 4fb4d7f45d1cf-57c8bdcfe13mr3396743a12.20.1718117824385; Tue, 11 Jun 2024 07:57:04 -0700 (PDT) Received: from localhost ([185.92.221.13]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-57aae2341f8sm9399149a12.86.2024.06.11.07.57.03 (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Tue, 11 Jun 2024 07:57:03 -0700 (PDT) Date: Tue, 11 Jun 2024 14:57:03 +0000 From: Wei Yang To: Mike Rapoport Cc: Wei Yang , 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: <20240611145703.4abtqktxxmfhfkma@master> Reply-To: Wei Yang References: <20240605010742.11667-1-richard.weiyang@gmail.com> <20240610145457.zvgw773n53twa7my@master> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: NeoMutt/20170113 (1.7.2) X-Rspamd-Queue-Id: 4BCB51A001A X-Rspam-User: X-Rspamd-Server: rspam09 X-Stat-Signature: 6yi5i16jognpogi3unarucoh8cm97u67 X-HE-Tag: 1718117826-822734 X-HE-Meta: U2FsdGVkX19HQNH0LbhN9sCgRYuzDbu9sAwwk+5r6TCQBGUdNwOShfC6dHo3bgC/pkflY/9BaNbqOGdR7W/Ya6tnZQ1jWCg23/lvOOKAdiF0Erwlp97LSYTsdYkjc7p5ojY4Ze+chKrDwruhl3ofF23pfjGFV7ZQ8fqbY7em/oERyrRS1qaTSVB6BNlhf8hfGGc1kdlrrR6GVvVXgDwtOof7+u9SiihNJ4OJ3fbw4t3ay3suaeF4eboRxBlh2TbDD81CvOw1VFHEEwoSVnWgUSK4xp/+f/5W4RwT0seFg2iuqY+HL1tvJfgpffDLyTC0dzhtlCQ0rtg4pFy124pJVcM8NJpmOvQFcJCDtVtiiQHtznObrXmGWa/ntQ4h/Ybb7kRXq2L8LmwX22YFdlhE/Jatot6zGXKLMdSZYdI/RTwRAbTduRKkNnovElkZicBaTtudQ0xlCY29AWJJ6DNEKVGoAYqHmEQ3JoWR9kRycG6lFFUp15eFdudEIuNpQMLbmthDUV5tSE1HazKRKY8Pu9OTD23wB90pHxMV61BvemGNgJNpjV8ZXRUTUqEoJ4rNTTDKltiRSxhhn3ttjpjCkKG5caYamrR///lm3EYXnXkOQJlgDw5sQXU63x5kUvr75xEsZ1Sy2K2g9oyT9NUkvyBdeqqkM3hcFUt3vJxzLXJxc5HeD82CkZgyu8yFJLM16hxv6UNJsGAp5cvi82WpiKDrT6l8RwofxMj68UE4/h+eTbfFV6Rav6jb2y6S7c1YHwWBt74OOPLwzGTmWHJng5xBDVT/OODknwWjOsgq1Wyufb1wiSAn/axUuvEaHZ3pqqiaR4k4hyBwCjoe2IjVZfjsZ5NJzMMMxaBBrnOlAp75GEPKLrWMq+xxtVoOXG89iA4Sw6+OMROZSDuV5Hw/BjRL8aXN+Ly3QXmLrWhleh7FQO2+of7IPQ69FA401ib7yeLz8qVBWmSQO5SJ3KE TYGl1788 7AYWOCUczrIx3o/i3kTbyu+Y6OacJNa2Z+kLMo5WJTRg9hYAH7Yh7zUZ+F07hZq4dlHIYS4lUz0U4c1piHT04IcSXTXlHbGzX52ZELwxaLfWJtqLm/qnFS51Mg1U6okSgpr8g3qzCvP1TdSYPm68bI9Djqssl/3CvoP6jTseJdRY/3hbGrx5WWdWdA5ggYjpt7o9fUvZBeKuR6GKXVeeIKS5bEDtYr4384EYv1ZsVG8jpg5/CV4NSLfeAb5E/Ab74Ha4yO1yaG8URrT+8aWVQALa3/I1ruzz3H/A2uObaBwYtHgoQPktMsRz576zr8y0pQgHtQjrgX6/lc5xezOupt0XqxJHVk1r3t2JT/E2mXCuplOI7TSsAFwXE4vCN4mi8vIoC3qmdYzpyQ884eKR+pTp4f2KRjoXAk0lL3TK+ng9Y67Cr5cxUWHbAHlSzDKigOo3HHKk5Ymco+XGTREyPQBfFk+8X0+iUqgoew5YB3BfeWcOJKYbGsvveXp3EtkzVma4c9QG5vpmZQLIWTL7zxT1+d0ODhPENdCYQZ8dqqHYJxSe2pGNCGy8pi+lidgTWp80kFpeUn7yGQhSkLjlHIpueAbO0S7ZR5CVB6a/Mgm7HD7K3zWZDtwZOJ51L9pIgFWiaH9NxovtJgPeEzhUQkf/k8ZtMagJW88aMo0EPIaIHKxUlnOQIbNWsB94iHuStp8gfAF+5Fti06n7VhuHZ95dKKtDptJS3+41Xf/XSUkoSKgKKbxHUAcPxmmrFGgU5VsQtPl7rtC4ebgx+jCXOkqxqsA== 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 Tue, Jun 11, 2024 at 12:58:30PM +0300, Mike Rapoport wrote: >On Mon, Jun 10, 2024 at 02:54:57PM +0000, Wei Yang wrote: >> On Mon, Jun 10, 2024 at 09:40:33AM +0300, Mike Rapoport wrote: >> >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. >> > >> >> Yes, I mean only the first pfn is possible to be IS_MAX_ORDER_ALIGNED(), not >> must be IS_MAX_ORDER_ALIGNED(). >> >> The range passed to deferred_[init|free]_pages must be within one >> MAX_ORDER_NR_PAGES. If the first pfn is not IS_MAX_ORDER_ALIGNED(), others >> could not be IS_MAX_ORDER_ALIGNED(). >> >> Currently these two functions would iterate all pfn, and check >> IS_MAX_ORDER_ALIGNED() to break init|free on each MAX_ORDER_NR_PAGES. But this >> is only possible and necessary on the first pfn. > >Thinking more about it, it looks to me that deferred_pfn_valid() cannot >ever return false. > >The ranges that are passed to deferred_{free,init}_pages are always from >memblock.memory and we allocate the memory map to cover memblock.memory >with at least MAX_ORDER_NR_PAGES alignment. > I need another look into this, forget where it ensure this requirement. >So I don't see how pfn_valid() in deferred_pfn_valid() may ever return >false. > The code is originally intended to work for pageblock, so maybe we can remove this and simplify it more. >> >> 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. >> >> -- >> Wei Yang >> Help you, Help me > >-- >Sincerely yours, >Mike. -- Wei Yang Help you, Help me