From: Julien Grall <julien.grall@citrix.com>
To: Jan Beulich <JBeulich@suse.com>, Ian Campbell <ian.campbell@citrix.com>
Cc: Wei Liu <wei.liu2@citrix.com>,
Stefano Stabellini <Stefano.Stabellini@eu.citrix.com>,
Andrew Cooper <andrew.cooper3@citrix.com>,
Tim Deegan <tim@xen.org>,
xen-devel <xen-devel@lists.xenproject.org>,
Keir Fraser <keir@xen.org>,
IanJackson <Ian.Jackson@eu.citrix.com>
Subject: Re: [PATCH] x86/NUMA: make init_node_heap() respect Xen heap limit
Date: Fri, 4 Sep 2015 12:29:59 +0100 [thread overview]
Message-ID: <55E980B7.4090100@citrix.com> (raw)
In-Reply-To: <55E97BD8020000780009F8D5@prv-mh.provo.novell.com>
Hi Jan,
On 04/09/15 10:09, Jan Beulich wrote:
>> "create_xen_entries: L2 failed" tells me, through code inspection rather
>> than usefulness of the logging, that alloc_xenheap_page has returned NULL.
>>
>> I think this is simply because all RAM on Mustang is at physical address
>> 128GB onwards or so, IOW the off by one error has resulted in the xenheap
>> appearing to be empty since all RAM above the limit.
Correct, the RAM bank is:
RAM: 0000004000000000 - 00000043ffffffff
As we expose only 38 bits now, it will hide all the RAM.
> Oh, I see - I made the (x86-biased, and hence wrong) assumption
> that with Julien mentioning only the ending MFN, the start of RAM
> would be at 0.
Sorry, I forgot to mention it in my mail. On ARM, RAM
are divided in memory banks which can start anywhere in the memory. When early printk
is enabled the RAM banks are one of the first things printed in the serial console.
Anyway, I tried your suggestion to dropped the call to xenheap_max_mfn when Xen
setups the xenheap for arm64 and it allows me to boot correctly Xen on X-gene.
See patch below, I can send the patch in a separate thread if necessary.
commit b11ab8e4982228d7944e11010f5b8eec890caf30
Author: Julien Grall <julien.grall@citrix.com>
Date: Thu Sep 3 21:49:31 2015 +0100
xen: pagealloc: Correctly calculate the number of xenheap bits
The commit 88e3ed61642bb393458acc7a9bd2f96edc337190 "x86/NUMA: make
init_node_heap() respect Xen heap limit" breaks boot on the arm64 board
X-Gene.
The xenheap bits variable is used to know the last RAM MFN always mapped
in Xen virtual memory. If the value is 0, it means that all the memory is
always mapped in Xen virtual memory.
On X-gene the RAM bank resides above 128GB and last xenheap MFN is
0x4400000. With the new way to calculate the number of bits, xenheap_bits
will be equal to 38 bits. This will result to hide all the RAM and the
impossibility to allocate xenheap memory.
Given that aarch64 have always all the memory mapped in Xen virtual
memory, it's not necessary to call xenheap_max_mfn which set the number
of bits.
Suggested-by: Jan Beulich <jbeulich@suse.com>
Signed-off-by: Julien Grall <julien.grall@citrix.com>
diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
index 6626eba..48f734f 100644
--- a/xen/arch/arm/setup.c
+++ b/xen/arch/arm/setup.c
@@ -665,7 +665,6 @@ static void __init setup_mm(unsigned long dtb_paddr, size_t dtb_size)
xenheap_virt_end = XENHEAP_VIRT_START + ram_end - ram_start;
xenheap_mfn_start = ram_start >> PAGE_SHIFT;
xenheap_mfn_end = ram_end >> PAGE_SHIFT;
- xenheap_max_mfn(xenheap_mfn_end);
/*
* Need enough mapped pages for copying the DTB.
--
Julien Grall
next prev parent reply other threads:[~2015-09-04 11:31 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-27 8:37 [PATCH] x86/NUMA: make init_node_heap() respect Xen heap limit Jan Beulich
2015-08-27 9:25 ` Wei Liu
2015-08-27 10:11 ` Andrew Cooper
2015-08-27 14:43 ` Wei Liu
2015-09-01 10:28 ` Ian Campbell
2015-09-03 20:01 ` Julien Grall
2015-09-03 20:58 ` Julien Grall
2015-09-04 7:37 ` Jan Beulich
2015-09-04 8:27 ` Ian Campbell
2015-09-04 8:39 ` Jan Beulich
2015-09-04 8:52 ` Ian Campbell
2015-09-04 9:09 ` Jan Beulich
2015-09-04 11:29 ` Julien Grall [this message]
2015-09-04 12:02 ` Jan Beulich
2015-09-04 12:05 ` Wei Liu
2015-09-04 12:50 ` Julien Grall
2015-09-04 12:57 ` Ian Campbell
2015-09-04 12:52 ` Ian Campbell
2015-09-04 12:53 ` Julien Grall
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=55E980B7.4090100@citrix.com \
--to=julien.grall@citrix.com \
--cc=Ian.Jackson@eu.citrix.com \
--cc=JBeulich@suse.com \
--cc=Stefano.Stabellini@eu.citrix.com \
--cc=andrew.cooper3@citrix.com \
--cc=ian.campbell@citrix.com \
--cc=keir@xen.org \
--cc=tim@xen.org \
--cc=wei.liu2@citrix.com \
--cc=xen-devel@lists.xenproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).