[Qemu-devel] [PATCH v2 00/12] bundle edk2 platform firmware with QEMU

Laszlo Ersek posted 12 patches 5 years, 1 month ago
Failed in applying to current master (apply log)
There is a newer version of this series
.gitignore                                     |   1 +
MAINTAINERS                                    |  12 +
Makefile                                       |  29 ++-
configure                                      |   1 +
pc-bios/README                                 |  11 +
pc-bios/descriptors/50-edk2-i386-secure.json   |  34 +++
pc-bios/descriptors/50-edk2-x86_64-secure.json |  35 +++
pc-bios/descriptors/60-edk2-aarch64.json       |  31 +++
pc-bios/descriptors/60-edk2-arm.json           |  31 +++
pc-bios/descriptors/60-edk2-i386.json          |  33 +++
pc-bios/descriptors/60-edk2-x86_64.json        |  34 +++
pc-bios/edk2-aarch64-code.fd.xz                | Bin 0 -> 1146804 bytes
pc-bios/edk2-arm-code.fd.xz                    | Bin 0 -> 1147852 bytes
pc-bios/edk2-arm-vars.fd.xz                    | Bin 0 -> 10008 bytes
pc-bios/edk2-i386-code.fd.xz                   | Bin 0 -> 1674764 bytes
pc-bios/edk2-i386-secure-code.fd.xz            | Bin 0 -> 1870024 bytes
pc-bios/edk2-i386-vars.fd.xz                   | Bin 0 -> 320 bytes
pc-bios/edk2-licenses.txt                      | 209 ++++++++++++++++
pc-bios/edk2-x86_64-code.fd.xz                 | Bin 0 -> 1655276 bytes
pc-bios/edk2-x86_64-secure-code.fd.xz          | Bin 0 -> 1889024 bytes
roms/Makefile                                  |   9 +-
roms/Makefile.edk2                             | 148 ++++++++++++
roms/edk2                                      |   2 +-
roms/edk2-build.sh                             |  55 +++++
roms/edk2-funcs.sh                             | 253 ++++++++++++++++++++
tests/Makefile.include                         |   2 +-
tests/uefi-test-tools/build.sh                 | 100 +-------
27 files changed, 934 insertions(+), 96 deletions(-)
create mode 100644 pc-bios/descriptors/50-edk2-i386-secure.json
create mode 100644 pc-bios/descriptors/50-edk2-x86_64-secure.json
create mode 100644 pc-bios/descriptors/60-edk2-aarch64.json
create mode 100644 pc-bios/descriptors/60-edk2-arm.json
create mode 100644 pc-bios/descriptors/60-edk2-i386.json
create mode 100644 pc-bios/descriptors/60-edk2-x86_64.json
create mode 100644 pc-bios/edk2-aarch64-code.fd.xz
create mode 100644 pc-bios/edk2-arm-code.fd.xz
create mode 100644 pc-bios/edk2-arm-vars.fd.xz
create mode 100644 pc-bios/edk2-i386-code.fd.xz
create mode 100644 pc-bios/edk2-i386-secure-code.fd.xz
create mode 100644 pc-bios/edk2-i386-vars.fd.xz
create mode 100644 pc-bios/edk2-licenses.txt
create mode 100644 pc-bios/edk2-x86_64-code.fd.xz
create mode 100644 pc-bios/edk2-x86_64-secure-code.fd.xz
create mode 100644 roms/Makefile.edk2
create mode 100755 roms/edk2-build.sh
create mode 100644 roms/edk2-funcs.sh
[Qemu-devel] [PATCH v2 00/12] bundle edk2 platform firmware with QEMU
Posted by Laszlo Ersek 5 years, 1 month ago
Repo:   https://github.com/lersek/qemu.git
Branch: edk2_build_v2

Version 1, that is:
  [Qemu-devel] [PATCH 00/10] bundle edk2 platform firmware with QEMU

was posted at:
  https://lists.gnu.org/archive/html/qemu-devel/2019-03/msg02846.html
  http://mid.mail-archive.com/20190309004826.9027-1-lersek@redhat.com

Updates in v2 are noted on each patch individually, in the Notes
section.

I'm pasting a cumulative diffstat, and diff, between v1 and v2 below.
Note that a normal diffstat for this v2 series is at the bottom of the
cover letter, as usual.

>  .gitignore                            |   1 +
>  MAINTAINERS                           |  12 ++++++++
>  Makefile                              |  22 +++++++++++---
>  configure                             |   1 +
>  pc-bios/README                        |   2 +-
>  pc-bios/edk2-aarch64-code.fd          | Bin 67108864 -> 0 bytes
>  pc-bios/edk2-aarch64-code.fd.xz       | Bin 0 -> 1146804 bytes
>  pc-bios/edk2-arm-code.fd              | Bin 67108864 -> 0 bytes
>  pc-bios/edk2-arm-code.fd.xz           | Bin 0 -> 1147852 bytes
>  pc-bios/edk2-arm-vars.fd              | Bin 67108864 -> 0 bytes
>  pc-bios/edk2-arm-vars.fd.xz           | Bin 0 -> 10008 bytes
>  pc-bios/edk2-i386-code.fd             | Bin 3653632 -> 0 bytes
>  pc-bios/edk2-i386-code.fd.xz          | Bin 0 -> 1674764 bytes
>  pc-bios/edk2-i386-secure-code.fd      | Bin 3653632 -> 0 bytes
>  pc-bios/edk2-i386-secure-code.fd.xz   | Bin 0 -> 1870024 bytes
>  pc-bios/edk2-i386-vars.fd             | Bin 540672 -> 0 bytes
>  pc-bios/edk2-i386-vars.fd.xz          | Bin 0 -> 320 bytes
>  pc-bios/edk2-x86_64-code.fd           | Bin 3653632 -> 0 bytes
>  pc-bios/edk2-x86_64-code.fd.xz        | Bin 0 -> 1655276 bytes
>  pc-bios/edk2-x86_64-secure-code.fd    | Bin 3653632 -> 0 bytes
>  pc-bios/edk2-x86_64-secure-code.fd.xz | Bin 0 -> 1889024 bytes
>  roms/Makefile.edk2                    |  32 +++++++++++++-------
>  roms/edk2-build.sh                    |   2 +-
>  roms/edk2-funcs.sh                    |   4 +--
>  tests/Makefile.include                |   2 +-
>  25 files changed, 57 insertions(+), 21 deletions(-)

