From mboxrd@z Thu Jan 1 00:00:00 1970 From: Keir Fraser Subject: Re: [PATCH 3/4] domain heap allocator changes - remove bit width restrictions Date: Fri, 23 Feb 2007 18:19:22 +0000 Message-ID: References: <45CA164E.76E4.0078.0@novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <45CA164E.76E4.0078.0@novell.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Jan Beulich , xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org On 7/2/07 17:11, "Jan Beulich" wrote: > Hide the (default or user specified) DMA width from anything outside > the heap allocator. I/O-capable guests can now request any width for > the memory they want exchanged/added. > > Signed-off-by: Jan Beulich Applied, but this patch turns the 'heap' list heads in page_alloc.c into a barking-mad three-dimensional array which will consume over 1MB of BSS on x86/64! As it happens it also confuses older versions of the PXELinux mboot module (at least v0.1) which fails to load the dom0 kernel image correctly. This array is going to have to become a dynamic-allocated and linked structure. Perhaps: struct list_head **heap_by_node[MAX_NUMNODES]; heap_by_node[node] = xmalloc_array(struct list_head **, nr_zones); heap_by_zone = heap_by_node[node]; /* type: list_head ** */ heap_by_zone[zone] = xmalloc_array(struct list_head, MAX_ORDER+1); heap_by_order = heap_by_zone[zone]; /* type: list_head * */ I.e., a double indirection to get to a particular heap list_head. Perhaps I'll take a look over the weekend... -- Keir