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


Reply via email to