lkml.org 
[lkml]   [2010]   [May]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 02/22] lmb: Seperate region array from lmb_region struct
    Date
    lmb_init() will connect them back.
    Add nr_regions in struct lmb_region to track region array size.

    So later We can install dynamically allocated region array to that pointer

    Signed-off-by: Yinghai Lu <yinghai@kernel.org>
    Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    ---
    include/linux/lmb.h | 3 ++-
    mm/lmb.c | 9 ++++++++-
    2 files changed, 10 insertions(+), 2 deletions(-)

    diff --git a/include/linux/lmb.h b/include/linux/lmb.h
    index f3d1433..e14ea8d 100644
    --- a/include/linux/lmb.h
    +++ b/include/linux/lmb.h
    @@ -26,7 +26,8 @@ struct lmb_property {
    struct lmb_region {
    unsigned long cnt;
    u64 size;
    - struct lmb_property region[MAX_LMB_REGIONS+1];
    + struct lmb_property *region;
    + unsigned long nr_regions;
    };

    struct lmb {
    diff --git a/mm/lmb.c b/mm/lmb.c
    index b1fc526..d49c589 100644
    --- a/mm/lmb.c
    +++ b/mm/lmb.c
    @@ -18,6 +18,8 @@
    #define LMB_ALLOC_ANYWHERE 0

    struct lmb lmb;
    +static struct lmb_property lmb_memory_region[MAX_LMB_REGIONS];
    +static struct lmb_property lmb_reserved_region[MAX_LMB_REGIONS];

    static int lmb_debug;

    @@ -106,6 +108,11 @@ static void lmb_coalesce_regions(struct lmb_region *rgn,

    void __init lmb_init(void)
    {
    + lmb.memory.region = lmb_memory_region;
    + lmb.reserved.region = lmb_reserved_region;
    + lmb.memory.nr_regions = ARRAY_SIZE(lmb_memory_region);
    + lmb.reserved.nr_regions = ARRAY_SIZE(lmb_reserved_region);
    +
    /* Create a dummy zero size LMB which will get coalesced away later.
    * This simplifies the lmb_add() code below...
    */
    @@ -169,7 +176,7 @@ static long lmb_add_region(struct lmb_region *rgn, u64 base, u64 size)

    if (coalesced)
    return coalesced;
    - if (rgn->cnt >= MAX_LMB_REGIONS)
    + if (rgn->cnt > rgn->nr_regions)
    return -1;

    /* Couldn't coalesce the LMB, so add it to the sorted table. */
    --
    1.6.4.2


    \
     
     \ /
      Last update: 2010-05-08 17:25    [W:2.634 / U:0.624 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site