From 2795cfe189bbb8c47d9ea6bdbcc190f7fb3abe14 Mon Sep 17 00:00:00 2001
From: Jens Wiklander <jens.wiklander@linaro.org>
Date: Thu, 30 Mar 2017 08:22:50 +0200
Subject: [PATCH] qemu_v8: switch to compile UEFI from EDK2 upstream

* Switches to compile UEFI from EDK2 upstream.
* Passes -no-acpi to QEMU when starting to make UEFI pass the FDT to the kernel

Reviewed-by: Joakim Bech <joakim.bech@linaro.org>
Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
---
 qemu_v8.mk | 47 ++++++++++++++++++++++++++---------------------
 1 file changed, 26 insertions(+), 21 deletions(-)

diff --git a/qemu_v8.mk b/qemu_v8.mk
index ca27b7e..9500059 100644
--- a/qemu_v8.mk
+++ b/qemu_v8.mk
@@ -13,23 +13,23 @@ override COMPILE_S_KERNEL  := 64
 ################################################################################
 # Paths to git projects and various binaries
 ################################################################################
-ARM_TF_PATH			?= $(ROOT)/arm-trusted-firmware
+ARM_TF_PATH		?= $(ROOT)/arm-trusted-firmware
 
-EDK2_PATH			?= $(ROOT)/edk2
-EDK2_BIN			?= $(EDK2_PATH)/QEMU_EFI.fd
+EDK2_PATH		?= $(ROOT)/edk2
+EDK2_BIN		?= $(EDK2_PATH)/Build/ArmVirtQemuKernel-AARCH64/DEBUG_GCC49/FV/QEMU_EFI.fd
 
-QEMU_PATH			?= $(ROOT)/qemu
+QEMU_PATH		?= $(ROOT)/qemu
 
-SOC_TERM_PATH			?= $(ROOT)/soc_term
-STRACE_PATH			?= $(ROOT)/strace
+SOC_TERM_PATH		?= $(ROOT)/soc_term
+STRACE_PATH		?= $(ROOT)/strace
 
 DEBUG = 1
 
 ################################################################################
 # Targets
 ################################################################################
-all: arm-tf qemu soc-term linux strace update_rootfs
-all-clean: arm-tf-clean busybox-clean linux-clean \
+all: arm-tf edk2 qemu soc-term linux strace update_rootfs
+all-clean: arm-tf-clean busybox-clean edk2-clean linux-clean \
 	optee-os-clean optee-client-clean qemu-clean \
 	soc-term-clean check-clean strace-clean
 
@@ -55,22 +55,12 @@ ARM_TF_FLAGS ?= \
 
 arm-tf: optee-os edk2
 	$(ARM_TF_EXPORTS) $(MAKE) -C $(ARM_TF_PATH) $(ARM_TF_FLAGS) all fip
+	ln -sf $(OPTEE_OS_BIN) $(ARM_TF_PATH)/build/qemu/release/bl32.bin
+	ln -sf $(EDK2_BIN) $(ARM_TF_PATH)/build/qemu/release/bl33.bin
 
 arm-tf-clean:
 	$(ARM_TF_EXPORTS) $(MAKE) -C $(ARM_TF_PATH) $(ARM_TF_FLAGS) clean
 
-# FIXME: This is just too rough, we should build this just as we're doing for
-#        FVP.
-edk2: optee-os
-ifeq ("$(wildcard $(EDK2_BIN))","")
-	mkdir -p $(EDK2_PATH)
-	wget -O $(EDK2_BIN) \
-		http://snapshots.linaro.org/components/kernel/leg-virt-tianocore-edk2-upstream/latest/QEMU-KERNEL-AARCH64/RELEASE_GCC49/QEMU_EFI.fd
-endif
-	mkdir -p $(ARM_TF_PATH)/build/qemu/release
-	ln -sf $(OPTEE_OS_BIN) $(ARM_TF_PATH)/build/qemu/release/bl32.bin
-	ln -sf $(EDK2_BIN) $(ARM_TF_PATH)/build/qemu/release/bl33.bin
-
 ################################################################################
 # QEMU
 ################################################################################
@@ -95,6 +85,21 @@ busybox-clean: busybox-clean-common
 
 busybox-cleaner: busybox-cleaner-common
 
+################################################################################
+# EDK2 / Tianocore
+################################################################################
+define edk2-call
+	GCC49_AARCH64_PREFIX=$(LEGACY_AARCH64_CROSS_COMPILE) \
+		build -a AARCH64 -b DEBUG -t GCC49 \
+			-p ArmVirtPkg/ArmVirtQemuKernel.dsc
+endef
+
+edk2: edk2-common
+
+edk2-clean: edk2-clean-common
+
+
+
 ################################################################################
 # Linux kernel
 ################################################################################
@@ -208,7 +213,7 @@ run-only:
 		-machine virt,secure=on -cpu cortex-a57 -m 1057 -bios $(ARM_TF_PATH)/build/qemu/release/bl1.bin \
 		-s -S -semihosting-config enable,target=native -d unimp \
 		-initrd $(GEN_ROOTFS_PATH)/filesystem.cpio.gz \
-		-kernel $(LINUX_PATH)/arch/arm64/boot/Image \
+		-kernel $(LINUX_PATH)/arch/arm64/boot/Image -no-acpi \
 		-append 'console=ttyAMA0,38400 keep_bootcon root=/dev/vda2' \
 		$(QEMU_EXTRA_ARGS)
 
-- 
GitLab