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 EB825C3DA64 for ; Sun, 28 Jul 2024 06:01:41 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 701796B0082; Sun, 28 Jul 2024 02:01:41 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 6B1A46B0083; Sun, 28 Jul 2024 02:01:41 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 579B46B0085; Sun, 28 Jul 2024 02:01:41 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 390CA6B0082 for ; Sun, 28 Jul 2024 02:01:41 -0400 (EDT) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id A79B912028C for ; Sun, 28 Jul 2024 06:01:40 +0000 (UTC) X-FDA: 82388114760.13.737C6FB Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf02.hostedemail.com (Postfix) with ESMTP id E93D280018 for ; Sun, 28 Jul 2024 06:01:37 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b="bwiY471/"; spf=pass (imf02.hostedemail.com: domain of rppt@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=rppt@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1722146472; 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=nGUlc7tZ4KsMj3zkAbyS7cYQWGoJy5dya5nxVtSF6ms=; b=dEmgkW3K7QWvvg2hebzdSq8qlsdQZPUXajXogUzSU7bbpZf1WkC4xNL0BsGbuE6wiDdzTb oHT2I63hyClGOQyldsHDEi53ee37U4M7d85S8tMlNR+oQ1opOQr8Cd0Q65C2rRvdJLpW8X lYpCxDYwQiwoGfnP4zRa/eMLK0lpMyQ= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b="bwiY471/"; spf=pass (imf02.hostedemail.com: domain of rppt@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=rppt@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1722146472; a=rsa-sha256; cv=none; b=seaq0IV7flUcH9dafMucCDyqGYPj1yb/u7DIRVOgWl3QXpilLTuZcCoSRCCjP0qObNM8/s 4ANLCawbesiFagamjNuSZlEXU7yn0QaEb7d2uKiN4asRfuThJbgw6qa9TlXIAQHghzmjXa VdYupIGC8aDa/C2Qr+SJju+BrF3Xto0= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 093A761199; Sun, 28 Jul 2024 06:01:37 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0A43AC116B1; Sun, 28 Jul 2024 06:01:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1722146496; bh=Qr0/4fJC09fc/3M7zF98OVROwV+p9gSsen3L1tk3heE=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=bwiY471/jUar8c/L1hnnSbZcg5yQlibQDk1nsbpEWnuRGQdw5aBNBRPmsbzSbL2Ua yMRLPDKGYVEEf095SejfKeL8heeSAXAOsQ3+bstEKk4BHVBFeMl1MKJgHMaUBKDCvz 9R7j4ZtJgaY0JvEcGLVg0QoYiqtVxvQmijtnRDwSGwbDniNkD7Q2dy6wjOi0c6LJFx s8cvQ/5gnd9QD0VgSYXXFfjOChyW0+19KP8qmrSDUZsgpCYp26GQu3AOXv/Wi7Golg I+Cwl9njU3OODnGqdN2p5oHuXRfOpmG5vMg/KkvdpQyI8QszEgAIUSMuXhnStt91eB R6ppDvXda0iGg== Date: Sun, 28 Jul 2024 09:01:18 +0300 From: Mike Rapoport To: Wei Yang Cc: akpm@linux-foundation.org, linux-mm@kvack.org, David Hildenbrand Subject: Re: [PATCH v2] mm: increase totalram_pages on freeing to buddy system Message-ID: References: <20240726003612.5578-1-richard.weiyang@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20240726003612.5578-1-richard.weiyang@gmail.com> X-Rspamd-Server: rspam03 X-Rspam-User: X-Rspamd-Queue-Id: E93D280018 X-Stat-Signature: 94xrig53677j6hhzs97x8miz7xjh881b X-HE-Tag: 1722146497-575938 X-HE-Meta: U2FsdGVkX1+V7Z7ZpkDV7+ZCpVb4hMO/5+b8Mbk2YG+fscT6UfpGOPV0hHfKILAfjrr12DBeXjvK0sc+ImgY5YKj1gpROqj7np//uQV0BvHkMYspHiEp4ljuMYZHFO48VXv39I04mOq7mcIM2RAnQVHv2TCbhcXuxdomyRPXs8pXZEXT+mEZmSG1UW5MPhYFEsMzlnBa5LRKj6rKsbjzHyW79iajMDcVAIU9pMaZRuSg5eLwYehvlVHtR6a+A8WCFAjwHMntOAHaxbPUsnTbnUbrdjip6gdzd2U9Dhj4KLQrSbCYJjBGpkTxyugSoiOjNrH2jr1dqCIc+dIM7gtOLn7oXqzDnkZ2eb3aiRmLIog3YingVZm7wQQwLTKOSw+KbPtwforv2+sP/6oz6zUZu+Z7IjGnYDbYOFwhvtD+O9UrTE2hZ3YmP7ZwDoRIsdYzWTgIc6bXfJ4CQkqV5ANLDq+Auz/DAfdeUjkfskVUmi2LC0l7brQQ6KNbXS/4LA3o0BSA2aAQcqqYQswcVipnYoM/w8p2oiJo5OTRD4bVOfno9aoreimDAmBmdWQZx1Li8shZor0aOtuPyjbyQyZUaYO401d/J+AoNT8DkDzl5UKEK3XtRvRiFdRy1v7X0cUBQjMSED39nvd5D6yy4G2PY77WbKg6Y8MQnOs5z/AQNEZePl/E5v2wCdVO4XAb1hlH8i+J4V7PhqahKi8XkqsH6pNDchSG/OP3ZlIa36UG7kJOfEIv9xgOKwIwMyyjBtcy4rfuddbDDzJ42WavKYI7iJrSL6bPEvPMXWEvMpaQIGDFRoCX/2bXtK695XVz0/HvbZftZEONtjI0KNuG68WFrtuReWqDffwaLeHVr3dkOVRWnL6lUCp5weP/VSqBB2vAS0A29YvwvVa96maxcThBw7wtOafjAEA5RuNa+pX2ebWiZEjijk8Gp99DXtjOo+OVsVBpQ8WNMg5NBdhUYcJ nv//mrmK k2jbslveyBfsqhhSUQfqA+zQqk7+7Wd3927JwjBg8YEMK1h4K+906TNsxMeqVosCiL9nnNyMKSJrgNhfeO8PJBTt8QZfv9UZg8vVVol4lUF7wU5fA1EwqNzNo3CExOOgowc1alNE3hrDGb6H8OzvmnpmInOwDwv+Fl+ZiigYm3+UzBCMRDYkRNgyfWwG2q1pAdSN0ZkQr+y0kTGrioW7Eep1m3m9JI9Htx7/mH1rpXL40lim1Y4vZL+LQhnFxLMp5U+vjLa+O+9ax+E8RHtK+lw2i7I2LrRW9kwFb6pHbhQsh0pESFlewNZmQDOpMnm+mcHflAw+9c1VED/r7+8S1WBDaLSLFVKmpOHM/Xp1aC+Mm6pvsEtFbeZp9OQmd965ZwJsE4OX4b2f9w6VWwjpJILQGbu5QAF9pITiUAddqXlcJnpCZeU9oI6Syyke5pH65p2D5 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 Fri, Jul 26, 2024 at 12:36:12AM +0000, Wei Yang wrote: > Total memory represents pages managed by buddy system. After the > introduction of DEFERRED_STRUCT_PAGE_INIT, it may count the pages before > being managed. > > free_low_memory_core_early() returns number of pages for all free pages, > even at this moment only early initialized pages are freed to buddy > system. This means the total memory at this moment is not correct. > > Let's increase it when pages are freed to buddy system. > > Signed-off-by: Wei Yang > CC: David Hildenbrand Acked-by: Mike Rapoport (Microsoft) > --- > v2: > * rebase on current master > * those places would be affected are merged > --- > mm/memblock.c | 22 ++++++---------------- > mm/page_alloc.c | 4 +--- > 2 files changed, 7 insertions(+), 19 deletions(-) > > diff --git a/mm/memblock.c b/mm/memblock.c > index 213057603b65..592a22b64682 100644 > --- a/mm/memblock.c > +++ b/mm/memblock.c > @@ -1711,10 +1711,8 @@ void __init memblock_free_late(phys_addr_t base, phys_addr_t size) > cursor = PFN_UP(base); > end = PFN_DOWN(base + size); > > - for (; cursor < end; cursor++) { > + for (; cursor < end; cursor++) > memblock_free_pages(pfn_to_page(cursor), cursor, 0); > - totalram_pages_inc(); > - } > } > > /* > @@ -2140,7 +2138,7 @@ static void __init __free_pages_memory(unsigned long start, unsigned long end) > } > } > > -static unsigned long __init __free_memory_core(phys_addr_t start, > +static void __init __free_memory_core(phys_addr_t start, > phys_addr_t end) > { > unsigned long start_pfn = PFN_UP(start); > @@ -2148,11 +2146,9 @@ static unsigned long __init __free_memory_core(phys_addr_t start, > PFN_DOWN(end), max_low_pfn); > > if (start_pfn >= end_pfn) > - return 0; > + return; > > __free_pages_memory(start_pfn, end_pfn); > - > - return end_pfn - start_pfn; > } > > static void __init memmap_init_reserved_pages(void) > @@ -2194,9 +2190,8 @@ static void __init memmap_init_reserved_pages(void) > } > } > > -static unsigned long __init free_low_memory_core_early(void) > +static void __init free_low_memory_core_early(void) > { > - unsigned long count = 0; > phys_addr_t start, end; > u64 i; > > @@ -2211,9 +2206,7 @@ static unsigned long __init free_low_memory_core_early(void) > */ > for_each_free_mem_range(i, NUMA_NO_NODE, MEMBLOCK_NONE, &start, &end, > NULL) > - count += __free_memory_core(start, end); > - > - return count; > + __free_memory_core(start, end); > } > > static int reset_managed_pages_done __initdata; > @@ -2244,13 +2237,10 @@ void __init reset_all_zones_managed_pages(void) > */ > void __init memblock_free_all(void) > { > - unsigned long pages; > - > free_unused_memmap(); > reset_all_zones_managed_pages(); > > - pages = free_low_memory_core_early(); > - totalram_pages_add(pages); > + free_low_memory_core_early(); > } > > /* Keep a table to reserve named memory */ > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > index 71d2716a554f..4701bc442df6 100644 > --- a/mm/page_alloc.c > +++ b/mm/page_alloc.c > @@ -1248,16 +1248,14 @@ void __meminit __free_pages_core(struct page *page, unsigned int order, > * map it first. > */ > debug_pagealloc_map_pages(page, nr_pages); > - adjust_managed_page_count(page, nr_pages); > } else { > for (loop = 0; loop < nr_pages; loop++, p++) { > __ClearPageReserved(p); > set_page_count(p, 0); > } > > - /* memblock adjusts totalram_pages() manually. */ > - atomic_long_add(nr_pages, &page_zone(page)->managed_pages); > } > + adjust_managed_page_count(page, nr_pages); > > if (page_contains_unaccepted(page, order)) { > if (order == MAX_PAGE_ORDER && __free_unaccepted(page)) > -- > 2.34.1 > -- Sincerely yours, Mike.