> -----Original Message----- > From: Neal Gompa <ngo...@fedoraproject.org> > Sent: Monday, July 5, 2021 5:36 PM > To: devel@edk2.groups.io > Cc: Neal Gompa <ngo...@fedoraproject.org>; Chris Murphy > <chrismur...@fedoraproject.org>; David Duncan <davd...@amazon.com>; > Lazlo Ersek <ler...@redhat.com>; Wu, Hao A <hao.a...@intel.com>; Ni, > Ray <ray...@intel.com>; Gao, Zhichao <zhichao....@intel.com> > Subject: [PATCH] MdeModulePkg/PartitionDxe: Ignore PMBR BootIndicator > per UEFI spec > > Per UEFI Spec 2.8 (UEFI_Spec_2_8_final.pdf, page 114) > 5.2.3 Protective MBR > Table 20. Protective MBR Partition Record protecting the entire disk > > The description for BootIndicator states the following: > > > Set to 0x00 to indicate a non-bootable partition. If set to any > > value other than 0x00 the behavior of this flag on non-UEFI > > systems is undefined. Must be ignored by UEFI implementations. > > Unfortunately, we have been incorrectly assuming that the > BootIndicator value must be 0x00, which leads to problems > when the 'pmbr_boot' flag is set on a disk containing a GPT > (such as with GNU parted). When the flag is set, the value > changes to 0x01, causing this check to fail and the system > is rendered unbootable despite it being valid from the > perspective of the UEFI spec. > > To resolve this, we drop the check for the BootIndicator > so that we stop caring about the value set there, which > restores the capability to boot such disks. > > Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3474 > > Cc: Chris Murphy <chrismur...@fedoraproject.org> > Cc: David Duncan <davd...@amazon.com> > Cc: Lazlo Ersek <ler...@redhat.com> > Cc: Hao A Wu <hao.a...@intel.com> > Cc: Ray Ni <ray...@intel.com> > Cc: Zhichao Gao <zhichao....@intel.com> > > Signed-off-by: Neal Gompa <ngo...@fedoraproject.org> > --- > MdeModulePkg/Universal/Disk/PartitionDxe/Gpt.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/MdeModulePkg/Universal/Disk/PartitionDxe/Gpt.c > b/MdeModulePkg/Universal/Disk/PartitionDxe/Gpt.c > index aefb2d6ecb3f..efaff5e0808f 100644 > --- a/MdeModulePkg/Universal/Disk/PartitionDxe/Gpt.c > +++ b/MdeModulePkg/Universal/Disk/PartitionDxe/Gpt.c > @@ -264,8 +264,7 @@ PartitionInstallGptChildHandles ( > // Verify that the Protective MBR is valid > > // > > for (Index = 0; Index < MAX_MBR_PARTITIONS; Index++) { > > - if (ProtectiveMbr->Partition[Index].BootIndicator == 0x00 && > > - ProtectiveMbr->Partition[Index].OSIndicator == PMBR_GPT_PARTITION > && > > + if (ProtectiveMbr->Partition[Index].OSIndicator == > PMBR_GPT_PARTITION && >
Thanks a lot for the fix. Reviewed-by: Hao A Wu <hao.a...@intel.com> Best Regards, Hao Wu > UNPACK_UINT32 (ProtectiveMbr->Partition[Index].StartingLBA) == 1 > > ) { > > break; > > -- > 2.31.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#77492): https://edk2.groups.io/g/devel/message/77492 Mute This Topic: https://groups.io/mt/83993973/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-