Hi Tom, We use GCC5 to build the OVMF platform and report below errors, please help to check and fix it.
I/opt/TCAgent/work/f9b29f3e80472c44/Edk2/MdeModulePkg/ -I/opt/TCAgent/work/f9b29f3e80472c44/Edk2/MdeModulePkg/Include/ -I/opt/TCAgent/work/f9b29f3e80472c44/Edk2/UefiCpuPkg/ -I/opt/TCAgent/work/f9b29f3e80472c44/Edk2/UefiCpuPkg/Include/ -I/opt/TCAgent/work/f9b29f3e80472c44/Edk2/UefiCpuPkg/ResetVector/Vtf0/ -o /opt/TCAgent/work/f9b29f3e80472c44/Edk2/Build/OvmfX64/DEBUG_GCC5/X64/OvmfPkg/ResetVector/ResetVector/OUTPUT/ResetVector.bin /opt/TCAgent/work/f9b29f3e80472c44/Edk2/Build/OvmfX64/DEBUG_GCC5/X64/OvmfPkg/ResetVector/ResetVector/OUTPUT/ResetVector.iii /opt/TCAgent/work/f9b29f3e80472c44/Edk2/Build/OvmfX64/DEBUG_GCC5/X64/OvmfPkg/ResetVector/ResetVector/OUTPUT/ResetVector.iii:72: error: expression syntax error /opt/TCAgent/work/f9b29f3e80472c44/Edk2/Build/OvmfX64/DEBUG_GCC5/X64/OvmfPkg/ResetVector/ResetVector/OUTPUT/ResetVector.iii:74: error: label or instruction expected at start of line Ia32/PageTables64.asm:27: error: label or instruction expected at start of line Ia32/PageTables64.asm:29: error: label or instruction expected at start of line Ia32/PageTables64.asm:30: error: label or instruction expected at start of line Ia32/PageTables64.asm:369: error: expression syntax error GNUmakefile:319: recipe for target '/opt/TCAgent/work/f9b29f3e80472c44/Edk2/Build/OvmfX64/DEBUG_GCC5/X64/OvmfPkg/ResetVector/ResetVector/OUTPUT/ResetVector.bin' failed make: *** [/opt/TCAgent/work/f9b29f3e80472c44/Edk2/Build/OvmfX64/DEBUG_GCC5/X64/OvmfPkg/ResetVector/ResetVector/OUTPUT/ResetVector.bin] Error 1 build.py... : error 7000: Failed to execute command make tbuild [/opt/TCAgent/work/f9b29f3e80472c44/Edk2/Build/OvmfX64/DEBUG_GCC5/X64/OvmfPkg/ResetVector/ResetVector] build.py... : error F002: Failed to build module /opt/TCAgent/work/f9b29f3e80472c44/Edk2/OvmfPkg/ResetVector/ResetVector.inf [X64, GCC5, DEBUG] ==================================================== Related platform build configuration like below: WORKSPACE = /opt/TCAgent/work/f9b29f3e80472c44/Edk2 EDK_TOOLS_PATH = /opt/TCAgent/work/f9b29f3e80472c44/Edk2/BaseTools CONF_PATH = /opt/TCAgent/work/f9b29f3e80472c44/Edk2/Conf PYTHON_COMMAND = /usr/bin/python3.5 Architecture(s) = X64 Build target = DEBUG Toolchain = GCC5 Active Platform = /opt/TCAgent/work/f9b29f3e80472c44/Edk2/OvmfPkg/OvmfPkgX64.dsc Thanks, Eric > -----Original Message----- > From: Tom Lendacky <thomas.lenda...@amd.com> > Sent: Friday, June 5, 2020 9:28 PM > To: devel@edk2.groups.io > Cc: Brijesh Singh <brijesh.si...@amd.com>; Ard Biesheuvel > <ard.biesheu...@arm.com>; Dong, Eric <eric.d...@intel.com>; Justen, > Jordan L <jordan.l.jus...@intel.com>; Laszlo Ersek <ler...@redhat.com>; > Gao, Liming <liming....@intel.com>; Kinney, Michael D > <michael.d.kin...@intel.com>; Ni, Ray <ray...@intel.com> > Subject: [PATCH v9 43/46] OvmfPkg: Use the SEV-ES work area for the SEV- > ES AP reset vector > > BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=2198 > > A hypervisor is not allowed to update an SEV-ES guest's register state, > so when booting an SEV-ES guest AP, the hypervisor is not allowed to > set the RIP to the guest requested value. Instead an SEV-ES AP must be > re-directed from within the guest to the actual requested staring location > as specified in the INIT-SIPI-SIPI sequence. > > Use the SEV-ES work area for the reset vector code that contains support > to jump to the desired RIP location after having been started. This is > required for only the very first AP reset. > > This new OVMF source file, ResetVectorVtf0.asm, is used in place of the > original file through the use of the include path order set in > OvmfPkg/ResetVector/ResetVector.inf under "[BuildOptions]". > > Cc: Jordan Justen <jordan.l.jus...@intel.com> > Cc: Laszlo Ersek <ler...@redhat.com> > Cc: Ard Biesheuvel <ard.biesheu...@arm.com> > Reviewed-by: Laszlo Ersek <ler...@redhat.com> > Signed-off-by: Tom Lendacky <thomas.lenda...@amd.com> > --- > OvmfPkg/ResetVector/Ia16/ResetVectorVtf0.asm | 100 > ++++++++++++++++++++ > OvmfPkg/ResetVector/ResetVector.nasmb | 1 + > 2 files changed, 101 insertions(+) > > diff --git a/OvmfPkg/ResetVector/Ia16/ResetVectorVtf0.asm > b/OvmfPkg/ResetVector/Ia16/ResetVectorVtf0.asm > new file mode 100644 > index 000000000000..980e0138e7fe > --- /dev/null > +++ b/OvmfPkg/ResetVector/Ia16/ResetVectorVtf0.asm > @@ -0,0 +1,100 @@ > +;------------------------------------------------------------------------------ > > +; @file > > +; First code executed by processor after resetting. > > +; Derived from UefiCpuPkg/ResetVector/Vtf0/Ia16/ResetVectorVtf0.asm > > +; > > +; Copyright (c) 2008 - 2014, Intel Corporation. All rights reserved.<BR> > > +; SPDX-License-Identifier: BSD-2-Clause-Patent > > +; > > +;------------------------------------------------------------------------------ > > + > > +BITS 16 > > + > > +ALIGN 16 > > + > > +; > > +; Pad the image size to 4k when page tables are in VTF0 > > +; > > +; If the VTF0 image has page tables built in, then we need to make > > +; sure the end of VTF0 is 4k above where the page tables end. > > +; > > +; This is required so the page tables will be 4k aligned when VTF0 is > > +; located just below 0x100000000 (4GB) in the firmware device. > > +; > > +%ifdef ALIGN_TOP_TO_4K_FOR_PAGING > > + TIMES (0x1000 - ($ - EndOfPageTables) - 0x20) DB 0 > > +%endif > > + > > +; > > +; SEV-ES Processor Reset support > > +; > > +; sevEsResetBlock: > > +; For the initial boot of an AP under SEV-ES, the "reset" RIP must be > > +; programmed to the RAM area defined by SEV_ES_AP_RESET_IP. A > known offset > > +; and GUID will be used to locate this block in the firmware and extract > > +; the build time RIP value. The GUID must always be 48 bytes from the > > +; end of the firmware. > > +; > > +; 0xffffffca (-0x36) - IP value > > +; 0xffffffcc (-0x34) - CS segment base [31:16] > > +; 0xffffffce (-0x32) - Size of the SEV-ES reset block > > +; 0xffffffd0 (-0x30) - SEV-ES reset block GUID > > +; (00f771de-1a7e-4fcb-890e-68c77e2fb44e) > > +; > > +; A hypervisor reads the CS segement base and IP value. The CS segment > base > > +; value represents the high order 16-bits of the CS segment base, so the > > +; hypervisor must left shift the value of the CS segement base by 16 bits > to > > +; form the full CS segment base for the CS segment register. It would then > > +; program the EIP register with the IP value as read. > > +; > > + > > +TIMES (32 - (sevEsResetBlockEnd - sevEsResetBlockStart)) DB 0 > > + > > +sevEsResetBlockStart: > > + DD SEV_ES_AP_RESET_IP > > + DW sevEsResetBlockEnd - sevEsResetBlockStart > > + DB 0xDE, 0x71, 0xF7, 0x00, 0x7E, 0x1A, 0xCB, 0x4F > > + DB 0x89, 0x0E, 0x68, 0xC7, 0x7E, 0x2F, 0xB4, 0x4E > > +sevEsResetBlockEnd: > > + > > +ALIGN 16 > > + > > +applicationProcessorEntryPoint: > > +; > > +; Application Processors entry point > > +; > > +; GenFv generates code aligned on a 4k boundary which will jump to this > > +; location. (0xffffffe0) This allows the Local APIC Startup IPI to be > > +; used to wake up the application processors. > > +; > > + jmp EarlyApInitReal16 > > + > > +ALIGN 8 > > + > > + DD 0 > > + > > +; > > +; The VTF signature > > +; > > +; VTF-0 means that the VTF (Volume Top File) code does not require > > +; any fixups. > > +; > > +vtfSignature: > > + DB 'V', 'T', 'F', 0 > > + > > +ALIGN 16 > > + > > +resetVector: > > +; > > +; Reset Vector > > +; > > +; This is where the processor will begin execution > > +; > > + nop > > + nop > > + jmp EarlyBspInitReal16 > > + > > +ALIGN 16 > > + > > +fourGigabytes: > > + > > diff --git a/OvmfPkg/ResetVector/ResetVector.nasmb > b/OvmfPkg/ResetVector/ResetVector.nasmb > index 762661115d50..4913b379a993 100644 > --- a/OvmfPkg/ResetVector/ResetVector.nasmb > +++ b/OvmfPkg/ResetVector/ResetVector.nasmb > @@ -82,5 +82,6 @@ > > > %include "Main.asm" > > > > + %define SEV_ES_AP_RESET_IP FixedPcdGet32 (PcdSevEsWorkAreaBase) > > %include "Ia16/ResetVectorVtf0.asm" > > > > -- > 2.27.0 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#61469): https://edk2.groups.io/g/devel/message/61469 Mute This Topic: https://groups.io/mt/74698714/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-