public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Wu, Hao A" <hao.a.wu@intel.com>
To: "Ni, Ruiyu" <ruiyu.ni@intel.com>,
	"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 05:09:39 +0000	[thread overview]
Message-ID: <B80AF82E9BFB8E4FBD8C89DA810C6A0931D6CFDE@SHSMSX104.ccr.corp.intel.com> (raw)
In-Reply-To: <734D49CCEBEEF84792F5B80ED585239D5BC14DB1@SHSMSX104.ccr.corp.intel.com>

Pushed as 709c9fd56b2a3303e679858a4927e382f255d8e4.

Best Regards,
Hao Wu


> -----Original Message-----
> From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of Ni,
> Ruiyu
> Sent: Thursday, March 29, 2018 10:34 AM
> To: jbrasen.qdt@qualcommdatacenter.com; edk2-devel@lists.01.org
> Subject: Re: [edk2] [PATCH] MdeModulePkg/PartitionDxe: Add partition type
> guid to installed handle
> 
> 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
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel


      reply	other threads:[~2018-03-29  5:03 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
2018-03-29  5:09   ` Wu, Hao A [this message]

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=B80AF82E9BFB8E4FBD8C89DA810C6A0931D6CFDE@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