hw/arm/boot: Honour image size field in AArch64 Image format kernels
commit5e6dbe1e8cbbe4b6f7407dda2c021cbe80a8ec02
authorPeter Maydell <peter.maydell@linaro.org>
Thu, 16 May 2019 14:47:33 +0000 (16 15:47 +0100)
committerPeter Maydell <peter.maydell@linaro.org>
Mon, 17 Jun 2019 14:11:18 +0000 (17 15:11 +0100)
treefe60ff3588f74d9367924ea6c2c0b904e8a7c4d2
parente6b2b20d9735d4ef6a6c2a056b2e1b7798e9cb27
hw/arm/boot: Honour image size field in AArch64 Image format kernels

Since Linux v3.17, the kernel's Image header includes a field image_size,
which gives the total size of the kernel including unpopulated data
sections such as the BSS). If this is present, then return it from
load_aarch64_image() as the true size of the kernel rather than
just using the size of the Image file itself. This allows the code
which calculates where to put the initrd to avoid putting it in
the kernel's BSS area.

This means that we should be able to reliably load kernel images
which are larger than 128MB without accidentally putting the
initrd or dtb in locations that clash with the kernel itself.

Fixes: https://bugs.launchpad.net/qemu/+bug/1823998
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Tested-by: Mark Rutland <mark.rutland@arm.com>
Message-id: 20190516144733.32399-5-peter.maydell@linaro.org
hw/arm/boot.c