diff options
Diffstat (limited to 'drivers/base/arch_numa.c')
| -rw-r--r-- | drivers/base/arch_numa.c | 68 | 
1 files changed, 2 insertions, 66 deletions
| diff --git a/drivers/base/arch_numa.c b/drivers/base/arch_numa.c index bc1876915457..eaa31e567d1e 100644 --- a/drivers/base/arch_numa.c +++ b/drivers/base/arch_numa.c @@ -14,7 +14,6 @@  #include <linux/of.h>  #include <asm/sections.h> -#include <asm/pgalloc.h>  struct pglist_data *node_data[MAX_NUMNODES] __read_mostly;  EXPORT_SYMBOL(node_data); @@ -155,66 +154,6 @@ static int __init pcpu_cpu_distance(unsigned int from, unsigned int to)  	return node_distance(early_cpu_to_node(from), early_cpu_to_node(to));  } -static void * __init pcpu_fc_alloc(unsigned int cpu, size_t size, -				       size_t align) -{ -	int nid = early_cpu_to_node(cpu); - -	return  memblock_alloc_try_nid(size, align, -			__pa(MAX_DMA_ADDRESS), MEMBLOCK_ALLOC_ACCESSIBLE, nid); -} - -static void __init pcpu_fc_free(void *ptr, size_t size) -{ -	memblock_free(ptr, size); -} - -#ifdef CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK -static void __init pcpu_populate_pte(unsigned long addr) -{ -	pgd_t *pgd = pgd_offset_k(addr); -	p4d_t *p4d; -	pud_t *pud; -	pmd_t *pmd; - -	p4d = p4d_offset(pgd, addr); -	if (p4d_none(*p4d)) { -		pud_t *new; - -		new = memblock_alloc(PAGE_SIZE, PAGE_SIZE); -		if (!new) -			goto err_alloc; -		p4d_populate(&init_mm, p4d, new); -	} - -	pud = pud_offset(p4d, addr); -	if (pud_none(*pud)) { -		pmd_t *new; - -		new = memblock_alloc(PAGE_SIZE, PAGE_SIZE); -		if (!new) -			goto err_alloc; -		pud_populate(&init_mm, pud, new); -	} - -	pmd = pmd_offset(pud, addr); -	if (!pmd_present(*pmd)) { -		pte_t *new; - -		new = memblock_alloc(PAGE_SIZE, PAGE_SIZE); -		if (!new) -			goto err_alloc; -		pmd_populate_kernel(&init_mm, pmd, new); -	} - -	return; - -err_alloc: -	panic("%s: Failed to allocate %lu bytes align=%lx from=%lx\n", -	      __func__, PAGE_SIZE, PAGE_SIZE, PAGE_SIZE); -} -#endif -  void __init setup_per_cpu_areas(void)  {  	unsigned long delta; @@ -229,7 +168,7 @@ void __init setup_per_cpu_areas(void)  		rc = pcpu_embed_first_chunk(PERCPU_MODULE_RESERVE,  					    PERCPU_DYNAMIC_RESERVE, PAGE_SIZE,  					    pcpu_cpu_distance, -					    pcpu_fc_alloc, pcpu_fc_free); +					    early_cpu_to_node);  #ifdef CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK  		if (rc < 0)  			pr_warn("PERCPU: %s allocator failed (%d), falling back to page size\n", @@ -239,10 +178,7 @@ void __init setup_per_cpu_areas(void)  #ifdef CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK  	if (rc < 0) -		rc = pcpu_page_first_chunk(PERCPU_MODULE_RESERVE, -					   pcpu_fc_alloc, -					   pcpu_fc_free, -					   pcpu_populate_pte); +		rc = pcpu_page_first_chunk(PERCPU_MODULE_RESERVE, early_cpu_to_node);  #endif  	if (rc < 0)  		panic("Failed to initialize percpu areas (err=%d).", rc); |