> diff --git a/configure b/configure
> index cab830a4c920..a8e5c14899d6 100755
> --- a/configure
> +++ b/configure
> @@ -7770,6 +7770,7 @@ for bios_file in \
>      $source_path/pc-bios/*.img \
>      $source_path/pc-bios/openbios-* \
>      $source_path/pc-bios/u-boot.* \
> +    $source_path/pc-bios/edk2-*.fd.xz \
>      $source_path/pc-bios/palcode-*
>  do
>      LINKS="$LINKS pc-bios/$(basename $bios_file)"
> diff --git a/Makefile b/Makefile
> index b98567ee0f83..4b325052005e 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -296,6 +296,10 @@ ui/input-keymap-%.c: $(KEYCODEMAP_GEN) $(KEYCODEMAP_CSV) $(SRC_PATH)/ui/Makefile
>  $(KEYCODEMAP_GEN): .git-submodule-status
>  $(KEYCODEMAP_CSV): .git-submodule-status
>
> +edk2-decompressed = $(basename $(wildcard pc-bios/edk2-*.fd.xz))
> +pc-bios/edk2-%.fd: pc-bios/edk2-%.fd.xz
> +	$(call quiet-command,xz -d -c $< > $@,"UNXZ",$<)
> +
>  # Don't try to regenerate Makefile or configure
>  # We don't generate any of them
>  Makefile: ;
> @@ -444,6 +448,7 @@ $(SOFTMMU_SUBDIR_RULES): $(block-obj-y)
>  $(SOFTMMU_SUBDIR_RULES): $(crypto-obj-y)
>  $(SOFTMMU_SUBDIR_RULES): $(io-obj-y)
>  $(SOFTMMU_SUBDIR_RULES): config-all-devices.mak
> +$(SOFTMMU_SUBDIR_RULES): $(edk2-decompressed)
>
>  subdir-%:
>  	$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C $* V="$(V)" TARGET_DIR="$*/" all,)
> @@ -632,6 +637,7 @@ clean:
>  		! -path ./roms/edk2/ArmPkg/Library/GccLto/liblto-arm.a \
>  		! -path ./roms/edk2/BaseTools/Source/Python/UPT/Dll/sqlite3.dll \
>  		-exec rm {} +
> +	rm -f $(edk2-decompressed)
>  	rm -f $(filter-out %.tlb,$(TOOLS)) $(HELPERS-y) qemu-ga TAGS cscope.* *.pod *~ */*~
>  	rm -f fsdev/*.pod scsi/*.pod
>  	rm -f qemu-img-cmds.h
> @@ -722,10 +728,8 @@ spapr-rtas.bin slof.bin skiboot.lid \
>  palcode-clipper \
>  u-boot.e500 u-boot-sam460-20100605.bin \
>  qemu_vga.ndrv \
> -hppa-firmware.img \
> -edk2-aarch64-code.fd edk2-arm-code.fd edk2-i386-code.fd \
> -edk2-i386-secure-code.fd edk2-x86_64-code.fd edk2-x86_64-secure-code.fd \
> -edk2-arm-vars.fd edk2-i386-vars.fd edk2-licenses.txt
> +edk2-licenses.txt \
> +hppa-firmware.img
>
>  DESCS=50-edk2-i386-secure.json 50-edk2-x86_64-secure.json \
>  60-edk2-aarch64.json 60-edk2-arm.json 60-edk2-i386.json 60-edk2-x86_64.json
> @@ -792,7 +796,8 @@ endif
>
>  ICON_SIZES=16x16 24x24 32x32 48x48 64x64 128x128 256x256 512x512
>
> -install: all $(if $(BUILD_DOCS),install-doc) install-datadir install-localstatedir
> +install: all $(if $(BUILD_DOCS),install-doc) install-datadir install-localstatedir \
> +	$(if $(INSTALL_BLOBS),$(edk2-decompressed))
>  ifneq ($(TOOLS),)
>  	$(call install-prog,$(subst qemu-ga,qemu-ga$(EXESUF),$(TOOLS)),$(DESTDIR)$(bindir))
>  endif
> @@ -814,6 +819,13 @@ ifneq ($(BLOBS),)
>  	set -e; for x in $(BLOBS); do \
>  		$(INSTALL_DATA) $(SRC_PATH)/pc-bios/$$x "$(DESTDIR)$(qemu_datadir)"; \
>  	done
> +endif
> +ifdef INSTALL_BLOBS
> +	set -e; for x in $(edk2-decompressed); do \
> +		$(INSTALL_DATA) $$x "$(DESTDIR)$(qemu_datadir)"; \
> +	done
> +endif
> +ifneq ($(DESCS),)
>  	$(INSTALL_DIR) "$(DESTDIR)$(qemu_datadir)/firmware"
>  	set -e; tmpf=$$(mktemp); trap 'rm -f -- "$$tmpf"' EXIT; \
>  	for x in $(DESCS); do \
> diff --git a/roms/Makefile.edk2 b/roms/Makefile.edk2
> index ad6fff044cd6..e5c3036949c8 100644
> --- a/roms/Makefile.edk2
> +++ b/roms/Makefile.edk2
> @@ -1,7 +1,7 @@
>  # Makefile for building firmware binaries and variable store templates for a
>  # number of virtual platforms in edk2.
>  #
> -# Copyright (C) 2019, Red Hat, Inc.
> +# Copyright (C) 2019 Red Hat, Inc.
>  #
>  # This program and the accompanying materials are licensed and made available
>  # under the terms and conditions of the BSD License that accompanies this
> @@ -11,6 +11,8 @@
>  # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT
>  # WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
>
> +SHELL = /bin/bash
> +
>  toolchain = $(shell source ./edk2-funcs.sh && qemu_edk2_get_toolchain $(1))
>
>  licenses := \
> @@ -21,19 +23,27 @@ licenses := \
>  # The "edk2-arm-vars.fd" varstore template is suitable for aarch64 as well.
>  # Similarly, the "edk2-i386-vars.fd" varstore template is suitable for x86_64
>  # as well, independently of "secure" too.
> -all: \
> -	../pc-bios/edk2-aarch64-code.fd \
> -	../pc-bios/edk2-arm-code.fd \
> -	../pc-bios/edk2-i386-code.fd \
> -	../pc-bios/edk2-i386-secure-code.fd \
> -	../pc-bios/edk2-x86_64-code.fd \
> -	../pc-bios/edk2-x86_64-secure-code.fd \
> -	\
> -	../pc-bios/edk2-arm-vars.fd \
> -	../pc-bios/edk2-i386-vars.fd \
> +flashdevs := \
> +	aarch64-code \
> +	arm-code \
> +	i386-code \
> +	i386-secure-code \
> +	x86_64-code \
> +	x86_64-secure-code \
>  	\
> +	arm-vars \
> +	i386-vars
> +
> +all: $(foreach flashdev,$(flashdevs),../pc-bios/edk2-$(flashdev).fd.xz) \
>  	../pc-bios/edk2-licenses.txt
>
> +../pc-bios/edk2-%.fd.xz: ../pc-bios/edk2-%.fd
> +	xz -9 -e -c $< > $@
> +
> +# When the build completes, we need not keep the uncompressed flash device
> +# files.
> +.INTERMEDIATE: $(foreach flashdev,$(flashdevs),../pc-bios/edk2-$(flashdev).fd)
> +
>  submodules:
>  	cd edk2 && git submodule update --init --force
>
> diff --git a/tests/Makefile.include b/tests/Makefile.include
> index a5719551dd1b..6c116addafe4 100644
> --- a/tests/Makefile.include
> +++ b/tests/Makefile.include
> @@ -915,7 +915,7 @@ check-speed: $(check-speed-y)
>
>  # gtester tests with TAP output
>
> -$(patsubst %, check-report-qtest-%.tap, $(QTEST_TARGETS)): check-report-qtest-%.tap: $(check-qtest-y)
> +$(patsubst %, check-report-qtest-%.tap, $(QTEST_TARGETS)): check-report-qtest-%.tap: subdir-%-softmmu $(check-qtest-y)
>  	$(call do_test_tap, $(check-qtest-$*-y) $(check-qtest-generic-y), \
>  	  QTEST_QEMU_BINARY=$*-softmmu/qemu-system-$* \
>  	  QTEST_QEMU_IMG=qemu-img$(EXESUF))
> diff --git a/.gitignore b/.gitignore
> index 77522561b8ea..889896c023fd 100644
> --- a/.gitignore
> +++ b/.gitignore
> @@ -96,6 +96,7 @@
>  *.gcno
>  *.gcov
>  /pc-bios/bios-pq/status
> +/pc-bios/edk2-*.fd
>  /pc-bios/vgabios-pq/status
>  /pc-bios/optionrom/linuxboot.asm
>  /pc-bios/optionrom/linuxboot.bin
> diff --git a/MAINTAINERS b/MAINTAINERS
> index d3267560799b..eefa225a234a 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -2207,6 +2207,18 @@ F: include/hw/i2c/smbus_master.h
>  F: include/hw/i2c/smbus_slave.h
>  F: include/hw/i2c/smbus_eeprom.h
>
> +EDK2 Firmware
> +M: Laszlo Ersek <lersek@redhat.com>
> +M: Philippe Mathieu-Daudé <philmd@redhat.com>
> +S: Supported
> +F: pc-bios/descriptors/??-edk2-*.json
> +F: pc-bios/edk2-*
> +F: roms/Makefile.edk2
> +F: roms/edk2
> +F: roms/edk2-*
> +F: tests/data/uefi-boot-images/
> +F: tests/uefi-test-tools/
> +
>  Usermode Emulation
>  ------------------
>  Overall
> diff --git a/pc-bios/README b/pc-bios/README
> index 4b87e1e975c9..f6acd3209610 100644
> --- a/pc-bios/README
> +++ b/pc-bios/README
> @@ -51,7 +51,7 @@
>  - QemuMacDrivers (https://github.com/ozbenh/QemuMacDrivers) is a project to
>    provide virtualised drivers for PPC MacOS guests.
>
> -- The "edk2-*.fd" images are platform firmware binaries and matching UEFI
> +- The "edk2-*.fd.xz" images are platform firmware binaries and matching UEFI
>    variable store templates built from the TianoCore community's EFI Development
>    Kit II project
>    <https://github.com/tianocore/tianocore.github.io/wiki/EDK-II>. The images
> diff --git a/pc-bios/edk2-aarch64-code.fd b/pc-bios/edk2-aarch64-code.fd
> deleted file mode 100644
> index c6ef5113e8cd..000000000000
> Binary files a/pc-bios/edk2-aarch64-code.fd and /dev/null differ
> diff --git a/pc-bios/edk2-aarch64-code.fd.xz b/pc-bios/edk2-aarch64-code.fd.xz
> new file mode 100644
> index 000000000000..8ca34c56b51b
> Binary files /dev/null and b/pc-bios/edk2-aarch64-code.fd.xz differ
> diff --git a/pc-bios/edk2-arm-code.fd b/pc-bios/edk2-arm-code.fd
> deleted file mode 100644
> index 2ebd846818d1..000000000000
> Binary files a/pc-bios/edk2-arm-code.fd and /dev/null differ
> diff --git a/pc-bios/edk2-arm-code.fd.xz b/pc-bios/edk2-arm-code.fd.xz
> new file mode 100644
> index 000000000000..db2c20b71e29
> Binary files /dev/null and b/pc-bios/edk2-arm-code.fd.xz differ
> diff --git a/pc-bios/edk2-arm-vars.fd b/pc-bios/edk2-arm-vars.fd
> deleted file mode 100644
> index a71658f98825..000000000000
> Binary files a/pc-bios/edk2-arm-vars.fd and /dev/null differ
> diff --git a/pc-bios/edk2-arm-vars.fd.xz b/pc-bios/edk2-arm-vars.fd.xz
> new file mode 100644
> index 000000000000..8c3a4b5c8bdc
> Binary files /dev/null and b/pc-bios/edk2-arm-vars.fd.xz differ
> diff --git a/pc-bios/edk2-i386-code.fd b/pc-bios/edk2-i386-code.fd
> deleted file mode 100644
> index df3d24182209..000000000000
> Binary files a/pc-bios/edk2-i386-code.fd and /dev/null differ
> diff --git a/pc-bios/edk2-i386-code.fd.xz b/pc-bios/edk2-i386-code.fd.xz
> new file mode 100644
> index 000000000000..f25dbec37e72
> Binary files /dev/null and b/pc-bios/edk2-i386-code.fd.xz differ
> diff --git a/pc-bios/edk2-i386-secure-code.fd b/pc-bios/edk2-i386-secure-code.fd
> deleted file mode 100644
> index 9f203cdd0d88..000000000000
> Binary files a/pc-bios/edk2-i386-secure-code.fd and /dev/null differ
> diff --git a/pc-bios/edk2-i386-secure-code.fd.xz b/pc-bios/edk2-i386-secure-code.fd.xz
> new file mode 100644
> index 000000000000..11d499b90d85
> Binary files /dev/null and b/pc-bios/edk2-i386-secure-code.fd.xz differ
> diff --git a/pc-bios/edk2-i386-vars.fd b/pc-bios/edk2-i386-vars.fd
> deleted file mode 100644
> index efb4f46c09af..000000000000
> Binary files a/pc-bios/edk2-i386-vars.fd and /dev/null differ
> diff --git a/pc-bios/edk2-i386-vars.fd.xz b/pc-bios/edk2-i386-vars.fd.xz
> new file mode 100644
> index 000000000000..1656532daa6e
> Binary files /dev/null and b/pc-bios/edk2-i386-vars.fd.xz differ
> diff --git a/pc-bios/edk2-x86_64-code.fd b/pc-bios/edk2-x86_64-code.fd
> deleted file mode 100644
> index bf2dd8c4373d..000000000000
> Binary files a/pc-bios/edk2-x86_64-code.fd and /dev/null differ
> diff --git a/pc-bios/edk2-x86_64-code.fd.xz b/pc-bios/edk2-x86_64-code.fd.xz
> new file mode 100644
> index 000000000000..92398935a482
> Binary files /dev/null and b/pc-bios/edk2-x86_64-code.fd.xz differ
> diff --git a/pc-bios/edk2-x86_64-secure-code.fd b/pc-bios/edk2-x86_64-secure-code.fd
> deleted file mode 100644
> index d1a28834ce60..000000000000
> Binary files a/pc-bios/edk2-x86_64-secure-code.fd and /dev/null differ
> diff --git a/pc-bios/edk2-x86_64-secure-code.fd.xz b/pc-bios/edk2-x86_64-secure-code.fd.xz
> new file mode 100644
> index 000000000000..a95891dcf134
> Binary files /dev/null and b/pc-bios/edk2-x86_64-secure-code.fd.xz differ
> diff --git a/roms/edk2-build.sh b/roms/edk2-build.sh
> index 936d2c874a22..4f46f8a6a217 100755
> --- a/roms/edk2-build.sh
> +++ b/roms/edk2-build.sh
> @@ -2,7 +2,7 @@
>
>  # Wrapper shell script for building a  virtual platform firmware in edk2.
>  #
> -# Copyright (C) 2019, Red Hat, Inc.
> +# Copyright (C) 2019 Red Hat, Inc.
>  #
>  # This program and the accompanying materials are licensed and made available
>  # under the terms and conditions of the BSD License that accompanies this
> diff --git a/roms/edk2-funcs.sh b/roms/edk2-funcs.sh
> index 7fc62f074c59..a9fae7ee891b 100644
> --- a/roms/edk2-funcs.sh
> +++ b/roms/edk2-funcs.sh
> @@ -1,9 +1,9 @@
>  # Shell script that defines functions for determining some environmental
>  # characteristics for the edk2 "build" utility.
>  #
> -# This script is meant to be sourced.
> +# This script is meant to be sourced, in a bash environment.
>  #
> -# Copyright (C) 2019, Red Hat, Inc.
> +# Copyright (C) 2019 Red Hat, Inc.
>  #
>  # This program and the accompanying materials are licensed and made available
>  # under the terms and conditions of the BSD License that accompanies this

Thanks,
Laszlo

Laszlo Ersek (12):
  roms: lift "edk2-funcs.sh" from "tests/uefi-test-tools/build.sh"
  roms/edk2-funcs.sh: require gcc-4.8+ for building i386 and x86_64
  tests/uefi-test-tools/build.sh: work around TianoCore#1607
  roms/edk2: advance to tag edk2-stable201903
  roms/edk2-funcs.sh: add the qemu_edk2_get_thread_count() function
  roms/Makefile: replace the $(EFIROM) target with "edk2-basetools"
  roms: build edk2 firmware binaries and variable store templates
  pc-bios: add edk2 firmware binaries and variable store templates
  pc-bios: document the edk2 firmware images; add firmware descriptors
  tests: add missing dependency to build QTEST_QEMU_BINARY, round 2
  Makefile: install the edk2 firmware images and their descriptors
  MAINTAINERS: add the "EDK2 Firmware" subsystem

 .gitignore                                     |   1 +
 MAINTAINERS                                    |  12 +
 Makefile                                       |  29 ++-
 configure                                      |   1 +
 pc-bios/README                                 |  11 +
 pc-bios/descriptors/50-edk2-i386-secure.json   |  34 +++
 pc-bios/descriptors/50-edk2-x86_64-secure.json |  35 +++
 pc-bios/descriptors/60-edk2-aarch64.json       |  31 +++
 pc-bios/descriptors/60-edk2-arm.json           |  31 +++
 pc-bios/descriptors/60-edk2-i386.json          |  33 +++
 pc-bios/descriptors/60-edk2-x86_64.json        |  34 +++
 pc-bios/edk2-aarch64-code.fd.xz                | Bin 0 -> 1146804 bytes
 pc-bios/edk2-arm-code.fd.xz                    | Bin 0 -> 1147852 bytes
 pc-bios/edk2-arm-vars.fd.xz                    | Bin 0 -> 10008 bytes
 pc-bios/edk2-i386-code.fd.xz                   | Bin 0 -> 1674764 bytes
 pc-bios/edk2-i386-secure-code.fd.xz            | Bin 0 -> 1870024 bytes
 pc-bios/edk2-i386-vars.fd.xz                   | Bin 0 -> 320 bytes
 pc-bios/edk2-licenses.txt                      | 209 ++++++++++++++++
 pc-bios/edk2-x86_64-code.fd.xz                 | Bin 0 -> 1655276 bytes
 pc-bios/edk2-x86_64-secure-code.fd.xz          | Bin 0 -> 1889024 bytes
 roms/Makefile                                  |   9 +-
 roms/Makefile.edk2                             | 148 ++++++++++++
 roms/edk2                                      |   2 +-
 roms/edk2-build.sh                             |  55 +++++
 roms/edk2-funcs.sh                             | 253 ++++++++++++++++++++
 tests/Makefile.include                         |   2 +-
 tests/uefi-test-tools/build.sh                 | 100 +-------
 27 files changed, 934 insertions(+), 96 deletions(-)
 create mode 100644 pc-bios/descriptors/50-edk2-i386-secure.json
 create mode 100644 pc-bios/descriptors/50-edk2-x86_64-secure.json
 create mode 100644 pc-bios/descriptors/60-edk2-aarch64.json
 create mode 100644 pc-bios/descriptors/60-edk2-arm.json
 create mode 100644 pc-bios/descriptors/60-edk2-i386.json
 create mode 100644 pc-bios/descriptors/60-edk2-x86_64.json
 create mode 100644 pc-bios/edk2-aarch64-code.fd.xz
 create mode 100644 pc-bios/edk2-arm-code.fd.xz
 create mode 100644 pc-bios/edk2-arm-vars.fd.xz
 create mode 100644 pc-bios/edk2-i386-code.fd.xz
 create mode 100644 pc-bios/edk2-i386-secure-code.fd.xz
 create mode 100644 pc-bios/edk2-i386-vars.fd.xz
 create mode 100644 pc-bios/edk2-licenses.txt
 create mode 100644 pc-bios/edk2-x86_64-code.fd.xz
 create mode 100644 pc-bios/edk2-x86_64-secure-code.fd.xz
 create mode 100644 roms/Makefile.edk2
 create mode 100755 roms/edk2-build.sh
 create mode 100644 roms/edk2-funcs.sh

-- 
2.19.1.3.g30247aa5d201


Re: [Qemu-devel] [PATCH v2 00/12] bundle edk2 platform firmware with QEMU
Posted by Igor Mammedov 5 years, 1 month ago
On Wed, 13 Mar 2019 22:00:45 +0100
Laszlo Ersek <lersek@redhat.com> wrote:

> Repo:   https://github.com/lersek/qemu.git
> Branch: edk2_build_v2
> 
> Version 1, that is:
>   [Qemu-devel] [PATCH 00/10] bundle edk2 platform firmware with QEMU
> 
> was posted at:
>   https://lists.gnu.org/archive/html/qemu-devel/2019-03/msg02846.html
>   http://mid.mail-archive.com/20190309004826.9027-1-lersek@redhat.com
> 
> Updates in v2 are noted on each patch individually, in the Notes
> section.
> 


Tested-by: Igor Mammedov <imammedo@redhat.com>

> I'm pasting a cumulative diffstat, and diff, between v1 and v2 below.
> Note that a normal diffstat for this v2 series is at the bottom of the
> cover letter, as usual.
> 
> >  .gitignore                            |   1 +
> >  MAINTAINERS                           |  12 ++++++++
> >  Makefile                              |  22 +++++++++++---
> >  configure                             |   1 +
> >  pc-bios/README                        |   2 +-
> >  pc-bios/edk2-aarch64-code.fd          | Bin 67108864 -> 0 bytes
> >  pc-bios/edk2-aarch64-code.fd.xz       | Bin 0 -> 1146804 bytes
> >  pc-bios/edk2-arm-code.fd              | Bin 67108864 -> 0 bytes
> >  pc-bios/edk2-arm-code.fd.xz           | Bin 0 -> 1147852 bytes
> >  pc-bios/edk2-arm-vars.fd              | Bin 67108864 -> 0 bytes
> >  pc-bios/edk2-arm-vars.fd.xz           | Bin 0 -> 10008 bytes
> >  pc-bios/edk2-i386-code.fd             | Bin 3653632 -> 0 bytes
> >  pc-bios/edk2-i386-code.fd.xz          | Bin 0 -> 1674764 bytes
> >  pc-bios/edk2-i386-secure-code.fd      | Bin 3653632 -> 0 bytes
> >  pc-bios/edk2-i386-secure-code.fd.xz   | Bin 0 -> 1870024 bytes
> >  pc-bios/edk2-i386-vars.fd             | Bin 540672 -> 0 bytes
> >  pc-bios/edk2-i386-vars.fd.xz          | Bin 0 -> 320 bytes
> >  pc-bios/edk2-x86_64-code.fd           | Bin 3653632 -> 0 bytes
> >  pc-bios/edk2-x86_64-code.fd.xz        | Bin 0 -> 1655276 bytes
> >  pc-bios/edk2-x86_64-secure-code.fd    | Bin 3653632 -> 0 bytes
> >  pc-bios/edk2-x86_64-secure-code.fd.xz | Bin 0 -> 1889024 bytes
> >  roms/Makefile.edk2                    |  32 +++++++++++++-------
> >  roms/edk2-build.sh                    |   2 +-
> >  roms/edk2-funcs.sh                    |   4 +--
> >  tests/Makefile.include                |   2 +-
> >  25 files changed, 57 insertions(+), 21 deletions(-)  
> 
> > diff --git a/configure b/configure
> > index cab830a4c920..a8e5c14899d6 100755
> > --- a/configure
> > +++ b/configure
> > @@ -7770,6 +7770,7 @@ for bios_file in \
> >      $source_path/pc-bios/*.img \
> >      $source_path/pc-bios/openbios-* \
> >      $source_path/pc-bios/u-boot.* \
> > +    $source_path/pc-bios/edk2-*.fd.xz \
> >      $source_path/pc-bios/palcode-*
> >  do
> >      LINKS="$LINKS pc-bios/$(basename $bios_file)"
> > diff --git a/Makefile b/Makefile
> > index b98567ee0f83..4b325052005e 100644
> > --- a/Makefile
> > +++ b/Makefile
> > @@ -296,6 +296,10 @@ ui/input-keymap-%.c: $(KEYCODEMAP_GEN) $(KEYCODEMAP_CSV) $(SRC_PATH)/ui/Makefile
> >  $(KEYCODEMAP_GEN): .git-submodule-status
> >  $(KEYCODEMAP_CSV): .git-submodule-status
> >
> > +edk2-decompressed = $(basename $(wildcard pc-bios/edk2-*.fd.xz))
> > +pc-bios/edk2-%.fd: pc-bios/edk2-%.fd.xz
> > +	$(call quiet-command,xz -d -c $< > $@,"UNXZ",$<)
> > +
> >  # Don't try to regenerate Makefile or configure
> >  # We don't generate any of them
> >  Makefile: ;
> > @@ -444,6 +448,7 @@ $(SOFTMMU_SUBDIR_RULES): $(block-obj-y)
> >  $(SOFTMMU_SUBDIR_RULES): $(crypto-obj-y)
> >  $(SOFTMMU_SUBDIR_RULES): $(io-obj-y)
> >  $(SOFTMMU_SUBDIR_RULES): config-all-devices.mak
> > +$(SOFTMMU_SUBDIR_RULES): $(edk2-decompressed)
> >
> >  subdir-%:
> >  	$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C $* V="$(V)" TARGET_DIR="$*/" all,)
> > @@ -632,6 +637,7 @@ clean:
> >  		! -path ./roms/edk2/ArmPkg/Library/GccLto/liblto-arm.a \
> >  		! -path ./roms/edk2/BaseTools/Source/Python/UPT/Dll/sqlite3.dll \
> >  		-exec rm {} +
> > +	rm -f $(edk2-decompressed)
> >  	rm -f $(filter-out %.tlb,$(TOOLS)) $(HELPERS-y) qemu-ga TAGS cscope.* *.pod *~ */*~
> >  	rm -f fsdev/*.pod scsi/*.pod
> >  	rm -f qemu-img-cmds.h
> > @@ -722,10 +728,8 @@ spapr-rtas.bin slof.bin skiboot.lid \
> >  palcode-clipper \
> >  u-boot.e500 u-boot-sam460-20100605.bin \
> >  qemu_vga.ndrv \
> > -hppa-firmware.img \
> > -edk2-aarch64-code.fd edk2-arm-code.fd edk2-i386-code.fd \
> > -edk2-i386-secure-code.fd edk2-x86_64-code.fd edk2-x86_64-secure-code.fd \
> > -edk2-arm-vars.fd edk2-i386-vars.fd edk2-licenses.txt
> > +edk2-licenses.txt \
> > +hppa-firmware.img
> >
> >  DESCS=50-edk2-i386-secure.json 50-edk2-x86_64-secure.json \
> >  60-edk2-aarch64.json 60-edk2-arm.json 60-edk2-i386.json 60-edk2-x86_64.json
> > @@ -792,7 +796,8 @@ endif
> >
> >  ICON_SIZES=16x16 24x24 32x32 48x48 64x64 128x128 256x256 512x512
> >
> > -install: all $(if $(BUILD_DOCS),install-doc) install-datadir install-localstatedir
> > +install: all $(if $(BUILD_DOCS),install-doc) install-datadir install-localstatedir \
> > +	$(if $(INSTALL_BLOBS),$(edk2-decompressed))
> >  ifneq ($(TOOLS),)
> >  	$(call install-prog,$(subst qemu-ga,qemu-ga$(EXESUF),$(TOOLS)),$(DESTDIR)$(bindir))
> >  endif
> > @@ -814,6 +819,13 @@ ifneq ($(BLOBS),)
> >  	set -e; for x in $(BLOBS); do \
> >  		$(INSTALL_DATA) $(SRC_PATH)/pc-bios/$$x "$(DESTDIR)$(qemu_datadir)"; \
> >  	done
> > +endif
> > +ifdef INSTALL_BLOBS
> > +	set -e; for x in $(edk2-decompressed); do \
> > +		$(INSTALL_DATA) $$x "$(DESTDIR)$(qemu_datadir)"; \
> > +	done
> > +endif
> > +ifneq ($(DESCS),)
> >  	$(INSTALL_DIR) "$(DESTDIR)$(qemu_datadir)/firmware"
> >  	set -e; tmpf=$$(mktemp); trap 'rm -f -- "$$tmpf"' EXIT; \
> >  	for x in $(DESCS); do \
> > diff --git a/roms/Makefile.edk2 b/roms/Makefile.edk2
> > index ad6fff044cd6..e5c3036949c8 100644
> > --- a/roms/Makefile.edk2
> > +++ b/roms/Makefile.edk2
> > @@ -1,7 +1,7 @@
> >  # Makefile for building firmware binaries and variable store templates for a
> >  # number of virtual platforms in edk2.
> >  #
> > -# Copyright (C) 2019, Red Hat, Inc.
> > +# Copyright (C) 2019 Red Hat, Inc.
> >  #
> >  # This program and the accompanying materials are licensed and made available
> >  # under the terms and conditions of the BSD License that accompanies this
> > @@ -11,6 +11,8 @@
> >  # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT
> >  # WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
> >
> > +SHELL = /bin/bash
> > +
> >  toolchain = $(shell source ./edk2-funcs.sh && qemu_edk2_get_toolchain $(1))
> >
> >  licenses := \
> > @@ -21,19 +23,27 @@ licenses := \
> >  # The "edk2-arm-vars.fd" varstore template is suitable for aarch64 as well.
> >  # Similarly, the "edk2-i386-vars.fd" varstore template is suitable for x86_64
> >  # as well, independently of "secure" too.
> > -all: \
> > -	../pc-bios/edk2-aarch64-code.fd \
> > -	../pc-bios/edk2-arm-code.fd \
> > -	../pc-bios/edk2-i386-code.fd \
> > -	../pc-bios/edk2-i386-secure-code.fd \
> > -	../pc-bios/edk2-x86_64-code.fd \
> > -	../pc-bios/edk2-x86_64-secure-code.fd \
> > -	\
> > -	../pc-bios/edk2-arm-vars.fd \
> > -	../pc-bios/edk2-i386-vars.fd \
> > +flashdevs := \
> > +	aarch64-code \
> > +	arm-code \
> > +	i386-code \
> > +	i386-secure-code \
> > +	x86_64-code \
> > +	x86_64-secure-code \
> >  	\
> > +	arm-vars \
> > +	i386-vars
> > +
> > +all: $(foreach flashdev,$(flashdevs),../pc-bios/edk2-$(flashdev).fd.xz) \
> >  	../pc-bios/edk2-licenses.txt
> >
> > +../pc-bios/edk2-%.fd.xz: ../pc-bios/edk2-%.fd
> > +	xz -9 -e -c $< > $@
> > +
> > +# When the build completes, we need not keep the uncompressed flash device
> > +# files.
> > +.INTERMEDIATE: $(foreach flashdev,$(flashdevs),../pc-bios/edk2-$(flashdev).fd)
> > +
> >  submodules:
> >  	cd edk2 && git submodule update --init --force
> >
> > diff --git a/tests/Makefile.include b/tests/Makefile.include
> > index a5719551dd1b..6c116addafe4 100644
> > --- a/tests/Makefile.include
> > +++ b/tests/Makefile.include
> > @@ -915,7 +915,7 @@ check-speed: $(check-speed-y)
> >
> >  # gtester tests with TAP output
> >
> > -$(patsubst %, check-report-qtest-%.tap, $(QTEST_TARGETS)): check-report-qtest-%.tap: $(check-qtest-y)
> > +$(patsubst %, check-report-qtest-%.tap, $(QTEST_TARGETS)): check-report-qtest-%.tap: subdir-%-softmmu $(check-qtest-y)
> >  	$(call do_test_tap, $(check-qtest-$*-y) $(check-qtest-generic-y), \
> >  	  QTEST_QEMU_BINARY=$*-softmmu/qemu-system-$* \
> >  	  QTEST_QEMU_IMG=qemu-img$(EXESUF))
> > diff --git a/.gitignore b/.gitignore
> > index 77522561b8ea..889896c023fd 100644
> > --- a/.gitignore
> > +++ b/.gitignore
> > @@ -96,6 +96,7 @@
> >  *.gcno
> >  *.gcov
> >  /pc-bios/bios-pq/status
> > +/pc-bios/edk2-*.fd
> >  /pc-bios/vgabios-pq/status
> >  /pc-bios/optionrom/linuxboot.asm
> >  /pc-bios/optionrom/linuxboot.bin
> > diff --git a/MAINTAINERS b/MAINTAINERS
> > index d3267560799b..eefa225a234a 100644
> > --- a/MAINTAINERS
> > +++ b/MAINTAINERS
> > @@ -2207,6 +2207,18 @@ F: include/hw/i2c/smbus_master.h
> >  F: include/hw/i2c/smbus_slave.h
> >  F: include/hw/i2c/smbus_eeprom.h
> >
> > +EDK2 Firmware
> > +M: Laszlo Ersek <lersek@redhat.com>
> > +M: Philippe Mathieu-Daudé <philmd@redhat.com>
> > +S: Supported
> > +F: pc-bios/descriptors/??-edk2-*.json
> > +F: pc-bios/edk2-*
> > +F: roms/Makefile.edk2
> > +F: roms/edk2
> > +F: roms/edk2-*
> > +F: tests/data/uefi-boot-images/
> > +F: tests/uefi-test-tools/
> > +
> >  Usermode Emulation
> >  ------------------
> >  Overall
> > diff --git a/pc-bios/README b/pc-bios/README
> > index 4b87e1e975c9..f6acd3209610 100644
> > --- a/pc-bios/README
> > +++ b/pc-bios/README
> > @@ -51,7 +51,7 @@
> >  - QemuMacDrivers (https://github.com/ozbenh/QemuMacDrivers) is a project to
> >    provide virtualised drivers for PPC MacOS guests.
> >
> > -- The "edk2-*.fd" images are platform firmware binaries and matching UEFI
> > +- The "edk2-*.fd.xz" images are platform firmware binaries and matching UEFI
> >    variable store templates built from the TianoCore community's EFI Development
> >    Kit II project
> >    <https://github.com/tianocore/tianocore.github.io/wiki/EDK-II>. The images
> > diff --git a/pc-bios/edk2-aarch64-code.fd b/pc-bios/edk2-aarch64-code.fd
> > deleted file mode 100644
> > index c6ef5113e8cd..000000000000
> > Binary files a/pc-bios/edk2-aarch64-code.fd and /dev/null differ
> > diff --git a/pc-bios/edk2-aarch64-code.fd.xz b/pc-bios/edk2-aarch64-code.fd.xz
> > new file mode 100644
> > index 000000000000..8ca34c56b51b
> > Binary files /dev/null and b/pc-bios/edk2-aarch64-code.fd.xz differ
> > diff --git a/pc-bios/edk2-arm-code.fd b/pc-bios/edk2-arm-code.fd
> > deleted file mode 100644
> > index 2ebd846818d1..000000000000
> > Binary files a/pc-bios/edk2-arm-code.fd and /dev/null differ
> > diff --git a/pc-bios/edk2-arm-code.fd.xz b/pc-bios/edk2-arm-code.fd.xz
> > new file mode 100644
> > index 000000000000..db2c20b71e29
> > Binary files /dev/null and b/pc-bios/edk2-arm-code.fd.xz differ
> > diff --git a/pc-bios/edk2-arm-vars.fd b/pc-bios/edk2-arm-vars.fd
> > deleted file mode 100644
> > index a71658f98825..000000000000
> > Binary files a/pc-bios/edk2-arm-vars.fd and /dev/null differ
> > diff --git a/pc-bios/edk2-arm-vars.fd.xz b/pc-bios/edk2-arm-vars.fd.xz
> > new file mode 100644
> > index 000000000000..8c3a4b5c8bdc
> > Binary files /dev/null and b/pc-bios/edk2-arm-vars.fd.xz differ
> > diff --git a/pc-bios/edk2-i386-code.fd b/pc-bios/edk2-i386-code.fd
> > deleted file mode 100644
> > index df3d24182209..000000000000
> > Binary files a/pc-bios/edk2-i386-code.fd and /dev/null differ
> > diff --git a/pc-bios/edk2-i386-code.fd.xz b/pc-bios/edk2-i386-code.fd.xz
> > new file mode 100644
> > index 000000000000..f25dbec37e72
> > Binary files /dev/null and b/pc-bios/edk2-i386-code.fd.xz differ
> > diff --git a/pc-bios/edk2-i386-secure-code.fd b/pc-bios/edk2-i386-secure-code.fd
> > deleted file mode 100644
> > index 9f203cdd0d88..000000000000
> > Binary files a/pc-bios/edk2-i386-secure-code.fd and /dev/null differ
> > diff --git a/pc-bios/edk2-i386-secure-code.fd.xz b/pc-bios/edk2-i386-secure-code.fd.xz
> > new file mode 100644
> > index 000000000000..11d499b90d85
> > Binary files /dev/null and b/pc-bios/edk2-i386-secure-code.fd.xz differ
> > diff --git a/pc-bios/edk2-i386-vars.fd b/pc-bios/edk2-i386-vars.fd
> > deleted file mode 100644
> > index efb4f46c09af..000000000000
> > Binary files a/pc-bios/edk2-i386-vars.fd and /dev/null differ
> > diff --git a/pc-bios/edk2-i386-vars.fd.xz b/pc-bios/edk2-i386-vars.fd.xz
> > new file mode 100644
> > index 000000000000..1656532daa6e
> > Binary files /dev/null and b/pc-bios/edk2-i386-vars.fd.xz differ
> > diff --git a/pc-bios/edk2-x86_64-code.fd b/pc-bios/edk2-x86_64-code.fd
> > deleted file mode 100644
> > index bf2dd8c4373d..000000000000
> > Binary files a/pc-bios/edk2-x86_64-code.fd and /dev/null differ
> > diff --git a/pc-bios/edk2-x86_64-code.fd.xz b/pc-bios/edk2-x86_64-code.fd.xz
> > new file mode 100644
> > index 000000000000..92398935a482
> > Binary files /dev/null and b/pc-bios/edk2-x86_64-code.fd.xz differ
> > diff --git a/pc-bios/edk2-x86_64-secure-code.fd b/pc-bios/edk2-x86_64-secure-code.fd
> > deleted file mode 100644
> > index d1a28834ce60..000000000000
> > Binary files a/pc-bios/edk2-x86_64-secure-code.fd and /dev/null differ
> > diff --git a/pc-bios/edk2-x86_64-secure-code.fd.xz b/pc-bios/edk2-x86_64-secure-code.fd.xz
> > new file mode 100644
> > index 000000000000..a95891dcf134
> > Binary files /dev/null and b/pc-bios/edk2-x86_64-secure-code.fd.xz differ
> > diff --git a/roms/edk2-build.sh b/roms/edk2-build.sh
> > index 936d2c874a22..4f46f8a6a217 100755
> > --- a/roms/edk2-build.sh
> > +++ b/roms/edk2-build.sh
> > @@ -2,7 +2,7 @@
> >
> >  # Wrapper shell script for building a  virtual platform firmware in edk2.
> >  #
> > -# Copyright (C) 2019, Red Hat, Inc.
> > +# Copyright (C) 2019 Red Hat, Inc.
> >  #
> >  # This program and the accompanying materials are licensed and made available
> >  # under the terms and conditions of the BSD License that accompanies this
> > diff --git a/roms/edk2-funcs.sh b/roms/edk2-funcs.sh
> > index 7fc62f074c59..a9fae7ee891b 100644
> > --- a/roms/edk2-funcs.sh
> > +++ b/roms/edk2-funcs.sh
> > @@ -1,9 +1,9 @@
> >  # Shell script that defines functions for determining some environmental
> >  # characteristics for the edk2 "build" utility.
> >  #
> > -# This script is meant to be sourced.
> > +# This script is meant to be sourced, in a bash environment.
> >  #
> > -# Copyright (C) 2019, Red Hat, Inc.
> > +# Copyright (C) 2019 Red Hat, Inc.
> >  #
> >  # This program and the accompanying materials are licensed and made available
> >  # under the terms and conditions of the BSD License that accompanies this  
> 
> Thanks,
> Laszlo
> 
> Laszlo Ersek (12):
>   roms: lift "edk2-funcs.sh" from "tests/uefi-test-tools/build.sh"
>   roms/edk2-funcs.sh: require gcc-4.8+ for building i386 and x86_64
>   tests/uefi-test-tools/build.sh: work around TianoCore#1607
>   roms/edk2: advance to tag edk2-stable201903
>   roms/edk2-funcs.sh: add the qemu_edk2_get_thread_count() function
>   roms/Makefile: replace the $(EFIROM) target with "edk2-basetools"
>   roms: build edk2 firmware binaries and variable store templates
>   pc-bios: add edk2 firmware binaries and variable store templates
>   pc-bios: document the edk2 firmware images; add firmware descriptors
>   tests: add missing dependency to build QTEST_QEMU_BINARY, round 2
>   Makefile: install the edk2 firmware images and their descriptors
>   MAINTAINERS: add the "EDK2 Firmware" subsystem
> 
>  .gitignore                                     |   1 +
>  MAINTAINERS                                    |  12 +
>  Makefile                                       |  29 ++-
>  configure                                      |   1 +
>  pc-bios/README                                 |  11 +
>  pc-bios/descriptors/50-edk2-i386-secure.json   |  34 +++
>  pc-bios/descriptors/50-edk2-x86_64-secure.json |  35 +++
>  pc-bios/descriptors/60-edk2-aarch64.json       |  31 +++
>  pc-bios/descriptors/60-edk2-arm.json           |  31 +++
>  pc-bios/descriptors/60-edk2-i386.json          |  33 +++
>  pc-bios/descriptors/60-edk2-x86_64.json        |  34 +++
>  pc-bios/edk2-aarch64-code.fd.xz                | Bin 0 -> 1146804 bytes
>  pc-bios/edk2-arm-code.fd.xz                    | Bin 0 -> 1147852 bytes
>  pc-bios/edk2-arm-vars.fd.xz                    | Bin 0 -> 10008 bytes
>  pc-bios/edk2-i386-code.fd.xz                   | Bin 0 -> 1674764 bytes
>  pc-bios/edk2-i386-secure-code.fd.xz            | Bin 0 -> 1870024 bytes
>  pc-bios/edk2-i386-vars.fd.xz                   | Bin 0 -> 320 bytes
>  pc-bios/edk2-licenses.txt                      | 209 ++++++++++++++++
>  pc-bios/edk2-x86_64-code.fd.xz                 | Bin 0 -> 1655276 bytes
>  pc-bios/edk2-x86_64-secure-code.fd.xz          | Bin 0 -> 1889024 bytes
>  roms/Makefile                                  |   9 +-
>  roms/Makefile.edk2                             | 148 ++++++++++++
>  roms/edk2                                      |   2 +-
>  roms/edk2-build.sh                             |  55 +++++
>  roms/edk2-funcs.sh                             | 253 ++++++++++++++++++++
>  tests/Makefile.include                         |   2 +-
>  tests/uefi-test-tools/build.sh                 | 100 +-------
>  27 files changed, 934 insertions(+), 96 deletions(-)
>  create mode 100644 pc-bios/descriptors/50-edk2-i386-secure.json
>  create mode 100644 pc-bios/descriptors/50-edk2-x86_64-secure.json
>  create mode 100644 pc-bios/descriptors/60-edk2-aarch64.json
>  create mode 100644 pc-bios/descriptors/60-edk2-arm.json
>  create mode 100644 pc-bios/descriptors/60-edk2-i386.json
>  create mode 100644 pc-bios/descriptors/60-edk2-x86_64.json
>  create mode 100644 pc-bios/edk2-aarch64-code.fd.xz
>  create mode 100644 pc-bios/edk2-arm-code.fd.xz
>  create mode 100644 pc-bios/edk2-arm-vars.fd.xz
>  create mode 100644 pc-bios/edk2-i386-code.fd.xz
>  create mode 100644 pc-bios/edk2-i386-secure-code.fd.xz
>  create mode 100644 pc-bios/edk2-i386-vars.fd.xz
>  create mode 100644 pc-bios/edk2-licenses.txt
>  create mode 100644 pc-bios/edk2-x86_64-code.fd.xz
>  create mode 100644 pc-bios/edk2-x86_64-secure-code.fd.xz
>  create mode 100644 roms/Makefile.edk2
>  create mode 100755 roms/edk2-build.sh
>  create mode 100644 roms/edk2-funcs.sh
> 


Re: [Qemu-devel] [PATCH v2 00/12] bundle edk2 platform firmware with QEMU
Posted by Michael Tokarev 5 years, 1 month ago
14.03.2019 0:00, Laszlo Ersek wrote:
> Repo:   https://github.com/lersek/qemu.git
> Branch: edk2_build_v2
> 
> Version 1, that is:
>    [Qemu-devel] [PATCH 00/10] bundle edk2 platform firmware with QEMU
...

Hmm. Why to do so? Isn't the goal was to REMOVE current
ROM sources from qemu in favor of external projects?

Thanks,

/mjt

Re: [Qemu-devel] [PATCH v2 00/12] bundle edk2 platform firmware with QEMU
Posted by Laszlo Ersek 5 years, 1 month ago
Hi Michael,

On 03/16/19 15:56, Michael Tokarev wrote:
> 14.03.2019 0:00, Laszlo Ersek wrote:
>> Repo:   https://github.com/lersek/qemu.git
>> Branch: edk2_build_v2
>>
>> Version 1, that is:
>>    [Qemu-devel] [PATCH 00/10] bundle edk2 platform firmware with QEMU
> ...
> 
> Hmm. Why to do so? Isn't the goal was to REMOVE current
> ROM sources from qemu in favor of external projects?

I had learned about this goal (from Dan) first when I was fairly deep
into this work already. The motives for the bundling are:

(1) ACPI regression tests need an easily available (distro-independent)
set of UEFI firmware binaries, and "quickly" was preferred to "slowly",

(2) it's been a long time user need (although perhaps not a very strong
one) to get UEFI guest firmware right from QEMU, not just non-UEFI guest
firmware (which is basically synonymous with "BIOS" for x86).

In short, I didn't mean to ignore the goal you mention -- I didn't know
about it, while (1) was perceived as urgent.

Thanks
Laszlo

Re: [Qemu-devel] [PATCH v2 00/12] bundle edk2 platform firmware with QEMU
Posted by Philippe Mathieu-Daudé 5 years, 1 month ago
Hi,

From my previous experience with the tests/ patches, I understood we
could still send PR that improve testing after soft freeze.
This series doesn't modify the QEMU binaries, it add EDK2 firmware blobs
in roms/ and rules to rebuild these roms.
These roms are useful for the ACPI tests introduced in commits
09a274d82f and 503bb0b975a on the arm/virt board.

There is 1 direct change:

1/ in the root Makefile, the 'make install' rule installs one new file:
   - edk2-licenses.txt

And there are 2 other changes which require user specific action:

2/ Set the environment variable 'INSTALL_BLOBS', the 'make install' rule
will install the firmware blobs and the firmware JSON descriptors

3/ a new 'efi' target rule in roms/Makefile

I'm planning to send a PR for this series but I want to check first if
there is any issue with the current policy/rules.

Thanks,

Phil.

On 3/13/19 10:00 PM, Laszlo Ersek wrote:
> Repo:   https://github.com/lersek/qemu.git
> Branch: edk2_build_v2
> 
> Version 1, that is:
>   [Qemu-devel] [PATCH 00/10] bundle edk2 platform firmware with QEMU
> 
> was posted at:
>   https://lists.gnu.org/archive/html/qemu-devel/2019-03/msg02846.html
>   http://mid.mail-archive.com/20190309004826.9027-1-lersek@redhat.com
> 
> Updates in v2 are noted on each patch individually, in the Notes
> section.
> 
[...]
>>  .gitignore                            |   1 +
>>  MAINTAINERS                           |  12 ++++++++
>>  Makefile                              |  22 +++++++++++---
>>  configure                             |   1 +
>>  pc-bios/README                        |   2 +-
>>  pc-bios/edk2-aarch64-code.fd          | Bin 67108864 -> 0 bytes
>>  pc-bios/edk2-aarch64-code.fd.xz       | Bin 0 -> 1146804 bytes
>>  pc-bios/edk2-arm-code.fd              | Bin 67108864 -> 0 bytes
>>  pc-bios/edk2-arm-code.fd.xz           | Bin 0 -> 1147852 bytes
>>  pc-bios/edk2-arm-vars.fd              | Bin 67108864 -> 0 bytes
>>  pc-bios/edk2-arm-vars.fd.xz           | Bin 0 -> 10008 bytes
>>  pc-bios/edk2-i386-code.fd             | Bin 3653632 -> 0 bytes
>>  pc-bios/edk2-i386-code.fd.xz          | Bin 0 -> 1674764 bytes
>>  pc-bios/edk2-i386-secure-code.fd      | Bin 3653632 -> 0 bytes
>>  pc-bios/edk2-i386-secure-code.fd.xz   | Bin 0 -> 1870024 bytes
>>  pc-bios/edk2-i386-vars.fd             | Bin 540672 -> 0 bytes
>>  pc-bios/edk2-i386-vars.fd.xz          | Bin 0 -> 320 bytes
>>  pc-bios/edk2-x86_64-code.fd           | Bin 3653632 -> 0 bytes
>>  pc-bios/edk2-x86_64-code.fd.xz        | Bin 0 -> 1655276 bytes
>>  pc-bios/edk2-x86_64-secure-code.fd    | Bin 3653632 -> 0 bytes
>>  pc-bios/edk2-x86_64-secure-code.fd.xz | Bin 0 -> 1889024 bytes
>>  roms/Makefile.edk2                    |  32 +++++++++++++-------
>>  roms/edk2-build.sh                    |   2 +-
>>  roms/edk2-funcs.sh                    |   4 +--
>>  tests/Makefile.include                |   2 +-
>>  25 files changed, 57 insertions(+), 21 deletions(-)

Re: [Qemu-devel] [PATCH v2 00/12] bundle edk2 platform firmware with QEMU
Posted by Eric Blake 5 years, 1 month ago
On 3/15/19 11:42 AM, Philippe Mathieu-Daudé wrote:
> Hi,
> 
>>From my previous experience with the tests/ patches, I understood we
> could still send PR that improve testing after soft freeze.
> This series doesn't modify the QEMU binaries, it add EDK2 firmware blobs
> in roms/ and rules to rebuild these roms.
> These roms are useful for the ACPI tests introduced in commits
> 09a274d82f and 503bb0b975a on the arm/virt board.
> 
> There is 1 direct change:
> 
> 1/ in the root Makefile, the 'make install' rule installs one new file:
>    - edk2-licenses.txt
> 
> And there are 2 other changes which require user specific action:
> 
> 2/ Set the environment variable 'INSTALL_BLOBS', the 'make install' rule
> will install the firmware blobs and the firmware JSON descriptors
> 
> 3/ a new 'efi' target rule in roms/Makefile
> 
> I'm planning to send a PR for this series but I want to check first if
> there is any issue with the current policy/rules.
> 

If this were during -rc2 or -rc3, our goal would be minimizing churn,
and I would lean towards deferral. But for mere softfreeze before -rc0,
and with your justification that this helps downstreams while provably
being independent enough of the main binaries to be low risk, I agree
with the idea of a PR.

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3226
Virtualization:  qemu.org | libvirt.org

Re: [Qemu-devel] [PATCH v2 00/12] bundle edk2 platform firmware with QEMU
Posted by Laszlo Ersek 5 years, 1 month ago
On 03/15/19 17:42, Philippe Mathieu-Daudé wrote:
> Hi,
> 
> From my previous experience with the tests/ patches, I understood we
> could still send PR that improve testing after soft freeze.
> This series doesn't modify the QEMU binaries, it add EDK2 firmware blobs
> in roms/ and rules to rebuild these roms.
> These roms are useful for the ACPI tests introduced in commits
> 09a274d82f and 503bb0b975a on the arm/virt board.
> 
> There is 1 direct change:
> 
> 1/ in the root Makefile, the 'make install' rule installs one new file:
>    - edk2-licenses.txt
> 
> And there are 2 other changes which require user specific action:
> 
> 2/ Set the environment variable 'INSTALL_BLOBS', the 'make install' rule
> will install the firmware blobs and the firmware JSON descriptors

(commenting only on the technical note, not the scheduling / PULL,
because I see other (younger) emails in my INBOX about those:)

"INSTALL_BLOBS" is not a new environment variable or Makefile macro --
the context in the affected patch [1] may not show it, but INSTALL_BLOBS
is preexistent, and some of the hunks modify source code that already
falls under INSTALL_BLOBS's scope (e.g., the mention of the
"edk2-licenses.txt" file).

[1] "Makefile: install the edk2 firmware images and their descriptors"

In fact the commit message refers to "--disable-blobs":

    Decompress and install the edk2 firmware blobs as part of "make
    install", unless blob installation was disabled with configure's
    "--disable-blobs" option.

That's what controls INSTALL_BLOBS. (I was intrigued myself, and had
tracked it down for the commit message.)

Thanks,
Laszlo

> 
> 3/ a new 'efi' target rule in roms/Makefile
> 
> I'm planning to send a PR for this series but I want to check first if
> there is any issue with the current policy/rules.
> 
> Thanks,
> 
> Phil.
> 
> On 3/13/19 10:00 PM, Laszlo Ersek wrote:
>> Repo:   https://github.com/lersek/qemu.git
>> Branch: edk2_build_v2
>>
>> Version 1, that is:
>>   [Qemu-devel] [PATCH 00/10] bundle edk2 platform firmware with QEMU
>>
>> was posted at:
>>   https://lists.gnu.org/archive/html/qemu-devel/2019-03/msg02846.html
>>   http://mid.mail-archive.com/20190309004826.9027-1-lersek@redhat.com
>>
>> Updates in v2 are noted on each patch individually, in the Notes
>> section.
>>
> [...]
>>>  .gitignore                            |   1 +
>>>  MAINTAINERS                           |  12 ++++++++
>>>  Makefile                              |  22 +++++++++++---
>>>  configure                             |   1 +
>>>  pc-bios/README                        |   2 +-
>>>  pc-bios/edk2-aarch64-code.fd          | Bin 67108864 -> 0 bytes
>>>  pc-bios/edk2-aarch64-code.fd.xz       | Bin 0 -> 1146804 bytes
>>>  pc-bios/edk2-arm-code.fd              | Bin 67108864 -> 0 bytes
>>>  pc-bios/edk2-arm-code.fd.xz           | Bin 0 -> 1147852 bytes
>>>  pc-bios/edk2-arm-vars.fd              | Bin 67108864 -> 0 bytes
>>>  pc-bios/edk2-arm-vars.fd.xz           | Bin 0 -> 10008 bytes
>>>  pc-bios/edk2-i386-code.fd             | Bin 3653632 -> 0 bytes
>>>  pc-bios/edk2-i386-code.fd.xz          | Bin 0 -> 1674764 bytes
>>>  pc-bios/edk2-i386-secure-code.fd      | Bin 3653632 -> 0 bytes
>>>  pc-bios/edk2-i386-secure-code.fd.xz   | Bin 0 -> 1870024 bytes
>>>  pc-bios/edk2-i386-vars.fd             | Bin 540672 -> 0 bytes
>>>  pc-bios/edk2-i386-vars.fd.xz          | Bin 0 -> 320 bytes
>>>  pc-bios/edk2-x86_64-code.fd           | Bin 3653632 -> 0 bytes
>>>  pc-bios/edk2-x86_64-code.fd.xz        | Bin 0 -> 1655276 bytes
>>>  pc-bios/edk2-x86_64-secure-code.fd    | Bin 3653632 -> 0 bytes
>>>  pc-bios/edk2-x86_64-secure-code.fd.xz | Bin 0 -> 1889024 bytes
>>>  roms/Makefile.edk2                    |  32 +++++++++++++-------
>>>  roms/edk2-build.sh                    |   2 +-
>>>  roms/edk2-funcs.sh                    |   4 +--
>>>  tests/Makefile.include                |   2 +-
>>>  25 files changed, 57 insertions(+), 21 deletions(-)


Re: [Qemu-devel] [PATCH v2 00/12] bundle edk2 platform firmware with QEMU
Posted by Michael S. Tsirkin 5 years, 1 month ago
On Wed, Mar 13, 2019 at 10:00:45PM +0100, Laszlo Ersek wrote:
> Repo:   https://github.com/lersek/qemu.git
> Branch: edk2_build_v2
> 
> Version 1, that is:
>   [Qemu-devel] [PATCH 00/10] bundle edk2 platform firmware with QEMU
> 
> was posted at:
>   https://lists.gnu.org/archive/html/qemu-devel/2019-03/msg02846.html
>   http://mid.mail-archive.com/20190309004826.9027-1-lersek@redhat.com
> 
> Updates in v2 are noted on each patch individually, in the Notes
> section.
> 
> I'm pasting a cumulative diffstat, and diff, between v1 and v2 below.
> Note that a normal diffstat for this v2 series is at the bottom of the
> cover letter, as usual.

Reviewed-by: Michael S. Tsirkin <mst@redhat.com>


> >  .gitignore                            |   1 +
> >  MAINTAINERS                           |  12 ++++++++
> >  Makefile                              |  22 +++++++++++---
> >  configure                             |   1 +
> >  pc-bios/README                        |   2 +-
> >  pc-bios/edk2-aarch64-code.fd          | Bin 67108864 -> 0 bytes
> >  pc-bios/edk2-aarch64-code.fd.xz       | Bin 0 -> 1146804 bytes
> >  pc-bios/edk2-arm-code.fd              | Bin 67108864 -> 0 bytes
> >  pc-bios/edk2-arm-code.fd.xz           | Bin 0 -> 1147852 bytes
> >  pc-bios/edk2-arm-vars.fd              | Bin 67108864 -> 0 bytes
> >  pc-bios/edk2-arm-vars.fd.xz           | Bin 0 -> 10008 bytes
> >  pc-bios/edk2-i386-code.fd             | Bin 3653632 -> 0 bytes
> >  pc-bios/edk2-i386-code.fd.xz          | Bin 0 -> 1674764 bytes
> >  pc-bios/edk2-i386-secure-code.fd      | Bin 3653632 -> 0 bytes
> >  pc-bios/edk2-i386-secure-code.fd.xz   | Bin 0 -> 1870024 bytes
> >  pc-bios/edk2-i386-vars.fd             | Bin 540672 -> 0 bytes
> >  pc-bios/edk2-i386-vars.fd.xz          | Bin 0 -> 320 bytes
> >  pc-bios/edk2-x86_64-code.fd           | Bin 3653632 -> 0 bytes
> >  pc-bios/edk2-x86_64-code.fd.xz        | Bin 0 -> 1655276 bytes
> >  pc-bios/edk2-x86_64-secure-code.fd    | Bin 3653632 -> 0 bytes
> >  pc-bios/edk2-x86_64-secure-code.fd.xz | Bin 0 -> 1889024 bytes
> >  roms/Makefile.edk2                    |  32 +++++++++++++-------
> >  roms/edk2-build.sh                    |   2 +-
> >  roms/edk2-funcs.sh                    |   4 +--
> >  tests/Makefile.include                |   2 +-
> >  25 files changed, 57 insertions(+), 21 deletions(-)
> 
> > diff --git a/configure b/configure
> > index cab830a4c920..a8e5c14899d6 100755
> > --- a/configure
> > +++ b/configure
> > @@ -7770,6 +7770,7 @@ for bios_file in \
> >      $source_path/pc-bios/*.img \
> >      $source_path/pc-bios/openbios-* \
> >      $source_path/pc-bios/u-boot.* \
> > +    $source_path/pc-bios/edk2-*.fd.xz \
> >      $source_path/pc-bios/palcode-*
> >  do
> >      LINKS="$LINKS pc-bios/$(basename $bios_file)"
> > diff --git a/Makefile b/Makefile
> > index b98567ee0f83..4b325052005e 100644
> > --- a/Makefile
> > +++ b/Makefile
> > @@ -296,6 +296,10 @@ ui/input-keymap-%.c: $(KEYCODEMAP_GEN) $(KEYCODEMAP_CSV) $(SRC_PATH)/ui/Makefile
> >  $(KEYCODEMAP_GEN): .git-submodule-status
> >  $(KEYCODEMAP_CSV): .git-submodule-status
> >
> > +edk2-decompressed = $(basename $(wildcard pc-bios/edk2-*.fd.xz))
> > +pc-bios/edk2-%.fd: pc-bios/edk2-%.fd.xz
> > +	$(call quiet-command,xz -d -c $< > $@,"UNXZ",$<)
> > +
> >  # Don't try to regenerate Makefile or configure
> >  # We don't generate any of them
> >  Makefile: ;
> > @@ -444,6 +448,7 @@ $(SOFTMMU_SUBDIR_RULES): $(block-obj-y)
> >  $(SOFTMMU_SUBDIR_RULES): $(crypto-obj-y)
> >  $(SOFTMMU_SUBDIR_RULES): $(io-obj-y)
> >  $(SOFTMMU_SUBDIR_RULES): config-all-devices.mak
> > +$(SOFTMMU_SUBDIR_RULES): $(edk2-decompressed)
> >
> >  subdir-%:
> >  	$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C $* V="$(V)" TARGET_DIR="$*/" all,)
> > @@ -632,6 +637,7 @@ clean:
> >  		! -path ./roms/edk2/ArmPkg/Library/GccLto/liblto-arm.a \
> >  		! -path ./roms/edk2/BaseTools/Source/Python/UPT/Dll/sqlite3.dll \
> >  		-exec rm {} +
> > +	rm -f $(edk2-decompressed)
> >  	rm -f $(filter-out %.tlb,$(TOOLS)) $(HELPERS-y) qemu-ga TAGS cscope.* *.pod *~ */*~
> >  	rm -f fsdev/*.pod scsi/*.pod
> >  	rm -f qemu-img-cmds.h
> > @@ -722,10 +728,8 @@ spapr-rtas.bin slof.bin skiboot.lid \
> >  palcode-clipper \
> >  u-boot.e500 u-boot-sam460-20100605.bin \
> >  qemu_vga.ndrv \
> > -hppa-firmware.img \
> > -edk2-aarch64-code.fd edk2-arm-code.fd edk2-i386-code.fd \
> > -edk2-i386-secure-code.fd edk2-x86_64-code.fd edk2-x86_64-secure-code.fd \
> > -edk2-arm-vars.fd edk2-i386-vars.fd edk2-licenses.txt
> > +edk2-licenses.txt \
> > +hppa-firmware.img
> >
> >  DESCS=50-edk2-i386-secure.json 50-edk2-x86_64-secure.json \
> >  60-edk2-aarch64.json 60-edk2-arm.json 60-edk2-i386.json 60-edk2-x86_64.json
> > @@ -792,7 +796,8 @@ endif
> >
> >  ICON_SIZES=16x16 24x24 32x32 48x48 64x64 128x128 256x256 512x512
> >
> > -install: all $(if $(BUILD_DOCS),install-doc) install-datadir install-localstatedir
> > +install: all $(if $(BUILD_DOCS),install-doc) install-datadir install-localstatedir \
> > +	$(if $(INSTALL_BLOBS),$(edk2-decompressed))
> >  ifneq ($(TOOLS),)
> >  	$(call install-prog,$(subst qemu-ga,qemu-ga$(EXESUF),$(TOOLS)),$(DESTDIR)$(bindir))
> >  endif
> > @@ -814,6 +819,13 @@ ifneq ($(BLOBS),)
> >  	set -e; for x in $(BLOBS); do \
> >  		$(INSTALL_DATA) $(SRC_PATH)/pc-bios/$$x "$(DESTDIR)$(qemu_datadir)"; \
> >  	done
> > +endif
> > +ifdef INSTALL_BLOBS
> > +	set -e; for x in $(edk2-decompressed); do \
> > +		$(INSTALL_DATA) $$x "$(DESTDIR)$(qemu_datadir)"; \
> > +	done
> > +endif
> > +ifneq ($(DESCS),)
> >  	$(INSTALL_DIR) "$(DESTDIR)$(qemu_datadir)/firmware"
> >  	set -e; tmpf=$$(mktemp); trap 'rm -f -- "$$tmpf"' EXIT; \
> >  	for x in $(DESCS); do \
> > diff --git a/roms/Makefile.edk2 b/roms/Makefile.edk2
> > index ad6fff044cd6..e5c3036949c8 100644
> > --- a/roms/Makefile.edk2
> > +++ b/roms/Makefile.edk2
> > @@ -1,7 +1,7 @@
> >  # Makefile for building firmware binaries and variable store templates for a
> >  # number of virtual platforms in edk2.
> >  #
> > -# Copyright (C) 2019, Red Hat, Inc.
> > +# Copyright (C) 2019 Red Hat, Inc.
> >  #
> >  # This program and the accompanying materials are licensed and made available
> >  # under the terms and conditions of the BSD License that accompanies this
> > @@ -11,6 +11,8 @@
> >  # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT
> >  # WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
> >
> > +SHELL = /bin/bash
> > +
> >  toolchain = $(shell source ./edk2-funcs.sh && qemu_edk2_get_toolchain $(1))
> >
> >  licenses := \
> > @@ -21,19 +23,27 @@ licenses := \
> >  # The "edk2-arm-vars.fd" varstore template is suitable for aarch64 as well.
> >  # Similarly, the "edk2-i386-vars.fd" varstore template is suitable for x86_64
> >  # as well, independently of "secure" too.
> > -all: \
> > -	../pc-bios/edk2-aarch64-code.fd \
> > -	../pc-bios/edk2-arm-code.fd \
> > -	../pc-bios/edk2-i386-code.fd \
> > -	../pc-bios/edk2-i386-secure-code.fd \
> > -	../pc-bios/edk2-x86_64-code.fd \
> > -	../pc-bios/edk2-x86_64-secure-code.fd \
> > -	\
> > -	../pc-bios/edk2-arm-vars.fd \
> > -	../pc-bios/edk2-i386-vars.fd \
> > +flashdevs := \
> > +	aarch64-code \
> > +	arm-code \
> > +	i386-code \
> > +	i386-secure-code \
> > +	x86_64-code \
> > +	x86_64-secure-code \
> >  	\
> > +	arm-vars \
> > +	i386-vars
> > +
> > +all: $(foreach flashdev,$(flashdevs),../pc-bios/edk2-$(flashdev).fd.xz) \
> >  	../pc-bios/edk2-licenses.txt
> >
> > +../pc-bios/edk2-%.fd.xz: ../pc-bios/edk2-%.fd
> > +	xz -9 -e -c $< > $@
> > +
> > +# When the build completes, we need not keep the uncompressed flash device
> > +# files.
> > +.INTERMEDIATE: $(foreach flashdev,$(flashdevs),../pc-bios/edk2-$(flashdev).fd)
> > +
> >  submodules:
> >  	cd edk2 && git submodule update --init --force
> >
> > diff --git a/tests/Makefile.include b/tests/Makefile.include
> > index a5719551dd1b..6c116addafe4 100644
> > --- a/tests/Makefile.include
> > +++ b/tests/Makefile.include
> > @@ -915,7 +915,7 @@ check-speed: $(check-speed-y)
> >
> >  # gtester tests with TAP output
> >
> > -$(patsubst %, check-report-qtest-%.tap, $(QTEST_TARGETS)): check-report-qtest-%.tap: $(check-qtest-y)
> > +$(patsubst %, check-report-qtest-%.tap, $(QTEST_TARGETS)): check-report-qtest-%.tap: subdir-%-softmmu $(check-qtest-y)
> >  	$(call do_test_tap, $(check-qtest-$*-y) $(check-qtest-generic-y), \
> >  	  QTEST_QEMU_BINARY=$*-softmmu/qemu-system-$* \
> >  	  QTEST_QEMU_IMG=qemu-img$(EXESUF))
> > diff --git a/.gitignore b/.gitignore
> > index 77522561b8ea..889896c023fd 100644
> > --- a/.gitignore
> > +++ b/.gitignore
> > @@ -96,6 +96,7 @@
> >  *.gcno
> >  *.gcov
> >  /pc-bios/bios-pq/status
> > +/pc-bios/edk2-*.fd
> >  /pc-bios/vgabios-pq/status
> >  /pc-bios/optionrom/linuxboot.asm
> >  /pc-bios/optionrom/linuxboot.bin
> > diff --git a/MAINTAINERS b/MAINTAINERS
> > index d3267560799b..eefa225a234a 100644
> > --- a/MAINTAINERS
> > +++ b/MAINTAINERS
> > @@ -2207,6 +2207,18 @@ F: include/hw/i2c/smbus_master.h
> >  F: include/hw/i2c/smbus_slave.h
> >  F: include/hw/i2c/smbus_eeprom.h
> >
> > +EDK2 Firmware
> > +M: Laszlo Ersek <lersek@redhat.com>
> > +M: Philippe Mathieu-Daudé <philmd@redhat.com>
> > +S: Supported
> > +F: pc-bios/descriptors/??-edk2-*.json
> > +F: pc-bios/edk2-*
> > +F: roms/Makefile.edk2
> > +F: roms/edk2
> > +F: roms/edk2-*
> > +F: tests/data/uefi-boot-images/
> > +F: tests/uefi-test-tools/
> > +
> >  Usermode Emulation
> >  ------------------
> >  Overall
> > diff --git a/pc-bios/README b/pc-bios/README
> > index 4b87e1e975c9..f6acd3209610 100644
> > --- a/pc-bios/README
> > +++ b/pc-bios/README
> > @@ -51,7 +51,7 @@
> >  - QemuMacDrivers (https://github.com/ozbenh/QemuMacDrivers) is a project to
> >    provide virtualised drivers for PPC MacOS guests.
> >
> > -- The "edk2-*.fd" images are platform firmware binaries and matching UEFI
> > +- The "edk2-*.fd.xz" images are platform firmware binaries and matching UEFI
> >    variable store templates built from the TianoCore community's EFI Development
> >    Kit II project
> >    <https://github.com/tianocore/tianocore.github.io/wiki/EDK-II>. The images
> > diff --git a/pc-bios/edk2-aarch64-code.fd b/pc-bios/edk2-aarch64-code.fd
> > deleted file mode 100644
> > index c6ef5113e8cd..000000000000
> > Binary files a/pc-bios/edk2-aarch64-code.fd and /dev/null differ
> > diff --git a/pc-bios/edk2-aarch64-code.fd.xz b/pc-bios/edk2-aarch64-code.fd.xz
> > new file mode 100644
> > index 000000000000..8ca34c56b51b
> > Binary files /dev/null and b/pc-bios/edk2-aarch64-code.fd.xz differ
> > diff --git a/pc-bios/edk2-arm-code.fd b/pc-bios/edk2-arm-code.fd
> > deleted file mode 100644
> > index 2ebd846818d1..000000000000
> > Binary files a/pc-bios/edk2-arm-code.fd and /dev/null differ
> > diff --git a/pc-bios/edk2-arm-code.fd.xz b/pc-bios/edk2-arm-code.fd.xz
> > new file mode 100644
> > index 000000000000..db2c20b71e29
> > Binary files /dev/null and b/pc-bios/edk2-arm-code.fd.xz differ
> > diff --git a/pc-bios/edk2-arm-vars.fd b/pc-bios/edk2-arm-vars.fd
> > deleted file mode 100644
> > index a71658f98825..000000000000
> > Binary files a/pc-bios/edk2-arm-vars.fd and /dev/null differ
> > diff --git a/pc-bios/edk2-arm-vars.fd.xz b/pc-bios/edk2-arm-vars.fd.xz
> > new file mode 100644
> > index 000000000000..8c3a4b5c8bdc
> > Binary files /dev/null and b/pc-bios/edk2-arm-vars.fd.xz differ
> > diff --git a/pc-bios/edk2-i386-code.fd b/pc-bios/edk2-i386-code.fd
> > deleted file mode 100644
> > index df3d24182209..000000000000
> > Binary files a/pc-bios/edk2-i386-code.fd and /dev/null differ
> > diff --git a/pc-bios/edk2-i386-code.fd.xz b/pc-bios/edk2-i386-code.fd.xz
> > new file mode 100644
> > index 000000000000..f25dbec37e72
> > Binary files /dev/null and b/pc-bios/edk2-i386-code.fd.xz differ
> > diff --git a/pc-bios/edk2-i386-secure-code.fd b/pc-bios/edk2-i386-secure-code.fd
> > deleted file mode 100644
> > index 9f203cdd0d88..000000000000
> > Binary files a/pc-bios/edk2-i386-secure-code.fd and /dev/null differ
> > diff --git a/pc-bios/edk2-i386-secure-code.fd.xz b/pc-bios/edk2-i386-secure-code.fd.xz
> > new file mode 100644
> > index 000000000000..11d499b90d85
> > Binary files /dev/null and b/pc-bios/edk2-i386-secure-code.fd.xz differ
> > diff --git a/pc-bios/edk2-i386-vars.fd b/pc-bios/edk2-i386-vars.fd
> > deleted file mode 100644
> > index efb4f46c09af..000000000000
> > Binary files a/pc-bios/edk2-i386-vars.fd and /dev/null differ
> > diff --git a/pc-bios/edk2-i386-vars.fd.xz b/pc-bios/edk2-i386-vars.fd.xz
> > new file mode 100644
> > index 000000000000..1656532daa6e
> > Binary files /dev/null and b/pc-bios/edk2-i386-vars.fd.xz differ
> > diff --git a/pc-bios/edk2-x86_64-code.fd b/pc-bios/edk2-x86_64-code.fd
> > deleted file mode 100644
> > index bf2dd8c4373d..000000000000
> > Binary files a/pc-bios/edk2-x86_64-code.fd and /dev/null differ
> > diff --git a/pc-bios/edk2-x86_64-code.fd.xz b/pc-bios/edk2-x86_64-code.fd.xz
> > new file mode 100644
> > index 000000000000..92398935a482
> > Binary files /dev/null and b/pc-bios/edk2-x86_64-code.fd.xz differ
> > diff --git a/pc-bios/edk2-x86_64-secure-code.fd b/pc-bios/edk2-x86_64-secure-code.fd
> > deleted file mode 100644
> > index d1a28834ce60..000000000000
> > Binary files a/pc-bios/edk2-x86_64-secure-code.fd and /dev/null differ
> > diff --git a/pc-bios/edk2-x86_64-secure-code.fd.xz b/pc-bios/edk2-x86_64-secure-code.fd.xz
> > new file mode 100644
> > index 000000000000..a95891dcf134
> > Binary files /dev/null and b/pc-bios/edk2-x86_64-secure-code.fd.xz differ
> > diff --git a/roms/edk2-build.sh b/roms/edk2-build.sh
> > index 936d2c874a22..4f46f8a6a217 100755
> > --- a/roms/edk2-build.sh
> > +++ b/roms/edk2-build.sh
> > @@ -2,7 +2,7 @@
> >
> >  # Wrapper shell script for building a  virtual platform firmware in edk2.
> >  #
> > -# Copyright (C) 2019, Red Hat, Inc.
> > +# Copyright (C) 2019 Red Hat, Inc.
> >  #
> >  # This program and the accompanying materials are licensed and made available
> >  # under the terms and conditions of the BSD License that accompanies this
> > diff --git a/roms/edk2-funcs.sh b/roms/edk2-funcs.sh
> > index 7fc62f074c59..a9fae7ee891b 100644
> > --- a/roms/edk2-funcs.sh
> > +++ b/roms/edk2-funcs.sh
> > @@ -1,9 +1,9 @@
> >  # Shell script that defines functions for determining some environmental
> >  # characteristics for the edk2 "build" utility.
> >  #
> > -# This script is meant to be sourced.
> > +# This script is meant to be sourced, in a bash environment.
> >  #
> > -# Copyright (C) 2019, Red Hat, Inc.
> > +# Copyright (C) 2019 Red Hat, Inc.
> >  #
> >  # This program and the accompanying materials are licensed and made available
> >  # under the terms and conditions of the BSD License that accompanies this
> 
> Thanks,
> Laszlo
> 
> Laszlo Ersek (12):
>   roms: lift "edk2-funcs.sh" from "tests/uefi-test-tools/build.sh"
>   roms/edk2-funcs.sh: require gcc-4.8+ for building i386 and x86_64
>   tests/uefi-test-tools/build.sh: work around TianoCore#1607
>   roms/edk2: advance to tag edk2-stable201903
>   roms/edk2-funcs.sh: add the qemu_edk2_get_thread_count() function
>   roms/Makefile: replace the $(EFIROM) target with "edk2-basetools"
>   roms: build edk2 firmware binaries and variable store templates
>   pc-bios: add edk2 firmware binaries and variable store templates
>   pc-bios: document the edk2 firmware images; add firmware descriptors
>   tests: add missing dependency to build QTEST_QEMU_BINARY, round 2
>   Makefile: install the edk2 firmware images and their descriptors
>   MAINTAINERS: add the "EDK2 Firmware" subsystem
> 
>  .gitignore                                     |   1 +
>  MAINTAINERS                                    |  12 +
>  Makefile                                       |  29 ++-
>  configure                                      |   1 +
>  pc-bios/README                                 |  11 +
>  pc-bios/descriptors/50-edk2-i386-secure.json   |  34 +++
>  pc-bios/descriptors/50-edk2-x86_64-secure.json |  35 +++
>  pc-bios/descriptors/60-edk2-aarch64.json       |  31 +++
>  pc-bios/descriptors/60-edk2-arm.json           |  31 +++
>  pc-bios/descriptors/60-edk2-i386.json          |  33 +++
>  pc-bios/descriptors/60-edk2-x86_64.json        |  34 +++
>  pc-bios/edk2-aarch64-code.fd.xz                | Bin 0 -> 1146804 bytes
>  pc-bios/edk2-arm-code.fd.xz                    | Bin 0 -> 1147852 bytes
>  pc-bios/edk2-arm-vars.fd.xz                    | Bin 0 -> 10008 bytes
>  pc-bios/edk2-i386-code.fd.xz                   | Bin 0 -> 1674764 bytes
>  pc-bios/edk2-i386-secure-code.fd.xz            | Bin 0 -> 1870024 bytes
>  pc-bios/edk2-i386-vars.fd.xz                   | Bin 0 -> 320 bytes
>  pc-bios/edk2-licenses.txt                      | 209 ++++++++++++++++
>  pc-bios/edk2-x86_64-code.fd.xz                 | Bin 0 -> 1655276 bytes
>  pc-bios/edk2-x86_64-secure-code.fd.xz          | Bin 0 -> 1889024 bytes
>  roms/Makefile                                  |   9 +-
>  roms/Makefile.edk2                             | 148 ++++++++++++
>  roms/edk2                                      |   2 +-
>  roms/edk2-build.sh                             |  55 +++++
>  roms/edk2-funcs.sh                             | 253 ++++++++++++++++++++
>  tests/Makefile.include                         |   2 +-
>  tests/uefi-test-tools/build.sh                 | 100 +-------
>  27 files changed, 934 insertions(+), 96 deletions(-)
>  create mode 100644 pc-bios/descriptors/50-edk2-i386-secure.json
>  create mode 100644 pc-bios/descriptors/50-edk2-x86_64-secure.json
>  create mode 100644 pc-bios/descriptors/60-edk2-aarch64.json
>  create mode 100644 pc-bios/descriptors/60-edk2-arm.json
>  create mode 100644 pc-bios/descriptors/60-edk2-i386.json
>  create mode 100644 pc-bios/descriptors/60-edk2-x86_64.json
>  create mode 100644 pc-bios/edk2-aarch64-code.fd.xz
>  create mode 100644 pc-bios/edk2-arm-code.fd.xz
>  create mode 100644 pc-bios/edk2-arm-vars.fd.xz
>  create mode 100644 pc-bios/edk2-i386-code.fd.xz
>  create mode 100644 pc-bios/edk2-i386-secure-code.fd.xz
>  create mode 100644 pc-bios/edk2-i386-vars.fd.xz
>  create mode 100644 pc-bios/edk2-licenses.txt
>  create mode 100644 pc-bios/edk2-x86_64-code.fd.xz
>  create mode 100644 pc-bios/edk2-x86_64-secure-code.fd.xz
>  create mode 100644 roms/Makefile.edk2
>  create mode 100755 roms/edk2-build.sh
>  create mode 100644 roms/edk2-funcs.sh
> 
> -- 
> 2.19.1.3.g30247aa5d201