]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/xen.git/commit
tools: implement initial ramdisk support for ARM.
authorIan Campbell <ian.campbell@citrix.com>
Fri, 4 Apr 2014 13:28:45 +0000 (14:28 +0100)
committerIan Campbell <ian.campbell@citrix.com>
Tue, 8 Apr 2014 14:48:22 +0000 (15:48 +0100)
commit314c9815e2f5dc8a9fec11e0cf9b49b16ed0e96b
tree1d1aadac3936b16e1230d1381893316c73228ec1
parent62060f3227733d40f3fe663349bc936107ffbdec
tools: implement initial ramdisk support for ARM.

The ramdisk is passed to the kernel as a property in the chosen node of the
device tree. This is somewhat tricky since in order to place the ramdisk and
dtb in ram we first need to know the size of the dtb. So we initially create a
DTB with placeholders for the ramdisk and finalise the value (which doesn't
change the size) once we know where everything is.

Rename libxl__arch_domain_configure to xl__arch_domain_init_hw_description to
better reflect its use and to be consistent with the new
libxl__arch_domain_finalise_hw_description.

The common xc_dom_build_image() function did not support explicit placement of
the ramdisk, instead passing 0 to xc_dom_alloc_segment, meaning "pick
somewhere". This change instead passes ramdisk_seg.vstart. If nothing has set
vstart then it will be zero because the entire dom struct is zeroed on
allocation in xc_dom_allocate(). Therefore there is no change to the behaviour
on x86. This is also consistent with how other segments (kernel, dtb) are
handled.

Furthermore if the ramdisk has been explicitly placed then xc_dom_build_image()
assumes that it is not to be decompressed (since that would muck up the sizings
used on placement).

With all that I'm able to boot a domain using the current Debian Jessie armhf
installer initrd and have it complete successfully.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
Acked-by: Julien Grall <julien.grall@linaro.org>
[ ijc -- s/itherwise/otherwise and dropped bogus emacs magic change ]
tools/libxc/xc_dom.h
tools/libxc/xc_dom_arm.c
tools/libxc/xc_dom_core.c
tools/libxl/libxl_arch.h
tools/libxl/libxl_arm.c
tools/libxl/libxl_dom.c
tools/libxl/libxl_x86.c