From: "Ni, Ruiyu" <ruiyu.ni@intel.com>
To: "jbrasen.qdt@qualcommdatacenter.com"
<jbrasen.qdt@qualcommdatacenter.com>,
"edk2-devel@lists.01.org" <edk2-devel@lists.01.org>
Subject: Re: [PATCH] MdeModulePkg/PartitionDxe: Add partition type guid to installed handle
Date: Thu, 29 Mar 2018 02:34:03 +0000 [thread overview]
Message-ID: <734D49CCEBEEF84792F5B80ED585239D5BC14DB1@SHSMSX104.ccr.corp.intel.com> (raw)
In-Reply-To: <cf5b8ad1953956ce5be91d51c0f01ccb0f73d7d2.1522052544.git.jbrasen.qdt@qualcommdatacenter.com>
Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
Thanks/Ray
> -----Original Message-----
> From: edk2-devel <edk2-devel-bounces@lists.01.org> On Behalf Of
> jbrasen.qdt@qualcommdatacenter.com
> Sent: Monday, March 26, 2018 4:57 PM
> To: edk2-devel@lists.01.org
> Subject: [edk2] [PATCH] MdeModulePkg/PartitionDxe: Add partition type
> guid to installed handle
>
> From: Jeff Brasen <jbrasen.qdt@qualcommdatacenter.com>
>
> Add the partition type GUID for every partition to the installed handle,
> this is required per the UEFI specification.
>
> "The firmware must add the PartitionTypeGuid to the handle of every
> active GPT partition using EFI_BOOT_SERVICES.InstallProtocolInterface()."
>
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Jeff Brasen <jbrasen.qdt@qualcommdatacenter.com>
> ---
> .../Universal/Disk/PartitionDxe/ElTorito.c | 4 ++-
> MdeModulePkg/Universal/Disk/PartitionDxe/Gpt.c | 4 ++-
> MdeModulePkg/Universal/Disk/PartitionDxe/Mbr.c | 7 +++--
> .../Universal/Disk/PartitionDxe/Partition.c | 30 ++++++++++++++--------
> .../Universal/Disk/PartitionDxe/Partition.h | 7 +++--
> MdeModulePkg/Universal/Disk/PartitionDxe/Udf.c | 4 ++-
> 6 files changed, 38 insertions(+), 18 deletions(-)
>
> diff --git a/MdeModulePkg/Universal/Disk/PartitionDxe/ElTorito.c
> b/MdeModulePkg/Universal/Disk/PartitionDxe/ElTorito.c
> index 2084ee5..a7b5434 100644
> --- a/MdeModulePkg/Universal/Disk/PartitionDxe/ElTorito.c
> +++ b/MdeModulePkg/Universal/Disk/PartitionDxe/ElTorito.c
> @@ -1,13 +1,14 @@
> /** @file
> Decode an El Torito formatted CD-ROM
>
> +Copyright (c) 2018 Qualcomm Datacenter Technologies, Inc.
> Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
> This program and the accompanying materials
> are licensed and made available under the terms and conditions of the BSD
> License
> which accompanies this distribution. The full text of the license may be
> found at
> http://opensource.org/licenses/bsd-license.php
>
> THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS"
> BASIS,
> WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER
> EXPRESS OR IMPLIED.
>
> **/
> @@ -258,21 +259,22 @@ PartitionInstallElToritoChildHandles (
> Handle,
> DiskIo,
> DiskIo2,
> BlockIo,
> BlockIo2,
> DevicePath,
> (EFI_DEVICE_PATH_PROTOCOL *) &CdDev,
> &PartitionInfo,
> Catalog->Boot.Lba * (SIZE_2KB / Media->BlockSize),
> Catalog->Boot.Lba * (SIZE_2KB / Media->BlockSize) +
> CdDev.PartitionSize - 1,
> - SubBlockSize
> + SubBlockSize,
> + NULL
> );
> if (!EFI_ERROR (Status)) {
> Found = EFI_SUCCESS;
> }
> }
> }
>
> FreePool (VolDescriptor);
>
> return Found;
> diff --git a/MdeModulePkg/Universal/Disk/PartitionDxe/Gpt.c
> b/MdeModulePkg/Universal/Disk/PartitionDxe/Gpt.c
> index 2cd3e15..fe26a64 100644
> --- a/MdeModulePkg/Universal/Disk/PartitionDxe/Gpt.c
> +++ b/MdeModulePkg/Universal/Disk/PartitionDxe/Gpt.c
> @@ -6,20 +6,21 @@
> This driver will have external input - disk partition.
> This external input must be validated carefully to avoid security issue like
> buffer overflow, integer overflow.
>
> PartitionInstallGptChildHandles() routine will read disk partition content and
> do basic validation before PartitionInstallChildHandle().
>
> PartitionValidGptTable(), PartitionCheckGptEntry() routine will accept disk
> partition content and validate the GPT table and GPT entry.
>
> +Copyright (c) 2018 Qualcomm Datacenter Technologies, Inc.
> Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
> This program and the accompanying materials
> are licensed and made available under the terms and conditions of the BSD
> License
> which accompanies this distribution. The full text of the license may be
> found at
> http://opensource.org/licenses/bsd-license.php
>
> THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS"
> BASIS,
> WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER
> EXPRESS OR IMPLIED.
>
> **/
> @@ -412,21 +413,22 @@ PartitionInstallGptChildHandles (
> Handle,
> DiskIo,
> DiskIo2,
> BlockIo,
> BlockIo2,
> DevicePath,
> (EFI_DEVICE_PATH_PROTOCOL *) &HdDev,
> &PartitionInfo,
> Entry->StartingLBA,
> Entry->EndingLBA,
> - BlockSize
> + BlockSize,
> + &Entry->PartitionTypeGUID
> );
> }
>
> DEBUG ((EFI_D_INFO, "Prepare to Free Pool\n"));
>
> Done:
> if (ProtectiveMbr != NULL) {
> FreePool (ProtectiveMbr);
> }
> if (PrimaryHeader != NULL) {
> diff --git a/MdeModulePkg/Universal/Disk/PartitionDxe/Mbr.c
> b/MdeModulePkg/Universal/Disk/PartitionDxe/Mbr.c
> index 55e9d26..479745b 100644
> --- a/MdeModulePkg/Universal/Disk/PartitionDxe/Mbr.c
> +++ b/MdeModulePkg/Universal/Disk/PartitionDxe/Mbr.c
> @@ -4,20 +4,21 @@
> MBR - Master Boot Record is in the first sector of a partitioned hard disk.
> The MBR supports four partitions per disk. The MBR also contains legacy
> code that is not run on an EFI system. The legacy code reads the
> first sector of the active partition into memory and
>
> BPB - BIOS Parameter Block is in the first sector of a FAT file system.
> The BPB contains information about the FAT file system. The BPB is
> always on the first sector of a media. The first sector also contains
> the legacy boot strap code.
>
> +Copyright (c) 2018 Qualcomm Datacenter Technologies, Inc.
> Copyright (c) 2014, Hewlett-Packard Development Company, L.P.<BR>
> Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
> This program and the accompanying materials
> are licensed and made available under the terms and conditions of the BSD
> License
> which accompanies this distribution. The full text of the license may be
> found at
> http://opensource.org/licenses/bsd-license.php
>
> THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS"
> BASIS,
> WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER
> EXPRESS OR IMPLIED.
>
> @@ -239,21 +240,22 @@ PartitionInstallMbrChildHandles (
> Handle,
> DiskIo,
> DiskIo2,
> BlockIo,
> BlockIo2,
> DevicePath,
> (EFI_DEVICE_PATH_PROTOCOL *) &HdDev,
> &PartitionInfo,
> HdDev.PartitionStart,
> HdDev.PartitionStart + HdDev.PartitionSize - 1,
> - MBR_SIZE
> + MBR_SIZE,
> + ((Mbr->Partition[Index].OSIndicator == EFI_PARTITION) ?
> &gEfiPartTypeSystemPartGuid: NULL)
> );
>
> if (!EFI_ERROR (Status)) {
> Found = EFI_SUCCESS;
> }
> }
> } else {
> //
> // It's an extended partition. Follow the extended partition
> // chain to get all the logical drives
> @@ -310,21 +312,22 @@ PartitionInstallMbrChildHandles (
> Handle,
> DiskIo,
> DiskIo2,
> BlockIo,
> BlockIo2,
> DevicePath,
> (EFI_DEVICE_PATH_PROTOCOL *) &HdDev,
> &PartitionInfo,
> HdDev.PartitionStart - ParentHdDev.PartitionStart,
> HdDev.PartitionStart - ParentHdDev.PartitionStart +
> HdDev.PartitionSize - 1,
> - MBR_SIZE
> + MBR_SIZE,
> + ((Mbr->Partition[0].OSIndicator == EFI_PARTITION) ?
> &gEfiPartTypeSystemPartGuid: NULL)
> );
> if (!EFI_ERROR (Status)) {
> Found = EFI_SUCCESS;
> }
>
> if ((Mbr->Partition[1].OSIndicator != EXTENDED_DOS_PARTITION) &&
> (Mbr->Partition[1].OSIndicator != EXTENDED_WINDOWS_PARTITION)
> ) {
> break;
> }
> diff --git a/MdeModulePkg/Universal/Disk/PartitionDxe/Partition.c
> b/MdeModulePkg/Universal/Disk/PartitionDxe/Partition.c
> index 46c0877..71acdcc 100644
> --- a/MdeModulePkg/Universal/Disk/PartitionDxe/Partition.c
> +++ b/MdeModulePkg/Universal/Disk/PartitionDxe/Partition.c
> @@ -1,16 +1,17 @@
> /** @file
> Partition driver that produces logical BlockIo devices from a physical
> BlockIo device. The logical BlockIo devices are based on the format
> of the raw block devices media. Currently "El Torito CD-ROM", UDF, Legacy
> MBR, and GPT partition schemes are supported.
>
> +Copyright (c) 2018 Qualcomm Datacenter Technologies, Inc.
> Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
> This program and the accompanying materials
> are licensed and made available under the terms and conditions of the BSD
> License
> which accompanies this distribution. The full text of the license may be
> found at
> http://opensource.org/licenses/bsd-license.php
>
> THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS"
> BASIS,
> WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER
> EXPRESS OR IMPLIED.
>
> **/
> @@ -394,20 +395,21 @@ PartitionDriverBindingStop (
> IN EFI_HANDLE *ChildHandleBuffer
> )
> {
> EFI_STATUS Status;
> UINTN Index;
> EFI_BLOCK_IO_PROTOCOL *BlockIo;
> EFI_BLOCK_IO2_PROTOCOL *BlockIo2;
> BOOLEAN AllChildrenStopped;
> PARTITION_PRIVATE_DATA *Private;
> EFI_DISK_IO_PROTOCOL *DiskIo;
> + EFI_GUID *TypeGuid;
>
> BlockIo = NULL;
> BlockIo2 = NULL;
> Private = NULL;
>
> if (NumberOfChildren == 0) {
> //
> // In the case of re-entry of the PartitionDriverBindingStop, the
> // NumberOfChildren may not reflect the actual number of children on the
> // bus driver. Hence, additional check is needed here.
> @@ -486,20 +488,27 @@ PartitionDriverBindingStop (
> } else {
> Status = EFI_SUCCESS;
> }
>
> gBS->CloseProtocol (
> ControllerHandle,
> &gEfiDiskIoProtocolGuid,
> This->DriverBindingHandle,
> ChildHandleBuffer[Index]
> );
> +
> + if (IsZeroGuid (&Private->TypeGuid)) {
> + TypeGuid = NULL;
> + } else {
> + TypeGuid = &Private->TypeGuid;
> + }
> +
> //
> // All Software protocols have be freed from the handle so remove it.
> // Remove the BlockIo Protocol if has.
> // Remove the BlockIo2 Protocol if has.
> //
> if (BlockIo2 != NULL) {
> //
> // Some device drivers might re-install the BlockIO(2) protocols for a
> // media change condition. Therefore, if the FlushBlocksEx returned with
> // EFI_MEDIA_CHANGED, just let the BindingStop fail to avoid potential
> @@ -509,35 +518,35 @@ PartitionDriverBindingStop (
> Status = gBS->UninstallMultipleProtocolInterfaces (
> ChildHandleBuffer[Index],
> &gEfiDevicePathProtocolGuid,
> Private->DevicePath,
> &gEfiBlockIoProtocolGuid,
> &Private->BlockIo,
> &gEfiBlockIo2ProtocolGuid,
> &Private->BlockIo2,
> &gEfiPartitionInfoProtocolGuid,
> &Private->PartitionInfo,
> - Private->EspGuid,
> + TypeGuid,
> NULL,
> NULL
> );
> }
> } else {
> Status = gBS->UninstallMultipleProtocolInterfaces (
> ChildHandleBuffer[Index],
> &gEfiDevicePathProtocolGuid,
> Private->DevicePath,
> &gEfiBlockIoProtocolGuid,
> &Private->BlockIo,
> &gEfiPartitionInfoProtocolGuid,
> &Private->PartitionInfo,
> - Private->EspGuid,
> + TypeGuid,
> NULL,
> NULL
> );
> }
>
> if (EFI_ERROR (Status)) {
> Private->InStop = FALSE;
> gBS->OpenProtocol (
> ControllerHandle,
> &gEfiDiskIoProtocolGuid,
> @@ -1097,39 +1106,41 @@ PartitionFlushBlocksEx (
> @param[in] ParentDiskIo Parent DiskIo interface.
> @param[in] ParentDiskIo2 Parent DiskIo2 interface.
> @param[in] ParentBlockIo Parent BlockIo interface.
> @param[in] ParentBlockIo2 Parent BlockIo2 interface.
> @param[in] ParentDevicePath Parent Device Path.
> @param[in] DevicePathNode Child Device Path node.
> @param[in] PartitionInfo Child Partition Information interface.
> @param[in] Start Start Block.
> @param[in] End End Block.
> @param[in] BlockSize Child block size.
> + @param[in] TypeGuid Partition GUID Type.
>
> @retval EFI_SUCCESS A child handle was added.
> @retval other A child handle was not added.
>
> **/
> EFI_STATUS
> PartitionInstallChildHandle (
> IN EFI_DRIVER_BINDING_PROTOCOL *This,
> IN EFI_HANDLE ParentHandle,
> IN EFI_DISK_IO_PROTOCOL *ParentDiskIo,
> IN EFI_DISK_IO2_PROTOCOL *ParentDiskIo2,
> IN EFI_BLOCK_IO_PROTOCOL *ParentBlockIo,
> IN EFI_BLOCK_IO2_PROTOCOL *ParentBlockIo2,
> IN EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath,
> IN EFI_DEVICE_PATH_PROTOCOL *DevicePathNode,
> IN EFI_PARTITION_INFO_PROTOCOL *PartitionInfo,
> IN EFI_LBA Start,
> IN EFI_LBA End,
> - IN UINT32 BlockSize
> + IN UINT32 BlockSize,
> + IN EFI_GUID *TypeGuid
> )
> {
> EFI_STATUS Status;
> PARTITION_PRIVATE_DATA *Private;
>
> Status = EFI_SUCCESS;
> Private = AllocateZeroPool (sizeof (PARTITION_PRIVATE_DATA));
> if (Private == NULL) {
> return EFI_OUT_OF_RESOURCES;
> }
> @@ -1209,58 +1220,55 @@ PartitionInstallChildHandle (
> if (Private->DevicePath == NULL) {
> FreePool (Private);
> return EFI_OUT_OF_RESOURCES;
> }
>
> //
> // Set the PartitionInfo into Private Data.
> //
> CopyMem (&Private->PartitionInfo, PartitionInfo, sizeof
> (EFI_PARTITION_INFO_PROTOCOL));
>
> - if (PartitionInfo->System == 1) {
> - Private->EspGuid = &gEfiPartTypeSystemPartGuid;
> + if (TypeGuid != NULL) {
> + CopyGuid(&(Private->TypeGuid), TypeGuid);
> } else {
> - //
> - // If NULL InstallMultipleProtocolInterfaces will ignore it.
> - //
> - Private->EspGuid = NULL;
> + ZeroMem ((VOID *)&(Private->TypeGuid), sizeof (EFI_GUID));
> }
>
> //
> // Create the new handle.
> //
> Private->Handle = NULL;
> if (Private->DiskIo2 != NULL) {
> Status = gBS->InstallMultipleProtocolInterfaces (
> &Private->Handle,
> &gEfiDevicePathProtocolGuid,
> Private->DevicePath,
> &gEfiBlockIoProtocolGuid,
> &Private->BlockIo,
> &gEfiBlockIo2ProtocolGuid,
> &Private->BlockIo2,
> &gEfiPartitionInfoProtocolGuid,
> &Private->PartitionInfo,
> - Private->EspGuid,
> + TypeGuid,
> NULL,
> NULL
> );
> } else {
> Status = gBS->InstallMultipleProtocolInterfaces (
> &Private->Handle,
> &gEfiDevicePathProtocolGuid,
> Private->DevicePath,
> &gEfiBlockIoProtocolGuid,
> &Private->BlockIo,
> &gEfiPartitionInfoProtocolGuid,
> &Private->PartitionInfo,
> - Private->EspGuid,
> + TypeGuid,
> NULL,
> NULL
> );
> }
>
> if (!EFI_ERROR (Status)) {
> //
> // Open the Parent Handle for the child
> //
> Status = gBS->OpenProtocol (
> diff --git a/MdeModulePkg/Universal/Disk/PartitionDxe/Partition.h
> b/MdeModulePkg/Universal/Disk/PartitionDxe/Partition.h
> index c763c67..f1a0520 100644
> --- a/MdeModulePkg/Universal/Disk/PartitionDxe/Partition.h
> +++ b/MdeModulePkg/Universal/Disk/PartitionDxe/Partition.h
> @@ -1,16 +1,17 @@
> /** @file
> Partition driver that produces logical BlockIo devices from a physical
> BlockIo device. The logical BlockIo devices are based on the format
> of the raw block devices media. Currently "El Torito CD-ROM", UDF, Legacy
> MBR, and GPT partition schemes are supported.
>
> +Copyright (c) 2018 Qualcomm Datacenter Technologies, Inc.
> Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
> This program and the accompanying materials
> are licensed and made available under the terms and conditions of the BSD
> License
> which accompanies this distribution. The full text of the license may be
> found at
> http://opensource.org/licenses/bsd-license.php
>
> THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS"
> BASIS,
> WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER
> EXPRESS OR IMPLIED.
>
> **/
> @@ -58,21 +59,21 @@ typedef struct {
>
> EFI_DISK_IO_PROTOCOL *DiskIo;
> EFI_DISK_IO2_PROTOCOL *DiskIo2;
> EFI_BLOCK_IO_PROTOCOL *ParentBlockIo;
> EFI_BLOCK_IO2_PROTOCOL *ParentBlockIo2;
> UINT64 Start;
> UINT64 End;
> UINT32 BlockSize;
> BOOLEAN InStop;
>
> - EFI_GUID *EspGuid;
> + EFI_GUID TypeGuid;
>
> } PARTITION_PRIVATE_DATA;
>
> typedef struct {
> EFI_DISK_IO2_TOKEN DiskIo2Token;
> EFI_BLOCK_IO2_TOKEN *BlockIo2Token;
> } PARTITION_ACCESS_TASK;
>
> #define PARTITION_DEVICE_FROM_BLOCK_IO_THIS(a) CR (a,
> PARTITION_PRIVATE_DATA, BlockIo,
> PARTITION_PRIVATE_DATA_SIGNATURE)
> #define PARTITION_DEVICE_FROM_BLOCK_IO2_THIS(a) CR (a,
> PARTITION_PRIVATE_DATA, BlockIo2,
> PARTITION_PRIVATE_DATA_SIGNATURE)
> @@ -320,39 +321,41 @@ PartitionComponentNameGetControllerName (
> @param[in] ParentDiskIo Parent DiskIo interface.
> @param[in] ParentDiskIo2 Parent DiskIo2 interface.
> @param[in] ParentBlockIo Parent BlockIo interface.
> @param[in] ParentBlockIo2 Parent BlockIo2 interface.
> @param[in] ParentDevicePath Parent Device Path.
> @param[in] DevicePathNode Child Device Path node.
> @param[in] PartitionInfo Child Partition Information interface.
> @param[in] Start Start Block.
> @param[in] End End Block.
> @param[in] BlockSize Child block size.
> + @param[in] TypeGuid Parition Type Guid.
>
> @retval EFI_SUCCESS A child handle was added.
> @retval other A child handle was not added.
>
> **/
> EFI_STATUS
> PartitionInstallChildHandle (
> IN EFI_DRIVER_BINDING_PROTOCOL *This,
> IN EFI_HANDLE ParentHandle,
> IN EFI_DISK_IO_PROTOCOL *ParentDiskIo,
> IN EFI_DISK_IO2_PROTOCOL *ParentDiskIo2,
> IN EFI_BLOCK_IO_PROTOCOL *ParentBlockIo,
> IN EFI_BLOCK_IO2_PROTOCOL *ParentBlockIo2,
> IN EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath,
> IN EFI_DEVICE_PATH_PROTOCOL *DevicePathNode,
> IN EFI_PARTITION_INFO_PROTOCOL *PartitionInfo,
> IN EFI_LBA Start,
> IN EFI_LBA End,
> - IN UINT32 BlockSize
> + IN UINT32 BlockSize,
> + IN EFI_GUID *TypeGuid
> );
>
> /**
> Test to see if there is any child on ControllerHandle.
>
> @param[in] ControllerHandle Handle of device to test.
>
> @retval TRUE There are children on the ControllerHandle.
> @retval FALSE No child is on the ControllerHandle.
>
> diff --git a/MdeModulePkg/Universal/Disk/PartitionDxe/Udf.c
> b/MdeModulePkg/Universal/Disk/PartitionDxe/Udf.c
> index 5aac564..83bd174 100644
> --- a/MdeModulePkg/Universal/Disk/PartitionDxe/Udf.c
> +++ b/MdeModulePkg/Universal/Disk/PartitionDxe/Udf.c
> @@ -1,13 +1,14 @@
> /** @file
> Scan for an UDF file system on a formatted media.
>
> + Copyright (c) 2018 Qualcomm Datacenter Technologies, Inc.
> Copyright (C) 2014-2017 Paulo Alcantara <pcacjr@zytor.com>
>
> This program and the accompanying materials are licensed and made
> available
> under the terms and conditions of the BSD License which accompanies this
> distribution. The full text of the license may be found at
> http://opensource.org/licenses/bsd-license.php
>
> THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS"
> BASIS, WITHOUT
> WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR
> IMPLIED.
> **/
> @@ -746,18 +747,19 @@ PartitionInstallUdfChildHandles (
> Handle,
> DiskIo,
> DiskIo2,
> BlockIo,
> BlockIo2,
> DevicePath,
> (EFI_DEVICE_PATH_PROTOCOL *)&gUdfDevicePath,
> &PartitionInfo,
> StartingLBA,
> EndingLBA,
> - Media->BlockSize
> + Media->BlockSize,
> + NULL
> );
> if (EFI_ERROR (Status)) {
> return (ChildCreated ? EFI_SUCCESS : Status);
> }
>
> return EFI_SUCCESS;
> }
> --
> 1.9.1
>
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel
next prev parent reply other threads:[~2018-03-29 2:27 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-26 8:57 [PATCH] MdeModulePkg/PartitionDxe: Add partition type guid to installed handle jbrasen.qdt
2018-03-27 3:02 ` Wu, Hao A
2018-03-29 2:34 ` Ni, Ruiyu [this message]
2018-03-29 5:09 ` Wu, Hao A
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=734D49CCEBEEF84792F5B80ED585239D5BC14DB1@SHSMSX104.ccr.corp.intel.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox