|
|
|
|
|
|
|
|
|
|
xen-devel
Re: [Xen-devel] [patch] kexec is not highmem-aware
On Mon, 2007-06-18 at 15:29 +0100, Stephen C. Tweedie wrote:
> The problem is in kimage_alloc_pages(), which tries to return contiguous
> pages by calling
>
> xen_create_contiguous_region((unsigned long)page_address(pages),
> order, address_bits)
>
> on the pages allocated. Unfortunately, page_address() returns NULL for
> highmem pages. So as soon as we try this on a page in the highmem heap,
> we get the above OOPS.
The intention of this call is actually to ensure that the MFNs are below
the limit imposed by the limit argument rather than to make a contiguous
region so it is still required for order 0 allocations.
Without this guarantee trying to load a crash kernel results in an OOM
due to the check of mfn vs KEXEC_CONTROL_MEMORY_LIMIT in
kimage_alloc_normal_control_pages(). There is similar check vs
KEXEC_SOURCE_MEMORY_LIMIT in kimage_alloc_page(). It's possible (even
likely with large hosts) for a domain to have no pages which satisfy
these constraints so without the xen_create_contiguous_region it sucks
up all memory and OOMs.
This was introduced with xen-unstable.hg 14372:a1daade92952
I guess xen_create_contiguous_region is happy to operate on a
temporarily kmapped page which are immediately unmapped since we only
care that the MFN has been moved below the limit.
Ian.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
|
|
|
|