Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751789Ab0DMD5e (ORCPT ); Mon, 12 Apr 2010 23:57:34 -0400 Received: from gate.crashing.org ([63.228.1.57]:39195 "EHLO gate.crashing.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751197Ab0DMD5c (ORCPT ); Mon, 12 Apr 2010 23:57:32 -0400 Subject: Re: [PATCH 05/39] lmb: Seperate region array from lmb_region struct From: Benjamin Herrenschmidt To: Yinghai Lu Cc: Ingo Molnar , Thomas Gleixner , "H. Peter Anvin" , Andrew Morton , David Miller , Linus Torvalds , Johannes Weiner , linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org In-Reply-To: <1270793048-23796-6-git-send-email-yinghai@kernel.org> References: <1270793048-23796-1-git-send-email-yinghai@kernel.org> <1270793048-23796-6-git-send-email-yinghai@kernel.org> Content-Type: text/plain; charset="UTF-8" Date: Tue, 13 Apr 2010 13:56:09 +1000 Message-ID: <1271130969.13059.49.camel@pasglop> Mime-Version: 1.0 X-Mailer: Evolution 2.28.1 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2242 Lines: 70 On Thu, 2010-04-08 at 23:03 -0700, Yinghai Lu wrote: > 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 Acked-by: Benjamin Herrenschmidt > --- > 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. */ -- 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/