A number of tools depend on passing the kernel image, the initial ramdisk, and the kernel command line to the guest on the QEMU command line (options -kernel, -initrd, -append, respectively). At the moment, these QEMU options work, but the guest kernel loaded this way is launched by a minimal binary firmware that is dynamically composed by QEMU. As a consequence, such a kernel has no UEFI environment.
In this patchset the kernel, initrd and cmdline blobs are passed to the guest firmware to process & load. This mode is activated when both -kernel and -pflash unit#0 (or -bios) are specified. Here's an inter-series dependency map: kernel qemu edk2 topic ------ ---- ---- -------------------------------------------------- [0] device tree binding spec for the fw_cfg device ^ | +------[1]<--[2] fw_cfg device implementation ^ ^ and bootorder handling | | | | [3]<--[4] -kernel / -initrd / -append booting on top of UEFI [0] http://thread.gmane.org/gmane.linux.drivers.devicetree/101276 [kernel PATCH v2 0/2] devicetree: document ARM bindings for QEMU's Firmware Config interface ACKed by Peter, queued by Rob Herring [1] http://thread.gmane.org/gmane.comp.emulators.qemu/308650 [qemu-devel] [PATCH v2] arm: add fw_cfg to "virt" board pending review [2] http://thread.gmane.org/gmane.comp.bios.tianocore.devel/11591 [edk2] [PATCH v2 00/12] consume fw_cfg boot order in ArmVirtualizationQemu pending review [3] this patchset [qemu-devel] [PATCH 0/3] hw/arm/virt: boot with -kernel -initrd -append on top of UEFI [4] to be posted Thanks Laszlo Laszlo Ersek (3): hw/loader: split out load_image_gzipped_buffer() hw/arm: pass pristine kernel image to guest firmware over fw_cfg hw/arm/virt: enable passing of EFI-stubbed kernel to guest UEFI firmware include/hw/arm/arm.h | 5 +++ include/hw/loader.h | 9 ++++++ hw/arm/boot.c | 91 +++++++++++++++++++++++++++++++++++++++++++++++++--- hw/arm/virt.c | 1 + hw/core/loader.c | 30 +++++++++++------ 5 files changed, 122 insertions(+), 14 deletions(-) -- 1.8.3.1