audk/ArmPkg/Library
Nhi Pham 6254037223 ArmPkg: Implement PlatformBootManagerLib for LinuxBoot
LinuxBoot is a firmware that replaces specific firmware functionality
like the UEFI DXE phase with a Linux kernel and runtime. It is built-in
UEFI image like an application, which is executed at the end of DXE
phase.

To achieve the LinuxBoot boot flow "SEC->PEI->DXE->BDS->LinuxBoot",
today we use the common well-known GUID of UEFI Shell for LinuxBoot
payload, so LinuxBoot developers can effortlessly find the UEFI Shell
Application and replace it with the LinuxBoot payload without
recompiling platform EDK2 (There might be an issue with a few systems
that don't have a UEFI Shell). Also, we have a hard requirement to force
the BDS to boot into the LinuxBoot as it is essentially required that
only the LinuxBoot boot option is permissible and UEFI is an
intermediate bootstrap phase. Considering all the above, it is
reasonable to just have a new GUID for LinuxBoot and require a LinuxBoot
specific BDS implementation. In addition, with making the BDS
implementation simpler, we can reduce many DXE drivers which we think it
is not necessary for LinuxBoot booting.

This patch adds a new PlatformBootManagerLib implementation which
registers only the gArmTokenSpaceGuid.PcdLinuxBootFileGuid for LinuxBoot
payload as an active boot option. It allows BDS to jump to the LinuxBoot
quickly by skipping the UiApp and UEFI Shell.

The PlatformBootManagerLib library derived from
ArmPkg/Library/PlatformBootManagerLib.

Cc: Leif Lindholm <leif@nuviainc.com>
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org>

Signed-off-by: Nhi Pham <nhi@os.amperecomputing.com>
Acked-by: Ard Biesheuvel <ardb@kernel.org>
Acked-by: Samer El-Haj-Mahmoud <Samer.El-Haj-Mahmoud@arm.com>
Acked-by: Moritz Fischer <moritzf@google.com>
2021-10-23 08:38:20 +00:00
..
ArmArchTimerLib ArmPkg: Fix Ecc error 8001 in ArmArchTimerLib 2021-04-15 19:53:39 +00:00
ArmCacheMaintenanceLib ArmPkg: Fix Ecc error 5007 in ArmCacheMaintenanceLib 2021-01-06 16:22:54 +00:00
ArmDisassemblerLib ArmPkg: Fix Ecc error 8005/8007 in ArmDisassemblerLib 2021-04-15 19:53:39 +00:00
ArmExceptionLib ArmPkg: Fix Ecc error 5003 in ArmExceptionLib 2021-04-15 19:53:39 +00:00
ArmGenericTimerPhyCounterLib ArmPkg: Replace BSD License with BSD+Patent License 2019-04-09 09:10:21 -07:00
ArmGenericTimerVirtCounterLib ArmPkg: Replace BSD License with BSD+Patent License 2019-04-09 09:10:21 -07:00
ArmGicArchLib ArmPkg: remove duplicated ARM/AArch64 ArmGicArchLib sources 2020-12-18 15:27:26 +00:00
ArmGicArchSecLib ArmPkg: remove duplicated ARM/AArch64 ArmGicArchSecLib sources 2020-12-18 15:27:26 +00:00
ArmHvcLib ArmPkg: Replace BSD License with BSD+Patent License 2019-04-09 09:10:21 -07:00
ArmLib ArmPkg: Move cache defs used in Universal/Smbios into ArmCache.h 2021-06-18 15:25:57 +00:00
ArmMmuLib ArmPkg: Correct small typos 2021-04-28 12:03:51 +00:00
ArmMtlNullLib ArmPkg: Replace BSD License with BSD+Patent License 2019-04-09 09:10:21 -07:00
ArmPsciResetSystemLib ArmPkg: Replace BSD License with BSD+Patent License 2019-04-09 09:10:21 -07:00
ArmSmcLib ArmPkg: Replace BSD License with BSD+Patent License 2019-04-09 09:10:21 -07:00
ArmSmcLibNull ArmPkg: convert LFs to CRLF, expand hard TABs 2020-03-04 12:22:07 +00:00
ArmSmcPsciResetSystemLib ArmPkg/ArmSmcPsciResetSystemLib: remove EnterS3WithImmediateWake () 2020-01-14 22:12:17 +00:00
ArmSoftFloatLib ArmPkg: Fix Ecc error 6001 in ArmSoftFloatLib 2021-04-15 19:53:39 +00:00
ArmSvcLib ArmPkg/ArmSvcLib: Return x4-x7 in output parameters 2021-02-23 15:40:37 +00:00
CompilerIntrinsicsLib ArmPkg: Fix Ecc error 5007 in CompilerIntrinsicsLib 2021-01-06 16:22:54 +00:00
DebugAgentSymbolsBaseLib ArmPkg: Replace BSD License with BSD+Patent License 2019-04-09 09:10:21 -07:00
DebugPeCoffExtraActionLib ArmPkg: DebugPeCoffExtraActionLib: fix trivial comment typos 2019-07-30 14:58:17 +01:00
DefaultExceptionHandlerLib ArmPkg: Fix Ecc error 5007 in DefaultExceptionHandlerLib 2021-01-06 16:22:54 +00:00
GccLto ArmPkg: convert LFs to CRLF, expand hard TABs 2020-03-04 12:22:07 +00:00
LinuxBootBootManagerLib ArmPkg: Implement PlatformBootManagerLib for LinuxBoot 2021-10-23 08:38:20 +00:00
OpteeLib ArmPkg: Fix Ecc error 8003 2021-04-28 12:03:51 +00:00
PeiServicesTablePointerLib ArmPkg: Replace BSD License with BSD+Patent License 2019-04-09 09:10:21 -07:00
PlatformBootManagerLib ArmPkg: Enable boot discovery policy for ARM package. 2021-08-30 14:23:14 +00:00
RvdPeCoffExtraActionLib ArmPkg: Fix various typos 2019-07-04 12:20:28 +01:00
SemiHostingDebugLib ArmPkg: Fix various typos 2019-07-04 12:20:28 +01:00
SemiHostingSerialPortLib ArmPkg: Correct small typos 2021-04-28 12:03:51 +00:00
SemihostLib ArmPkg: Fix Ecc error 8003 2021-04-28 12:03:51 +00:00
StandaloneMmMmuLib ArmPkg: prepare 32bit ARM build of StandaloneMmPkg 2021-08-11 11:32:32 +00:00