Skip to content

Commit 7269ed4

Browse files
bibo-maoakpm00
authored andcommitted
mm: define general function pXd_init()
pud_init(), pmd_init() and kernel_pte_init() are duplicated defined in file kasan.c and sparse-vmemmap.c as weak functions. Move them to generic header file pgtable.h, architecture can redefine them. Link: https://lkml.kernel.org/r/[email protected] Signed-off-by: Bibo Mao <[email protected]> Reviewed-by: Huacai Chen <[email protected]> Cc: Alexander Potapenko <[email protected]> Cc: Andrey Konovalov <[email protected]> Cc: Andrey Ryabinin <[email protected]> Cc: Dmitry Vyukov <[email protected]> Cc: Thomas Bogendoerfer <[email protected]> Cc: Vincenzo Frascino <[email protected]> Cc: WANG Xuerui <[email protected]> Signed-off-by: Andrew Morton <[email protected]>
1 parent 7591c12 commit 7269ed4

File tree

6 files changed

+26
-27
lines changed

6 files changed

+26
-27
lines changed

arch/loongarch/include/asm/pgtable.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -268,8 +268,11 @@ extern void set_pmd_at(struct mm_struct *mm, unsigned long addr, pmd_t *pmdp, pm
268268
*/
269269
extern void pgd_init(void *addr);
270270
extern void pud_init(void *addr);
271+
#define pud_init pud_init
271272
extern void pmd_init(void *addr);
273+
#define pmd_init pmd_init
272274
extern void kernel_pte_init(void *addr);
275+
#define kernel_pte_init kernel_pte_init
273276

274277
/*
275278
* Encode/decode swap entries and swap PTEs. Swap PTEs are all PTEs that

arch/mips/include/asm/pgtable-64.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -317,7 +317,9 @@ static inline pmd_t *pud_pgtable(pud_t pud)
317317
*/
318318
extern void pgd_init(void *addr);
319319
extern void pud_init(void *addr);
320+
#define pud_init pud_init
320321
extern void pmd_init(void *addr);
322+
#define pmd_init pmd_init
321323

322324
/*
323325
* Encode/decode swap entries and swap PTEs. Swap PTEs are all PTEs that

include/linux/mm.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3819,9 +3819,6 @@ void *sparse_buffer_alloc(unsigned long size);
38193819
struct page * __populate_section_memmap(unsigned long pfn,
38203820
unsigned long nr_pages, int nid, struct vmem_altmap *altmap,
38213821
struct dev_pagemap *pgmap);
3822-
void pud_init(void *addr);
3823-
void pmd_init(void *addr);
3824-
void kernel_pte_init(void *addr);
38253822
pgd_t *vmemmap_pgd_populate(unsigned long addr, int node);
38263823
p4d_t *vmemmap_p4d_populate(pgd_t *pgd, unsigned long addr, int node);
38273824
pud_t *vmemmap_pud_populate(p4d_t *p4d, unsigned long addr, int node);

include/linux/pgtable.h

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,27 @@ static inline unsigned long pud_index(unsigned long address)
9090
#define pgd_index(a) (((a) >> PGDIR_SHIFT) & (PTRS_PER_PGD - 1))
9191
#endif
9292

93+
#ifndef kernel_pte_init
94+
static inline void kernel_pte_init(void *addr)
95+
{
96+
}
97+
#define kernel_pte_init kernel_pte_init
98+
#endif
99+
100+
#ifndef pmd_init
101+
static inline void pmd_init(void *addr)
102+
{
103+
}
104+
#define pmd_init pmd_init
105+
#endif
106+
107+
#ifndef pud_init
108+
static inline void pud_init(void *addr)
109+
{
110+
}
111+
#define pud_init pud_init
112+
#endif
113+
93114
#ifndef pte_offset_kernel
94115
static inline pte_t *pte_offset_kernel(pmd_t *pmd, unsigned long address)
95116
{

mm/kasan/init.c

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -106,10 +106,6 @@ static void __ref zero_pte_populate(pmd_t *pmd, unsigned long addr,
106106
}
107107
}
108108

109-
void __weak __meminit kernel_pte_init(void *addr)
110-
{
111-
}
112-
113109
static int __ref zero_pmd_populate(pud_t *pud, unsigned long addr,
114110
unsigned long end)
115111
{
@@ -145,10 +141,6 @@ static int __ref zero_pmd_populate(pud_t *pud, unsigned long addr,
145141
return 0;
146142
}
147143

148-
void __weak __meminit pmd_init(void *addr)
149-
{
150-
}
151-
152144
static int __ref zero_pud_populate(p4d_t *p4d, unsigned long addr,
153145
unsigned long end)
154146
{
@@ -187,10 +179,6 @@ static int __ref zero_pud_populate(p4d_t *p4d, unsigned long addr,
187179
return 0;
188180
}
189181

190-
void __weak __meminit pud_init(void *addr)
191-
{
192-
}
193-
194182
static int __ref zero_p4d_populate(pgd_t *pgd, unsigned long addr,
195183
unsigned long end)
196184
{

mm/sparse-vmemmap.c

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -184,10 +184,6 @@ static void * __meminit vmemmap_alloc_block_zero(unsigned long size, int node)
184184
return p;
185185
}
186186

187-
void __weak __meminit kernel_pte_init(void *addr)
188-
{
189-
}
190-
191187
pmd_t * __meminit vmemmap_pmd_populate(pud_t *pud, unsigned long addr, int node)
192188
{
193189
pmd_t *pmd = pmd_offset(pud, addr);
@@ -201,10 +197,6 @@ pmd_t * __meminit vmemmap_pmd_populate(pud_t *pud, unsigned long addr, int node)
201197
return pmd;
202198
}
203199

204-
void __weak __meminit pmd_init(void *addr)
205-
{
206-
}
207-
208200
pud_t * __meminit vmemmap_pud_populate(p4d_t *p4d, unsigned long addr, int node)
209201
{
210202
pud_t *pud = pud_offset(p4d, addr);
@@ -218,10 +210,6 @@ pud_t * __meminit vmemmap_pud_populate(p4d_t *p4d, unsigned long addr, int node)
218210
return pud;
219211
}
220212

221-
void __weak __meminit pud_init(void *addr)
222-
{
223-
}
224-
225213
p4d_t * __meminit vmemmap_p4d_populate(pgd_t *pgd, unsigned long addr, int node)
226214
{
227215
p4d_t *p4d = p4d_offset(pgd, addr);

0 commit comments

Comments
 (0)