Acidanthera UEFI Development Kit based on EDK II edk2-stable202311
Go to file
Gary Lin 02021d2ea4 MdeModulePkg/UefiBootManagerLib: Match the nested partitions
In some cases, such as MD RAID1 in Linux, the bootloader may be in a
nested EFI system partition partition. For example, sda1 and sdb1 are
combined as md0 and the first partition of md0, md0p1, is an EFI system
partition. Then, the bootloader can be located by the following device
paths:

PCI()/SATA(sda)/Partition(sda1)/Partition(md0p1)/File(bootloader.efi)
PCI()/SATA(sdb)/Partition(sdb1)/Partition(md0p1)/File(bootloader.efi)

To make the boot option more resilient, we may create a boot option with
the short-form device path like "Partition(md0p1)/File(bootloader.efi)".

However, BmMatchPartitionDevicePathNode() only matched the first
partition node and ignored the nested partitions, so the firmware would
refuse to load bootloader.efi since "Partition(md0p1)" doesn't match
either "Partition(sda1)" or "Partition(sda2)".

This commit modifies BmMatchPartitionDevicePathNode() to iterate all
nested partitions so that the above boot option could work.

v2 - Simplify the node matching logic

Cc: Ruiyu Ni <ruiyu.ni@intel.com>
Cc: Star Zeng <star.zeng@intel.com>
Cc: Jian J Wang <jian.j.wang@intel.com>
Cc: Hao Wu <hao.a.wu@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Gary Lin <glin@suse.com>
Reviewed-by: Ray Ni <ray.ni@intel.com>
2019-01-31 12:25:36 +08:00
AppPkg AppPkg: Removing ipf which is no longer supported from edk2. 2018-06-29 16:19:35 +08:00
ArmPkg ArmPkg/ArmMmuLib AARCH64: get rid of needless TLB invalidation 2019-01-29 11:24:02 +01:00
ArmPlatformPkg ArmPlatformPkg/PL011SerialPortLib: use untyped PCD for register base 2018-12-20 18:34:08 +01:00
ArmVirtPkg ArmVirtXen: Link VarCheckUefiLib NULL class library instance 2019-01-24 10:52:39 +08:00
BaseTools BaseTools/build/build: delete variable 2019-01-28 11:44:45 +08:00
BeagleBoardPkg BeagleBoardPkg: Use merged variable driver for emulated NV mode 2019-01-24 10:52:40 +08:00
Conf
CorebootModulePkg CorebootModulePkg: Removing ipf from edk2. 2018-08-14 08:58:28 +08:00
CorebootPayloadPkg CorebootPayloadPkg: Use merged variable driver for emulated NV mode 2019-01-24 10:52:41 +08:00
CryptoPkg CryptoPkg/SmmCryptLib: permit use by MM_STANDALONE modules 2019-01-21 13:42:49 +01:00
EdkCompatibilityPkg EdkCompatibilityPkg: Removing ipf from edk2. 2018-09-25 23:43:46 +08:00
EmbeddedPkg EmbeddedPkg: Fix Command Argument for SD/eMMC R/W operation. 2019-01-30 17:47:26 +00:00
EmulatorPkg EmulatorPkg: require GCC48 or later 2019-01-08 02:34:05 +01:00
FatPkg FatPkg: Add GPT check in FatPei to support Capsule-on-Disk feature. 2019-01-31 11:10:55 +08:00
FmpDevicePkg FmpDevicePkg DSC: Add NOOPT target to verify NOOPT target 2018-10-31 22:08:10 +08:00
IntelFrameworkModulePkg IntelFrameworkModulePkg: Fix UEFI and Tiano Decompression logic issue 2018-11-11 11:48:37 +08:00
IntelFrameworkPkg IntelFrameworkPkg FrameworkUefiLib: Add new EfiLocateXXXAcpiTable APIs 2018-09-27 14:25:32 +08:00
IntelFsp2Pkg IntelFsp2Pkg: FSP can utilize bootloader stack 2019-01-28 15:49:13 +08:00
IntelFsp2WrapperPkg IntelFsp2WrapperPkg: Fix constant if statements issue 2018-11-26 11:40:38 +08:00
IntelFspPkg edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
IntelFspWrapperPkg edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
IntelSiliconPkg IntelSiliconPkg VTdDxe: Report status code for VTd error 2018-10-25 11:50:49 +08:00
MdeModulePkg MdeModulePkg/UefiBootManagerLib: Match the nested partitions 2019-01-31 12:25:36 +08:00
MdePkg MdePkg/BasePeCoffLib: skip runtime relocation if reloc info is invalid 2019-01-31 11:36:09 +08:00
NetworkPkg NetworkPkg/DnsDxe: Remove unnecessary NULL pointer check. 2019-01-23 08:46:50 +08:00
Nt32Pkg Nt32Pkg: Remove EdkShellBinPkg in FDF and DEC 2018-11-19 10:50:15 +08:00
Omap35xxPkg Omap35xxPkg: Removing ipf which is no longer supported from edk2. 2018-06-29 16:19:46 +08:00
OptionRomPkg OptionRomPkg: Removing ipf which is no longer supported from edk2. 2018-09-06 14:44:30 +08:00
OvmfPkg OvmfPkg: add MmServicesTableLib resolution 2019-01-16 17:51:00 +01:00
PcAtChipsetPkg PcAtChipsetPkg PcRtc: Use new EfiLocateFirstAcpiTable() 2018-09-27 14:25:35 +08:00
QuarkPlatformPkg QuarkMin: Use merged variable driver for emulated NV mode 2019-01-24 10:52:40 +08:00
QuarkSocPkg QuarkSocPkg: Removing ipf which is no longer supported from edk2. 2018-08-14 08:58:32 +08:00
SecurityPkg SecurityPkg: Add a PCD to skip Opal password prompt 2019-01-31 10:49:16 +08:00
ShellBinPkg ShellBinPkg: Clean up source files 2018-06-28 11:19:51 +08:00
ShellPkg ShellPkg/UefiShellAcpiViewCommandLib: Fix VS tool chain build failure 2019-01-29 09:18:53 +08:00
SignedCapsulePkg SignedCapsulePkg: Remove PalLib in dsc which was missed at 52664c5 2018-09-25 23:40:40 +08:00
SourceLevelDebugPkg SourceLevelDebugPkg/Readme.txt: Update UDK Debugger Tool & manual URL 2018-11-08 12:00:34 +08:00
StandaloneMmPkg StandaloneMmPkg/StandaloneMmCoreEntryPoint: permit the use of TE images 2019-01-21 14:43:12 +01:00
StdLib StdLib/Environs: Avoid infinite recursion in _Exit 2019-01-02 11:26:21 -08:00
StdLibPrivateInternalFiles StdLibPrivateInternalFiles: Removing ipf from edk2. 2018-06-29 16:19:51 +08:00
UefiCpuPkg UefiCpuPkg/RegisterCpuFeaturesLib: Replace AcquireSpinLock. 2019-01-15 13:27:37 +08:00
Vlv2DeviceRefCodePkg edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
Vlv2TbltDevicePkg Vlv2TbltDevicePkg: add MmServicesTableLib resolution 2019-01-16 20:10:51 +01:00
.gitignore
.gitmodules CryptoPkg: Adding OpenSSL as one submodule of EDKII repo 2018-01-18 14:06:15 +08:00
BuildNotes2.txt
Contributions.txt edk2: Fix typo in Contributions.txt 2017-08-16 17:50:44 +08:00
License.txt edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
Maintainers.txt Maintainers.txt: Update mail address 2019-01-15 17:44:35 +08:00
Readme.md Readme.md: Add edk2 release tag and edk2 release plan 2018-12-20 23:31:47 +08:00
edksetup.bat BaseTools: Remove unused logic for EDKI 2019-01-14 09:34:23 +08:00
edksetup.sh Revert BaseTools: PYTHON3 migration 2018-10-15 08:29:14 +08:00

Readme.md

EDK II Project

A modern, feature-rich, cross-platform firmware development environment for the UEFI and PI specifications from www.uefi.org.

Contributions to the EDK II open source project are covered by the TianoCore Contribution Agreement 1.1

The majority of the content in the EDK II open source project uses a BSD 2-Clause License. The EDK II open source project contains the following components that are covered by additional licenses:

The EDK II Project is composed of packages. The maintainers for each package are listed in Maintainers.txt.

Resources