public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: Ard Biesheuvel <ard.biesheuvel@linaro.org>
To: Jagadeesh Ujja <jagadeesh.ujja@arm.com>
Cc: "edk2-devel@lists.01.org" <edk2-devel@lists.01.org>,
	"Gao, Liming" <liming.gao@intel.com>,
	"Zhang, Chao B" <chao.b.zhang@intel.com>,
	Leif Lindholm <leif.lindholm@linaro.org>
Subject: Re: [PATCH 11/13] ArmPlatformPkg/NorFlashDxe: allow reusability as a MM driver
Date: Fri, 21 Dec 2018 12:07:46 +0100	[thread overview]
Message-ID: <CAKv+Gu--mOs8FiL5uv=9uoUzcO70vOwJYCAh_ivhhQ0wQzqRCQ@mail.gmail.com> (raw)
In-Reply-To: <1544789607-11316-12-git-send-email-jagadeesh.ujja@arm.com>

On Fri, 14 Dec 2018 at 13:14, Jagadeesh Ujja <jagadeesh.ujja@arm.com> wrote:
>
> Adapt the NorFlashDxe driver to be used as a MM_STANDALONE driver to
> allow access to NOR flash for code executing in MM_STANDALONE mode.
> This allows storing of EFI variables on NOR flash which is accessible
> only via the MM STANDALONE mode software.
>
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Jagadeesh Ujja <jagadeesh.ujja@arm.com>
> ---
>  ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashBlockIoDxe.c     |   2 +-
>  ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe.c            | 210 ++++++++++++++++----
>  ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe.h            |   5 +-
>  ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe.inf          |   2 +
>  ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashFvbDxe.c         |  96 ++++-----
>  ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashStandaloneMm.inf |  76 +++++++
>  6 files changed, 302 insertions(+), 89 deletions(-)
>

Instead of these huge if() blocks, could you please factor out the
functionality for each, and put two different versions in
NorFlashDxeBase.c and NorFlashDxeSmm.c, and include the appropriate
one in the .inf files.

