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 7D2DFC3DA7F for ; Mon, 5 Aug 2024 15:47:42 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0D8D06B00BC; Mon, 5 Aug 2024 11:47:42 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 089C06B00BD; Mon, 5 Aug 2024 11:47:42 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id EBA3A6B00BE; Mon, 5 Aug 2024 11:47:41 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id C96F76B00BC for ; Mon, 5 Aug 2024 11:47:41 -0400 (EDT) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 6D9CFA7FB9 for ; Mon, 5 Aug 2024 15:47:41 +0000 (UTC) X-FDA: 82418621922.22.56AC09F Received: from mail-ed1-f47.google.com (mail-ed1-f47.google.com [209.85.208.47]) by imf23.hostedemail.com (Postfix) with ESMTP id 7236E140017 for ; Mon, 5 Aug 2024 15:47:39 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=QSUxfsuo; spf=pass (imf23.hostedemail.com: domain of richard.weiyang@gmail.com designates 209.85.208.47 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=1722872828; a=rsa-sha256; cv=none; b=czhMqIJzfqQr/K/ZwJuQCLRk7UU1yqJuDRdgssgrvmsXaAsF2HFLF39Xsj1yL4BZ+S1xtG Lh/DR255EwYKsXidMXBO0yGbalK6NeiN89c3VBCJtDhOsQFefmEt0LsUatO3dgjBS/3vNh AlvAe8H+0NYw+LsNQvwMRrdonKw5xIw= ARC-Authentication-Results: i=1; imf23.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=QSUxfsuo; spf=pass (imf23.hostedemail.com: domain of richard.weiyang@gmail.com designates 209.85.208.47 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=1722872828; 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=CUB0INYLywwFjk5iqn9+aziik2EJKUhYXmGZZYORj7g=; b=b8JcrE95awCMyN3tyDjuS2PGNhPrkvbU8t/fN8u71NXVp6h+GYQwME6jiIW9gGfGTimI3k ZMaAT9Qpqmby4wRoKoRbQw3ktDhikVQFe3j+sdonKRU5NTlxQGQ+yx0ka0GqdBoL3KEckU ONI+ZAtuIX5CwBXH4zwAhZe7h7uRVCI= Received: by mail-ed1-f47.google.com with SMTP id 4fb4d7f45d1cf-5ba482282d3so2631322a12.2 for ; Mon, 05 Aug 2024 08:47:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1722872858; x=1723477658; 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=CUB0INYLywwFjk5iqn9+aziik2EJKUhYXmGZZYORj7g=; b=QSUxfsuozEZyrYKCYNjYZATGgo3wZ1LruXN2vdOW0Gab3EkiaT6WbFdSWysQKv/lAw U7Z9xfCR+z5E2fHpFBrbeKVGKXTWq9lJzMX6P+jTbwV2mPeT0mpNyakhX9yVR4J7ykRR JMZBqnQDGSVaIgJ6pkkFq4VooGOotQjnKA93eXzYwojWcEAMGSieAdDiWgw6U5Kvve+m h/kU2uNYirIAtQln+XCPCuWUeNUrfjG7TnDNhkfiqLSb0Z7o7+pT4OM+hxRD/NkU5xAe 2R9oD9Ue67jsnMaak+rM+uT1epgbUdpKOueA997uFbJJg/REa3JcogB939qigUYHS6j1 HYrg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722872858; x=1723477658; 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=CUB0INYLywwFjk5iqn9+aziik2EJKUhYXmGZZYORj7g=; b=MBmSmlRGAiKx/BA8SmyePsNQ/fmz8/tUAKC8eh0AtMyQh+soQxDF9QLivOyyN3Qw5B yoGD/6xvl4RsXLEcfmXiN+Y7THXFpKYDrbXC7qratS33z+7UQGb79869tCJyC6pCEDWw NVTadW1KhbvMaF6yZmS8AmLdEY/jTxPiVKlPgsJyeHU4iic7hXtWOBXs0SkpYt/WkAu+ 97bACkzpf7yEme5ZgDa5pBh69RO4ZZsBK+g4JuQ65D4omSDtRWrvTxuQhI1UifbzJSaT gkFLuAmvIeDVrIGE/nbCV37O5Nl30BX/VBLcMG5OLjZBYUyioEgPDtIIbF4ksmRGgi1+ II5Q== X-Forwarded-Encrypted: i=1; AJvYcCX7vU/UYHa9mqJguGOAmiKCSjaETnOoJirkIv/nGIGiTEIzCm6bZ9mSyxvnrHmo5R3edNw0gTY+30fHUfmLXve1Eps= X-Gm-Message-State: AOJu0YyoqR5QVOi2np436O451vAUBjqD1/O/2XyuJUmFkb2b9UCsa1Ol MKd68k7+wLTWZg/2gEApWBufpvLwpZ5mWQkTCcQ89A17HfWrmymk01Towg== X-Google-Smtp-Source: AGHT+IH1qrd4JRGqN+VWaCpq9mGRdvfwFqc4qqnQxz2WZNtJn9d6Oo4jMlnK2oGihmnGvkIqYP77SA== X-Received: by 2002:a17:907:7f90:b0:a7a:bece:6223 with SMTP id a640c23a62f3a-a7dc4db8bfcmr922387466b.6.1722872857485; Mon, 05 Aug 2024 08:47:37 -0700 (PDT) Received: from localhost ([185.92.221.13]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a7dc9c0b62esm466372766b.62.2024.08.05.08.47.35 (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 05 Aug 2024 08:47:36 -0700 (PDT) Date: Mon, 5 Aug 2024 15:47:35 +0000 From: Wei Yang To: Nathan Chancellor Cc: Wei Yang , rppt@kernel.org, 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: <20240805154735.diudt4n24tz43m53@master> Reply-To: Wei Yang References: <20240726003612.5578-1-richard.weiyang@gmail.com> <20240803000748.GA1606016@thelio-3990X> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20240803000748.GA1606016@thelio-3990X> User-Agent: NeoMutt/20170113 (1.7.2) X-Stat-Signature: 8yr545jjxgam4hpe6g7fga7f3nf3jpmm X-Rspamd-Queue-Id: 7236E140017 X-Rspam-User: X-Rspamd-Server: rspam10 X-HE-Tag: 1722872859-174384 X-HE-Meta: U2FsdGVkX19JXLEVHFmG3zQj4Dt7x9+5t6jPQqt8px6Y3EIKRQUJKmeGEENpOkLZgL7+NKoebzVYojHlmuX0l8QcMOuKu/wDoZH+0WqANrK3X/QSx7FwHRq1PFX8dwSq/Ha6uZi685VJ5nOJwZsDWlYlkGJ9CNmYwsG7hOw5+xdrGxlOFl257K/bl1BmsqjyD+D2XdhLh5vmCaxv8hEnOCAb1plIHeySyrMABT2o4I3c3999gdZ4KfVOGsE610bSqCsSjVAQ2w3DJd9O6v+EBAG+O4r77TeMg62siawGela1ZVeSGJH8bB0qZVYAEJhQQMAu19UFoboAxH1eLdX/BUrEjfM5rH/cPpr+1g3SyTzrWhoRgcRQuh/XgA2XsbChp5FIxyPfkqW0EEuZj4pfjVoON4mvr0sEu2ceCdLQRlzyPOt/7DKCLC+sorzWgrtGScXdd0OoHZ+PlwQk3swkLxI6x8LDpZgzB4n3FIQmed8sVbfrJXUozNYNysIUIDlOZn5IIKT4e5pBsiZ9QpciJZ+qfzxBgE68SPaaMgkeC4qLGWIqPhYOBAlNhWlfevizBizGGS3KVvrYl4dGI3bIbV0Mf8doa/Xrd1/5qJu+vLip47Ee/jANZAIgZuS+cJBU6GemlGSv3KU6VHaoFGfKaowrblvdWza6usY6C3c53RZwnGYnD25tv/cd8OOv6uVE6TgpjlYH2DfVcRTMHdHsK7i65YCLS5wXLgFA5q2cN+mA+ZukrFExWxeCFKqqV12nBkOZXuVZqJzMQEohFCQ+QV4PBv3TMBTQoiGYbwmuhZ5zE81E+PfCZ5rGCwFvPZMjdnS7Y+xZtPC4aoxuys4SSRfub9DszO4LVoAEAZr3rLA+jhC6BKgUdUeWqZ+W9Y9XpMSprirx7k+o3kiUEoiJIUcX008gCQe1SdUZ2O0zaXlwIqqW/nMDi8QukYYNMIrkUxWBba/C32ZJr1Cbz0y rKi6csC3 xm04UiILVjSN97j8V4c4y6jetCmXjEzkedJzFNYHCqCfhheRiSNSAyNZ7Ze108wiMYpJ01gsy/VXxP4IRpZIX/kk3LCEf03aWHDglvSDq5Q8XObr9FL+2oWuzXnr10Ji3+4ZiTfDfU2msaDButqEkU8LznKA+jJtCjfnbY8FSoXdQbDzn1VbJHSj1FDihfjwLjBMLTfuyoxM/2clOZxRWvpA9MextDf8WJaQKPWZobO2SwNWY/AcMyQhkzpxlrd375BA1Kl0P7fOcWRWJ2GJrKKiWeYL9Mge8/cpl3YjKhjnWkxJ3cdIQRfDWtHMFjdBa9/C5/SMBSiWm3wxDUrjCBgZZpgx12NghA2ADsUKqlH4DViy7zh4NdEArLM+7znq7oVsG3kuiGXeiTfZkEFXDh7I/OhXrWhrlggfQrYvDFz4VDq6V9qwtIaOZzfQUB0N+fEq5/CrKue7/eyQCe2kBxL/5wehuO5mQwUyFVuD7DxIY5ObVaY7Wu3AE2fSklOOib4JEvMr+SWxBYRZyqAS55rTOaT/qRQzTz6nG425fCLsnn4g/QEKhl4Qq+DVSETLKsn9TiJ2ah34Oa2ZP/M8i9y2G1Z+zwrH1ZPok8nMPdWl99yfwrG9TPXEIcMkUayhiO9VupljTkUP52as57WJaOVMjEk8aU9v4EHYakKf/GsbJpvofWEC1H4g36/lZBYGcZ0FdSwbOJSjRGoI7XW6Fk6Kfcg== 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, Aug 02, 2024 at 05:07:48PM -0700, Nathan Chancellor wrote: >Hi Wei, > >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 >> >> --- >> 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 >> >> > >After this change as commit 0e690b558b53 ("mm: increase totalram_pages >on freeing to buddy system") in -next, I see an issue when booting >OpenSUSE's powerpc64le configuration in QEMU (I have not tried to see if >there is a specific configuration option triggers this yet but it does >not happen with all of my powerpc configurations): > >$ curl -LSso .config https://github.com/openSUSE/kernel-source/raw/master/config/ppc64le/default > >$ make -skj"$(nproc)" ARCH=powerpc CROSS_COMPILE=powerpc64-linux- olddefconfig zImage.epapr > >$ qemu-system-ppc64 \ > -display none \ > -nodefaults \ > -device ipmi-bmc-sim,id=bmc0 \ > -device isa-ipmi-bt,bmc=bmc0,irq=10 \ > -machine powernv \ > -kernel arch/powerpc/boot/zImage.epapr \ > -initrd rootfs.cpio \ > -m 2G \ > -serial mon:stdio Hi, Nathan Thanks for testing. After some debug, the broken point is in mm/shmem.c. Function shmem_default_max_blocks() / shmem_default_max_inodex() is called by shmem_fill_super() during early stage. But I can't get the total free pages from memblock here as those functions will be called later, when memblock is discarded. I may need to find other way to handle it. -- Wei Yang Help you, Help me