浏览代码

powerpc/mm: add radix__create_section_mapping()

Wire up memory hotplug page mapping for radix. Share the mapping
function already used by radix_init_pgtable().

Signed-off-by: Reza Arbab <arbab@linux.vnet.ibm.com>
Acked-by: Balbir Singh <bsingharora@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Reza Arbab 8 年之前
父节点
当前提交
6cc27341b2
共有 3 个文件被更改,包括 12 次插入1 次删除
  1. 4 0
      arch/powerpc/include/asm/book3s/64/radix.h
  2. 1 1
      arch/powerpc/mm/pgtable-book3s64.c
  3. 7 0
      arch/powerpc/mm/pgtable-radix.c

+ 4 - 0
arch/powerpc/include/asm/book3s/64/radix.h

@@ -291,5 +291,9 @@ static inline unsigned long radix__get_tree_size(void)
 	}
 	}
 	return rts_field;
 	return rts_field;
 }
 }
+
+#ifdef CONFIG_MEMORY_HOTPLUG
+int radix__create_section_mapping(unsigned long start, unsigned long end);
+#endif /* CONFIG_MEMORY_HOTPLUG */
 #endif /* __ASSEMBLY__ */
 #endif /* __ASSEMBLY__ */
 #endif
 #endif

+ 1 - 1
arch/powerpc/mm/pgtable-book3s64.c

@@ -131,7 +131,7 @@ void mmu_cleanup_all(void)
 int create_section_mapping(unsigned long start, unsigned long end)
 int create_section_mapping(unsigned long start, unsigned long end)
 {
 {
 	if (radix_enabled())
 	if (radix_enabled())
-		return -ENODEV;
+		return radix__create_section_mapping(start, end);
 
 
 	return hash__create_section_mapping(start, end);
 	return hash__create_section_mapping(start, end);
 }
 }

+ 7 - 0
arch/powerpc/mm/pgtable-radix.c

@@ -481,6 +481,13 @@ void radix__setup_initial_memory_limit(phys_addr_t first_memblock_base,
 	memblock_set_current_limit(first_memblock_base + first_memblock_size);
 	memblock_set_current_limit(first_memblock_base + first_memblock_size);
 }
 }
 
 
+#ifdef CONFIG_MEMORY_HOTPLUG
+int __ref radix__create_section_mapping(unsigned long start, unsigned long end)
+{
+	return create_physical_mapping(start, end);
+}
+#endif /* CONFIG_MEMORY_HOTPLUG */
+
 #ifdef CONFIG_SPARSEMEM_VMEMMAP
 #ifdef CONFIG_SPARSEMEM_VMEMMAP
 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,