diff options
author | Badari Pulavarty <pbadari@us.ibm.com> | 2008-03-28 11:37:21 +1100 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2008-04-01 20:43:08 +1100 |
commit | 52db9b44262754bad1b0456d27a862a46cc7f893 (patch) | |
tree | 146cab5692c5bdc08ac18607e6e5f4626634ba7a | |
parent | 3faac21546f5b213cda490d45fe5927d713e44f1 (diff) |
[POWERPC] Add error return from htab_remove_mapping()
If the platform doesn't support hpte_removebolted(), gracefully
return failure rather than success.
Signed-off-by: Badari Pulavarty <pbadari@us.ibm.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
-rw-r--r-- | arch/powerpc/mm/hash_utils_64.c | 14 | ||||
-rw-r--r-- | include/asm-powerpc/sparsemem.h | 2 |
2 files changed, 10 insertions, 6 deletions
diff --git a/arch/powerpc/mm/hash_utils_64.c b/arch/powerpc/mm/hash_utils_64.c index c2e5f61788b..2f3dfcc7cdd 100644 --- a/arch/powerpc/mm/hash_utils_64.c +++ b/arch/powerpc/mm/hash_utils_64.c @@ -192,7 +192,7 @@ int htab_bolt_mapping(unsigned long vstart, unsigned long vend, return ret < 0 ? ret : 0; } -static void htab_remove_mapping(unsigned long vstart, unsigned long vend, +static int htab_remove_mapping(unsigned long vstart, unsigned long vend, int psize, int ssize) { unsigned long vaddr; @@ -202,12 +202,15 @@ static void htab_remove_mapping(unsigned long vstart, unsigned long vend, step = 1 << shift; if (!ppc_md.hpte_removebolted) { - printk("Sub-arch doesn't implement hpte_removebolted\n"); - return; + printk(KERN_WARNING "Platform doesn't implement " + "hpte_removebolted\n"); + return -EINVAL; } for (vaddr = vstart; vaddr < vend; vaddr += step) ppc_md.hpte_removebolted(vaddr, psize, ssize); + + return 0; } static int __init htab_dt_scan_seg_sizes(unsigned long node, @@ -454,9 +457,10 @@ void create_section_mapping(unsigned long start, unsigned long end) mmu_linear_psize, mmu_kernel_ssize)); } -void remove_section_mapping(unsigned long start, unsigned long end) +int remove_section_mapping(unsigned long start, unsigned long end) { - htab_remove_mapping(start, end, mmu_linear_psize, mmu_kernel_ssize); + return htab_remove_mapping(start, end, mmu_linear_psize, + mmu_kernel_ssize); } #endif /* CONFIG_MEMORY_HOTPLUG */ diff --git a/include/asm-powerpc/sparsemem.h b/include/asm-powerpc/sparsemem.h index c5acf4ccf57..9aea8e9f0bd 100644 --- a/include/asm-powerpc/sparsemem.h +++ b/include/asm-powerpc/sparsemem.h @@ -15,7 +15,7 @@ #ifdef CONFIG_MEMORY_HOTPLUG extern void create_section_mapping(unsigned long start, unsigned long end); -extern void remove_section_mapping(unsigned long start, unsigned long end); +extern int remove_section_mapping(unsigned long start, unsigned long end); #ifdef CONFIG_NUMA extern int hot_add_scn_to_nid(unsigned long scn_addr); #else |