From: Jeremy Fitzhardinge <jeremy@goop.org>
To: Thomas Schwinge <thomas@schwinge.name>
Cc: Ian Campbell <ijc@hellion.org.uk>,
xen-devel@lists.xensource.com,
Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Subject: Re: Debian linux-image-2.6.32-4-xen-amd64 2.6.32-11 doesn't boot with > 4 GiB; resets immediatelly, no log messages
Date: Wed, 28 Apr 2010 14:21:58 -0700 [thread overview]
Message-ID: <4BD8A6F6.4020809@goop.org> (raw)
In-Reply-To: <20100420111818.GA4416@kepler.schwinge.homeip.net>
On 04/20/2010 04:18 AM, Thomas Schwinge wrote:
> Hello!
>
> On Sat, Apr 10, 2010 at 03:52:45PM -0700, Jeremy Fitzhardinge wrote:
>
>> On 04/10/2010 03:13 PM, Thomas Schwinge wrote:
>>
>>>> Normally that would be OK, because it uses:
>>>>
>>>> __get_user(pfn, &machine_to_phys_mapping[mfn]);
>>>>
>>>> to dereference the array. But at this early stage, none of the kernel's
>>>> exception handlers have been set up, so this will just fault into Xen.
>>>>
>>>> It would be interesting to confirm this by building your kernel with
>>>> CONFIG_DEBUG_INFO=y in the .config, and verify that the faulting
>>>> instruction is actually this line.
>>>>
>>>>
>>> Bingo!
>>>
>> Excellent. Now I just need to work out how to do a proper manual limit
>> check on the mfn. (I've always been a bit suspicious of this code,
>> because there's no guarantee that a random invalid mfn *won't* happen to
>> return the pfn we're looking for...)
>>
> Any news already about this one?
>
Does this help?
J
From: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Subject: [PATCH] xen/core: don't bother trying to free pages beyond the ones Xen gave us
Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
diff --git a/arch/x86/xen/setup.c b/arch/x86/xen/setup.c
index 8dc1635..9deb6ba 100644
--- a/arch/x86/xen/setup.c
+++ b/arch/x86/xen/setup.c
@@ -78,18 +78,24 @@ static unsigned long __init xen_release_chunk(phys_addr_t start_addr,
return len;
}
-static unsigned long __init xen_return_unused_memory(const struct e820map *e820)
+static unsigned long __init xen_return_unused_memory(unsigned long max_pfn,
+ const struct e820map *e820)
{
+ phys_addr_t max_addr = PFN_PHYS(max_pfn);
phys_addr_t last_end = 0;
unsigned long released = 0;
int i;
- for (i = 0; i < e820->nr_map; i++) {
- released += xen_release_chunk(last_end, e820->map[i].addr);
+ for (i = 0; i < e820->nr_map && last_end < max_addr; i++) {
+ phys_addr_t end = e820->map[i].addr;
+ end = min(max_addr, end);
+
+ released += xen_release_chunk(last_end, end);
last_end = e820->map[i].addr + e820->map[i].size;
}
- released += xen_release_chunk(last_end, PFN_PHYS(xen_start_info->nr_pages));
+ if (last_end < max_addr)
+ released += xen_release_chunk(last_end, max_addr);
printk(KERN_INFO "released %ld pages of unused memory\n", released);
return released;
@@ -129,7 +135,7 @@ char * __init xen_memory_setup(void)
sanitize_e820_map(e820.map, ARRAY_SIZE(e820.map), &e820.nr_map);
- xen_return_unused_memory(&e820);
+ xen_return_unused_memory(xen_start_info->nr_pages, &e820);
return "Xen";
}
next prev parent reply other threads:[~2010-04-28 21:21 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-04-08 11:34 Debian linux-image-2.6.32-4-xen-amd64 2.6.32-11 doesn't boot with > 4 GiB; resets immediatelly, no log messages Thomas Schwinge
2010-04-08 13:38 ` Konrad Rzeszutek Wilk
2010-04-08 13:42 ` Ian Campbell
2010-04-08 22:19 ` Thomas Schwinge
2010-04-08 22:51 ` Jeremy Fitzhardinge
2010-04-09 18:00 ` Thomas Schwinge
2010-04-09 18:20 ` Jeremy Fitzhardinge
2010-04-10 22:13 ` Thomas Schwinge
2010-04-10 22:52 ` Jeremy Fitzhardinge
2010-04-11 9:49 ` Thomas Goirand
2010-04-12 19:34 ` Jeremy Fitzhardinge
2010-04-13 1:20 ` Thomas Goirand
2010-04-13 6:02 ` Pasi Kärkkäinen
2010-04-13 9:48 ` Thomas Goirand
2010-04-13 9:52 ` Pasi Kärkkäinen
2010-04-13 10:08 ` Thomas Goirand
2010-04-13 19:50 ` Jeremy Fitzhardinge
2010-04-13 22:27 ` Thomas Goirand
2010-04-13 23:16 ` Mike Viau
2010-04-13 23:59 ` Jeremy Fitzhardinge
2010-04-14 5:48 ` Thomas Goirand
2010-04-20 11:18 ` Thomas Schwinge
2010-04-20 18:19 ` Jeremy Fitzhardinge
2010-04-28 21:21 ` Jeremy Fitzhardinge [this message]
2010-05-08 15:46 ` Thomas Schwinge
2010-05-08 23:01 ` Jeremy Fitzhardinge
2010-05-10 9:48 ` Thomas Schwinge
2010-04-09 18:52 ` Konrad Rzeszutek Wilk
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=4BD8A6F6.4020809@goop.org \
--to=jeremy@goop.org \
--cc=ijc@hellion.org.uk \
--cc=konrad.wilk@oracle.com \
--cc=thomas@schwinge.name \
--cc=xen-devel@lists.xensource.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.