kexec -l could not find a free area of memory locate_hole failed

Simon Horman horms at
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

550Mb, is a rather large image. I'm curious to know why.

More information about the kexec mailing list