mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-31 08:15:07 -04:00
mm: split out mm_init and memblock declarations from internal.h
Patch series "mm: split a couple of headers from internal.h", v2. mm/internal.h becomes more and more bloated. Split declarations related to mm_init, memblock, vmalloc and sparse into new headers. This patch (of 3): mm/internal.h becomes more and more bloated. Move declarations for related to mm/mm_init.c and mm/memblock.c to a new mm/mm_init.h header. No functional changes. [rppt@kernel.org: split stubfs from internal.h to mm_init.h] Link: https://lore.kernel.org/alJd1BLypyK9Mpaw@kernel.org Link: https://lore.kernel.org/20260709-internal-h-v2-0-695631425968@kernel.org Link: https://lore.kernel.org/20260709-internal-h-v2-1-695631425968@kernel.org Signed-off-by: Mike Rapoport (Microsoft) <rppt@kernel.org> Acked-by: Muchun Song <muchun.song@linux.dev> Acked-by: Vlastimil Babka (SUSE) <vbabka@kernel.org> Acked-by: David Hildenbrand (Arm) <david@kernel.org> Acked-by: Lorenzo Stoakes <ljs@kernel.org> Acked-by: Pratyush Yadav <pratyush@kernel.org> Acked-by: SJ Park <sj@kernel.org> Cc: Alexander Graf <graf@amazon.com> Cc: Alexander Potapenko <glider@google.com> Cc: Brendan Jackman <jackmanb@google.com> Cc: Brendan Jackman <brendan.jackman@linux.dev> Cc: Dennis Zhou <dennis@kernel.org> Cc: Dmitry Vyukov <dvyukov@google.com> Cc: Johannes Weiner <hannes@cmpxchg.org> Cc: Liam R. Howlett <liam@infradead.org> Cc: Marco Elver <elver@google.com> Cc: Michal Hocko <mhocko@suse.com> Cc: Oscar Salvador <osalvador@suse.de> Cc: Pasha Tatashin <pasha.tatashin@soleen.com> Cc: Suren Baghdasaryan <surenb@google.com> Cc: Tejun Heo <tj@kernel.org> Cc: "Uladzislau Rezki (Sony)" <urezki@gmail.com> Cc: Zi Yan <ziy@nvidia.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
committed by
Andrew Morton
parent
1695841621
commit
55ed40abb2
@@ -16883,6 +16883,7 @@ F: include/linux/memblock.h
|
||||
F: mm/memblock.c
|
||||
F: mm/memtest.c
|
||||
F: mm/mm_init.c
|
||||
F: mm/mm_init.h
|
||||
F: mm/rodata_test.c
|
||||
F: tools/testing/memblock/
|
||||
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
* internal APIs.
|
||||
*/
|
||||
#include "../../mm/internal.h"
|
||||
#include "../../mm/mm_init.h"
|
||||
#include "../kexec_internal.h"
|
||||
#include "kexec_handover_internal.h"
|
||||
|
||||
|
||||
1
mm/cma.c
1
mm/cma.c
@@ -33,6 +33,7 @@
|
||||
|
||||
#include "internal.h"
|
||||
#include "cma.h"
|
||||
#include "mm_init.h"
|
||||
|
||||
struct cma cma_areas[MAX_CMA_AREAS];
|
||||
unsigned int cma_area_count;
|
||||
|
||||
@@ -51,6 +51,7 @@
|
||||
#include "hugetlb_vmemmap.h"
|
||||
#include "hugetlb_cma.h"
|
||||
#include "hugetlb_internal.h"
|
||||
#include "mm_init.h"
|
||||
#include <linux/page-isolation.h>
|
||||
|
||||
int hugetlb_max_hstate __read_mostly;
|
||||
|
||||
@@ -716,9 +716,6 @@ void set_recommended_min_free_kbytes(void);
|
||||
|
||||
extern char * const zone_names[MAX_NR_ZONES];
|
||||
|
||||
/* perform sanity checks on struct pages being allocated or freed */
|
||||
DECLARE_STATIC_KEY_MAYBE(CONFIG_DEBUG_VM, check_pages_enabled);
|
||||
|
||||
extern int min_free_kbytes;
|
||||
extern int defrag_mode;
|
||||
|
||||
@@ -726,19 +723,9 @@ void setup_per_zone_wmarks(void);
|
||||
void calculate_min_free_kbytes(void);
|
||||
int __meminit init_per_zone_wmark_min(void);
|
||||
|
||||
void set_zone_contiguous(struct zone *zone);
|
||||
bool pfn_range_intersects_zones(int nid, unsigned long start_pfn,
|
||||
unsigned long nr_pages);
|
||||
|
||||
static inline void clear_zone_contiguous(struct zone *zone)
|
||||
{
|
||||
zone->contiguous = false;
|
||||
}
|
||||
|
||||
extern int __isolate_free_page(struct page *page, unsigned int order);
|
||||
extern void __putback_isolated_page(struct page *page, unsigned int order,
|
||||
int mt);
|
||||
extern void memblock_free_pages(unsigned long pfn, unsigned int order);
|
||||
|
||||
/*
|
||||
* This will have no effect, other than possibly generating a warning, if the
|
||||
@@ -820,14 +807,6 @@ static inline void init_compound_tail(struct page *tail,
|
||||
prep_compound_tail(tail, head, order);
|
||||
}
|
||||
|
||||
extern void *memmap_alloc(phys_addr_t size, phys_addr_t align,
|
||||
phys_addr_t min_addr,
|
||||
int nid, bool exact_nid);
|
||||
|
||||
void memmap_init_range(unsigned long, int, unsigned long, unsigned long,
|
||||
unsigned long, enum meminit_context, struct vmem_altmap *, int,
|
||||
bool);
|
||||
|
||||
/*
|
||||
* mm/sparse.c
|
||||
*/
|
||||
@@ -948,9 +927,6 @@ int
|
||||
isolate_migratepages_range(struct compact_control *cc,
|
||||
unsigned long low_pfn, unsigned long end_pfn);
|
||||
|
||||
/* Free whole pageblock and set its migration type to MIGRATE_CMA. */
|
||||
void init_cma_reserved_pageblock(struct page *page);
|
||||
|
||||
#endif /* CONFIG_COMPACTION || CONFIG_CMA */
|
||||
|
||||
struct cma;
|
||||
@@ -958,7 +934,6 @@ struct cma;
|
||||
#ifdef CONFIG_CMA
|
||||
bool cma_validate_zones(struct cma *cma);
|
||||
void *cma_reserve_early(struct cma *cma, unsigned long size);
|
||||
void init_cma_pageblock(struct page *page);
|
||||
#else
|
||||
static inline bool cma_validate_zones(struct cma *cma)
|
||||
{
|
||||
@@ -968,9 +943,6 @@ static inline void *cma_reserve_early(struct cma *cma, unsigned long size)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
static inline void init_cma_pageblock(struct page *page)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
/* mm/util.c */
|
||||
@@ -1177,63 +1149,6 @@ static inline void vunmap_range_noflush(unsigned long start, unsigned long end)
|
||||
}
|
||||
#endif /* !CONFIG_MMU */
|
||||
|
||||
/* Memory initialisation debug and verification */
|
||||
#ifdef CONFIG_DEFERRED_STRUCT_PAGE_INIT
|
||||
DECLARE_STATIC_KEY_TRUE(deferred_pages);
|
||||
|
||||
static inline bool deferred_pages_enabled(void)
|
||||
{
|
||||
return static_branch_unlikely(&deferred_pages);
|
||||
}
|
||||
|
||||
bool __init deferred_grow_zone(struct zone *zone, unsigned int order);
|
||||
#else
|
||||
static inline bool deferred_pages_enabled(void)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
#endif /* CONFIG_DEFERRED_STRUCT_PAGE_INIT */
|
||||
|
||||
void init_deferred_page(unsigned long pfn, int nid);
|
||||
|
||||
enum mminit_level {
|
||||
MMINIT_WARNING,
|
||||
MMINIT_VERIFY,
|
||||
MMINIT_TRACE
|
||||
};
|
||||
|
||||
#ifdef CONFIG_DEBUG_MEMORY_INIT
|
||||
|
||||
extern int mminit_loglevel;
|
||||
|
||||
#define mminit_dprintk(level, prefix, fmt, arg...) \
|
||||
do { \
|
||||
if (level < mminit_loglevel) { \
|
||||
if (level <= MMINIT_WARNING) \
|
||||
pr_warn("mminit::" prefix " " fmt, ##arg); \
|
||||
else \
|
||||
printk(KERN_DEBUG "mminit::" prefix " " fmt, ##arg); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
extern void mminit_verify_pageflags_layout(void);
|
||||
extern void mminit_verify_zonelist(void);
|
||||
#else
|
||||
|
||||
static inline void mminit_dprintk(enum mminit_level level,
|
||||
const char *prefix, const char *fmt, ...)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void mminit_verify_pageflags_layout(void)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void mminit_verify_zonelist(void)
|
||||
{
|
||||
}
|
||||
#endif /* CONFIG_DEBUG_MEMORY_INIT */
|
||||
|
||||
#define NODE_RECLAIM_NOSCAN -2
|
||||
#define NODE_RECLAIM_FULL -1
|
||||
#define NODE_RECLAIM_SOME 0
|
||||
@@ -1532,9 +1447,6 @@ static inline bool gup_must_unshare(struct vm_area_struct *vma,
|
||||
return !PageAnonExclusive(page);
|
||||
}
|
||||
|
||||
extern bool mirrored_kernelcore;
|
||||
bool memblock_has_mirror(void);
|
||||
void memblock_free_all(void);
|
||||
|
||||
static __always_inline void vma_set_range(struct vm_area_struct *vma,
|
||||
unsigned long start, unsigned long end,
|
||||
@@ -1573,9 +1485,6 @@ static inline bool pte_needs_soft_dirty_wp(struct vm_area_struct *vma, pte_t pte
|
||||
return vma_soft_dirty_enabled(vma) && !pte_soft_dirty(pte);
|
||||
}
|
||||
|
||||
void __meminit __init_single_page(struct page *page, unsigned long pfn,
|
||||
unsigned long zone, int nid);
|
||||
|
||||
/* shrinker related functions */
|
||||
unsigned long shrink_slab(gfp_t gfp_mask, int nid, struct mem_cgroup *memcg,
|
||||
int priority);
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
#include <linux/io.h>
|
||||
|
||||
#include "internal.h"
|
||||
#include "mm_init.h"
|
||||
|
||||
#define INIT_MEMBLOCK_REGIONS 128
|
||||
#define INIT_PHYSMEM_REGIONS 4
|
||||
|
||||
@@ -40,6 +40,7 @@
|
||||
#include <asm/tlbflush.h>
|
||||
|
||||
#include "internal.h"
|
||||
#include "mm_init.h"
|
||||
#include "page_alloc.h"
|
||||
#include "shuffle.h"
|
||||
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
#include <linux/kexec_handover.h>
|
||||
#include <linux/hugetlb.h>
|
||||
#include "internal.h"
|
||||
#include "mm_init.h"
|
||||
#include "page_alloc.h"
|
||||
#include "slab.h"
|
||||
#include "shuffle.h"
|
||||
|
||||
120
mm/mm_init.h
Normal file
120
mm/mm_init.h
Normal file
@@ -0,0 +1,120 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
/*
|
||||
* mm_init.h:
|
||||
*
|
||||
* mm/ internal mm_init and memblock declarations
|
||||
*/
|
||||
|
||||
#ifndef __MM_MM_INIT_H
|
||||
#define __MM_MM_INIT_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/mmzone.h>
|
||||
#include <linux/jump_label.h>
|
||||
#include <linux/printk.h>
|
||||
|
||||
struct page;
|
||||
struct vmem_altmap;
|
||||
|
||||
/* perform sanity checks on struct pages being allocated or freed */
|
||||
DECLARE_STATIC_KEY_MAYBE(CONFIG_DEBUG_VM, check_pages_enabled);
|
||||
|
||||
void set_zone_contiguous(struct zone *zone);
|
||||
bool pfn_range_intersects_zones(int nid, unsigned long start_pfn,
|
||||
unsigned long nr_pages);
|
||||
|
||||
static inline void clear_zone_contiguous(struct zone *zone)
|
||||
{
|
||||
zone->contiguous = false;
|
||||
}
|
||||
|
||||
void memblock_free_pages(unsigned long pfn, unsigned int order);
|
||||
|
||||
void *memmap_alloc(phys_addr_t size, phys_addr_t align, phys_addr_t min_addr,
|
||||
int nid, bool exact_nid);
|
||||
|
||||
void memmap_init_range(unsigned long size, int nid, unsigned long zone,
|
||||
unsigned long start_pfn, unsigned long zone_end_pfn,
|
||||
enum meminit_context context,
|
||||
struct vmem_altmap *altmap, int migratetype,
|
||||
bool isolate_pageblock);
|
||||
|
||||
#if defined CONFIG_COMPACTION || defined CONFIG_CMA
|
||||
/* Free whole pageblock and set its migration type to MIGRATE_CMA. */
|
||||
void init_cma_reserved_pageblock(struct page *page);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_CMA
|
||||
void init_cma_pageblock(struct page *page);
|
||||
#else
|
||||
static inline void init_cma_pageblock(struct page *page)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Memory initialisation debug and verification */
|
||||
#ifdef CONFIG_DEFERRED_STRUCT_PAGE_INIT
|
||||
DECLARE_STATIC_KEY_TRUE(deferred_pages);
|
||||
|
||||
static inline bool deferred_pages_enabled(void)
|
||||
{
|
||||
return static_branch_unlikely(&deferred_pages);
|
||||
}
|
||||
|
||||
bool __init deferred_grow_zone(struct zone *zone, unsigned int order);
|
||||
#else
|
||||
static inline bool deferred_pages_enabled(void)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
#endif /* CONFIG_DEFERRED_STRUCT_PAGE_INIT */
|
||||
|
||||
void init_deferred_page(unsigned long pfn, int nid);
|
||||
|
||||
enum mminit_level {
|
||||
MMINIT_WARNING,
|
||||
MMINIT_VERIFY,
|
||||
MMINIT_TRACE
|
||||
};
|
||||
|
||||
#ifdef CONFIG_DEBUG_MEMORY_INIT
|
||||
|
||||
extern int mminit_loglevel;
|
||||
|
||||
#define mminit_dprintk(level, prefix, fmt, arg...) \
|
||||
do { \
|
||||
if (level < mminit_loglevel) { \
|
||||
if (level <= MMINIT_WARNING) \
|
||||
pr_warn("mminit::" prefix " " fmt, ##arg); \
|
||||
else \
|
||||
printk(KERN_DEBUG "mminit::" prefix " " fmt, ##arg); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
void mminit_verify_pageflags_layout(void);
|
||||
void mminit_verify_zonelist(void);
|
||||
#else
|
||||
|
||||
static inline void mminit_dprintk(enum mminit_level level,
|
||||
const char *prefix, const char *fmt, ...)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void mminit_verify_pageflags_layout(void)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void mminit_verify_zonelist(void)
|
||||
{
|
||||
}
|
||||
#endif /* CONFIG_DEBUG_MEMORY_INIT */
|
||||
|
||||
extern bool mirrored_kernelcore;
|
||||
bool memblock_has_mirror(void);
|
||||
void memblock_free_all(void);
|
||||
|
||||
void __meminit __init_single_page(struct page *page, unsigned long pfn,
|
||||
unsigned long zone, int nid);
|
||||
|
||||
#endif /* __MM_MM_INIT_H */
|
||||
@@ -56,6 +56,7 @@
|
||||
#include <linux/pgalloc_tag.h>
|
||||
#include <asm/div64.h>
|
||||
#include "internal.h"
|
||||
#include "mm_init.h"
|
||||
#include "page_alloc.h"
|
||||
#include "shuffle.h"
|
||||
#include "page_reporting.h"
|
||||
|
||||
@@ -41,6 +41,7 @@
|
||||
#define VMEMMAP_POPULATE_PAGEREF 0x0001
|
||||
|
||||
#include "internal.h"
|
||||
#include "mm_init.h"
|
||||
|
||||
/*
|
||||
* Allocate a block of memory to be used to back the virtual memory map
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
#include <linux/swapops.h>
|
||||
#include <linux/vmstat.h>
|
||||
#include "internal.h"
|
||||
#include "mm_init.h"
|
||||
#include <asm/dma.h>
|
||||
|
||||
/*
|
||||
|
||||
@@ -28,22 +28,6 @@ static inline struct page *virt_to_page(void *virt)
|
||||
return virt;
|
||||
}
|
||||
|
||||
void memblock_free_pages(unsigned long pfn, unsigned int order)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void accept_memory(phys_addr_t start, unsigned long size)
|
||||
{
|
||||
}
|
||||
|
||||
unsigned long free_reserved_area(void *start, void *end, int poison, const char *s);
|
||||
void free_reserved_page(struct page *page);
|
||||
|
||||
static inline bool deferred_pages_enabled(void)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
#define for_each_valid_pfn(pfn, start_pfn, end_pfn) \
|
||||
for ((pfn) = (start_pfn); (pfn) < (end_pfn); (pfn)++)
|
||||
|
||||
@@ -60,10 +44,6 @@ static inline bool __is_kernel(unsigned long addr)
|
||||
#define for_each_valid_pfn(pfn, start_pfn, end_pfn) \
|
||||
for ((pfn) = (start_pfn); (pfn) < (end_pfn); (pfn)++)
|
||||
|
||||
static inline void init_deferred_page(unsigned long pfn, int nid)
|
||||
{
|
||||
}
|
||||
|
||||
#define __SetPageReserved(p) ((void)(p))
|
||||
|
||||
#endif
|
||||
|
||||
24
tools/testing/memblock/mm_init.h
Normal file
24
tools/testing/memblock/mm_init.h
Normal file
@@ -0,0 +1,24 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
#ifndef __MM_MM_INIT_H
|
||||
#define __MM_MM_INIT_H
|
||||
|
||||
void memblock_free_pages(unsigned long pfn, unsigned int order)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void accept_memory(phys_addr_t start, unsigned long size)
|
||||
{
|
||||
}
|
||||
|
||||
unsigned long free_reserved_area(void *start, void *end, int poison, const char *s);
|
||||
void free_reserved_page(struct page *page);
|
||||
|
||||
static inline bool deferred_pages_enabled(void)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
static inline void init_deferred_page(unsigned long pfn, int nid)
|
||||
{
|
||||
}
|
||||
#endif /* __MM_MM_INIT_H */
|
||||
Reference in New Issue
Block a user