From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: Re: [PATCH v3 8/8] xen: arm: allocate more than one bank for 1:1 domain 0 if needed Date: Fri, 27 Jun 2014 12:54:01 +0100 Message-ID: <53AD5B59.8020207@linaro.org> References: <1403777793.16595.21.camel@kazak.uk.xensource.com> <1403777837-16779-8-git-send-email-ian.campbell@citrix.com> <53AC6480.6080306@linaro.org> <1403861047.32314.15.camel@kazak.uk.xensource.com> <53AD47EE.4000106@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; Format="flowed" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <53AD47EE.4000106@linaro.org> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Ian Campbell Cc: stefano.stabellini@eu.citrix.com, tim@xen.org, xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org On 27/06/14 11:31, Julien Grall wrote: > Hi Ian, > > On 27/06/14 10:24, Ian Campbell wrote: >>> This has to be: bits <= (...). Indeed, we want to try all possible zone. >> >> Damn. I tested this on midway with "dom0_mem=128M mem=1G" and saw a >> failure (which is fixed in this iteration). But obviously midway and >> vexpress differ in their physical RAM addresses which caused me to miss >> this second failure. >> >> Have you tried that change? bits < 32 gives you 32-bits (i.e. 0..31) >> which should cover everything up to 4G. Or else I'm misremembering some >> quirk of the allocation interface. > > Yes, without the change "<=" I was unable to allocate the first bank. > > The memory layout is > (XEN) Checking for initrd in /chosen > (XEN) RAM: 0000000080000000 - 000000009fffffff > (XEN) RAM: 00000000a0000000 - 00000000bfffffff > (XEN) > (XEN) MODULE[1]: 000000009fee6000 - 000000009feea000 > (XEN) MODULE[2]: 00000000a0008000 - 00000000a033f458 > (XEN) RESVD[0]: 0000000081f00000 - 0000000081f04000 > (XEN) RESVD[1]: 000000009fee6000 - 000000009feea000 > >> Does vexpress really have memory high enough up that excluding bits==32 >> excludes it? I thought it was down in the 1-3GB range. > > The first bank allocating is situated just above 2GB > BANK[0] 0x000000a8000000-0x000000b0000000 I've dump my heap just after end_bootallocator. And it doesn't look right: (XEN) heap[node=0][zone=0] -> 32763 pages (XEN) heap[node=0][zone=1] -> 0 pages (XEN) heap[node=0][zone=2] -> 0 pages (XEN) heap[node=0][zone=3] -> 0 pages (XEN) heap[node=0][zone=4] -> 0 pages (XEN) heap[node=0][zone=5] -> 0 pages (XEN) heap[node=0][zone=6] -> 0 pages (XEN) heap[node=0][zone=7] -> 0 pages (XEN) heap[node=0][zone=8] -> 0 pages (XEN) heap[node=0][zone=9] -> 0 pages (XEN) heap[node=0][zone=10] -> 0 pages (XEN) heap[node=0][zone=11] -> 0 pages (XEN) heap[node=0][zone=12] -> 0 pages (XEN) heap[node=0][zone=13] -> 0 pages (XEN) heap[node=0][zone=14] -> 0 pages (XEN) heap[node=0][zone=15] -> 0 pages (XEN) heap[node=0][zone=16] -> 0 pages (XEN) heap[node=0][zone=17] -> 0 pages (XEN) heap[node=0][zone=18] -> 0 pages (XEN) heap[node=0][zone=19] -> 0 pages (XEN) heap[node=0][zone=20] -> 219840 pages (XEN) heap[node=0][zone=21] -> 0 pages (XEN) heap[node=0][zone=22] -> 0 pages (XEN) heap[node=0][zone=23] -> 0 pages (XEN) heap[node=0][zone=24] -> 0 pages (XEN) heap[node=0][zone=25] -> 0 pages (XEN) heap[node=0][zone=26] -> 0 pages (XEN) heap[node=0][zone=27] -> 0 pages (XEN) heap[node=0][zone=28] -> 0 pages For comparison midway: (XEN) RAM: 0000000000000000 - 00000000ff7fffff (XEN) RAM: 0000000200000000 - 00000002ffffffff (XEN) (XEN) MODULE[1]: 0000000000001000 - 0000000000006000 (XEN) MODULE[2]: 0000000001000000 - 00000000012c31a8 (XEN) RESVD[0]: 0000000000000000 - 0000000000001000 (XEN) RESVD[1]: 0000000000001000 - 0000000000003000 (XEN) heap[node=0][zone=0] -> 262138 pages (XEN) heap[node=0][zone=1] -> 0 pages (XEN) heap[node=0][zone=2] -> 0 pages (XEN) heap[node=0][zone=3] -> 2 pages (XEN) heap[node=0][zone=4] -> 8 pages (XEN) heap[node=0][zone=5] -> 16 pages (XEN) heap[node=0][zone=6] -> 32 pages (XEN) heap[node=0][zone=7] -> 64 pages (XEN) heap[node=0][zone=8] -> 128 pages (XEN) heap[node=0][zone=9] -> 256 pages (XEN) heap[node=0][zone=10] -> 512 pages (XEN) heap[node=0][zone=11] -> 1024 pages (XEN) heap[node=0][zone=12] -> 2048 pages (XEN) heap[node=0][zone=13] -> 3388 pages (XEN) heap[node=0][zone=14] -> 8192 pages (XEN) heap[node=0][zone=15] -> 16384 pages (XEN) heap[node=0][zone=16] -> 32768 pages (XEN) heap[node=0][zone=17] -> 65536 pages (XEN) heap[node=0][zone=18] -> 131072 pages (XEN) heap[node=0][zone=19] -> 262144 pages (XEN) heap[node=0][zone=20] -> 259584 pages (XEN) heap[node=0][zone=21] -> 0 pages (XEN) heap[node=0][zone=22] -> 1024000 pages (XEN) heap[node=0][zone=23] -> 0 pages (XEN) heap[node=0][zone=24] -> 0 pages (XEN) heap[node=0][zone=25] -> 0 pages (XEN) heap[node=0][zone=26] -> 0 pages (XEN) heap[node=0][zone=27] -> 0 pages (XEN) heap[node=0][zone=28] -> 0 pages Arndale: (XEN) RAM: 0000000040000000 - 000000004fffffff (XEN) RAM: 0000000050000000 - 000000005fffffff (XEN) RAM: 0000000060000000 - 000000006fffffff (XEN) RAM: 0000000070000000 - 000000007fffffff (XEN) RAM: 0000000080000000 - 000000008fffffff (XEN) RAM: 0000000090000000 - 000000009fffffff (XEN) RAM: 00000000a0000000 - 00000000afffffff (XEN) RAM: 00000000b0000000 - 00000000bfffffff (XEN) (XEN) MODULE[1]: 000000004fff3000 - 0000000050000000 (XEN) MODULE[2]: 0000000040f00000 - 0000000041900000 (XEN) RESVD[0]: 0000000042000000 - 000000004200a000 (XEN) heap[node=0][zone=0] -> 65522 pages (XEN) heap[node=0][zone=1] -> 0 pages (XEN) heap[node=0][zone=2] -> 0 pages (XEN) heap[node=0][zone=3] -> 0 pages (XEN) heap[node=0][zone=4] -> 0 pages (XEN) heap[node=0][zone=5] -> 0 pages (XEN) heap[node=0][zone=6] -> 0 pages (XEN) heap[node=0][zone=7] -> 0 pages (XEN) heap[node=0][zone=8] -> 0 pages (XEN) heap[node=0][zone=9] -> 0 pages (XEN) heap[node=0][zone=10] -> 0 pages (XEN) heap[node=0][zone=11] -> 0 pages (XEN) heap[node=0][zone=12] -> 0 pages (XEN) heap[node=0][zone=13] -> 0 pages (XEN) heap[node=0][zone=14] -> 0 pages (XEN) heap[node=0][zone=15] -> 0 pages (XEN) heap[node=0][zone=16] -> 0 pages (XEN) heap[node=0][zone=17] -> 0 pages (XEN) heap[node=0][zone=18] -> 0 pages (XEN) heap[node=0][zone=19] -> 259561 pages (XEN) heap[node=0][zone=20] -> 187904 pages (XEN) heap[node=0][zone=21] -> 0 pages (XEN) heap[node=0][zone=22] -> 0 pages (XEN) heap[node=0][zone=23] -> 0 pages (XEN) heap[node=0][zone=24] -> 0 pages (XEN) heap[node=0][zone=25] -> 0 pages (XEN) heap[node=0][zone=26] -> 0 pages (XEN) heap[node=0][zone=27] -> 0 pages (XEN) heap[node=0][zone=28] -> 0 pages -- Julien Grall