From: Yinghai Lu on 24 Mar 2010 06:50 lmb_init() connect them back. also add nr_regions in lmb_region to tack the region array size. -v3: seperate lmb core change to seperated patch -v4: according to Ingo, change >= x -1 to > x change region_array_size to nr_regions Signed-off-by: Yinghai Lu <yinghai(a)kernel.org> --- include/linux/lmb.h | 5 ++++- lib/lmb.c | 9 ++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/include/linux/lmb.h b/include/linux/lmb.h index f3d1433..37fd29e 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 { @@ -37,6 +38,8 @@ struct lmb { }; extern struct lmb lmb; +extern struct lmb_property lmb_memory_region[MAX_LMB_REGIONS + 1]; +extern struct lmb_property lmb_reserved_region[MAX_LMB_REGIONS + 1]; extern void __init lmb_init(void); extern void __init lmb_analyze(void); diff --git a/lib/lmb.c b/lib/lmb.c index b1fc526..ed4e433 100644 --- a/lib/lmb.c +++ b/lib/lmb.c @@ -18,6 +18,8 @@ #define LMB_ALLOC_ANYWHERE 0 struct lmb lmb; +struct lmb_property lmb_memory_region[MAX_LMB_REGIONS + 1]; +struct lmb_property lmb_reserved_region[MAX_LMB_REGIONS + 1]; 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 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|
Pages: 1 Prev: [PATCH -v4 00/08] use lmb with x86 Next: s390 patches for 2.6.34-rc2 |