lkml.org 
[lkml]   [2008]   [Mar]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[PATCH 2/5] [PPC] htab_remove_mapping() error handling
    From
    Date
    If the sub-arch doesn't support hpte_removebolted(), gracefully
    return failure rather than success.

    Signed-off-by: Badari Pulavarty <pbadari@us.ibm.com>
    ---
    arch/powerpc/mm/hash_utils_64.c | 14 +++++++++-----
    include/asm-powerpc/sparsemem.h | 2 +-
    2 files changed, 10 insertions(+), 6 deletions(-)

    Index: linux-2.6.25-rc3/arch/powerpc/mm/hash_utils_64.c
    ===================================================================
    --- linux-2.6.25-rc3.orig/arch/powerpc/mm/hash_utils_64.c 2008-03-05 10:14:28.000000000 -0800
    +++ linux-2.6.25-rc3/arch/powerpc/mm/hash_utils_64.c 2008-03-05 10:18:55.000000000 -0800
    @@ -192,7 +192,7 @@ int htab_bolt_mapping(unsigned long vsta
    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
    step = 1 << shift;

    if (!ppc_md.hpte_removebolted) {
    - printk("Sub-arch doesn't implement hpte_removebolted\n");
    - return;
    + printk(KERN_WARNING "Sub-arch 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,
    @@ -449,9 +452,10 @@ void create_section_mapping(unsigned lon
    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 */

    Index: linux-2.6.25-rc3/include/asm-powerpc/sparsemem.h
    ===================================================================
    --- linux-2.6.25-rc3.orig/include/asm-powerpc/sparsemem.h 2008-03-05 10:14:31.000000000 -0800
    +++ linux-2.6.25-rc3/include/asm-powerpc/sparsemem.h 2008-03-05 10:19:09.000000000 -0800
    @@ -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



    \
     
     \ /
      Last update: 2008-03-28 00:39    [W:0.023 / U:60.696 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site