(add StandaloneMmPkg maintainers) On Mon, 4 Mar 2019 at 09:54, Jagadeesh Ujja <jagadeesh.u...@arm.com> wrote: > > In a system implementing the variable store in MM, there are no variable > arch protocol and variable write arch protocol installed into the > DXE_SMM protocol database. On such systems, it is not required to > locate these protocols by the DXE runtime variable drivers because > it can be assumed that these protocols are already installed in the > MM context. But then such an implementation will deviate from the > existing traditional MM based variable driver implementation. > > So in order to maintain consistency with the traditional MM variable > driver implementation, allow platforms to install these protocols into > the DXE protocol database but these protocol will not be consumed > by non-secure variable service runtime driver. > > The Platform which uses StandaloneMM based secure variable storage > have to include this library > > Example > In edk2-platforms/Platform/ARM/SgiPkg/SgiPlatform.dsc > > ArmPkg/Drivers/MmCommunicationDxe/MmCommunication.inf { > <LibraryClasses> > > NULL|StandaloneMmPkg/Library/VariableMmDependency/VariableMmDependency.inf > } > > Contributed-under: TianoCore Contribution Agreement 1.1 > Signed-off-by: Jagadeesh Ujja <jagadeesh.u...@arm.com>
Reviewed-by: Ard Biesheuvel <ard.biesheu...@linaro.org> > --- > Changes since v2: > - Addressed the comments from Ard Biesheuvel and Zeng Star > > Changes since v1: > - This is a next version of patch > “MdeModulePkg/VariableSmmRuntimeDxe: Refactor locating Variable Arch > Protocol”. > [https://lists.01.org/pipermail/edk2-devel/2019-February/036885.html] > - Addressed the comments from Ard Biesheuvel and Zeng Star > - Can this library be placed in MdePkg rather then the StandaloneMmPkg? > > StandaloneMmPkg/Library/VariableMmDependency/VariableMmDependency.c | 54 > ++++++++++++++++++++ > StandaloneMmPkg/Library/VariableMmDependency/VariableMmDependency.inf | 46 > +++++++++++++++++ > 2 files changed, 100 insertions(+) > > diff --git > a/StandaloneMmPkg/Library/VariableMmDependency/VariableMmDependency.c > b/StandaloneMmPkg/Library/VariableMmDependency/VariableMmDependency.c > new file mode 100644 > index 0000000..7e0f31b > --- /dev/null > +++ b/StandaloneMmPkg/Library/VariableMmDependency/VariableMmDependency.c > @@ -0,0 +1,54 @@ > +/** @file > + Runtime DXE part corresponding to StanaloneMM variable module. > + > +This module installs variable arch protocol and variable write arch protocol > +to StandaloneMM runtime variable service. > + > +Copyright (c) 2019, ARM Ltd. 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. > + > +**/ > + > +#include <Library/DebugLib.h> > +#include <Library/UefiBootServicesTableLib.h> > + > +/** > + The constructor function installs variable arch protocol and variable > + write arch protocol to StandaloneMM runtime variable service > + > + @param ImageHandle The firmware allocated handle for the EFI image. > + @param SystemTable A pointer to the Management mode System Table. > + > + @retval EFI_SUCCESS The constructor always returns EFI_SUCCESS. > + > +**/ > +EFI_STATUS > +EFIAPI > +VariableMmDependencyLibConstructor ( > + IN EFI_HANDLE ImageHandle, > + IN EFI_SYSTEM_TABLE *SystemTable > + ) > +{ > + EFI_STATUS Status; > + EFI_HANDLE Handle; > + > + Handle = NULL; > + Status = gBS->InstallMultipleProtocolInterfaces ( > + &Handle, > + &gEfiSmmVariableProtocolGuid, > + NULL, > + &gSmmVariableWriteGuid, > + NULL, > + NULL > + ); > + ASSERT_EFI_ERROR (Status); > + return EFI_SUCCESS; > +} > + > diff --git > a/StandaloneMmPkg/Library/VariableMmDependency/VariableMmDependency.inf > b/StandaloneMmPkg/Library/VariableMmDependency/VariableMmDependency.inf > new file mode 100644 > index 0000000..e71c44d > --- /dev/null > +++ b/StandaloneMmPkg/Library/VariableMmDependency/VariableMmDependency.inf > @@ -0,0 +1,46 @@ > +## @file > +# Runtime DXE part corresponding to StanaloneMM variable module. > +# > +# This module installs variable arch protocol and variable write arch > protocol > +# to StandaloneMM runtime variable service. > +# > +# Copyright (c) 2019, ARM Ltd. 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 = 0x0001001A > + BASE_NAME = VariableMmDependency > + FILE_GUID = 64BC4129-778E-4867-BA07-13999A4DEC3F > + MODULE_TYPE = DXE_DRIVER > + LIBRARY_CLASS = NULL > + CONSTRUCTOR = VariableMmDependencyLibConstructor > + > +# > +# The following information is for reference only and not required by the > build tools. > +# > +# VALID_ARCHITECTURES = AARCH64 > +# > +# > + > +[Sources] > + VariableMmDependency.c > + > +[Packages] > + MdePkg/MdePkg.dec > + MdeModulePkg/MdeModulePkg.dec > + > +[Protocols] > + gEfiSmmVariableProtocolGuid ## PRODUCES > + > +[Guids] > + gSmmVariableWriteGuid ## PRODUCES ## GUID # > Install protocol > + > +[Depex] > + TRUE > -- > 2.7.4 > _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel