Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756361Ab0DIGJO (ORCPT ); Fri, 9 Apr 2010 02:09:14 -0400 Received: from acsinet11.oracle.com ([141.146.126.233]:19701 "EHLO acsinet11.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755575Ab0DIGHW (ORCPT ); Fri, 9 Apr 2010 02:07:22 -0400 From: Yinghai Lu To: Ingo Molnar , Thomas Gleixner , "H. Peter Anvin" , Andrew Morton Cc: David Miller , Benjamin Herrenschmidt , Linus Torvalds , Johannes Weiner , linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org, Yinghai Lu Subject: [PATCH 05/39] lmb: Seperate region array from lmb_region struct Date: Thu, 8 Apr 2010 23:03:34 -0700 Message-Id: <1270793048-23796-6-git-send-email-yinghai@kernel.org> X-Mailer: git-send-email 1.6.4.2 In-Reply-To: <1270793048-23796-1-git-send-email-yinghai@kernel.org> References: <1270793048-23796-1-git-send-email-yinghai@kernel.org> X-Source-IP: acsmt353.oracle.com [141.146.40.153] X-Auth-Type: Internal IP X-CT-RefId: str=0001.0A090208.4BBEC3E0.00D9,ss=1,fgs=0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2020 Lines: 67 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 --- 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 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/