Commit 29ab6c47 authored by Nicholas Piggin's avatar Nicholas Piggin Committed by Michael Ellerman

powerpc/mm: Pass node id into create_section_mapping

Signed-off-by: default avatarNicholas Piggin <npiggin@gmail.com>
[mpe: Move __map_kernel_page_nid() inside #ifdef SPARSEMEM_VMEMMAP]
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
parent 2ad452ff
...@@ -201,7 +201,7 @@ extern int __meminit hash__vmemmap_create_mapping(unsigned long start, ...@@ -201,7 +201,7 @@ extern int __meminit hash__vmemmap_create_mapping(unsigned long start,
extern void hash__vmemmap_remove_mapping(unsigned long start, extern void hash__vmemmap_remove_mapping(unsigned long start,
unsigned long page_size); unsigned long page_size);
int hash__create_section_mapping(unsigned long start, unsigned long end); int hash__create_section_mapping(unsigned long start, unsigned long end, int nid);
int hash__remove_section_mapping(unsigned long start, unsigned long end); int hash__remove_section_mapping(unsigned long start, unsigned long end);
#endif /* !__ASSEMBLY__ */ #endif /* !__ASSEMBLY__ */
......
...@@ -313,7 +313,7 @@ static inline unsigned long radix__get_tree_size(void) ...@@ -313,7 +313,7 @@ static inline unsigned long radix__get_tree_size(void)
} }
#ifdef CONFIG_MEMORY_HOTPLUG #ifdef CONFIG_MEMORY_HOTPLUG
int radix__create_section_mapping(unsigned long start, unsigned long end); int radix__create_section_mapping(unsigned long start, unsigned long end, int nid);
int radix__remove_section_mapping(unsigned long start, unsigned long end); int radix__remove_section_mapping(unsigned long start, unsigned long end);
#endif /* CONFIG_MEMORY_HOTPLUG */ #endif /* CONFIG_MEMORY_HOTPLUG */
#endif /* __ASSEMBLY__ */ #endif /* __ASSEMBLY__ */
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
#endif /* CONFIG_SPARSEMEM */ #endif /* CONFIG_SPARSEMEM */
#ifdef CONFIG_MEMORY_HOTPLUG #ifdef CONFIG_MEMORY_HOTPLUG
extern int create_section_mapping(unsigned long start, unsigned long end); extern int create_section_mapping(unsigned long start, unsigned long end, int nid);
extern int remove_section_mapping(unsigned long start, unsigned long end); extern int remove_section_mapping(unsigned long start, unsigned long end);
#ifdef CONFIG_PPC_BOOK3S_64 #ifdef CONFIG_PPC_BOOK3S_64
......
...@@ -781,7 +781,7 @@ void resize_hpt_for_hotplug(unsigned long new_mem_size) ...@@ -781,7 +781,7 @@ void resize_hpt_for_hotplug(unsigned long new_mem_size)
} }
} }
int hash__create_section_mapping(unsigned long start, unsigned long end) int hash__create_section_mapping(unsigned long start, unsigned long end, int nid)
{ {
int rc = htab_bolt_mapping(start, end, __pa(start), int rc = htab_bolt_mapping(start, end, __pa(start),
pgprot_val(PAGE_KERNEL), mmu_linear_psize, pgprot_val(PAGE_KERNEL), mmu_linear_psize,
......
...@@ -117,7 +117,7 @@ int memory_add_physaddr_to_nid(u64 start) ...@@ -117,7 +117,7 @@ int memory_add_physaddr_to_nid(u64 start)
} }
#endif #endif
int __weak create_section_mapping(unsigned long start, unsigned long end) int __weak create_section_mapping(unsigned long start, unsigned long end, int nid)
{ {
return -ENODEV; return -ENODEV;
} }
...@@ -137,7 +137,7 @@ int arch_add_memory(int nid, u64 start, u64 size, struct vmem_altmap *altmap, ...@@ -137,7 +137,7 @@ int arch_add_memory(int nid, u64 start, u64 size, struct vmem_altmap *altmap,
resize_hpt_for_hotplug(memblock_phys_mem_size()); resize_hpt_for_hotplug(memblock_phys_mem_size());
start = (unsigned long)__va(start); start = (unsigned long)__va(start);
rc = create_section_mapping(start, start + size); rc = create_section_mapping(start, start + size, nid);
if (rc) { if (rc) {
pr_warn("Unable to create mapping for hot added memory 0x%llx..0x%llx: %d\n", pr_warn("Unable to create mapping for hot added memory 0x%llx..0x%llx: %d\n",
start, start + size, rc); start, start + size, rc);
......
...@@ -155,12 +155,12 @@ void mmu_cleanup_all(void) ...@@ -155,12 +155,12 @@ void mmu_cleanup_all(void)
} }
#ifdef CONFIG_MEMORY_HOTPLUG #ifdef CONFIG_MEMORY_HOTPLUG
int create_section_mapping(unsigned long start, unsigned long end) int create_section_mapping(unsigned long start, unsigned long end, int nid)
{ {
if (radix_enabled()) if (radix_enabled())
return radix__create_section_mapping(start, end); return radix__create_section_mapping(start, end, nid);
return hash__create_section_mapping(start, end); return hash__create_section_mapping(start, end, nid);
} }
int remove_section_mapping(unsigned long start, unsigned long end) int remove_section_mapping(unsigned long start, unsigned long end)
......
...@@ -171,13 +171,6 @@ static int __map_kernel_page(unsigned long ea, unsigned long pa, ...@@ -171,13 +171,6 @@ static int __map_kernel_page(unsigned long ea, unsigned long pa,
return 0; return 0;
} }
static int __map_kernel_page_nid(unsigned long ea, unsigned long pa,
pgprot_t flags,
unsigned int map_page_size, int nid)
{
return __map_kernel_page(ea, pa, flags, map_page_size, nid, 0, 0);
}
int radix__map_kernel_page(unsigned long ea, unsigned long pa, int radix__map_kernel_page(unsigned long ea, unsigned long pa,
pgprot_t flags, pgprot_t flags,
unsigned int map_page_size) unsigned int map_page_size)
...@@ -860,9 +853,9 @@ static void remove_pagetable(unsigned long start, unsigned long end) ...@@ -860,9 +853,9 @@ static void remove_pagetable(unsigned long start, unsigned long end)
radix__flush_tlb_kernel_range(start, end); radix__flush_tlb_kernel_range(start, end);
} }
int __ref radix__create_section_mapping(unsigned long start, unsigned long end) int __ref radix__create_section_mapping(unsigned long start, unsigned long end, int nid)
{ {
return create_physical_mapping(start, end, -1); return create_physical_mapping(start, end, nid);
} }
int radix__remove_section_mapping(unsigned long start, unsigned long end) int radix__remove_section_mapping(unsigned long start, unsigned long end)
...@@ -873,6 +866,13 @@ int radix__remove_section_mapping(unsigned long start, unsigned long end) ...@@ -873,6 +866,13 @@ int radix__remove_section_mapping(unsigned long start, unsigned long end)
#endif /* CONFIG_MEMORY_HOTPLUG */ #endif /* CONFIG_MEMORY_HOTPLUG */
#ifdef CONFIG_SPARSEMEM_VMEMMAP #ifdef CONFIG_SPARSEMEM_VMEMMAP
static int __map_kernel_page_nid(unsigned long ea, unsigned long pa,
pgprot_t flags, unsigned int map_page_size,
int nid)
{
return __map_kernel_page(ea, pa, flags, map_page_size, nid, 0, 0);
}
int __meminit radix__vmemmap_create_mapping(unsigned long start, int __meminit radix__vmemmap_create_mapping(unsigned long start,
unsigned long page_size, unsigned long page_size,
unsigned long phys) unsigned long phys)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment