* [PATCH 0/7] mm: minor clean up and improvement
@ 2024-03-25 15:04 Baoquan He
2024-03-25 15:04 ` [PATCH 1/7] mm/mm_init.c: remove the useless dma_reserve Baoquan He
` (7 more replies)
0 siblings, 8 replies; 9+ messages in thread
From: Baoquan He @ 2024-03-25 15:04 UTC (permalink / raw)
To: linux-mm; +Cc: akpm, rppt, mgorman, Baoquan He
These mostly are for mm init when going through code flow.
Baoquan He (7):
mm/mm_init.c: remove the useless dma_reserve
mm/mm_init.c: add new function calc_nr_all_pages()
mm/mm_init.c: remove meaningless calculation of zone->managed_pages in
free_area_init_core()
mm/mm_init.c: remove unneeded calc_memmap_size()
mm/mm_init.c: remove arch_reserved_kernel_pages()
mm: move array mem_section init code out of memory_present()
mm/init: remove the unnecessary special treatment for memory-less node
arch/powerpc/include/asm/mmu.h | 4 -
arch/powerpc/kernel/fadump.c | 5 --
include/linux/mm.h | 4 -
mm/mm_init.c | 143 ++++++++-------------------------
mm/sparse.c | 26 +++---
5 files changed, 45 insertions(+), 137 deletions(-)
--
2.41.0
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 1/7] mm/mm_init.c: remove the useless dma_reserve
2024-03-25 15:04 [PATCH 0/7] mm: minor clean up and improvement Baoquan He
@ 2024-03-25 15:04 ` Baoquan He
2024-03-25 15:04 ` [PATCH 2/7] mm/mm_init.c: add new function calc_nr_all_pages() Baoquan He
` (6 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: Baoquan He @ 2024-03-25 15:04 UTC (permalink / raw)
To: linux-mm; +Cc: akpm, rppt, mgorman, Baoquan He
Now nobody calls set_dma_reserve() to set value for dma_reserve, remove
global dma_reserve and the codes using it.
Signed-off-by: Baoquan He <bhe@redhat.com>
---
include/linux/mm.h | 1 -
mm/mm_init.c | 23 -----------------------
2 files changed, 24 deletions(-)
diff --git a/include/linux/mm.h b/include/linux/mm.h
index 0436b919f1c7..ad19350e1538 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -3210,7 +3210,6 @@ static inline int early_pfn_to_nid(unsigned long pfn)
extern int __meminit early_pfn_to_nid(unsigned long pfn);
#endif
-extern void set_dma_reserve(unsigned long new_dma_reserve);
extern void mem_init(void);
extern void __init mmap_init(void);
diff --git a/mm/mm_init.c b/mm/mm_init.c
index 549e76af8f82..153fb2dc666f 100644
--- a/mm/mm_init.c
+++ b/mm/mm_init.c
@@ -226,7 +226,6 @@ static unsigned long required_movablecore_percent __initdata;
static unsigned long nr_kernel_pages __initdata;
static unsigned long nr_all_pages __initdata;
-static unsigned long dma_reserve __initdata;
static bool deferred_struct_pages __meminitdata;
@@ -1583,12 +1582,6 @@ static void __init free_area_init_core(struct pglist_data *pgdat)
zone_names[j], memmap_pages, freesize);
}
- /* Account for reserved pages */
- if (j == 0 && freesize > dma_reserve) {
- freesize -= dma_reserve;
- pr_debug(" %s zone: %lu pages reserved\n", zone_names[0], dma_reserve);
- }
-
if (!is_highmem_idx(j))
nr_kernel_pages += freesize;
/* Charge for highmem memmap if there are enough kernel pages */
@@ -2547,22 +2540,6 @@ void *__init alloc_large_system_hash(const char *tablename,
return table;
}
-/**
- * set_dma_reserve - set the specified number of pages reserved in the first zone
- * @new_dma_reserve: The number of pages to mark reserved
- *
- * The per-cpu batchsize and zone watermarks are determined by managed_pages.
- * In the DMA zone, a significant percentage may be consumed by kernel image
- * and other unfreeable allocations which can skew the watermarks badly. This
- * function may optionally be used to account for unfreeable pages in the
- * first zone (e.g., ZONE_DMA). The effect will be lower watermarks and
- * smaller per-cpu batchsize.
- */
-void __init set_dma_reserve(unsigned long new_dma_reserve)
-{
- dma_reserve = new_dma_reserve;
-}
-
void __init memblock_free_pages(struct page *page, unsigned long pfn,
unsigned int order)
{
--
2.41.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 2/7] mm/mm_init.c: add new function calc_nr_all_pages()
2024-03-25 15:04 [PATCH 0/7] mm: minor clean up and improvement Baoquan He
2024-03-25 15:04 ` [PATCH 1/7] mm/mm_init.c: remove the useless dma_reserve Baoquan He
@ 2024-03-25 15:04 ` Baoquan He
2024-03-25 15:04 ` [PATCH 3/7] mm/mm_init.c: remove meaningless calculation of zone->managed_pages in free_area_init_core() Baoquan He
` (5 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: Baoquan He @ 2024-03-25 15:04 UTC (permalink / raw)
To: linux-mm; +Cc: akpm, rppt, mgorman, Baoquan He
This is a preparation to calculate nr_kernel_pages and nr_all_pages,
both of which will be used later in alloc_large_system_hash().
nr_all_pages counts up all free but not reserved memory in memblock
allocator, including HIGHMEM memory. While nr_kernel_pages counts up
all free but not reserved low memory in memblock allocator, excluding
HIGHMEM memory.
Signed-off-by: Baoquan He <bhe@redhat.com>
---
mm/mm_init.c | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
diff --git a/mm/mm_init.c b/mm/mm_init.c
index 153fb2dc666f..c57a7fc97a16 100644
--- a/mm/mm_init.c
+++ b/mm/mm_init.c
@@ -1264,6 +1264,30 @@ static void __init reset_memoryless_node_totalpages(struct pglist_data *pgdat)
pr_debug("On node %d totalpages: 0\n", pgdat->node_id);
}
+static void __init calc_nr_kernel_pages(void)
+{
+ unsigned long start_pfn, end_pfn;
+ phys_addr_t start_addr, end_addr;
+ u64 u;
+#ifdef CONFIG_HIGHMEM
+ unsigned long high_zone_low = arch_zone_lowest_possible_pfn[ZONE_HIGHMEM];
+#endif
+
+ for_each_free_mem_range(u, NUMA_NO_NODE, MEMBLOCK_NONE, &start_addr, &end_addr, NULL) {
+ start_pfn = PFN_UP(start_addr);
+ end_pfn = PFN_DOWN(end_addr);
+
+ if (start_pfn < end_pfn) {
+ nr_all_pages += end_pfn - start_pfn;
+#ifdef CONFIG_HIGHMEM
+ start_pfn = clamp(start_pfn, 0, high_zone_low);
+ end_pfn = clamp(end_pfn, 0, high_zone_low);
+#endif
+ nr_kernel_pages += end_pfn - start_pfn;
+ }
+ }
+}
+
static void __init calculate_node_totalpages(struct pglist_data *pgdat,
unsigned long node_start_pfn,
unsigned long node_end_pfn)
--
2.41.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 3/7] mm/mm_init.c: remove meaningless calculation of zone->managed_pages in free_area_init_core()
2024-03-25 15:04 [PATCH 0/7] mm: minor clean up and improvement Baoquan He
2024-03-25 15:04 ` [PATCH 1/7] mm/mm_init.c: remove the useless dma_reserve Baoquan He
2024-03-25 15:04 ` [PATCH 2/7] mm/mm_init.c: add new function calc_nr_all_pages() Baoquan He
@ 2024-03-25 15:04 ` Baoquan He
2024-03-25 15:04 ` [PATCH 4/7] mm/mm_init.c: remove unneeded calc_memmap_size() Baoquan He
` (4 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: Baoquan He @ 2024-03-25 15:04 UTC (permalink / raw)
To: linux-mm; +Cc: akpm, rppt, mgorman, Baoquan He
Currently, in free_area_init_core(), when initialize zone's field, a
rough value is set to zone->managed_pages. That value is calculated by
(zone->present_pages - memmap_pages).
In the meantime, add the value to nr_all_pages and nr_kernel_pages which
represent all free pages of system (only low memory or including HIGHMEM
memory separately). Both of them are gonna be used in
alloc_large_system_hash().
However, the rough calculation and setting of zone->managed_pages is
meaningless because
a) memmap pages are allocated on units of node in sparse_init() or
alloc_node_mem_map(pgdat); The simple (zone->present_pages -
memmap_pages) is too rough to make sense for zone;
b) the set zone->managed_pages will be zeroed out and reset with
acutal value in mem_init() via memblock_free_all(). Before the
resetting, no buddy allocation request is issued.
Here, remove the meaningless and complicated calculation of
(zone->present_pages - memmap_pages), initialize zone->managed_pages as 0
which reflect its actual value because no any page is added into buddy
system right now. It will be reset in mem_init().
And also remove the assignment of nr_all_pages and nr_kernel_pages in
free_area_init_core(). Instead, call the newly added calc_nr_kernel_pages()
to count up all free but not reserved memory in memblock and assign to
nr_all_pages and nr_kernel_pages. The counting excludes memmap_pages,
and other kernel used data, which is more accurate than old way and
simpler, and can also cover the ppc required arch_reserved_kernel_pages()
case.
And also clean up the outdated code comment above free_area_init_core().
And free_area_init_core() is easy to understand now, no need to add
words to explain.
Signed-off-by: Baoquan He <bhe@redhat.com>
---
mm/mm_init.c | 46 +++++-----------------------------------------
1 file changed, 5 insertions(+), 41 deletions(-)
diff --git a/mm/mm_init.c b/mm/mm_init.c
index c57a7fc97a16..7f71e56e83f3 100644
--- a/mm/mm_init.c
+++ b/mm/mm_init.c
@@ -1565,15 +1565,6 @@ void __ref free_area_init_core_hotplug(struct pglist_data *pgdat)
}
#endif
-/*
- * Set up the zone data structures:
- * - mark all pages reserved
- * - mark all memory queues empty
- * - clear the memory bitmaps
- *
- * NOTE: pgdat should get zeroed by caller.
- * NOTE: this function is only called during early init.
- */
static void __init free_area_init_core(struct pglist_data *pgdat)
{
enum zone_type j;
@@ -1584,41 +1575,13 @@ static void __init free_area_init_core(struct pglist_data *pgdat)
for (j = 0; j < MAX_NR_ZONES; j++) {
struct zone *zone = pgdat->node_zones + j;
- unsigned long size, freesize, memmap_pages;
-
- size = zone->spanned_pages;
- freesize = zone->present_pages;
-
- /*
- * Adjust freesize so that it accounts for how much memory
- * is used by this zone for memmap. This affects the watermark
- * and per-cpu initialisations
- */
- memmap_pages = calc_memmap_size(size, freesize);
- if (!is_highmem_idx(j)) {
- if (freesize >= memmap_pages) {
- freesize -= memmap_pages;
- if (memmap_pages)
- pr_debug(" %s zone: %lu pages used for memmap\n",
- zone_names[j], memmap_pages);
- } else
- pr_warn(" %s zone: %lu memmap pages exceeds freesize %lu\n",
- zone_names[j], memmap_pages, freesize);
- }
-
- if (!is_highmem_idx(j))
- nr_kernel_pages += freesize;
- /* Charge for highmem memmap if there are enough kernel pages */
- else if (nr_kernel_pages > memmap_pages * 2)
- nr_kernel_pages -= memmap_pages;
- nr_all_pages += freesize;
+ unsigned long size = zone->spanned_pages;
/*
- * Set an approximate value for lowmem here, it will be adjusted
- * when the bootmem allocator frees pages into the buddy system.
- * And all highmem pages will be managed by the buddy system.
+ * Initialize zone->managed_pages as 0 , it will be reset
+ * when memblock allocator frees pages into buddy system.
*/
- zone_init_internals(zone, j, nid, freesize);
+ zone_init_internals(zone, j, nid, 0);
if (!size)
continue;
@@ -1915,6 +1878,7 @@ void __init free_area_init(unsigned long *max_zone_pfn)
check_for_memory(pgdat);
}
+ calc_nr_kernel_pages();
memmap_init();
/* disable hash distribution for systems with a single node */
--
2.41.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 4/7] mm/mm_init.c: remove unneeded calc_memmap_size()
2024-03-25 15:04 [PATCH 0/7] mm: minor clean up and improvement Baoquan He
` (2 preceding siblings ...)
2024-03-25 15:04 ` [PATCH 3/7] mm/mm_init.c: remove meaningless calculation of zone->managed_pages in free_area_init_core() Baoquan He
@ 2024-03-25 15:04 ` Baoquan He
2024-03-25 15:04 ` [PATCH 5/7] mm/mm_init.c: remove arch_reserved_kernel_pages() Baoquan He
` (3 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: Baoquan He @ 2024-03-25 15:04 UTC (permalink / raw)
To: linux-mm; +Cc: akpm, rppt, mgorman, Baoquan He
Nobody calls calc_memmap_size() now.
Signed-off-by: Baoquan He <bhe@redhat.com>
---
mm/mm_init.c | 20 --------------------
1 file changed, 20 deletions(-)
diff --git a/mm/mm_init.c b/mm/mm_init.c
index 7f71e56e83f3..e269a724f70e 100644
--- a/mm/mm_init.c
+++ b/mm/mm_init.c
@@ -1331,26 +1331,6 @@ static void __init calculate_node_totalpages(struct pglist_data *pgdat,
pr_debug("On node %d totalpages: %lu\n", pgdat->node_id, realtotalpages);
}
-static unsigned long __init calc_memmap_size(unsigned long spanned_pages,
- unsigned long present_pages)
-{
- unsigned long pages = spanned_pages;
-
- /*
- * Provide a more accurate estimation if there are holes within
- * the zone and SPARSEMEM is in use. If there are holes within the
- * zone, each populated memory region may cost us one or two extra
- * memmap pages due to alignment because memmap pages for each
- * populated regions may not be naturally aligned on page boundary.
- * So the (present_pages >> 4) heuristic is a tradeoff for that.
- */
- if (spanned_pages > present_pages + (present_pages >> 4) &&
- IS_ENABLED(CONFIG_SPARSEMEM))
- pages = present_pages;
-
- return PAGE_ALIGN(pages * sizeof(struct page)) >> PAGE_SHIFT;
-}
-
#ifdef CONFIG_TRANSPARENT_HUGEPAGE
static void pgdat_init_split_queue(struct pglist_data *pgdat)
{
--
2.41.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 5/7] mm/mm_init.c: remove arch_reserved_kernel_pages()
2024-03-25 15:04 [PATCH 0/7] mm: minor clean up and improvement Baoquan He
` (3 preceding siblings ...)
2024-03-25 15:04 ` [PATCH 4/7] mm/mm_init.c: remove unneeded calc_memmap_size() Baoquan He
@ 2024-03-25 15:04 ` Baoquan He
2024-03-25 15:04 ` [PATCH 6/7] mm: move array mem_section init code out of memory_present() Baoquan He
` (2 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: Baoquan He @ 2024-03-25 15:04 UTC (permalink / raw)
To: linux-mm; +Cc: akpm, rppt, mgorman, Baoquan He
Since the current calculation of calc_nr_kernel_pages() has taken into
consideration of kernel reserved memory, no need to have
arch_reserved_kernel_pages() any more.
Signed-off-by: Baoquan He <bhe@redhat.com>
---
arch/powerpc/include/asm/mmu.h | 4 ----
arch/powerpc/kernel/fadump.c | 5 -----
include/linux/mm.h | 3 ---
mm/mm_init.c | 12 ------------
4 files changed, 24 deletions(-)
diff --git a/arch/powerpc/include/asm/mmu.h b/arch/powerpc/include/asm/mmu.h
index 3b72c7ed24cf..aa5c0fd5edb1 100644
--- a/arch/powerpc/include/asm/mmu.h
+++ b/arch/powerpc/include/asm/mmu.h
@@ -406,9 +406,5 @@ extern void *abatron_pteptrs[2];
#include <asm/nohash/mmu.h>
#endif
-#if defined(CONFIG_FA_DUMP) || defined(CONFIG_PRESERVE_FA_DUMP)
-#define __HAVE_ARCH_RESERVED_KERNEL_PAGES
-#endif
-
#endif /* __KERNEL__ */
#endif /* _ASM_POWERPC_MMU_H_ */
diff --git a/arch/powerpc/kernel/fadump.c b/arch/powerpc/kernel/fadump.c
index d14eda1e8589..ae8c7619e597 100644
--- a/arch/powerpc/kernel/fadump.c
+++ b/arch/powerpc/kernel/fadump.c
@@ -1735,8 +1735,3 @@ static void __init fadump_reserve_crash_area(u64 base)
memblock_reserve(mstart, msize);
}
}
-
-unsigned long __init arch_reserved_kernel_pages(void)
-{
- return memblock_reserved_size() / PAGE_SIZE;
-}
diff --git a/include/linux/mm.h b/include/linux/mm.h
index ad19350e1538..ab1ba0a31429 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -3221,9 +3221,6 @@ static inline void show_mem(void)
extern long si_mem_available(void);
extern void si_meminfo(struct sysinfo * val);
extern void si_meminfo_node(struct sysinfo *val, int nid);
-#ifdef __HAVE_ARCH_RESERVED_KERNEL_PAGES
-extern unsigned long arch_reserved_kernel_pages(void);
-#endif
extern __printf(3, 4)
void warn_alloc(gfp_t gfp_mask, nodemask_t *nodemask, const char *fmt, ...);
diff --git a/mm/mm_init.c b/mm/mm_init.c
index e269a724f70e..089dc60159e9 100644
--- a/mm/mm_init.c
+++ b/mm/mm_init.c
@@ -2373,17 +2373,6 @@ void __init page_alloc_init_late(void)
page_alloc_sysctl_init();
}
-#ifndef __HAVE_ARCH_RESERVED_KERNEL_PAGES
-/*
- * Returns the number of pages that arch has reserved but
- * is not known to alloc_large_system_hash().
- */
-static unsigned long __init arch_reserved_kernel_pages(void)
-{
- return 0;
-}
-#endif
-
/*
* Adaptive scale is meant to reduce sizes of hash tables on large memory
* machines. As memory size is increased the scale is also increased but at
@@ -2426,7 +2415,6 @@ void *__init alloc_large_system_hash(const char *tablename,
if (!numentries) {
/* round applicable memory size up to nearest megabyte */
numentries = nr_kernel_pages;
- numentries -= arch_reserved_kernel_pages();
/* It isn't necessary when PAGE_SIZE >= 1MB */
if (PAGE_SIZE < SZ_1M)
--
2.41.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 6/7] mm: move array mem_section init code out of memory_present()
2024-03-25 15:04 [PATCH 0/7] mm: minor clean up and improvement Baoquan He
` (4 preceding siblings ...)
2024-03-25 15:04 ` [PATCH 5/7] mm/mm_init.c: remove arch_reserved_kernel_pages() Baoquan He
@ 2024-03-25 15:04 ` Baoquan He
2024-03-25 15:04 ` [PATCH 7/7] mm/init: remove the unnecessary special treatment for memory-less node Baoquan He
2024-03-25 15:08 ` [PATCH 0/7] mm: minor clean up and improvement Baoquan He
7 siblings, 0 replies; 9+ messages in thread
From: Baoquan He @ 2024-03-25 15:04 UTC (permalink / raw)
To: linux-mm; +Cc: akpm, rppt, mgorman, Baoquan He
When CONFIG_SPARSEMEM_EXTREME is enabled, mem_section need be initialized
to point at a two-dimensional array, and its 1st dimension of length
NR_SECTION_ROOTS will be dynamically allocated. Once the allocation is
done, it's available for all nodes.
So take the 1st dimension of mem_section initialization out of
memory_present()(), and put it into memblocks_present() which is a more
appripriate place.
Signed-off-by: Baoquan He <bhe@redhat.com>
---
mm/sparse.c | 26 +++++++++++++-------------
1 file changed, 13 insertions(+), 13 deletions(-)
diff --git a/mm/sparse.c b/mm/sparse.c
index aed0951b87fa..46e88549d1a6 100644
--- a/mm/sparse.c
+++ b/mm/sparse.c
@@ -226,19 +226,6 @@ static void __init memory_present(int nid, unsigned long start, unsigned long en
{
unsigned long pfn;
-#ifdef CONFIG_SPARSEMEM_EXTREME
- if (unlikely(!mem_section)) {
- unsigned long size, align;
-
- size = sizeof(struct mem_section *) * NR_SECTION_ROOTS;
- align = 1 << (INTERNODE_CACHE_SHIFT);
- mem_section = memblock_alloc(size, align);
- if (!mem_section)
- panic("%s: Failed to allocate %lu bytes align=0x%lx\n",
- __func__, size, align);
- }
-#endif
-
start &= PAGE_SECTION_MASK;
mminit_validate_memmodel_limits(&start, &end);
for (pfn = start; pfn < end; pfn += PAGES_PER_SECTION) {
@@ -267,6 +254,19 @@ static void __init memblocks_present(void)
unsigned long start, end;
int i, nid;
+#ifdef CONFIG_SPARSEMEM_EXTREME
+ if (unlikely(!mem_section)) {
+ unsigned long size, align;
+
+ size = sizeof(struct mem_section *) * NR_SECTION_ROOTS;
+ align = 1 << (INTERNODE_CACHE_SHIFT);
+ mem_section = memblock_alloc(size, align);
+ if (!mem_section)
+ panic("%s: Failed to allocate %lu bytes align=0x%lx\n",
+ __func__, size, align);
+ }
+#endif
+
for_each_mem_pfn_range(i, MAX_NUMNODES, &start, &end, &nid)
memory_present(nid, start, end);
}
--
2.41.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 7/7] mm/init: remove the unnecessary special treatment for memory-less node
2024-03-25 15:04 [PATCH 0/7] mm: minor clean up and improvement Baoquan He
` (5 preceding siblings ...)
2024-03-25 15:04 ` [PATCH 6/7] mm: move array mem_section init code out of memory_present() Baoquan He
@ 2024-03-25 15:04 ` Baoquan He
2024-03-25 15:08 ` [PATCH 0/7] mm: minor clean up and improvement Baoquan He
7 siblings, 0 replies; 9+ messages in thread
From: Baoquan He @ 2024-03-25 15:04 UTC (permalink / raw)
To: linux-mm; +Cc: akpm, rppt, mgorman, Baoquan He
Because memory-less node's ->node_present_pages and its
zone's ->present_pages are all 0, the judgement before calling
node_set_state() to set N_MEMORY, N_HIGH_MEMORY, N_NORMAL_MEMORY for
node is enough to skip memory-less node. The 'continue;' statement
inside for_each_node() loop of free_area_init() is gilding the lily.
Here, remove the special handling to make memory-less node share the
same code flow as normal node. And the code comment above the 'continue'
statement is not needed either.
Signed-off-by: Baoquan He <bhe@redhat.com>
---
mm/mm_init.c | 18 +++---------------
1 file changed, 3 insertions(+), 15 deletions(-)
diff --git a/mm/mm_init.c b/mm/mm_init.c
index 089dc60159e9..99681ffb9091 100644
--- a/mm/mm_init.c
+++ b/mm/mm_init.c
@@ -1834,28 +1834,16 @@ void __init free_area_init(unsigned long *max_zone_pfn)
panic("Cannot allocate %zuB for node %d.\n",
sizeof(*pgdat), nid);
arch_refresh_nodedata(nid, pgdat);
- free_area_init_node(nid);
-
- /*
- * We do not want to confuse userspace by sysfs
- * files/directories for node without any memory
- * attached to it, so this node is not marked as
- * N_MEMORY and not marked online so that no sysfs
- * hierarchy will be created via register_one_node for
- * it. The pgdat will get fully initialized by
- * hotadd_init_pgdat() when memory is hotplugged into
- * this node.
- */
- continue;
}
pgdat = NODE_DATA(nid);
free_area_init_node(nid);
/* Any memory on that node */
- if (pgdat->node_present_pages)
+ if (pgdat->node_present_pages) {
node_set_state(nid, N_MEMORY);
- check_for_memory(pgdat);
+ check_for_memory(pgdat);
+ }
}
calc_nr_kernel_pages();
--
2.41.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 0/7] mm: minor clean up and improvement
2024-03-25 15:04 [PATCH 0/7] mm: minor clean up and improvement Baoquan He
` (6 preceding siblings ...)
2024-03-25 15:04 ` [PATCH 7/7] mm/init: remove the unnecessary special treatment for memory-less node Baoquan He
@ 2024-03-25 15:08 ` Baoquan He
7 siblings, 0 replies; 9+ messages in thread
From: Baoquan He @ 2024-03-25 15:08 UTC (permalink / raw)
To: linux-mm; +Cc: akpm, rppt, mgorman
On 03/25/24 at 11:04pm, Baoquan He wrote:
Sorry for the noise, I did misoperation on my local git commits,
please ignore this series.
> These mostly are for mm init when going through code flow.
>
> Baoquan He (7):
> mm/mm_init.c: remove the useless dma_reserve
> mm/mm_init.c: add new function calc_nr_all_pages()
> mm/mm_init.c: remove meaningless calculation of zone->managed_pages in
> free_area_init_core()
> mm/mm_init.c: remove unneeded calc_memmap_size()
> mm/mm_init.c: remove arch_reserved_kernel_pages()
> mm: move array mem_section init code out of memory_present()
> mm/init: remove the unnecessary special treatment for memory-less node
>
> arch/powerpc/include/asm/mmu.h | 4 -
> arch/powerpc/kernel/fadump.c | 5 --
> include/linux/mm.h | 4 -
> mm/mm_init.c | 143 ++++++++-------------------------
> mm/sparse.c | 26 +++---
> 5 files changed, 45 insertions(+), 137 deletions(-)
>
> --
> 2.41.0
>
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2024-03-25 15:09 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-03-25 15:04 [PATCH 0/7] mm: minor clean up and improvement Baoquan He
2024-03-25 15:04 ` [PATCH 1/7] mm/mm_init.c: remove the useless dma_reserve Baoquan He
2024-03-25 15:04 ` [PATCH 2/7] mm/mm_init.c: add new function calc_nr_all_pages() Baoquan He
2024-03-25 15:04 ` [PATCH 3/7] mm/mm_init.c: remove meaningless calculation of zone->managed_pages in free_area_init_core() Baoquan He
2024-03-25 15:04 ` [PATCH 4/7] mm/mm_init.c: remove unneeded calc_memmap_size() Baoquan He
2024-03-25 15:04 ` [PATCH 5/7] mm/mm_init.c: remove arch_reserved_kernel_pages() Baoquan He
2024-03-25 15:04 ` [PATCH 6/7] mm: move array mem_section init code out of memory_present() Baoquan He
2024-03-25 15:04 ` [PATCH 7/7] mm/init: remove the unnecessary special treatment for memory-less node Baoquan He
2024-03-25 15:08 ` [PATCH 0/7] mm: minor clean up and improvement Baoquan He
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).