On Tue, 18 Jun 2019 at 09:34, Andrew Jones <drjo...@redhat.com> wrote: > > We need to check ram_end, not ram_size. > > Fixes: 852dc64d665f ("hw/arm/boot: Diagnose layouts that put initrd or > DTB off the end of RAM") > Signed-off-by: Andrew Jones <drjo...@redhat.com> > --- > hw/arm/boot.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/hw/arm/boot.c b/hw/arm/boot.c > index b2f93f6beff6..8a280ab3ed49 100644 > --- a/hw/arm/boot.c > +++ b/hw/arm/boot.c > @@ -1109,7 +1109,7 @@ static void arm_setup_direct_kernel_boot(ARMCPU *cpu, > info->initrd_filename); > exit(1); > } > - if (info->initrd_start + initrd_size > info->ram_size) { > + if (info->initrd_start + initrd_size > ram_end) { > error_report("could not load initrd '%s': " > "too big to fit into RAM after the kernel", > info->initrd_filename); > -- > 2.20.1
Reviewed-by: Peter Maydell <peter.mayd...@linaro.org> I think I missed this because my test case doesn't have an initrd -- direct kernel boot works fine if all you're passing to QEMU is the kernel... I think we could clarify the commit message a little: hw/arm/boot: fix direct kernel boot with initrd Fix the condition used to check whether the initrd fits into RAM; this meant we were spuriously refusing to do a direct boot of a kernel in some cases if an initrd was also passed on the command line. ? (if you agree I can just fix up the commit message when I apply it.) thanks -- PMM