[PATCH 05/24] lmb: Seperate region array from lmb_region struct

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Yinghai Lu
Date: Friday, March 26, 2010 - 3:21 pm

lmb_init() will connect them back.

Add nr_regions in struct lmb_region to track region array size.

Signed-off-by: Yinghai Lu <yinghai@kernel.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..65b62dc 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 + 1];
+static 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

--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[PATCH -v8 00/24] use lmb with x86, Yinghai Lu, (Fri Mar 26, 3:21 pm)
[PATCH 04/24] lmb: Move lmb.c to mm/, Yinghai Lu, (Fri Mar 26, 3:21 pm)
[PATCH 05/24] lmb: Seperate region array from lmb_region s ..., Yinghai Lu, (Fri Mar 26, 3:21 pm)
[PATCH 06/24] lmb: Add find_lmb_area(), Yinghai Lu, (Fri Mar 26, 3:21 pm)
[PATCH 10/24] lmb: Add lmb_to_bootmem(), Yinghai Lu, (Fri Mar 26, 3:21 pm)
[PATCH 11/24] lmb: Add get_free_all_memory_range(), Yinghai Lu, (Fri Mar 26, 3:21 pm)
[PATCH 16/24] lmb: Add lmb_free_memory_size(), Yinghai Lu, (Fri Mar 26, 3:21 pm)
[PATCH 17/24] lmb: Add lmb_memory_size(), Yinghai Lu, (Fri Mar 26, 3:21 pm)
[PATCH 18/24] lmb: Add reserve_lmb_overlap_ok(), Yinghai Lu, (Fri Mar 26, 3:21 pm)
[PATCH 19/24] x86: Add sanitize_e820_map(), Yinghai Lu, (Fri Mar 26, 3:21 pm)
[PATCH 20/24] x86: Use lmb to replace early_res, Yinghai Lu, (Fri Mar 26, 3:21 pm)
[PATCH 22/24] x86: Remove not used early_res code, Yinghai Lu, (Fri Mar 26, 3:21 pm)
[PATCH 24/24] x86: Align e820 ram range to page, Yinghai Lu, (Fri Mar 26, 3:21 pm)
Re: [PATCH 03/24] x86: Do not free zero sized per cpu areas, Johannes Weiner, (Fri Mar 26, 4:42 pm)
Re: [PATCH 03/24] x86: Do not free zero sized per cpu areas, Johannes Weiner, (Fri Mar 26, 4:54 pm)
[patch v5] x86: page-alin initrd area size, Johannes Weiner, (Sun Mar 28, 4:35 pm)
Re: [patch v5] x86: page-alin initrd area size, Yinghai Lu, (Sun Mar 28, 5:41 pm)