ICE_TEA_BIOS/Board/Oem/L05AlderLakePMultiBoardPkg/ProjectPostBuild.bat

313 lines
16 KiB
Batchfile

@REM ******************************************************************************
@REM * Copyright (c) 2018 - 2021, Insyde Software Corp. All Rights Reserved.
@REM *
@REM * You may not reproduce, distribute, publish, display, perform, modify, adapt,
@REM * transmit, broadcast, present, recite, release, license or otherwise exploit
@REM * any part of this publication in any form, by any means, without the prior
@REM * written permission of Insyde Software Corporation.
@REM *
@REM ******************************************************************************
@REM Run kernel post-build process
@if exist %WORKSPACE%\BaseTools\KernelPostBuild.bat call %WORKSPACE%\BaseTools\KernelPostBuild.bat %1
@REM Patch $BME of Bvdt region of Fd according .FDM after region resize
PatchBvdt %PLATFORM_TYPE%.fd %PLATFORM_TYPE%.fdm
@REM Run Chipset specific post-build process
@GetProjectEnv CHIPSET_PKG > NUL && for /f %%a in ('GetProjectEnv CHIPSET_PKG') do set %%a
@GetProjectEnv CHIPSET_REL_PATH > NUL && for /f %%a in ('GetProjectEnv CHIPSET_REL_PATH') do @set %%a
@if exist %WORKSPACE%\%CHIPSET_REL_PATH%\%CHIPSET_PKG%\ChipsetPostBuild.bat call %WORKSPACE%\%CHIPSET_REL_PATH%\%CHIPSET_PKG%\ChipsetPostBuild.bat %1
@echo off
REM Update hash vale of FDM entries at last step of building
for /f "tokens=3" %%a in ('findstr /R "\<TARGET\>" %WORKSPACE%\Conf\target.txt') do (
PatchFdmHash %WORKSPACE%\Build\%PROJECT_PKG%\%%a_%TOOL_CHAIN%\FV\%PLATFORM_TYPE%.fd %WORKSPACE%\Build\%PROJECT_PKG%\%%a_%TOOL_CHAIN%\FV\%PLATFORM_TYPE%.fdm
)
REM Call FitGen.exe to fill FIT table and call BpmGen2.exe to generate KeyManifest and Manifest for Boot Guard.
setlocal
set BIOS_INFO_GUID=4A4CA1C6-871C-45bb-8801-6910A7AA5807
set STARTUP_AC_MODULE_GUID=26fdaa3d-b7ed-4714-8509-eecf1593800d
for /f "tokens=3" %%a in ('find "TARGET " %WORKSPACE%\Conf\target.txt') do set TARGET=%%a
set CHIPSET_PKG_TOOLS_PATH=%WORKSPACE%\%CHIPSET_REL_PATH%\AlderLakeChipsetPkg\Tools\Bin\Win32
set PLATFORM_FULL_PACKAGE=%WORKSPACE%\%CHIPSET_REL_PATH%\AlderLakePlatSamplePkg
set BUILD_FV_PATH=%WORKSPACE%\Build\%PROJECT_PKG%\%TARGET%_%TOOL_CHAIN%\FV
set EDK_TOOLS_BIN=%WORKSPACE%\BaseTools\Bin\Win32
set RESILIENCY_BUILD=FALSE
set /a CHASMFALLS_TYPE=0
for /f "tokens=2" %%a in ('find "gChipsetPkgTokenSpaceGuid.PcdChasmFallsSupport:" %WORKSPACE%\Build\%PROJECT_PKG%\%TARGET%_%TOOL_CHAIN%\X64\PcdList.txt') do set /a CHASMFALLS_TYPE=%%a
if %CHASMFALLS_TYPE% EQU 2 set RESILIENCY_BUILD=TRUE
if %RESILIENCY_BUILD% EQU TRUE (
set MICROCODE_ARRAY_FFS_GUID=197DB236-F856-4924-90F8-CDF12FB875F3
set SLOT_SIZE=0x3B000
)
if %CHASMFALLS_TYPE% EQU 0 goto skip_SBB_Digest_Flow
set /a BIOS_SIZE=0x0
set /a PBB_SIZE=0x0
set /a SBB_SIZE=0x0
@for /f "tokens=2" %%a in ('find "gInsydeTokenSpaceGuid.PcdFlashAreaSize:" %WORKSPACE%\Build\%PROJECT_PKG%\%TARGET%_%TOOL_CHAIN%\X64\PcdList.txt') do set /a BIOS_SIZE=%%a
@for /f "tokens=2" %%a in ('find "gInsydeTokenSpaceGuid.PcdFlashPbbSize:" %WORKSPACE%\Build\%PROJECT_PKG%\%TARGET%_%TOOL_CHAIN%\X64\PcdList.txt') do set /a PBB_SIZE=%%a
@for /f "tokens=2" %%a in ('find "gInsydeTokenSpaceGuid.PcdFlashSbbSize:" %WORKSPACE%\Build\%PROJECT_PKG%\%TARGET%_%TOOL_CHAIN%\X64\PcdList.txt') do set /a SBB_SIZE=%%a
set SBB_DIGEST_FILE_GUID=B2DA2CA8-7259-4F79-64A4-F712625ED2C9
set FV_GUID=CF1406C5-3FEC-47EB-A6C3-B71A3EE00B95
@REM
@REM BIOS = Var + SBB + (PBBR/empty) + PBB
@REM BIOS_SIZE - PBB_SIZE = PBB_OFFSET
@REM PBB_OFFSET - PBB_SIZE = PBBR_OFFSET
@REM PBBR_OFFSET - SBB_SIZE = SBB_OFFSET
@REM
set /a PBB_OFFSET=%BIOS_SIZE%-%PBB_SIZE%
set /a PBBR_OFFSET=%PBB_OFFSET%-%PBB_SIZE%
set /a SBB_OFFSET=%PBBR_OFFSET%-%SBB_SIZE%
echo -----------------------------
echo PBB_OFFSET=%PBB_OFFSET%
echo PBBR_OFFSET=%PBBR_OFFSET%
echo SBB_OFFSET=%SBB_OFFSET%
echo -----------------------------
if exist Temp rd /s /q Temp
set PROJECT_PATH=%cd%
mkdir Temp
echo Handling and Hashing SBB region data, Please wait for a while.
call %CHIPSET_PKG_TOOLS_PATH%\CreateHashBinary.exe %WORKSPACE%\Build\%PROJECT_PKG%\%TARGET%_%TOOL_CHAIN%\X64\PcdList.txt %BUILD_FV_PATH%\%PLATFORM_TYPE%.fd Temp\%PLATFORM_TYPE%_Backup.fd %PROJECT_PATH%\Include\ChasmFallsReservedDefine.h
copy /y /b %BUILD_FV_PATH%\%PLATFORM_TYPE%.fd Temp\%PLATFORM_TYPE%_Org.fd
cd Temp
set TEMP_FOLDER_PATH=%cd%
split -f %PLATFORM_TYPE%_Backup.fd -s %SBB_OFFSET% -o VAR.fd -t PBB_SBB.fd
split -f PBB_SBB.fd -s %SBB_SIZE% -o SBB.fd -t PBB.fd
openssl dgst -binary -sha256 SBB.fd > SbbDigest.bin
if %ERRORLEVEL% NEQ 0 (
echo ==========================================================================
echo !!!!! !!!!!
echo !!!!! SbbDigest Generation Error !!!!!
echo !!!!! !!!!!
echo ==========================================================================
goto :EOF
)
@call %EDK_TOOLS_BIN%\GenSec.exe -s EFI_SECTION_USER_INTERFACE -n "SbbDigest" -o SbbDigest.ui
@call %EDK_TOOLS_BIN%\GenSec.exe -s EFI_SECTION_RAW SbbDigest.bin -o SbbDigest.raw
@call %EDK_TOOLS_BIN%\GenFfs.exe -t EFI_FV_FILETYPE_FREEFORM -g %SBB_DIGEST_FILE_GUID% -o SbbDigest.ffs -i SbbDigest.raw -i SbbDigest.ui
@call %EDK_TOOLS_BIN%\FMMT.exe -r %PLATFORM_TYPE%_Org.fd %FV_GUID% SbbDigest SbbDigest.ffs SbbDigest_temp.fd
@if exist %BUILD_FV_PATH%\%PLATFORM_TYPE%.fd del %BUILD_FV_PATH%\%PLATFORM_TYPE%.fd
@copy /y /b SbbDigest_temp.fd %BUILD_FV_PATH%\%PLATFORM_TYPE%.fd
@cd ..
:SKIP_SBB_Digest_Flow
call BiosGuardPostBuild.bat
if exist Temp rd /s /q Temp
if exist ReservedList.txt del ReservedList.txt
@REM ******************************************************************************
@REM * FitGen BIOS Input Filename: %PLATFORM_TYPE%_PRE_FIT.fd
@REM * FitGen BIOS Output Filename: %PLATFORM_TYPE%.fd
@REM ******************************************************************************
echo ***** Fill FIT table *****
set TXT_SUPPORT=YES
set BOOT_GUARD_SUPPORT=YES
set PCDLIST_FILE=%WORKSPACE%\Build\%PROJECT_PKG%\%TARGET%_%TOOL_CHAIN%\X64\PcdList.txt
@REM Intel Converged Boot Guard and Trusted Execution Technologies (CBnT) feature
for /f "tokens=2" %%a in ('find "gChipsetPkgTokenSpaceGuid.PcdTXTSupported" %PCDLIST_FILE%') do if %%a==0 set TXT_SUPPORT=NO
for /f "tokens=2" %%a in ('find "gSiPkgTokenSpaceGuid.PcdTxtEnable" %PCDLIST_FILE%') do if %%a==0 set TXT_SUPPORT=NO
for /f "tokens=2" %%a in ('find "gSiPkgTokenSpaceGuid.PcdBootGuardEnable" %PCDLIST_FILE%') do if %%a==0 set BOOT_GUARD_SUPPORT=NO
@REM Fit Table and Sign process will going if:
@REM 1. CBnT Boot Guard
@REM 2. CBnT Boot Guard with CBnT TXT
@REM Only CBnT TXT is incorrect
@REM For CBnT, the Boot Policy Manifest is updated to add a new TXT Element (_TXTE_), which is used to provide additional information needed for TXT functionality
@REM The TXT Element is optional, and if not defined, all of its fields are assumed to have default values.
@if "%BOOT_GUARD_SUPPORT%"=="NO" (
goto FIT_BootGuardOff
)
@REM
@REM "%BOOT_GUARD_SUPPORT%"=="YES" or with CBnT "%TXT_SUPPORT%"=="YES"
@REM
pushd %WORKSPACE%\Build\%PROJECT_PKG%\%TARGET%_%TOOL_CHAIN%\FV
if exist %PLATFORM_TYPE%_PRE_FIT.fd del %PLATFORM_TYPE%_PRE_FIT.fd
rename %PLATFORM_TYPE%.fd %PLATFORM_TYPE%_PRE_FIT.fd
@if "%TXT_SUPPORT%"=="YES" (
if %RESILIENCY_BUILD% EQU TRUE (
%CHIPSET_PKG_TOOLS_PATH%\FitGen.exe -D %PLATFORM_TYPE%_PRE_FIT.fd %PLATFORM_TYPE%.fd -F 0x40 -NA -L %SLOT_SIZE% %MICROCODE_ARRAY_FFS_GUID% -I %BIOS_INFO_GUID% -S %STARTUP_AC_MODULE_GUID% -O 0x0C RESERVE 0x600 -O 0x0B RESERVE 0x400 -P 0x0A 0x70 0x71 0x01 0x04 0x2A
) else (
%CHIPSET_PKG_TOOLS_PATH%\FitGen.exe -D %PLATFORM_TYPE%_PRE_FIT.fd %PLATFORM_TYPE%.fd -F 0x40 -NA -I %BIOS_INFO_GUID% -S %STARTUP_AC_MODULE_GUID% -O 0x0C RESERVE 0x600 -O 0x0B RESERVE 0x400 -P 0x0A 0x70 0x71 0x01 0x04 0x2A
)
)
@if "%TXT_SUPPORT%"=="NO" (
if %RESILIENCY_BUILD% EQU TRUE (
%CHIPSET_PKG_TOOLS_PATH%\FitGen.exe -D %PLATFORM_TYPE%_PRE_FIT.fd %PLATFORM_TYPE%.fd -F 0x40 -NA -L %SLOT_SIZE% %MICROCODE_ARRAY_FFS_GUID% -I %BIOS_INFO_GUID% -S %STARTUP_AC_MODULE_GUID% -O 0x0C RESERVE 0x600 -O 0x0B RESERVE 0x400
) else (
%CHIPSET_PKG_TOOLS_PATH%\FitGen.exe -D %PLATFORM_TYPE%_PRE_FIT.fd %PLATFORM_TYPE%.fd -F 0x40 -NA -I %BIOS_INFO_GUID% -S %STARTUP_AC_MODULE_GUID% -O 0x0C RESERVE 0x600 -O 0x0B RESERVE 0x400
)
)
popd
if not errorlevel 0 goto FitError
goto GenForBootGuard
:FIT_BootGuardOff
pushd %WORKSPACE%\Build\%PROJECT_PKG%\%TARGET%_%TOOL_CHAIN%\FV
if exist %PLATFORM_TYPE%_PRE_FIT.fd del %PLATFORM_TYPE%_PRE_FIT.fd
rename %PLATFORM_TYPE%.fd %PLATFORM_TYPE%_PRE_FIT.fd
if %RESILIENCY_BUILD% EQU TRUE (
%CHIPSET_PKG_TOOLS_PATH%\FitGen.exe -D %PLATFORM_TYPE%_PRE_FIT.fd %PLATFORM_TYPE%.fd -F 0x40 -NA -L %SLOT_SIZE% %MICROCODE_ARRAY_FFS_GUID% -I %BIOS_INFO_GUID%
) else (
%CHIPSET_PKG_TOOLS_PATH%\FitGen.exe -D %PLATFORM_TYPE%_PRE_FIT.fd %PLATFORM_TYPE%.fd -F 0x40 -NA -I %BIOS_INFO_GUID%
)
popd
if errorlevel 0 goto End_FIT
:FitError
REM Error handling: pause when error occurs
echo ==========================================================================
echo !!!!! !!!!!
echo !!!!! FIT Generation Error !!!!!
echo !!!!! !!!!!
echo ==========================================================================
pause
:End_FIT
@REM ******************************************************************************
@REM * BpmGen2 BIOS Input Filename: %PLATFORM_TYPE%_FIT.fd
@REM * BpmGen2 BIOS Output Filename: %PLATFORM_TYPE%.fd
@REM ******************************************************************************
:GenForBootGuard
@if "%BOOT_GUARD_SUPPORT%"=="NO" (
goto End_GenForBootGuard
)
echo ***** Generate for Boot Guard when BOOT_GUARD_SUPPORT = YES *****
set KM_REVOCATION=1
set KM_ID=0x01
pushd %WORKSPACE%\Build\%PROJECT_PKG%\%TARGET%_%TOOL_CHAIN%\FV
if exist %PLATFORM_TYPE%_FIT.fd del %PLATFORM_TYPE%_FIT.fd
rename %PLATFORM_TYPE%.fd %PLATFORM_TYPE%_FIT.fd
popd
echo "#### BpmGen2: Generating KeyManifest.bin ####"
pushd %WORKSPACE%\%PROJECT_REL_PATH%\%PROJECT_PKG%\PlatformConfig
@REM Intel Converged Boot Guard and Trusted Execution Technologies (CBnT) feature enabled
%PLATFORM_FULL_PACKAGE%\Tools\BpmGen2\BpmGen2.exe KMGEN -KEY pubkey.pem BPM -KM %BUILD_FV_PATH%\KeyManifest.bin -SIGNKEY keyprivkey.pem -SIGHASHALG SHA384 -SCHEME RSAPSS -KMKHASH SHA384 -KMID %KM_ID% -SVN %KM_REVOCATION% -d:2 >bpmgen2_km.txt
popd
if %ERRORLEVEL% NEQ 0 (
echo "#### Error generating KM file #####"
goto :EOF
)
echo "#### BpmGen2: Generating Manifest.bin ####"
pushd %WORKSPACE%\%PROJECT_REL_PATH%\%PROJECT_PKG%\PlatformConfig
@REM Intel Converged Boot Guard and Trusted Execution Technologies (CBnT) feature enabled
%PLATFORM_FULL_PACKAGE%\Tools\BpmGen2\BpmGen2.exe GEN %BUILD_FV_PATH%\%PLATFORM_TYPE%_FIT.fd bpmgen2.params -BPM %BUILD_FV_PATH%\Manifest.bin -U %BUILD_FV_PATH%\%PLATFORM_TYPE%.fd -KM %BUILD_FV_PATH%\KeyManifest.bin -d:2 >bpmgen2_bpm.txt
popd
if %ERRORLEVEL% NEQ 0 (
echo "#### Error generating BPM file #####"
goto :EOF
)
for /f "tokens=2" %%a in ('find "gPlatformModuleTokenSpaceGuid.PcdExtendedBiosRegionSupport" %PCDLIST_FILE%') do if %%a==0 goto SkipExtendedRegionPostBuildProcess
@REM
@REM Cutting off unused part of Extended BIOS Region out of the FD image
@REM
@REM @if %EXTENDEDREGION_BUILD% EQU FALSE goto SkipExtendedRegionPostBuildProcess
@set FLASHMAP_FDF=%WORKSPACE%\%PROJECT_REL_PATH%\%PROJECT_PKG%\Project.fdf
@if not defined FLASHMAP_FDF goto SkipExtendedRegionPostBuildProcess
@set EXTENDED_REGION_SIZE=
@set EXTENDED_REGION_IN_USE=
@for /f "tokens=3" %%a in ('find "TARGET " %WORKSPACE%\Conf\target.txt') do set TARGET=%%a
@for /f "tokens=4" %%i in ('@findstr /c:"DEFINE EXTENDED_REGION_SIZE " %FLASHMAP_FDF%') do @set EXTENDED_REGION_SIZE=%%i
@for /f "tokens=4" %%j in ('@findstr /c:"DEFINE EXTENDED_REGION_IN_USE" %FLASHMAP_FDF%') do @set EXTENDED_REGION_IN_USE=%%j
@echo Extended BIOS Region size : %EXTENDED_REGION_SIZE%
@echo Extended BIOS Region size in use : %EXTENDED_REGION_IN_USE%
@set /a CUTOFF_SIZE="%EXTENDED_REGION_SIZE%-%EXTENDED_REGION_IN_USE%"
@echo Cutting off unused %CUTOFF_SIZE% in size
@copy /y /b %WORKSPACE%\Build\%PROJECT_PKG%\%TARGET%_%TOOL_CHAIN%\FV\%PLATFORM_TYPE%.fd %WORKSPACE%\Build\%PROJECT_PKG%\%TARGET%_%TOOL_CHAIN%\FV\%PLATFORM_TYPE%_ExtSplitPre.fd
split -f %WORKSPACE%\Build\%PROJECT_PKG%\%TARGET%_%TOOL_CHAIN%\FV\%PLATFORM_TYPE%.fd -s %CUTOFF_SIZE% -t %WORKSPACE%\Build\%PROJECT_PKG%\%TARGET%_%TOOL_CHAIN%\FV\%PLATFORM_TYPE%_ExtSplitPost.fd -o %WORKSPACE%\Build\%PROJECT_PKG%\%TARGET%_%TOOL_CHAIN%\FV\Garbage.bin
@copy /y /b %WORKSPACE%\Build\%PROJECT_PKG%\%TARGET%_%TOOL_CHAIN%\FV\%PLATFORM_TYPE%_ExtSplitPost.fd %WORKSPACE%\Build\%PROJECT_PKG%\%TARGET%_%TOOL_CHAIN%\FV\%PLATFORM_TYPE%.fd
@del %WORKSPACE%\Build\%PROJECT_PKG%\%TARGET%_%TOOL_CHAIN%\FV\Garbage.bin
:SkipExtendedRegionPostBuildProcess
:End_GenForBootGuard
echo ***** Copy BIOS to BoardPkg\BIOS *****
copy /y %BUILD_FV_PATH%\%PLATFORM_TYPE%.fd %WORKSPACE%\%PROJECT_REL_PATH%\%PROJECT_PKG%\BIOS\%PLATFORM_TYPE%.fd > NUL
@REM
@REM Uncomment this command to generate "BIOS Guard Update Image" by default for your projects
@REM
@REM copy /b .\BIOS\AlderLakeP.fd + /b .\BIOS\InsydeBiosGuardHeader.bin .\BIOS\AlderLakeP_BiosGuard.fd /y > NUL
@REM ------------ Restore BaseTools\Bin\Win32\GenVarrcBat.bat file -------------#
@if exist %WORKSPACE%\BaseTools\Bin\Win32\GenVarrcBat_.bat (
copy %WORKSPACE%\BaseTools\Bin\Win32\GenVarrcBat_.bat %WORKSPACE%\BaseTools\Bin\Win32\GenVarrcBat.bat /y
del %WORKSPACE%\BaseTools\Bin\Win32\GenVarrcBat_.bat
)
@REM FvAlignChecker.exe for 4K Align Check
FvAlignChecker.exe --PCD-report-file %WORKSPACE%\Build\%PROJECT_PKG%\BuildReport.txt
@REM cd BIOS
@REM cd AlderLakeLP
@REM BuildRom.bat %WORKSPACE%\%BUILD_DIR%
@REM cd ..
@REM cd ..
@if %RESILIENCY_BUILD% EQU TRUE (
@REM
@REM variable + OBB(SBB) + IPBBR(PBBR) + IBB(PBB) = bios size
@REM BIOS_SIZE = 0x1000000 (16M)
@REM IBB_SIZE = IBBR SIZE = 0400000 (4M)
@REM
if exist Temp rd /s /q Temp
mkdir Temp
copy /y /b Bios\%PLATFORM_TYPE%.fd Temp\%PLATFORM_TYPE%_Backup.fd
cd Temp
split -f %PLATFORM_TYPE%_Backup.fd -s %PBB_OFFSET% -t PBB.fd -o PBBR_SBB.fd
split -f PBBR_SBB.fd -s %PBBR_OFFSET% -t PBBR.fd -o SBB_VAR.fd
copy /y /b SBB_VAR.fd + PBB.fd + PBB.fd %PLATFORM_TYPE%.fd
cd ..
@if exist Bios\%PLATFORM_TYPE%.fd del Bios\%PLATFORM_TYPE%.fd
copy /y /b Temp\%PLATFORM_TYPE%.fd Bios\%PLATFORM_TYPE%.fd
@if exist Temp rd /s /q Temp
)
endlocal
@echo on
:GpioWarning
@MD GpioWarning
@CD GpioWarning
@echo ==============================================================================
@echo The SoC may be burned out if you don't have correct GPIO settings! > "Warning"
@findstr /a:0c /C:"The" /S "Warning"
@echo Before you using the binary on your project,
@echo Please double check your GPIO settings based on your H/W design!
@echo Except for all pads in GPIO F group and GPD group, all other GPIO pads support perpad
@echo configurable voltage, which allows control selection of 1.8V or 3.3V for each pad.
@echo GPIO pad voltage configuration must be set correctly depending on device connected to it; otherwise, damage to the PCH or the device may occur.
@echo You should check:
@echo 1. ME XML file (Voltage setting for 3.3V/1.8V Pads)
@echo 2. Gpio file (Internal Pull-up/Pull-down, Rx/Tx EnCfg, ...)
@echo Notes: - GPIO F group supports 1.8V only.
@echo - GPD group supports 3.3V only.
@echo ==============================================================================
@CD ..
@RD /S /Q GpioWarning
@REM @REM[-start-200710-IB10181004-add]REM
@REM @REM POWER_ON_FLAG
@REM @REM NOTE!! calling gensimics to generate simics relative binaries for Intel Simics.
@REM @echo ---Create ROM and Simics images---
@REM @call %WORKSPACE%\Board\Intel\AlderLakePMultiBoardPkg\gensimics.bat
@REM @if %errorlevel% NEQ 0 (
@REM @echo !!! ERROR !!! Create ROM and Simics images !!!
@REM )
@REM @REM[-end-200710-IB10181004-add]REM