Hello Linaro.
I really like your firmware, tested it in QEMU for some days.
But I have a problem to report - Windows on ARM does not boot anymore on latest Linaro for 32-bit ARM QEMU.
Windows bootloader just reports an error code 0xC0000017 (aka STATUS_NO_MEMORY).
I did some regression testing and here are results:
+------------------+-------------+------------+--------------+
| Version | Boot Status | VGA Status | RAMFB Status |
| QEMU_EFI_1512.fd | Success | available | no video |
| QEMU_EFI_1602.fd | 0xC0000001 | available | no video |
| QEMU_EFI_1710.fd | 0xC0000017 | no video | no video |
| QEMU_EFI_1802.fd | 0xC0000017 | no video | no video |
| QEMU_EFI_1811.fd | 0xC0000017 | no video | available |
| QEMU_EFI_1903.fd | 0xC0000017 | no video | available |
+------------------+-------------+------------+--------------+
Summarizing my test results:
- 15.12 is the last release that can boot Windows on ARM
- 16.02 is the last release that have VGA support
I'm not sure VGA is required by Windows, just a RAM framebuffer should be enough, but I tested it anyway.
Testing was performed with Windows RT 8.1 iso image and Windows 10 ARM32 build 15035, results are the same for both guest systems.
I took prebuilt firmware images from the official releases site:
- 15.12 to 16.02: https://releases.linaro.org/components/kernel/uefi-linaro/
- 17.10 to 19.03: https://releases.linaro.org/reference-platform/enterprise/firmware/open-sou…
Note that I tested everything with full emulation without KVM acceleration in qemu-system-arm.
I need Windows on ARM (32-bit) virtual machine specifically for testing ReactOS applications built for ARMv7 Thumb-2 platform, and also for some other research purposes.
I hope you can solve this problem. Feel free to ask me for additional information, help, and testing.
Best regards,
Stas'M.
This is RFC for UEFI implementation for new machine based on Qemu Virt which is
faithful as possible to real hardware. In opposition to existing Qemu Virt
machine which is suited for performing workloads, the purpose of this machine
is development of firmware and OS for AARCH64 server alike platforms (like in
situation where real HW is not available yet or the debugging is easier to
control under emulation). The SBSAQemu name, was chosen because the modeled HW
is aimed to follow way that server-style armv8 machines are recommended to be
set up.
Support for Sbsa-ref machine was added into Qemu in v4.1.0
Implementation does not use fw-cfg nor DT provided by Qemu.
The ATF part is curently under review:
https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/1568/1
The compilation of edk2-platforms is described under:
Platform/Qemu/SbsaQemu/Readme.md
This patch is provided as presentation for progress, not functional UEFI
implementation. You cannot boot system at current state.
To mention just few missing features:
- Qemu <-> ATF <-> UEFI communication channel for dynamic parameters like DRAM size
- Related dynamic initialization in UEFI is for now with static PCD's
- ACPI platform driver
- SMBIOS Support
Please provide feedback which might be helpfull for future development.
Radoslaw Biernacki (1):
SbsaQemu: EFI implementation for SbsaQemu platform
Silicon/Qemu/SbsaQemuPkg.dec | 45 ++
Platform/Qemu/SbsaQemu/SbsaQemu.dsc | 744 ++++++++++++++++++
Platform/Qemu/SbsaQemu/SbsaQemu.fdf | 328 ++++++++
.../SbsaQemuPlatformDxe.inf | 48 ++
.../Qemu/Library/SbsaQemuLib/SbsaQemuLib.inf | 53 ++
.../SbsaQemuNorFlashLib.inf | 35 +
.../SbsaQemuPciHostBridgeLib.inf | 55 ++
.../SbsaQemuPlatformDxe/SbsaQemuPlatformDxe.c | 61 ++
.../Qemu/Library/SbsaQemuLib/SbsaQemuLib.c | 148 ++++
.../Qemu/Library/SbsaQemuLib/SbsaQemuMem.c | 109 +++
.../SbsaQemuNorFlashLib/SbsaQemuNorFlashLib.c | 46 ++
.../SbsaQemuPciHostBridgeLib.c | 224 ++++++
Maintainers.txt | 12 +
Platform/Qemu/SbsaQemu/Readme.md | 162 ++++
Readme.md | 3 +
.../Qemu/Library/SbsaQemuLib/SbsaQemuHelper.S | 62 ++
16 files changed, 2135 insertions(+)
create mode 100644 Silicon/Qemu/SbsaQemuPkg.dec
create mode 100644 Platform/Qemu/SbsaQemu/SbsaQemu.dsc
create mode 100644 Platform/Qemu/SbsaQemu/SbsaQemu.fdf
create mode 100644 Silicon/Qemu/Drivers/SbsaQemuPlatformDxe/SbsaQemuPlatformDxe.inf
create mode 100644 Silicon/Qemu/Library/SbsaQemuLib/SbsaQemuLib.inf
create mode 100644 Silicon/Qemu/Library/SbsaQemuNorFlashLib/SbsaQemuNorFlashLib.inf
create mode 100644 Silicon/Qemu/Library/SbsaQemuPciHostBridgeLib/SbsaQemuPciHostBridgeLib.inf
create mode 100644 Silicon/Qemu/Drivers/SbsaQemuPlatformDxe/SbsaQemuPlatformDxe.c
create mode 100644 Silicon/Qemu/Library/SbsaQemuLib/SbsaQemuLib.c
create mode 100644 Silicon/Qemu/Library/SbsaQemuLib/SbsaQemuMem.c
create mode 100644 Silicon/Qemu/Library/SbsaQemuNorFlashLib/SbsaQemuNorFlashLib.c
create mode 100644 Silicon/Qemu/Library/SbsaQemuPciHostBridgeLib/SbsaQemuPciHostBridgeLib.c
create mode 100644 Platform/Qemu/SbsaQemu/Readme.md
create mode 100644 Silicon/Qemu/Library/SbsaQemuLib/SbsaQemuHelper.S
--
2.17.1
Hi all,
I find EFI_MP_SERVICES_PROTOCOL is implemented on Intel architecture, but not on ARM architecture.
Why is it not implemented on ARM architecture?
Any plan about implementing it on ARM architecture?
Many Thanks,
Kind Regards,
Jiwen Qi
edk2-platforms has been the actively developed tree for nearly two years,
so delete the outdated script for building OpenPlatformPkg, and its
associated platform configuration file.
Signed-off-by: Leif Lindholm <leif.lindholm(a)linaro.org>
---
Haojian - long ago you asked me to keep uefi-build.sh around for a
while, since you were still using it. I think the time we agreed on has
long since passed. Are you OK with me deleting it now?
platforms.config | 310 --------------------------
uefi-build.sh | 398 ----------------------------------
uefi-build.sh.bash_completion | 24 --
3 files changed, 732 deletions(-)
delete mode 100644 platforms.config
delete mode 100755 uefi-build.sh
delete mode 100644 uefi-build.sh.bash_completion
diff --git a/platforms.config b/platforms.config
deleted file mode 100644
index 4d29c65..0000000
--- a/platforms.config
+++ /dev/null
@@ -1,310 +0,0 @@
-# Platform build configurations for Linaro EDK2 builds
-# ====================================================
-# The configuration file format is extremely simplistic:
-# - Each platform has a short name.
-# - A platform entry starts by the short name held in square brackets, '[]'
-# - Within each entry, all options are described in a NAME=VALUE scheme,
-# with the name being whatever comes before the first '=' on the line,
-# and the value being everything that comes after it.
-#
-# Mandatory options:
-# - LONGNAME A more descriptive name of the platform.
-# - DSC Pointer to the EDK2 build description file. (The
-# pandaboard is excused, all other ports must have this.)
-# - ARCH String describing the architecture to build for.
-# Currently supported are AARCH32 and AARCH64.
-# - UEFI_BIN Name of executable image produced.
-# - UEFI_IMAGE_DIR Build output directory name, relative to 'Build'.
-#
-# Options for Trusted OS
-# Note that OP-TEE (https://github.com/OP-TEE/optee_os) is the only currently
-# supported Trusted OS
-# - BUILD_TOS Set to "yes" if the build should automatically build
-# Trusted OS, mainly for ARM Trusted Firmware.
-# If this is set, you must also set ATF_SPD!
-# Else we will not know which specific Trusted OS to
-# build.
-# Set to "debug" to create a debug build.
-# - TOS_ARCH String describing the architecture to build for.
-# Currently the supported architecture is ARM.
-# - TOS_PLATFORM Platform name for Trusted OS build, if
-# different from ARM Trusted Firmware platform
-# or UEFI platform name.
-# - TOS_PLATFORM_FLAVOR If a core platform has multiple flavors, specify which
-# flavor here.
-#
-# Options for ARM Trusted Firmware platforms
-# - BUILD_ATF Set to "yes" if the build should automatically build
-# ARM Trusted Firmware and a fip containing UEFI image.
-# Set to "debug" to create a debug build.
-# - ATF_PLATFORM Platform name for ARM Trusted Firmware build, if
-# different from UEFI platform name.
-# - SCP_BIN SCP image to pass to ARM Trusted Firmware.
-# - TOS_BIN Trusted OS image to pass to ARM Trusted Firmware.
-# The path is relative to
-# $EDK2_DIR/Build/$PLATFORM_IMAGE_DIR/$BUILD_PROFILE/FV/.
-# To actually build the Trusted OS, you must also set
-# ATF_SPD.
-# - ATF_SPD Name of Secure Payload Dispatcher
-# To actually build the Trusted OS, you must also set
-# TOS_BIN.
-# - SPM_BIN Prebuilt Secure Partition image to pass to ARM Trusted Firmware.
-# The path is relative to
-# $EDK2_DIR/Build/StandaloneSmmPkg/$BUILD_PROFILE/FV/.
-#
-# Optional options:
-# - BUILDFLAGS Any special flags you want to pass to the build command.
-# - ATF_BUILDFLAGS Any special flags you want to pass to the ARM Trusted
-# Firmware build command.
-# - TOS_BUILDFLAGS Any special flags you want to pass to the Trusted OS
-# build command.
-# - EXTRA_FILES Any additional files to be copied to output dir.
-# - PREBUILD_CMDS Any commands you want to execute before the build step.
-# - POSTBUILD_CMDS Any commands you want to execute after the build step.
-# - PACKAGES_PATH Additional directories to search for packages under.
-# - INF Point to a .inf (in addition to a .dsc) in order to
-# build a single component (standalone driver/app).
-#
-
-[juno]
-LONGNAME=aarch64 Juno
-DSC=OpenPlatformPkg/Platforms/ARM/Juno/ArmJuno.dsc
-BUILDFLAGS=
-ARCH=AARCH64
-BUILD_ATF=yes
-UEFI_BIN=BL33_AP_UEFI.fd
-UEFI_IMAGE_DIR=ArmJuno
-SCP_BIN=OpenPlatformPkg/Platforms/ARM/Juno/Binary/bl30.bin
-EXTRA_FILES=../../../../OpenPlatformPkg/Platforms/ARM/Juno/Binary/bl0.bin ../../../../OpenPlatformPkg/Platforms/ARM/Juno/Binary/Copying.txt
-
-# ARM FVP BASE AEMv8-A model
-[fvp_full]
-LONGNAME=aarch64 FVP RTSM with full perhiperhal set
-DSC=OpenPlatformPkg/Platforms/ARM/VExpress/ArmVExpress-FVP-AArch64.dsc
-BUILDFLAGS=-D EDK2_OUT_DIR=Build/ArmVExpress-FVP-AArch64-Full -D EDK2_ENABLE_SMSC_91X=1 -D EDK2_ENABLE_PL111=1
-ARCH=AARCH64
-UEFI_BIN=FVP_AARCH64_EFI.fd
-UEFI_IMAGE_DIR=ArmVExpress-FVP-AArch64-Full
-
-[fvp]
-LONGNAME=aarch64 FVP RTSM
-DSC=OpenPlatformPkg/Platforms/ARM/VExpress/ArmVExpress-FVP-AArch64.dsc
-BUILDFLAGS=-D EDK2_ENABLE_SMSC_91X=1
-ARCH=AARCH64
-BUILD_ATF=yes
-UEFI_BIN=FVP_AARCH64_EFI.fd
-UEFI_IMAGE_DIR=ArmVExpress-FVP-AArch64
-
-# ARM FVP BASE AEMv8-A model
-[fvp_mm_standalone]
-LONGNAME=FVP Base for MM Standalone image in secure world
-DSC=StandaloneSmmPkg/StandaloneSmmPkg.dsc
-ARCH=AARCH64
-UEFI_BIN=FVP_AARCH64_EFI_MM_STANDALONE.fd
-UEFI_IMAGE_DIR=ArmVExpress-FVP-AArch64-MM-Standalone
-
-[fvp_mm_normal]
-LONGNAME=FVP Base for UEFI image with MM support in normal world
-DSC=OpenPlatformPkg/Platforms/ARM/VExpress/ArmVExpress-FVP-AArch64.dsc
-BUILDFLAGS=-D EDK2_OUT_DIR=Build/ArmVExpress-FVP-AArch64-MM-Normal -D ARM_STANDALONE_MM_ENABLE=TRUE
-ARCH=AARCH64
-BUILD_ATF=debug
-UEFI_BIN=FVP_AARCH64_EFI.fd
-UEFI_IMAGE_DIR=ArmVExpress-FVP-AArch64-MM-Normal
-ATF_PLATFORM=fvp
-SPM_BIN=STANDALONESMM.fd
-ATF_BUILDFLAGS=ARM_BL31_IN_DRAM=1
-
-[tc2]
-LONGNAME=Versatile Express TC2
-BUILDFLAGS=-D ARM_BIGLITTLE_TC2=1
-DSC=OpenPlatformPkg/Platforms/ARM/VExpress/ArmVExpress-CTA15-A7.dsc
-ARCH=ARM
-UEFI_BIN=ARM_VEXPRESS_CTA15A7_EFI.fd
-UEFI_IMAGE_DIR=ArmVExpress-CTA15-A7
-
-[beagle]
-LONGNAME=BeagleBoard
-BUILDFLAGS=
-DSC=BeagleBoardPkg/BeagleBoardPkg.dsc
-ARCH=ARM
-
-[d01]
-LONGNAME=HiSilicon D01 Cortex-A15 16-cores
-BUILDFLAGS=-D EDK2_ARMVE_STANDALONE=1
-DSC=HisiPkg/D01BoardPkg/D01BoardPkg.dsc
-ARCH=ARM
-UEFI_BIN=D01.fd
-UEFI_IMAGE_DIR=D01
-
-[d01-intelbds]
-LONGNAME=HiSilicon D01 Cortex-A15 16-cores Intel Bds
-BUILDFLAGS=-D EDK2_ARMVE_STANDALONE=1 -D INTEL_BDS -D NO_LINUX_LOADER -D EDK2_OUT_DIR=Build/D01-IntelBds
-DSC=HisiPkg/D01BoardPkg/D01BoardPkg.dsc
-ARCH=ARM
-UEFI_BIN=D01.fd
-UEFI_IMAGE_DIR=D01
-
-[qemu]
-LONGNAME=QEMU ARM Emulator
-BUILDFLAGS=-D INTEL_BDS
-DSC=ArmVirtPkg/ArmVirtQemu.dsc
-ARCH=ARM
-UEFI_BIN=QEMU_EFI.fd
-UEFI_IMAGE_DIR=ArmVirtQemu-ARM
-
-[qemu64]
-LONGNAME=QEMU AArch64 Emulator
-BUILDFLAGS=-D INTEL_BDS
-DSC=ArmVirtPkg/ArmVirtQemu.dsc
-ARCH=AARCH64
-UEFI_BIN=QEMU_EFI.fd
-UEFI_IMAGE_DIR=ArmVirtQemu-AARCH64
-
-[mustang]
-LONGNAME=APM XGene Mustang
-BUILDFLAGS=
-DSC=ArmPlatformPkg/APMXGenePkg/APMXGene-Mustang.dsc
-ARCH=AARCH64
-UEFI_BIN=APMXGENE-MUSTANG.fd SEC_APMXGENE-MUSTANG.fd
-UEFI_IMAGE_DIR=APMXGene-Mustang
-
-[overdrive]
-LONGNAME=AMD Overdrive
-BUILDFLAGS=-D INTEL_BDS
-DSC=OpenPlatformPkg/Platforms/AMD/Styx/OverdriveBoard/OverdriveBoard.dsc
-ARCH=AARCH64
-PACKAGES_PATH=OpenPlatformPkg/Platforms/AMD/Styx/Binary
-UEFI_BIN=STYX_ROM.fd
-UEFI_IMAGE_DIR=Overdrive
-
-[overdrive1000]
-LONGNAME=SoftIron Overdrive 1000
-BUILDFLAGS=-D INTEL_BDS
-DSC=OpenPlatformPkg/Platforms/AMD/Styx/Overdrive1000Board/Overdrive1000Board.dsc
-ARCH=AARCH64
-PACKAGES_PATH=OpenPlatformPkg/Platforms/AMD/Styx/Binary
-UEFI_BIN=OVERDRIVE1000_ROM.fd
-UEFI_IMAGE_DIR=Overdrive1000Board
-
-[cello]
-LONGNAME=LeMaker Cello
-BUILDFLAGS=-D INTEL_BDS
-DSC=OpenPlatformPkg/Platforms/AMD/Styx/CelloBoard/CelloBoard.dsc
-ARCH=AARCH64
-PACKAGES_PATH=OpenPlatformPkg/Platforms/AMD/Styx/Binary
-UEFI_BIN=STYX_ROM.fd
-UEFI_IMAGE_DIR=Cello
-
-# NOTE: If using 96board's forks of ATF, i.e.
-# https://github.com/96boards-hikey/arm-trusted-firmware
-# or
-# https://github.com/96boards/arm-trusted-firmware
-# please set TOS_BIN=tee.bin
-[hikey]
-LONGNAME=CircuitCo HiKey
-DSC=OpenPlatformPkg/Platforms/Hisilicon/HiKey/HiKey.dsc
-ARCH=AARCH64
-UEFI_BIN=BL33_AP_UEFI.fd
-UEFI_IMAGE_DIR=HiKey
-BUILD_ATF=yes
-ATF_SPD=opteed
-TOS_BIN=tee-pager.bin
-TOS_PLATFORM_FLAVOR=hikey
-BUILD_TOS=yes
-SCP_BIN=OpenPlatformPkg/Platforms/Hisilicon/HiKey/Binary/mcuimage.bin
-# Uncomment this to use UART0 as the EDK2 console
-#BUILDFLAGS=-DSERIAL_BASE=0xF8015000
-# Uncomment this to use UART0 as the ARM Trusted Firmware console
-#ATF_BUILDFLAGS=CONSOLE_BASE=PL011_UART0_BASE CRASH_CONSOLE_BASE=PL011_UART0_BASE
-# Uncomment this to use UART0 as the OP-TEE Trusted OS console
-#TOS_BUILDFLAGS=CFG_CONSOLE_UART=0
-
-[hikey960]
-LONGNAME=Hikey960
-DSC=OpenPlatformPkg/Platforms/Hisilicon/HiKey960/HiKey960.dsc
-ARCH=AARCH64
-UEFI_BIN=BL33_AP_UEFI.fd
-UEFI_IMAGE_DIR=HiKey960
-BUILD_ATF=yes
-ATF_SPD=opteed
-TOS_BIN=tee-pager.bin
-TOS_PLATFORM=hikey
-TOS_PLATFORM_FLAVOR=hikey960
-BUILD_TOS=yes
-SCP_BIN=OpenPlatformPkg/Platforms/Hisilicon/HiKey960/Binary/lpm3.img
-# Uncomment this to use UART5 as the EDK2 console for v1 hardware
-#BUILDFLAGS=-DSERIAL_BASE=0xFDF05000
-
-[xen64]
-LONGNAME=AArch64 Xen guest
-BUILDFLAGS=
-DSC=ArmVirtPkg/ArmVirtXen.dsc
-ARCH=AARCH64
-UEFI_BIN=XEN_EFI.fd
-UEFI_IMAGE_DIR=ArmVirtXen-AARCH64
-
-[aarch64-shell]
-LONGNAME=AArch64 EFI Shell
-BUILDFLAGS=-D INCLUDE_TFTP_COMMAND
-DSC=ShellPkg/ShellPkg.dsc
-ARCH=AARCH64
-
-[aarch64-shell-minimal]
-LONGNAME=AArch64 EFI Shell (Minimal)
-BUILDFLAGS=-D NO_SHELL_PROFILES
-DSC=ShellPkg/ShellPkg.dsc
-ARCH=AARCH64
-
-[arm-shell]
-LONGNAME=ARM EFI Shell
-BUILDFLAGS=-D INCLUDE_TFTP_COMMAND
-DSC=ShellPkg/ShellPkg.dsc
-ARCH=ARM
-
-[arm-shell-minimal]
-LONGNAME=ARM EFI Shell (Minimal)
-BUILDFLAGS=-D NO_SHELL_PROFILES
-DSC=ShellPkg/ShellPkg.dsc
-ARCH=ARM
-
-[d02]
-LONGNAME=Hisilicon D02
-DSC=OpenPlatformPkg/Platforms/Hisilicon/D02/Pv660D02.dsc
-ARCH=AARCH64
-UEFI_BIN=PV660D02.fd
-UEFI_IMAGE_DIR=Pv660D02
-
-[d03]
-LONGNAME=Hisilicon D03
-DSC=OpenPlatformPkg/Platforms/Hisilicon/D03/D03.dsc
-ARCH=AARCH64
-UEFI_BIN=D03.fd
-UEFI_IMAGE_DIR=D03
-
-[d05]
-LONGNAME=HiSilicon D05
-DSC=OpenPlatformPkg/Platforms/Hisilicon/D05/D05.dsc
-ARCH=AARCH64
-UEFI_BIN=D05.fd
-UEFI_IMAGE_DIR=D05
-
-[armada70x0]
-LONGNAME=Marvell Armada 70x0
-DSC=OpenPlatformPkg/Platforms/Marvell/Armada/Armada70x0.dsc
-ARCH=AARCH64
-
-[ovmfx64]
-LONGNAME=OVMF Qemu X64
-DSC=OvmfPkg/OvmfPkgX64.dsc
-ARCH=X64
-
-[hello]
-LONGNAME=EDK2 Hello World Example
-DSC=MdeModulePkg/MdeModulePkg.dsc
-INF=MdeModulePkg/Application/HelloWorld/HelloWorld.inf
-
-[chaoskey]
-LONGNAME=Altus Metrum ChaosKey Driver
-DSC=OptionRomPkg/OptionRomPkg.dsc
-INF=OpenPlatformPkg/Drivers/Usb/Misc/ChaosKeyDxe/ChaosKeyDxe.inf
diff --git a/uefi-build.sh b/uefi-build.sh
deleted file mode 100755
index 7fec3d0..0000000
--- a/uefi-build.sh
+++ /dev/null
@@ -1,398 +0,0 @@
-#!/bin/bash
-
-#
-# Board Configuration Section
-# ===========================
-#
-# Board configuration moved to parse-platforms.py and platforms.config.
-#
-# No need to edit below unless you are changing script functionality.
-#
-
-unset WORKSPACE EDK_TOOLS_DIR MAKEFLAGS
-
-TOOLS_DIR="`dirname $0`"
-export TOOLS_DIR
-. "$TOOLS_DIR"/common-functions
-PLATFORM_CONFIG=""
-VERBOSE=0
-ATF_DIR=
-TOS_DIR=
-TOOLCHAIN=
-OPENSSL_CONFIGURED=FALSE
-
-# Number of threads to use for build
-export NUM_THREADS=$((`getconf _NPROCESSORS_ONLN` + 1))
-
-function do_build
-{
- PLATFORM_NAME="`$TOOLS_DIR/parse-platforms.py $PLATFORM_CONFIG -p $board get -o longname`"
- PLATFORM_PREBUILD_CMDS="`$TOOLS_DIR/parse-platforms.py $PLATFORM_CONFIG -p $board get -o prebuild_cmds`"
- PLATFORM_BUILDFLAGS="`$TOOLS_DIR/parse-platforms.py $PLATFORM_CONFIG -p $board get -o buildflags`"
- PLATFORM_BUILDFLAGS="$PLATFORM_BUILDFLAGS ${EXTRA_OPTIONS[@]}"
- PLATFORM_BUILDCMD="`$TOOLS_DIR/parse-platforms.py $PLATFORM_CONFIG -p $board get -o buildcmd`"
- PLATFORM_DSC="`$TOOLS_DIR/parse-platforms.py $PLATFORM_CONFIG -p $board get -o dsc`"
- PLATFORM_PACKAGES_PATH="$PWD"
- COMPONENT_INF="`$TOOLS_DIR/parse-platforms.py $PLATFORM_CONFIG -p $board get -o inf`"
-
- PLATFORM_ARCH="`$TOOLS_DIR/parse-platforms.py $PLATFORM_CONFIG -p $board get -o arch`"
- if [ -n "$PLATFORM_ARCH" ]; then
- if [ -n "$DEFAULT_PLATFORM_ARCH" -a "$DEFAULT_PLATFORM_ARCH" != "$PLATFORM_ARCH" ]; then
- echo "Command line specified architecture '$DEFAULT_PLATFORM_ARCH'" >&2
- echo "differs from config file specified '$PLATFORM_ARCH'" >&2
- return 1
- fi
- else
- if [ ! -n "$DEFAULT_PLATFORM_ARCH" ]; then
- echo "Unknown target architecture - aborting!" >&2
- return 1
- fi
- PLATFORM_ARCH="$DEFAULT_PLATFORM_ARCH"
- fi
- TEMP_PACKAGES_PATH="`$TOOLS_DIR/parse-platforms.py $PLATFORM_CONFIG -p $board get -o packages_path`"
- if [ -n "$TEMP_PACKAGES_PATH" ]; then
- IFS=:
- for path in "$TEMP_PACKAGES_PATH"; do
- case "$path" in
- /*)
- PLATFORM_PACKAGES_PATH="$PLATFORM_PACKAGES_PATH:$path"
- ;;
- *)
- PLATFORM_PACKAGES_PATH="$PLATFORM_PACKAGES_PATH:$PWD/$path"
- ;;
- esac
- done
- unset IFS
- fi
- if [ $VERBOSE -eq 1 ]; then
- echo "Setting build parallellism to $NUM_THREADS processes\n"
- echo "PLATFORM_NAME=$PLATFORM_NAME"
- echo "PLATFORM_PREBUILD_CMDS=$PLATFORM_PREBUILD_CMDS"
- echo "PLATFORM_BUILDFLAGS=$PLATFORM_BUILDFLAGS"
- echo "PLATFORM_BUILDCMD=$PLATFORM_BUILDCMD"
- echo "PLATFORM_DSC=$PLATFORM_DSC"
- echo "PLATFORM_ARCH=$PLATFORM_ARCH"
- echo "PLATFORM_PACKAGES_PATH=$PLATFORM_PACKAGES_PATH"
- fi
-
- if [[ "${PLATFORM_BUILDFLAGS}" =~ "SECURE_BOOT_ENABLE=TRUE" ]]; then
- import_openssl
- fi
-
- if [ -n "$CROSS_COMPILE_64" -a "$PLATFORM_ARCH" == "AARCH64" ]; then
- TEMP_CROSS_COMPILE="$CROSS_COMPILE_64"
- elif [ -n "$CROSS_COMPILE_32" -a "$PLATFORM_ARCH" == "ARM" ]; then
- TEMP_CROSS_COMPILE="$CROSS_COMPILE_32"
- else
- set_cross_compile
- fi
-
- CROSS_COMPILE="$TEMP_CROSS_COMPILE"
-
- echo "Building $PLATFORM_NAME - $PLATFORM_ARCH"
- echo "CROSS_COMPILE=\"$TEMP_CROSS_COMPILE\""
- echo "$board"_BUILDFLAGS="'$PLATFORM_BUILDFLAGS'"
-
- if [ "$TARGETS" == "" ]; then
- TARGETS=( RELEASE )
- fi
-
- case $TOOLCHAIN in
- "gcc")
- TOOLCHAIN=`get_gcc_version "$CROSS_COMPILE"gcc`
- if [ $? -ne 0 ]; then
- echo "${CROSS_COMPILE}gcc not found!" >&2
- return 1
- fi
- ;;
- "clang")
- TOOLCHAIN=`get_clang_version clang`
- if [ $? -ne 0 ]; then
- return 1
- fi
- ;;
- esac
- export TOOLCHAIN
- echo "TOOLCHAIN is ${TOOLCHAIN}"
-
- export ${TOOLCHAIN}_${PLATFORM_ARCH}_PREFIX=$CROSS_COMPILE
- echo "Toolchain prefix: ${TOOLCHAIN}_${PLATFORM_ARCH}_PREFIX=$CROSS_COMPILE"
-
- export PACKAGES_PATH="$PLATFORM_PACKAGES_PATH"
- for target in "${TARGETS[@]}" ; do
- if [ X"$PLATFORM_PREBUILD_CMDS" != X"" ]; then
- echo "Run pre build commands"
- eval ${PLATFORM_PREBUILD_CMDS}
- fi
-
- if [ -n "$COMPONENT_INF" ]; then
- # Build a standalone component
- build -n $NUM_THREADS -a "$PLATFORM_ARCH" -t ${TOOLCHAIN} -p "$PLATFORM_DSC" \
- -m "$COMPONENT_INF" -b "$target" ${PLATFORM_BUILDFLAGS}
- else
- # Build a platform
- build -n $NUM_THREADS -a "$PLATFORM_ARCH" -t ${TOOLCHAIN} -p "$PLATFORM_DSC" \
- -b "$target" ${PLATFORM_BUILDFLAGS}
- fi
-
- RESULT=$?
- if [ $RESULT -eq 0 ]; then
- if [ X"$TOS_DIR" != X"" ]; then
- pushd $TOS_DIR >/dev/null
- if [ $VERBOSE -eq 1 ]; then
- echo "$TOOLS_DIR/tos-build.sh -e "$EDK2_DIR" -t "$target"_${TOOLCHAIN} $board"
- fi
- $TOOLS_DIR/tos-build.sh -e "$EDK2_DIR" -t "$target"_${TOOLCHAIN} $board
- RESULT=$?
- popd >/dev/null
- fi
- fi
- if [ $RESULT -eq 0 ]; then
- if [ X"$ATF_DIR" != X"" ]; then
- pushd $ATF_DIR >/dev/null
- if [ $VERBOSE -eq 1 ]; then
- echo "$TOOLS_DIR/atf-build.sh -e "$EDK2_DIR" -t "$target"_${TOOLCHAIN} $board"
- fi
- $TOOLS_DIR/atf-build.sh -e "$EDK2_DIR" -t "$target"_${TOOLCHAIN} $board
- RESULT=$?
- popd >/dev/null
- fi
- fi
- result_log $RESULT "$PLATFORM_NAME $target"
- done
- unset PACKAGES_PATH
-}
-
-
-function clearcache
-{
- CONF_FILES="build_rule target tools_def"
- if [ -z "$EDK_TOOLS_PATH" ]
- then
- TEMPLATE_PATH=./BaseTools/Conf/
- else
- TEMPLATE_PATH="$EDK_TOOLS_PATH/Conf/"
- fi
-
- for File in $CONF_FILES
- do
- TEMPLATE_FILE="$TEMPLATE_PATH/$File.template"
- CACHE_FILE="Conf/$File.txt"
- if [ -e "$CACHE_FILE" -a "$TEMPLATE_FILE" -nt "$CACHE_FILE" ]
- then
- echo "Removing outdated '$CACHE_FILE'."
- rm "$CACHE_FILE"
- fi
- done
-
- unset TEMPLATE_PATH TEMPLATE_FILE CACHE_FILE
-}
-
-
-function uefishell
-{
- BUILD_ARCH=`uname -m`
- case $BUILD_ARCH in
- arm*)
- ARCH=ARM
- ;;
- aarch64)
- ARCH=AARCH64
- ;;
- *)
- unset ARCH
- ;;
- esac
- export ARCH
- export EDK_TOOLS_PATH=`pwd`/BaseTools
- clearcache
- . edksetup.sh BaseTools
- if [ $VERBOSE -eq 1 ]; then
- echo "Building BaseTools"
- fi
- make -C $EDK_TOOLS_PATH
- if [ $? -ne 0 ]; then
- echo " !!! UEFI BaseTools failed to build !!! " >&2
- exit 1
- fi
-}
-
-
-function usage
-{
- echo "usage:"
- echo -n "uefi-build.sh [-b DEBUG | RELEASE] [ all "
- for board in "${boards[@]}" ; do
- echo -n "| $board "
- done
- echo "]"
- printf "%8s\tbuild %s\n" "all" "all supported platforms"
- for board in "${boards[@]}" ; do
- PLATFORM_NAME="`$TOOLS_DIR/parse-platforms.py $PLATFORM_CONFIG -p $board get -o longname`"
- printf "%8s\tbuild %s\n" "$board" "${PLATFORM_NAME}"
- done
-}
-
-#
-# Since we do a command line validation on whether specified platforms exist or
-# not, do a first pass of command line to see if there is an explicit config
-# file there to read valid platforms from.
-#
-commandline=( "$@" )
-i=0
-for arg;
-do
- if [ $arg == "-c" ]; then
- FILE_ARG=${commandline[i + 1]}
- if [ ! -f "$FILE_ARG" ]; then
- echo "ERROR: configuration file '$FILE_ARG' not found" >&2
- exit 1
- fi
- case "$FILE_ARG" in
- /*)
- PLATFORM_CONFIG="-c $FILE_ARG"
- ;;
- *)
- PLATFORM_CONFIG="-c `readlink -f \"$FILE_ARG\"`"
- ;;
- esac
- echo "Platform config file: '$FILE_ARG'"
- export PLATFORM_CONFIG
- fi
- i=$(($i + 1))
-done
-
-builds=()
-boards=()
-boardlist="`$TOOLS_DIR/parse-platforms.py $PLATFORM_CONFIG shortlist`"
-for board in $boardlist; do
- boards=(${boards[@]} $board)
-done
-
-NUM_TARGETS=0
-
-while [ "$1" != "" ]; do
- case $1 in
- all )
- builds=(${boards[@]})
- NUM_TARGETS=$(($NUM_TARGETS + 1))
- ;;
- "/h" | "/?" | "-?" | "-h" | "--help" )
- usage
- exit
- ;;
- "-v" )
- VERBOSE=1
- ;;
- "-a" )
- shift
- ATF_DIR="$1"
- ;;
- "-A" )
- shift
- DEFAULT_PLATFORM_ARCH="$1"
- ;;
- "-c" )
- # Already parsed above - skip this + option
- shift
- ;;
- "-s" )
- shift
- export TOS_DIR="$1"
- ;;
- "-b" | "--build" )
- shift
- echo "Adding Build profile: $1"
- TARGETS=( ${TARGETS[@]} $1 )
- ;;
- "-D" )
- shift
- echo "Adding option: -D $1"
- EXTRA_OPTIONS=( ${EXTRA_OPTIONS[@]} "-D" $1 )
- ;;
- "-T" )
- shift
- echo "Setting toolchain to '$1'"
- TOOLCHAIN="$1"
- ;;
- "-1" )
- NUM_THREADS=1
- ;;
- * )
- MATCH=0
- for board in "${boards[@]}" ; do
- if [ "$1" == $board ]; then
- MATCH=1
- builds=(${builds[@]} "$board")
- break
- fi
- done
-
- if [ $MATCH -eq 0 ]; then
- echo "unknown arg $1"
- usage
- exit 1
- fi
- NUM_TARGETS=$(($NUM_TARGETS + 1))
- ;;
- esac
- shift
-done
-
-# If there were no args, use a menu to select a single board / all boards to build
-if [ $NUM_TARGETS -eq 0 ]
-then
- read -p "$(
- f=0
- for board in "${boards[@]}" ; do
- echo "$((++f)): $board"
- done
- echo $((++f)): all
-
- echo -ne '> '
- )" selection
-
- if [ "$selection" -eq $((${#boards[@]} + 1)) ]; then
- builds=(${boards[@]})
- else
- builds="${boards[$((selection-1))]}"
- fi
-fi
-
-# Check to see if we are in a UEFI repository
-# refuse to continue if we aren't
-if [ ! -e BaseTools ]
-then
- echo "ERROR: we aren't in the UEFI directory."
- echo " I can tell because I can't see the BaseTools directory"
- exit 1
-fi
-
-EDK2_DIR="$PWD"
-export VERBOSE
-
-if [[ "${EXTRA_OPTIONS[@]}" != *"FIRMWARE_VER"* ]]; then
- if test -d .git && head=`git rev-parse --verify --short HEAD 2>/dev/null`; then
- FIRMWARE_VER=`git rev-parse --short HEAD`
- if ! git diff-index --quiet HEAD --; then
- FIRMWARE_VER="${FIRMWARE_VER}-dirty"
- fi
- EXTRA_OPTIONS=( ${EXTRA_OPTIONS[@]} "-D" FIRMWARE_VER=$FIRMWARE_VER )
- if [ $VERBOSE -eq 1 ]; then
- echo "FIRMWARE_VER=$FIRMWARE_VER"
- echo "EXTRA_OPTIONS=$EXTRA_OPTIONS"
- fi
- fi
-fi
-
-uefishell
-
-if [ X"$TOOLCHAIN" = X"" ]; then
- TOOLCHAIN=gcc
-fi
-
-for board in "${builds[@]}" ; do
- do_build
-done
-
-result_print
diff --git a/uefi-build.sh.bash_completion b/uefi-build.sh.bash_completion
deleted file mode 100644
index f0a5305..0000000
--- a/uefi-build.sh.bash_completion
+++ /dev/null
@@ -1,24 +0,0 @@
-# bash completion for uefi-build.sh
-# copy this file to /etc/bash_completion.d/uefi-build.s
-
-have uefi-build.sh &&
-_uefi-build.sh()
-{
- local cur prev
-
- COMPREPLY=()
- _get_comp_words_by_ref -n = cur
-
- _expand || return 0
-
- COMPREPLY=( $( compgen -W '--help -b --build RELEASE DEBUG a5 a9 tc1 tc2 panda origen arndale rtsm_a9x4 rtsm_a15x1 rtsm_a15mpcore rtsm_aarch64 beagle all' -- "$cur" ) )
-} &&
-complete -F _uefi-build.sh uefi-build.sh
-
-# Local variables:
-# mode: shell-script
-# sh-basic-offset: 4
-# sh-indent-comment: t
-# indent-tabs-mode: nil
-# End:
-# ex: ts=4 sw=4 et filetype=sh
--
2.20.1
FYI: EDK2 development mailing list changing to devel(a)edk2.groups.io
This will give us some better flexibility with regards to whitelisting
non-subscribers and suchlike currently not possible through 01.org.
On Wed, Apr 03, 2019 at 10:59:31AM -0500, stephano wrote:
> tl;dr
> If you're sending emails to this list, now would be a good time to switch
> over to the new list: https://edk2.groups.io/g/devel
>
>
> We will be transitioning to Groups.io today for our devel mailing list. At
> some point today, this email will begin to bounce any incoming messages.
> I'll be working on getting the archive of old emails uploaded to Groups.io.
> When I have a timetable for the archives I'll update the new list.
>
> Cheers,
> Stephano
> _______________________________________________
> edk2-devel mailing list
> edk2-devel(a)lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel
From: Thierry Reding <treding(a)nvidia.com>
This script is incompatible with Python 3, so make sure it is run using
Python 2 explicitly. This establishes compatibility on systems that
default to Python 3 and which make the python symlink point to the
Python 3 binary.
For further background, see:
https://www.python.org/dev/peps/pep-0394/
Signed-off-by: Thierry Reding <treding(a)nvidia.com>
---
parse-platforms.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/parse-platforms.py b/parse-platforms.py
index 748374953370..1b7b856773de 100755
--- a/parse-platforms.py
+++ b/parse-platforms.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python2
import sys, os, argparse, ConfigParser
--
2.21.0
..trusted OS directory
documentation/optee_design.md was recently removed in a patch upstream
so use another file less likely to be removed again.
Signed-off-by: Victor Chong <victor.chong(a)linaro.org>
---
v2: update commit message to fix filename typo
---
opteed-build.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/opteed-build.sh b/opteed-build.sh
index 2dd40ff..3229cbb 100755
--- a/opteed-build.sh
+++ b/opteed-build.sh
@@ -126,7 +126,7 @@ function build_platform
# Check to see if we are in a trusted OS directory
# refuse to continue if we aren't
-if [ ! -f documentation/optee_design.md ]
+if [ ! -f core/tee/tee_svc.c ]
then
echo "ERROR: we aren't in the optee_os directory."
usage
--
2.17.1
..trusted OS directory
documentation/optee_design.md was recently removed in a patch upstream
so use another file less likely to be removed again.
Signed-off-by: Victor Chong <victor.chong(a)linaro.org>
---
opteed-build.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/opteed-build.sh b/opteed-build.sh
index 2dd40ff..3229cbb 100755
--- a/opteed-build.sh
+++ b/opteed-build.sh
@@ -126,7 +126,7 @@ function build_platform
# Check to see if we are in a trusted OS directory
# refuse to continue if we aren't
-if [ ! -f documentation/optee_design.md ]
+if [ ! -f core/tee/tee_svc.c ]
then
echo "ERROR: we aren't in the optee_os directory."
usage
--
2.17.1