lkml.org 
[lkml]   [2010]   [Jun]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 07/25] lmb: Add lmb_find_in_range()
    Date
    it is a wrapper for lmb_find_base

    make it more easy for x86 to use lmb. ( rebase )
    x86 early_res is using find/reserve pattern instead of alloc.

    keep it in weak version, so later We can use x86 own version if needed.
    also We need it in lib/lmb.c, so one caller mm/page_alloc.c could get compiled

    -v2: Change name to lmb_find_in_range() according to Michael Ellerman
    -v3: Add generic weak version __lmb_find_in_range()
    so keep the path for fallback to x86 version that handle from low
    -v4: use 0 for failing path
    -v5: use LMB_ERROR again
    -v6: remove __lmb_find_in_range()

    Signed-off-by: Yinghai Lu <yinghai@kernel.org>
    ---
    include/linux/lmb.h | 2 ++
    lib/lmb.c | 8 ++++++++
    2 files changed, 10 insertions(+), 0 deletions(-)

    diff --git a/include/linux/lmb.h b/include/linux/lmb.h
    index 5310c7b..6ca5659 100644
    --- a/include/linux/lmb.h
    +++ b/include/linux/lmb.h
    @@ -45,6 +45,8 @@ extern int lmb_debug;
    extern int lmb_can_resize;
    extern struct lmb_region lmb_reserved_init_regions[];

    +u64 lmb_find_in_range(u64 start, u64 end, u64 size, u64 align);
    +
    extern void __init lmb_init(void);
    extern void __init lmb_analyze(void);
    extern long lmb_add(phys_addr_t base, phys_addr_t size);
    diff --git a/lib/lmb.c b/lib/lmb.c
    index e45e967..2e00159 100644
    --- a/lib/lmb.c
    +++ b/lib/lmb.c
    @@ -156,6 +156,14 @@ static phys_addr_t __init lmb_find_base(phys_addr_t size, phys_addr_t align,
    return LMB_ERROR;
    }

    +/*
    + * Find a free area with specified alignment in a specific range.
    + */
    +u64 __init __weak lmb_find_in_range(u64 start, u64 end, u64 size, u64 align)
    +{
    + return lmb_find_base(size, align, start, end);
    +}
    +
    static void __init_lmb lmb_remove_region(struct lmb_type *type, unsigned long r)
    {
    unsigned long i;
    --
    1.6.4.2


    \
     
     \ /
      Last update: 2010-06-22 19:31    [W:0.025 / U:30.104 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site