On Wed, Jul 10, 2013 at 8:44 AM, Peter Maydell <peter.mayd...@linaro.org> wrote: > On 10 July 2013 08:33, Grant Likely <grant.lik...@linaro.org> wrote: >> Sometimes we want to boot the system via firmware instead of loading a >> kernel into ram with the -kernel parameter. This patch makes the -kernel >> parameter optional so that a bios image provided by the -pflash flag >> will be executed. >> >> For example: >> qemu-system-arm -M vexpress-a15 -pflash <filename> >> >> Note: Currently the file must be at least the size of the emulated flash >> device (64M) otherwise QEMU will silently not use the data. This will be >> fixed in a separate patch >> >> This is part of the larger solution. For this to work it requires the >> platform to have flash mapped or aliased to address 0 so that there is >> some code for the emulator to execute. > > That patch is already on list :-)
Heh, I wrote the above before grabbing and testing your patch. >> diff --git a/hw/arm/boot.c b/hw/arm/boot.c >> index 7c0090f..3b9e108 100644 >> --- a/hw/arm/boot.c >> +++ b/hw/arm/boot.c >> @@ -361,12 +361,6 @@ void arm_load_kernel(ARMCPU *cpu, struct arm_boot_info >> *info) >> int big_endian; >> QemuOpts *machine_opts; >> >> - /* Load the kernel. */ >> - if (!info->kernel_filename) { >> - fprintf(stderr, "Kernel image must be specified\n"); >> - exit(1); >> - } > > Why can't we just return from the function here? If we don't > have a kernel we can assume we don't have a dtb or an initrd > either. I don't think we want to do any of the other weird > stuff with setting up a reset handler or boot pen for the > secondary CPUs either -- we should just assume the bootrom > image in the flash handles this. I've just tested this, and you're right. I assumed that some of the other stuff would be necessary, but it does work just fine to return. Second version of the patch posted now. g.