Here's a bug, some examples are as follows: 1.Assuming Guest's filesystem size 6M. 2.For vexpress_a15, the loader_start = 2048M. If we set guest ram_size range from 2048M+128M to 2048M+128M+6M, then the initrd load failed. 3.For mach-virt, the loader_start = 128M. If we set guest ram_size range from 256M to 256M+6M, then it is failed too. So,it is a bug for load initrd max mem calculation. It should be (ram_size + loader_start - initrd_start). Signed-off-by: ChenQun <chenq009@xxxxxxxxx> --- hw/arm/boot.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/hw/arm/boot.c b/hw/arm/boot.c index 583ec79..831128d 100644 --- a/hw/arm/boot.c +++ b/hw/arm/boot.c @@ -415,12 +415,14 @@ void arm_load_kernel(ARMCPU *cpu, struct arm_boot_info *info) if (info->initrd_filename) { initrd_size = load_ramdisk(info->initrd_filename, info->initrd_start, - info->ram_size - + info->ram_size + + info->loader_start - info->initrd_start); if (initrd_size < 0) { initrd_size = load_image_targphys(info->initrd_filename, info->initrd_start, - info->ram_size - + info->ram_size + + info->loader_start - info->initrd_start); } if (initrd_size < 0) { -- 1.7.9.5 _______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/cucslists/listinfo/kvmarm