#include <linux/mm.h>
#include <linux/mmzone.h>
#include <linux/memblock.h>
#include <linux/memremap.h>
#include <linux/highmem.h>
#include <linux/slab.h>
#include <linux/spinlock.h>
#include <linux/vmalloc.h>
#include <linux/sched.h>
#include <asm/dma.h>
#include <asm/pgalloc.h>
static void * __ref __earlyonly_bootmem_alloc(int node,
unsigned long size,
unsigned long align,
unsigned long goal)
{ … }
void * __meminit vmemmap_alloc_block(unsigned long size, int node)
{ … }
static void * __meminit altmap_alloc_block_buf(unsigned long size,
struct vmem_altmap *altmap);
void * __meminit vmemmap_alloc_block_buf(unsigned long size, int node,
struct vmem_altmap *altmap)
{ … }
static unsigned long __meminit vmem_altmap_next_pfn(struct vmem_altmap *altmap)
{ … }
static unsigned long __meminit vmem_altmap_nr_free(struct vmem_altmap *altmap)
{ … }
static void * __meminit altmap_alloc_block_buf(unsigned long size,
struct vmem_altmap *altmap)
{ … }
void __meminit vmemmap_verify(pte_t *pte, int node,
unsigned long start, unsigned long end)
{ … }
pte_t * __meminit vmemmap_pte_populate(pmd_t *pmd, unsigned long addr, int node,
struct vmem_altmap *altmap,
struct page *reuse)
{ … }
static void * __meminit vmemmap_alloc_block_zero(unsigned long size, int node)
{ … }
pmd_t * __meminit vmemmap_pmd_populate(pud_t *pud, unsigned long addr, int node)
{ … }
void __weak __meminit pmd_init(void *addr)
{ … }
pud_t * __meminit vmemmap_pud_populate(p4d_t *p4d, unsigned long addr, int node)
{ … }
void __weak __meminit pud_init(void *addr)
{ … }
p4d_t * __meminit vmemmap_p4d_populate(pgd_t *pgd, unsigned long addr, int node)
{ … }
pgd_t * __meminit vmemmap_pgd_populate(unsigned long addr, int node)
{ … }
static pte_t * __meminit vmemmap_populate_address(unsigned long addr, int node,
struct vmem_altmap *altmap,
struct page *reuse)
{ … }
static int __meminit vmemmap_populate_range(unsigned long start,
unsigned long end, int node,
struct vmem_altmap *altmap,
struct page *reuse)
{ … }
int __meminit vmemmap_populate_basepages(unsigned long start, unsigned long end,
int node, struct vmem_altmap *altmap)
{ … }
void __weak __meminit vmemmap_set_pmd(pmd_t *pmd, void *p, int node,
unsigned long addr, unsigned long next)
{ … }
int __weak __meminit vmemmap_check_pmd(pmd_t *pmd, int node,
unsigned long addr, unsigned long next)
{ … }
int __meminit vmemmap_populate_hugepages(unsigned long start, unsigned long end,
int node, struct vmem_altmap *altmap)
{ … }
#ifndef vmemmap_populate_compound_pages
static bool __meminit reuse_compound_section(unsigned long start_pfn,
struct dev_pagemap *pgmap)
{ … }
static pte_t * __meminit compound_section_tail_page(unsigned long addr)
{ … }
static int __meminit vmemmap_populate_compound_pages(unsigned long start_pfn,
unsigned long start,
unsigned long end, int node,
struct dev_pagemap *pgmap)
{ … }
#endif
struct page * __meminit __populate_section_memmap(unsigned long pfn,
unsigned long nr_pages, int nid, struct vmem_altmap *altmap,
struct dev_pagemap *pgmap)
{ … }