> diff --git a/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashBlockIoDxe.c b/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashBlockIoDxe.c
> index 279b77c..4c002c7 100644
> --- a/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashBlockIoDxe.c
> +++ b/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashBlockIoDxe.c
> @@ -1,6 +1,6 @@
>  /** @file  NorFlashBlockIoDxe.c
>
> -  Copyright (c) 2011-2013, ARM Ltd. All rights reserved.<BR>
> +  Copyright (c) 2011-2018, ARM Ltd. All rights reserved.<BR>
>
>    This program and the accompanying materials
>    are licensed and made available under the terms and conditions of the BSD License
> diff --git a/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe.c b/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe.c
> index af40a4c..9c56010 100644
> --- a/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe.c
> +++ b/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe.c
> @@ -1,6 +1,6 @@
>  /** @file  NorFlashDxe.c
>
> -  Copyright (c) 2011 - 2014, ARM Ltd. All rights reserved.<BR>
> +  Copyright (c) 2011 - 2018, ARM Ltd. All rights reserved.<BR>
>
>    This program and the accompanying materials
>    are licensed and made available under the terms and conditions of the BSD License
> @@ -138,29 +138,102 @@ NorFlashCreateInstance (
>
>    if (SupportFvb) {
>      NorFlashFvbInitialize (Instance);
> +    if (!InMm ()) {
> +        Status = gBS->InstallMultipleProtocolInterfaces (
> +                        &Instance->Handle,
> +                        &gEfiDevicePathProtocolGuid, &Instance->DevicePath,
> +                        &gEfiBlockIoProtocolGuid,  &Instance->BlockIoProtocol,
> +                        &gEfiFirmwareVolumeBlockProtocolGuid, &Instance->FvbProtocol,
> +                        NULL
> +                        );
> +        if (EFI_ERROR(Status)) {
> +          FreePool (Instance);
> +          return Status;
> +        }
> +    } else {
> +      //Install DevicePath Protocol
> +      Status = gMmst->MmInstallProtocolInterface (
> +                        &Instance->Handle,
> +                        &gEfiDevicePathProtocolGuid,
> +                        EFI_NATIVE_INTERFACE,
> +                        &Instance->DevicePath
> +                        );
> +      if (EFI_ERROR(Status)) {
> +        FreePool (Instance);
> +        return Status;
> +      }
> +      //Install BlockIo Protocol
> +      Status = gMmst->MmInstallProtocolInterface (
> +                        &Instance->Handle,
> +                        &gEfiBlockIoProtocolGuid,
> +                        EFI_NATIVE_INTERFACE,
> +                        &Instance->BlockIoProtocol
> +                        );
> +      if (EFI_ERROR(Status)) {
> +        FreePool (Instance);
> +        return Status;
> +      }
>
> -    Status = gBS->InstallMultipleProtocolInterfaces (
> -                  &Instance->Handle,
> -                  &gEfiDevicePathProtocolGuid, &Instance->DevicePath,
> -                  &gEfiBlockIoProtocolGuid,  &Instance->BlockIoProtocol,
> -                  &gEfiFirmwareVolumeBlockProtocolGuid, &Instance->FvbProtocol,
> -                  NULL
> -                  );
> -    if (EFI_ERROR(Status)) {
> -      FreePool (Instance);
> -      return Status;
> +      //Install FirmwareVolumeBlock Protocol
> +      Status = gMmst->MmInstallProtocolInterface (
> +                        &Instance->Handle,
> +                        &gEfiSmmFirmwareVolumeBlockProtocolGuid,
> +                        EFI_NATIVE_INTERFACE,
> +                        &Instance->FvbProtocol
> +                        );
> +      if (EFI_ERROR(Status)) {
> +        FreePool (Instance);
> +        return Status;
> +      }
>      }
>    } else {
> -    Status = gBS->InstallMultipleProtocolInterfaces (
> -                    &Instance->Handle,
> -                    &gEfiDevicePathProtocolGuid, &Instance->DevicePath,
> -                    &gEfiBlockIoProtocolGuid,  &Instance->BlockIoProtocol,
> -                    &gEfiDiskIoProtocolGuid, &Instance->DiskIoProtocol,
> -                    NULL
> -                    );
> -    if (EFI_ERROR(Status)) {
> -      FreePool (Instance);
> -      return Status;
> +    if (!InMm ()) {
> +      Status = gBS->InstallMultipleProtocolInterfaces (
> +                      &Instance->Handle,
> +                      &gEfiDevicePathProtocolGuid, &Instance->DevicePath,
> +                      &gEfiBlockIoProtocolGuid,  &Instance->BlockIoProtocol,
> +                      &gEfiDiskIoProtocolGuid, &Instance->DiskIoProtocol,
> +                      NULL
> +                      );
> +      if (EFI_ERROR(Status)) {
> +        FreePool (Instance);
> +        return Status;
> +      }
> +    } else {
> +      //Install DevicePath Protocol
> +      Status = gMmst->MmInstallProtocolInterface (
> +                        &Instance->Handle,
> +                        &gEfiDevicePathProtocolGuid,
> +                        EFI_NATIVE_INTERFACE,
> +                        &Instance->DevicePath
> +                        );
> +      if (EFI_ERROR(Status)) {
> +        FreePool (Instance);
> +        return Status;
> +      }
> +      //Install BlockIo Protocol
> +      Status = gMmst->MmInstallProtocolInterface (
> +                        &Instance->Handle,
> +                        &gEfiBlockIoProtocolGuid,
> +                        EFI_NATIVE_INTERFACE,
> +                        &Instance->BlockIoProtocol
> +                        );
> +      if (EFI_ERROR(Status)) {
> +        FreePool (Instance);
> +        return Status;
> +      }
> +
> +      //Install DiskIO Protocol
> +      Status = gMmst->MmInstallProtocolInterface (
> +                        &Instance->Handle,
> +                        &gEfiDiskIoProtocolGuid,
> +                        EFI_NATIVE_INTERFACE,
> +                        &Instance->DiskIoProtocol
> +                        );
> +      if (EFI_ERROR(Status)) {
> +        FreePool (Instance);
> +        return Status;
> +      }
>      }
>    }
>
> @@ -342,13 +415,15 @@ NorFlashUnlockAndEraseSingleBlock (
>    UINTN           Index;
>    EFI_TPL         OriginalTPL;
>
> -  if (!EfiAtRuntime ()) {
> -    // Raise TPL to TPL_HIGH to stop anyone from interrupting us.
> -    OriginalTPL = gBS->RaiseTPL (TPL_HIGH_LEVEL);
> -  } else {
> -    // This initialization is only to prevent the compiler to complain about the
> -    // use of uninitialized variables
> -    OriginalTPL = TPL_HIGH_LEVEL;
> +  if (!InMm ()) {
> +    if (!EfiAtRuntime ()) {
> +      // Raise TPL to TPL_HIGH to stop anyone from interrupting us.
> +      OriginalTPL = gBS->RaiseTPL (TPL_HIGH_LEVEL);
> +    } else {
> +      // This initialization is only to prevent the compiler to complain about the
> +      // use of uninitialized variables
> +      OriginalTPL = TPL_HIGH_LEVEL;
> +    }
>    }
>
>    Index = 0;
> @@ -367,9 +442,11 @@ NorFlashUnlockAndEraseSingleBlock (
>      DEBUG((EFI_D_ERROR,"EraseSingleBlock(BlockAddress=0x%08x: Block Locked Error (try to erase %d times)\n", BlockAddress,Index));
>    }
>
> -  if (!EfiAtRuntime ()) {
> -    // Interruptions can resume.
> -    gBS->RestoreTPL (OriginalTPL);
> +  if (!InMm ()) {
> +    if (!EfiAtRuntime ()) {
> +      // Interruptions can resume.
> +      gBS->RestoreTPL (OriginalTPL);
> +    }
>    }
>
>    return Status;
> @@ -595,13 +672,15 @@ NorFlashWriteFullBlock (
>    // Start writing from the first address at the start of the block
>    WordAddress = BlockAddress;
>
> -  if (!EfiAtRuntime ()) {
> -    // Raise TPL to TPL_HIGH to stop anyone from interrupting us.
> -    OriginalTPL = gBS->RaiseTPL (TPL_HIGH_LEVEL);
> -  } else {
> -    // This initialization is only to prevent the compiler to complain about the
> -    // use of uninitialized variables
> -    OriginalTPL = TPL_HIGH_LEVEL;
> +  if (!InMm ()) {
> +    if (!EfiAtRuntime ()) {
> +      // Raise TPL to TPL_HIGH to stop anyone from interrupting us.
> +      OriginalTPL = gBS->RaiseTPL (TPL_HIGH_LEVEL);
> +    } else {
> +      // This initialization is only to prevent the compiler to complain about the
> +      // use of uninitialized variables
> +      OriginalTPL = TPL_HIGH_LEVEL;
> +    }
>    }
>
>    Status = NorFlashUnlockAndEraseSingleBlock (Instance, BlockAddress);
> @@ -661,9 +740,11 @@ NorFlashWriteFullBlock (
>    }
>
>  EXIT:
> -  if (!EfiAtRuntime ()) {
> -    // Interruptions can resume.
> -    gBS->RestoreTPL (OriginalTPL);
> +  if (!InMm ()) {
> +    if (!EfiAtRuntime ()) {
> +      // Interruptions can resume.
> +      gBS->RestoreTPL (OriginalTPL);
> +    }
>    }
>
>    if (EFI_ERROR(Status)) {
> @@ -1334,6 +1415,53 @@ NorFlashInitialise (
>                    &mNorFlashVirtualAddrChangeEvent
>                    );
>    ASSERT_EFI_ERROR (Status);
> +  return Status;
> +}
> +
> +EFI_STATUS
> +EFIAPI
> +StandaloneMmNorFlashInitialise (
> +  IN EFI_HANDLE         ImageHandle,
> +  IN EFI_MM_SYSTEM_TABLE   *SystemTable
> +  )
> +{
> +  EFI_STATUS              Status;
> +  UINT32                  Index;
> +  NOR_FLASH_DESCRIPTION*  NorFlashDevices;
> +  BOOLEAN                 ContainVariableStorage;
> +
> +  Status = NorFlashPlatformInitialization ();
> +  if (EFI_ERROR(Status)) {
> +    DEBUG((EFI_D_ERROR,"NorFlashInitialise: Fail to initialize Nor Flash devices\n"));
> +    return Status;
> +  }
> +
> +  Status = NorFlashPlatformGetDevices (&NorFlashDevices, &mNorFlashDeviceCount);
> +  if (EFI_ERROR(Status)) {
> +    DEBUG((EFI_D_ERROR,"NorFlashInitialise: Fail to get Nor Flash devices\n"));
> +    return Status;
> +  }
> +
> +  mNorFlashInstances = AllocateRuntimePool (sizeof(NOR_FLASH_INSTANCE*) * mNorFlashDeviceCount);
>
> +  for (Index = 0; Index < mNorFlashDeviceCount; Index++) {
> +    // Check if this NOR Flash device contain the variable storage region
> +    ContainVariableStorage =
> +        (NorFlashDevices[Index].RegionBaseAddress <= PcdGet32 (PcdFlashNvStorageVariableBase)) &&
> +        (PcdGet32 (PcdFlashNvStorageVariableBase) + PcdGet32 (PcdFlashNvStorageVariableSize) <= NorFlashDevices[Index].RegionBaseAddress + NorFlashDevices[Index].Size);
> +
> +    Status = NorFlashCreateInstance (
> +      NorFlashDevices[Index].DeviceBaseAddress,
> +      NorFlashDevices[Index].RegionBaseAddress,
> +      NorFlashDevices[Index].Size,
> +      Index,
> +      NorFlashDevices[Index].BlockSize,
> +      ContainVariableStorage,
> +      &mNorFlashInstances[Index]
> +    );
> +    if (EFI_ERROR(Status)) {
> +      DEBUG((EFI_D_ERROR,"NorFlashInitialise: Fail to create instance for NorFlash[%d]\n",Index));
> +    }
> +  }
>    return Status;
>  }
> diff --git a/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe.h b/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe.h
> index c0563f6..90929d3 100644
> --- a/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe.h
> +++ b/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe.h
> @@ -1,6 +1,6 @@
>  /** @file  NorFlashDxe.h
>
> -  Copyright (c) 2011 - 2014, ARM Ltd. All rights reserved.<BR>
> +  Copyright (c) 2011 - 2018, ARM Ltd. All rights reserved.<BR>
>
>    This program and the accompanying materials
>    are licensed and made available under the terms and conditions of the BSD License
> @@ -19,6 +19,7 @@
>  #include <Base.h>
>  #include <PiDxe.h>
>
> +#include <PiMm.h>
>  #include <Guid/EventGroup.h>
>
>  #include <Protocol/BlockIo.h>
> @@ -30,6 +31,8 @@
>  #include <Library/NorFlashPlatformLib.h>
>  #include <Library/UefiLib.h>
>  #include <Library/UefiRuntimeLib.h>
> +#include <Library/StandaloneMmServicesTableLib.h>
> +#include <Library/StandaloneMmRuntimeDxe.h>
>
>  #define NOR_FLASH_ERASE_RETRY                     10
>
> diff --git a/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe.inf b/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe.inf
> index a59a21a..cbe740e 100644
> --- a/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe.inf
> +++ b/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe.inf
> @@ -44,6 +44,7 @@
>    UefiBootServicesTableLib
>    UefiRuntimeLib
>    DxeServicesTableLib
> +  StandaloneMmRuntimeDxe
>
>  [Guids]
>    gEfiSystemNvDataFvGuid
> @@ -57,6 +58,7 @@
>    gEfiDevicePathProtocolGuid
>    gEfiFirmwareVolumeBlockProtocolGuid
>    gEfiDiskIoProtocolGuid
> +  gEfiSmmFirmwareVolumeBlockProtocolGuid
>
>  [Pcd.common]
>    gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase
> diff --git a/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashFvbDxe.c b/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashFvbDxe.c
> index e62ffbb..e4d7100 100644
> --- a/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashFvbDxe.c
> +++ b/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashFvbDxe.c
> @@ -1,6 +1,6 @@
>  /*++ @file  NorFlashFvbDxe.c
>
> - Copyright (c) 2011 - 2014, ARM Ltd. All rights reserved.<BR>
> + Copyright (c) 2011 - 2018, ARM Ltd. All rights reserved.<BR>
>
>   This program and the accompanying materials
>   are licensed and made available under the terms and conditions of the BSD License
> @@ -720,27 +720,29 @@ NorFlashFvbInitialize (
>    DEBUG((DEBUG_BLKIO,"NorFlashFvbInitialize\n"));
>    ASSERT((Instance != NULL));
>
> -  //
> -  // Declare the Non-Volatile storage as EFI_MEMORY_RUNTIME
> -  //
> -
> -  // Note: all the NOR Flash region needs to be reserved into the UEFI Runtime memory;
> -  //       even if we only use the small block region at the top of the NOR Flash.
> -  //       The reason is when the NOR Flash memory is set into program mode, the command
> -  //       is written as the base of the flash region (ie: Instance->DeviceBaseAddress)
> -  RuntimeMmioRegionSize = (Instance->RegionBaseAddress - Instance->DeviceBaseAddress) + Instance->Size;
> -
> -  Status = gDS->AddMemorySpace (
> -      EfiGcdMemoryTypeMemoryMappedIo,
> -      Instance->DeviceBaseAddress, RuntimeMmioRegionSize,
> -      EFI_MEMORY_UC | EFI_MEMORY_RUNTIME
> -      );
> -  ASSERT_EFI_ERROR (Status);
> -
> -  Status = gDS->SetMemorySpaceAttributes (
> -      Instance->DeviceBaseAddress, RuntimeMmioRegionSize,
> -      EFI_MEMORY_UC | EFI_MEMORY_RUNTIME);
> -  ASSERT_EFI_ERROR (Status);
> +  if (!InMm ()) {
> +    //
> +    // Declare the Non-Volatile storage as EFI_MEMORY_RUNTIME
> +    //
> +
> +    // Note: all the NOR Flash region needs to be reserved into the UEFI Runtime memory;
> +    //       even if we only use the small block region at the top of the NOR Flash.
> +    //       The reason is when the NOR Flash memory is set into program mode, the command
> +    //       is written as the base of the flash region (ie: Instance->DeviceBaseAddress)
> +    RuntimeMmioRegionSize = (Instance->RegionBaseAddress - Instance->DeviceBaseAddress) + Instance->Size;
> +
> +    Status = gDS->AddMemorySpace (
> +        EfiGcdMemoryTypeMemoryMappedIo,
> +        Instance->DeviceBaseAddress, RuntimeMmioRegionSize,
> +        EFI_MEMORY_UC | EFI_MEMORY_RUNTIME
> +        );
> +    ASSERT_EFI_ERROR (Status);
> +
> +    Status = gDS->SetMemorySpaceAttributes (
> +        Instance->DeviceBaseAddress, RuntimeMmioRegionSize,
> +        EFI_MEMORY_UC | EFI_MEMORY_RUNTIME);
> +    ASSERT_EFI_ERROR (Status);
> +  }
>
>    mFlashNvStorageVariableBase = FixedPcdGet32 (PcdFlashNvStorageVariableBase);
>
> @@ -777,30 +779,32 @@ NorFlashFvbInitialize (
>      }
>    }
>
> -  //
> -  // The driver implementing the variable read service can now be dispatched;
> -  // the varstore headers are in place.
> -  //
> -  Status = gBS->InstallProtocolInterface (
> -                  &gImageHandle,
> -                  &gEdkiiNvVarStoreFormattedGuid,
> -                  EFI_NATIVE_INTERFACE,
> -                  NULL
> -                  );
> -  ASSERT_EFI_ERROR (Status);
> -
> -  //
> -  // Register for the virtual address change event
> -  //
> -  Status = gBS->CreateEventEx (
> -                  EVT_NOTIFY_SIGNAL,
> -                  TPL_NOTIFY,
> -                  FvbVirtualNotifyEvent,
> -                  NULL,
> -                  &gEfiEventVirtualAddressChangeGuid,
> -                  &mFvbVirtualAddrChangeEvent
> -                  );
> -  ASSERT_EFI_ERROR (Status);
> +  if (!InMm ()) {
> +    //
> +    // The driver implementing the variable read service can now be dispatched;
> +    // the varstore headers are in place.
> +    //
> +    Status = gBS->InstallProtocolInterface (
> +                    &gImageHandle,
> +                    &gEdkiiNvVarStoreFormattedGuid,
> +                    EFI_NATIVE_INTERFACE,
> +                    NULL
> +                    );
> +    ASSERT_EFI_ERROR (Status);
> +
> +    //
> +    // Register for the virtual address change event
> +    //
> +    Status = gBS->CreateEventEx (
> +                    EVT_NOTIFY_SIGNAL,
> +                    TPL_NOTIFY,
> +                    FvbVirtualNotifyEvent,
> +                    NULL,
> +                    &gEfiEventVirtualAddressChangeGuid,
> +                    &mFvbVirtualAddrChangeEvent
> +                    );
> +    ASSERT_EFI_ERROR (Status);
> +  }
>
>    return Status;
>  }
> diff --git a/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashStandaloneMm.inf b/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashStandaloneMm.inf
> new file mode 100644
> index 0000000..a6d0581
> --- /dev/null
> +++ b/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashStandaloneMm.inf
> @@ -0,0 +1,76 @@
> +#/** @file
> +#
> +#  Component description file for NorFlashDxe module
> +#
> +#  Copyright (c) 2018, ARM Limited. All rights reserved.
> +#
> +#  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.
> +#
> +#**/
> +
> +[Defines]
> +  INF_VERSION                    = 0x00010005
> +  BASE_NAME                      = StandaloneMmNorFlash
> +  FILE_GUID                      = 166F677B-DAC9-4AE4-AD34-2FF2504B0637
> +  MODULE_TYPE                    = MM_STANDALONE
> +  VERSION_STRING                 = 1.0
> +  PI_SPECIFICATION_VERSION       = 0x00010032
> +  ENTRY_POINT                    = StandaloneMmNorFlashInitialise
> +
> +[Sources.common]
> +  NorFlashDxe.c
> +  NorFlashFvbDxe.c
> +  NorFlashBlockIoDxe.c
> +
> +[Packages]
> +  MdePkg/MdePkg.dec
> +  MdeModulePkg/MdeModulePkg.dec
> +  ArmPlatformPkg/ArmPlatformPkg.dec
> +  EmbeddedPkg/EmbeddedPkg.dec
> +  ArmPkg/ArmPkg.dec
> +  StandaloneMmPkg/StandaloneMmPkg.dec
> +
> +[LibraryClasses]
> +  StandaloneMmDriverEntryPoint
> +  BaseMemoryLib
> +  ArmSvcLib
> +  ArmLib
> +  IoLib
> +  BaseLib
> +  DebugLib
> +  HobLib
> +  MemoryAllocationLib
> +  NorFlashPlatformLib
> +  MmServicesTableLib
> +
> +[Guids]
> +  gEfiSystemNvDataFvGuid
> +  gEfiVariableGuid
> +  gEfiAuthenticatedVariableGuid
> +  gEfiEventVirtualAddressChangeGuid
> +  gEdkiiNvVarStoreFormattedGuid     ## PRODUCES ## PROTOCOL
> +
> +[Protocols]
> +  gEfiBlockIoProtocolGuid
> +  gEfiDevicePathProtocolGuid
> +  gEfiSmmFirmwareVolumeBlockProtocolGuid
> +  gEfiDiskIoProtocolGuid
> +
> +[Pcd.common]
> +  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase
> +  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize
> +  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase
> +  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize
> +  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase
> +  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize
> +
> +  gArmPlatformTokenSpaceGuid.PcdNorFlashCheckBlockLocked
> +
> +[Depex]
> +  TRUE
> --
> 2.7.4
>


  reply	other threads:[~2018-12-21 11:07 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-12-14 12:13 [PATCH 00/13] Extend secure variable service to be usable from Standalone MM Jagadeesh Ujja
2018-12-14 12:13 ` [PATCH 01/13] StandaloneMmPkg: Pull in additonal libraries from staging branch Jagadeesh Ujja
2018-12-21  8:58   ` Ard Biesheuvel
2018-12-14 12:13 ` [PATCH 02/13] MdePkg: Add a PCD that indicates presence of Standalone MM mode Jagadeesh Ujja
2018-12-21  9:13   ` Ard Biesheuvel
2018-12-14 12:13 ` [PATCH 03/13] MdeModulePkg: Add a PCD to indicate Standalone MM supports secure variable Jagadeesh Ujja
2018-12-21  9:13   ` Ard Biesheuvel
2018-12-14 12:13 ` [PATCH 04/13] MdePkg/Include: add StandaloneMmServicesTableLib header file Jagadeesh Ujja
2018-12-14 12:13 ` [PATCH 05/13] MdePkg/Library/BaseLib/AArch64: Add AsmLfence function Jagadeesh Ujja
2018-12-14 13:53   ` Ard Biesheuvel
2018-12-17  2:04     ` Gao, Liming
2018-12-17  3:29       ` Yao, Jiewen
2018-12-17  7:45         ` Ard Biesheuvel
2018-12-17  8:10           ` Ard Biesheuvel
2018-12-17  8:24             ` Yao, Jiewen
2018-12-17  8:30               ` Yao, Jiewen
2018-12-17  8:35                 ` Ard Biesheuvel
2018-12-17  8:44                   ` Yao, Jiewen
2018-12-17  9:27                     ` Ard Biesheuvel
2018-12-18  2:08                       ` Yao, Jiewen
2018-12-18  2:12                         ` Gao, Liming
2018-12-18  2:19                           ` Yao, Jiewen
2018-12-20  9:00                         ` Jagadeesh Ujja
2018-12-20  9:10                           ` Ard Biesheuvel
2018-12-14 12:13 ` [PATCH 06/13] MdePkg/Library: Add StandaloneMmRuntimeDxe library Jagadeesh Ujja
2018-12-14 12:13 ` [PATCH 07/13] MdeModulePkg/FaultTolerantWriteDxe: allow reusability as a MM driver Jagadeesh Ujja
2018-12-14 12:13 ` [PATCH 08/13] MdeModulePkg/Variable/RuntimeDxe: adapt for usability with MM Standalone Jagadeesh Ujja
2018-12-14 12:13 ` [PATCH 09/13] MdeModulePkg/Variable/RuntimeDxe: adapt as a MM Standalone driver Jagadeesh Ujja
2018-12-14 12:13 ` [PATCH 10/13] MdeModulePkg/VarCheckLib: allow MM_STANDALONE drivers to use this library Jagadeesh Ujja
2019-01-02 13:05   ` Ard Biesheuvel
2019-01-02 13:23     ` Gao, Liming
2019-01-02 14:23       ` Ard Biesheuvel
2019-01-02 16:54         ` Ard Biesheuvel
2019-01-02 13:27     ` Jagadeesh Ujja
2018-12-14 12:13 ` [PATCH 11/13] ArmPlatformPkg/NorFlashDxe: allow reusability as a MM driver Jagadeesh Ujja
2018-12-21 11:07   ` Ard Biesheuvel [this message]
2018-12-14 12:13 ` [PATCH 12/13] SecurityPkg/AuthVariableLib: allow MM_STANDALONE drivers to use this library Jagadeesh Ujja
2019-01-02 13:05   ` Ard Biesheuvel
2018-12-14 12:13 ` [PATCH 13/13] CryptoPkg/BaseCryptLib: " Jagadeesh Ujja
2018-12-21 10:13   ` Ard Biesheuvel
2018-12-17  1:45 ` [PATCH 00/13] Extend secure variable service to be usable from Standalone MM Gao, Liming
2018-12-17 11:46   ` Jagadeesh Ujja
2018-12-18  4:37     ` Gao, Liming
2018-12-18 11:19       ` Jagadeesh Ujja
2018-12-20 14:23         ` Gao, Liming
2019-01-02 17:15           ` Ard Biesheuvel
2019-01-03  7:43             ` Jagadeesh Ujja
2019-01-03  9:52               ` Ard Biesheuvel
2019-01-03 10:35                 ` Ard Biesheuvel
2018-12-21  2:57 ` Wang, Jian J
2019-01-02 13:19   ` Jagadeesh Ujja
2019-01-03  2:37     ` Wang, Jian J

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='CAKv+Gu--mOs8FiL5uv=9uoUzcO70vOwJYCAh_ivhhQ0wQzqRCQ@mail.gmail.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