[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 00/12] bundle edk2 platform firmware with QEMU
From: |
Laszlo Ersek |
Subject: |
[Qemu-devel] [PATCH v2 00/12] bundle edk2 platform firmware with QEMU |
Date: |
Wed, 13 Mar 2019 22:00:45 +0100 |
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/address@hidden
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 <address@hidden>
> +M: Philippe Mathieu-Daudé <address@hidden>
> +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
- [Qemu-devel] [PATCH v2 00/12] bundle edk2 platform firmware with QEMU,
Laszlo Ersek <=