kexec -l could not find a free area of memory locate_hole failed
Simon Horman
horms at verge.net.au
Wed Jul 14 01:01:03 EDT 2010
On Mon, Jul 12, 2010 at 11:31:50PM +0000, Brian Cockrell wrote:
>
> I received the message "Could not find a free area of memory of 21b1a000 bytes...Locate_hole failed" while attempting to perform a kexec-l on an image file of approximately 550mb. Hardware is x86 with 4GB memory. Kernel is 2.6.34 and booted via Livecd. free is showing 3047324kb free memory available. Dmesg is showing nothing. I am able to boot a 400mb image. Suggested debug steps?
Hi Brian,
I would guess that the problem is that the code can't find
a (continuous) range of physical memory to place the image.
I'm a bit rust on this portion of the code, but as I understand
it kexec works out the memory segments that it needs
and tries to place each of them in a valid "System RAM" region.
The code that is failing would be a good place to start,
kexec/kexec.c:locate_hole() of kexec-tools.
The memory regions are set up by inspecting /sys/firmware,
or if that fails, using /proc/iomem. See
kexec/arch/i386/kexec-x86-common.c:get_memory_ranges_sysfs().
550Mb, is a rather large image. I'm curious to know why.
More information about the kexec
mailing list