From 52db9b44262754bad1b0456d27a862a46cc7f893 Mon Sep 17 00:00:00 2001 From: Badari Pulavarty Date: Fri, 28 Mar 2008 11:37:21 +1100 Subject: [PATCH] [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 Signed-off-by: Paul Mackerras --- arch/powerpc/mm/hash_utils_64.c | 14 +++++++++----- 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 c2e5f61788b0..2f3dfcc7cdd3 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 c5acf4ccf571..9aea8e9f0bd1 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