Adapt the VariableSmmRuntimeDxe driver to communicate with a VariableSmm driver that is implemented as a MM Standalone driver.
Change-Id: I328be6df99eaf1a815d6352fe86f0679792b3468 Signed-off-by: Jagadeesh Ujja <[email protected]> Signed-off-by: Thomas Abraham <[email protected]> --- .../RuntimeDxe/VariableRuntimeDxe.inf | 2 ++ .../RuntimeDxe/VariableSmmRuntimeDxe.c | 31 ++++++++++++------- .../RuntimeDxe/VariableSmmRuntimeDxe.inf | 4 +++ 3 files changed, 26 insertions(+), 11 deletions(-) diff --git a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf index 868981ccaf..f414b461d8 100644 --- a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf +++ b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf @@ -51,6 +51,7 @@ [Packages] MdePkg/MdePkg.dec MdeModulePkg/MdeModulePkg.dec + StandaloneMmPkg/StandaloneMmPkg.dec [LibraryClasses] MemoryAllocationLib @@ -135,6 +136,7 @@ [FeaturePcd] gEfiMdeModulePkgTokenSpaceGuid.PcdVariableCollectStatistics ## CONSUMES # statistic the information of variable. gEfiMdePkgTokenSpaceGuid.PcdUefiVariableDefaultLangDeprecate ## CONSUMES # Auto update PlatformLang/Lang + gStandaloneMmPkgTokenSpaceGuid.PcdStandaloneMmEnable [Depex] TRUE diff --git a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.c b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.c index 85d655dc19..da4af5f30e 100644 --- a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.c +++ b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.c @@ -14,6 +14,8 @@ InitCommunicateBuffer() is really function to check the variable data size. Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved.<BR> +Copyright (c) 2018, ARM Limited. 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 @@ -179,7 +181,11 @@ SendCommunicateBuffer ( SMM_VARIABLE_COMMUNICATE_HEADER *SmmVariableFunctionHeader; CommSize = DataSize + SMM_COMMUNICATE_HEADER_SIZE + SMM_VARIABLE_COMMUNICATE_HEADER_SIZE; - Status = mSmmCommunication->Communicate (mSmmCommunication, mVariableBufferPhysical, &CommSize); + if (PcdGetBool (PcdStandaloneMmEnable)) { + Status = mSmmCommunication->Communicate (mSmmCommunication, mVariableBuffer, &CommSize); + } else { + Status = mSmmCommunication->Communicate (mSmmCommunication, mVariableBufferPhysical, &CommSize); + } ASSERT_EFI_ERROR (Status); SmmCommunicateHeader = (EFI_SMM_COMMUNICATE_HEADER *) mVariableBuffer; @@ -991,9 +997,11 @@ SmmVariableReady ( { EFI_STATUS Status; - Status = gBS->LocateProtocol (&gEfiSmmVariableProtocolGuid, NULL, (VOID **)&mSmmVariable); - if (EFI_ERROR (Status)) { - return; + if (!PcdGetBool (PcdStandaloneMmEnable)) { + Status = gBS->LocateProtocol (&gEfiSmmVariableProtocolGuid, NULL, (VOID **)&mSmmVariable); + if (EFI_ERROR (Status)) { + return; + } } Status = gBS->LocateProtocol (&gEfiSmmCommunicationProtocolGuid, NULL, (VOID **) &mSmmCommunication); @@ -1069,13 +1077,14 @@ SmmVariableWriteReady ( { EFI_STATUS Status; VOID *ProtocolOps; - - // - // Check whether the protocol is installed or not. - // - Status = gBS->LocateProtocol (&gSmmVariableWriteGuid, NULL, (VOID **) &ProtocolOps); - if (EFI_ERROR (Status)) { - return; + if (!PcdGetBool (PcdStandaloneMmEnable)) { + // + // Check whether the protocol is installed or not. + // + Status = gBS->LocateProtocol (&gSmmVariableWriteGuid, NULL, (VOID **) &ProtocolOps); + if (EFI_ERROR (Status)) { + return; + } } // diff --git a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf index bd73f7ac29..b409fa2f58 100644 --- a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf +++ b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf @@ -48,6 +48,7 @@ [Packages] MdePkg/MdePkg.dec MdeModulePkg/MdeModulePkg.dec + StandaloneMmPkg/StandaloneMmPkg.dec [LibraryClasses] MemoryAllocationLib @@ -87,6 +88,9 @@ ## SOMETIMES_CONSUMES ## Variable:L"dbt" gEfiImageSecurityDatabaseGuid +[FeaturePcd] + gStandaloneMmPkgTokenSpaceGuid.PcdStandaloneMmEnable + [Depex] gEfiSmmCommunicationProtocolGuid -- 2.19.1 _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

