Hi Liming,

On Tue, Dec 18, 2018 at 10:07 AM Gao, Liming <[email protected]> wrote:
>
> Jagadeesh:
>   StandaloneMmServicesTableLib library class header file is added into 
> MdePkg. Its library implementation is in MdePkg and StandaloneMmPkg. The one 
> in MdePkg produces the dummy implementation, and the one in StandaloneMmPkg 
> produces the real implementation. I don't see the reason to separate this 
> library class.
>

In this patchset series, the Variable service/Fault tolerant/Nor Flash
driver are refactored to be usable as MM_STANDALONE driver. These
drivers uses the following libraries from “StandaloneMmPkg”.

- 
MmServicesTableLib|StandaloneMmPkg/Library/StandaloneMmServicesTableLib/StandaloneMmServicesTableLib.inf
- 
MemoryAllocationLib|StandaloneMmPkg/Library/StandaloneMmMemoryAllocationLib/StandaloneMmMemoryAllocationLib.inf

Variable MM_STANDALONE driver is located at
- MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.c
- MdeModulePkg/Universal/Variable/RuntimeDxe/VariableStandaloneMm.inf

FaultTolerant MM_STANDALONE is driver located at
- MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmm.c
- 
MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteStandaloneMm.inf

These drivers look for “gMmst” which is defined in
“MmServicesTableLib”. Ideally,
“StandaloneMmPkg/Include/Library/StandaloneMmServicesTableLib.h”
should have defined “gMmst” as an “extern EFI_MM_SYSTEM_TABLE
*gMmst;”.
In which case, we would have to add
“StandaloneMmPkg/StandaloneMmPkg.dec” in other drivers listed below.

- MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf
- MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf

This will make “edk2 packages” to be depended on
"StandaloneMmPkg/StandaloneMmPkg.dec".

To avoid this, “StandaloneMmPkg/Include/Library/StandaloneMmServicesTableLib.h”
is moved to “MdePkg/Include/Library/StandaloneMmServicesTableLib.h”.
But, the implementation of “MmServicesTableLib” comes from
“StandaloneMmPkg/Library/StandaloneMmServicesTableLib/StandaloneMmServicesTableLib.inf”.

Thanks
Jagadeesh

> Thanks
> Liming
> >-----Original Message-----
> >From: Jagadeesh Ujja [mailto:[email protected]]
> >Sent: Monday, December 17, 2018 7:47 PM
> >To: Gao, Liming <[email protected]>
> >Cc: [email protected]; Zhang, Chao B <[email protected]>;
> >[email protected]; [email protected]
> >Subject: Re: [edk2] [PATCH 00/13] Extend secure variable service to be usable
> >from Standalone MM
> >
> >Hi Liming,
> >
> >On Mon, Dec 17, 2018 at 7:15 AM Gao, Liming <[email protected]> wrote:
> >>
> >> One question here. Why separate StandaloneMmServicesTableLib to two
> >library classes? Current MdePkg\Include\Library\SmmServicesTableLib.h is
> >one library class.
> >MdePkg\Library\SmmServicesTableLib\SmmServicesTableLib.inf is its
> >implementation. StandaloneMmServicesTableLib should be same to it.
> >> StandaloneMmServicesTableLib is the library class.
> >MdePkg\Library\StandaloneMmRuntimeDxe is its library instance.
> >>
> >Thanks for your review.
> >
> >The implementation of the "StandaloneMmServicesTableLib" library class
> >is at "StandaloneMmPkg/Library/StandaloneMmServicesTableLib/". As this
> >patchset reuses some of the DXE_DRIVER drivers as MM_STANDALONE
> >drivers, the "StandaloneMmServicesTableLib" library class definition
> >was placed within MdePkg. The reason for splitting the library class
> >definition (in MdePkg) and its implementation (in StandaloneMmPkg) was
> >due to your comment that "edk2 packages" should not have any reference
> >to StandaloneMmPkg.dec.
> >
> >The "StandaloneMmRuntimeDxe" library now just has an implementation of
> >InMm(). And so, this can be kept as a separate library with no
> >dependency on StandaloneMmPkg. So this was the reason to split
> >"StandaloneMmRuntimeDxe" and "StandaloneMmServicesTableLib" into two
> >separate libraries.
> >
> >thanks
> >Jagadeesh
> >> Thanks
> >> Liming
> >> >-----Original Message-----
> >> >From: Jagadeesh Ujja [mailto:[email protected]]
> >> >Sent: Friday, December 14, 2018 8:13 PM
> >> >To: [email protected]; Gao, Liming <[email protected]>; Zhang,
> >> >Chao B <[email protected]>; [email protected];
> >> >[email protected]
> >> >Subject: [PATCH 00/13] Extend secure variable service to be usable from
> >> >Standalone MM
> >> >
> >> >Changes since RFC v4:
> >> >- Addressed all the comments from Liming Gao
> >> >  - Added an additional PCD 'PcdStandaloneMmCodeEnabled' to indicate
> >> >    presence of StandaloneMM support.
> >> >  - MdePkg.dec file updated to include StandaloneMmServiceTableLib and
> >> >    StandaloneMmRuntimeDxe library.
> >> >  - Platform specific changes will be posted in a seperate patchset.
> >> >  - AsmLfence wrapper function is supported for AArch64 platforms.
> >> >  - All the patches in this series can be pulled from
> >> >    https://github.com/jagadeeshujja/edk2 (branch:
> >> >topics/aarch64_secure_vars)
> >> >
> >> >Changes since RFC v3:
> >> >- Addressed all the comments from Liming Gao
> >> >  - Added a AArch64 implementation of AsmLfence which is a wrapper for
> >> >    MemoryFence. The changes in variable service driver in v3 of this
> >> >    patchset that used MemoryFence instead of AsmLfence have been
> >> >removed.
> >> >  - Added StandaloneMmServicesTableLib.h and
> >StandaloneMmRuntimeDxe
> >> >    library into MdePkg.
> >> >  - Renamed PcdStandaloneMmEnable as
> >PcdStandaloneMmVariableEnabled
> >> >and
> >> >    added to in to MdePkg.
> >> >  - Now with above changes, edk2 packages don't need to depend on
> >> >    StandaloneMmPkg/StandaloneMmPkg.dec
> >> >- Addressed comments from Ting Ye
> >> >  - Removed the hacks in the v3 version.
> >> >  - Will relook into the “TimerWrapp.c” file and add a appropriate
> >> >    implementation of this for MM Standalone mode code.
> >> >
> >> >Changes since RFC v2:
> >> >- Added 'Contributed-under' tag, removed Change-ID tag and
> >> >  maintained a single signed-off-by for the all the patches.
> >> >
> >> >Changes since RFC v1:
> >> >- Addressed all the comments from Liming Gao
> >> >  - Removed the use of #ifdef/#else/#endif and used a Pcd instead to
> >> >    select between MM and non-MM paths.
> >> >  - Removed all dependencies on edk2-platforms.
> >> >  - Dropped the use of mMmst and used gSmst instead.
> >> >  - Added a dummy implementation UefiRuntimeServiceTableLib for
> >> >    MM_STANDALONE usage
> >> >- Replaced all uses of AsmLfence with MemoryFence from variable
> >> >  service code.
> >> >- Add a new StandaloneMmRuntimeDxe library to for use by non-MM
> >code.
> >> >
> >> >This patch series extends the existing secure variable service support for
> >> >use with Standalone MM. This is applicable to paltforms that use
> >Standalone
> >> >Management Mode to protect access to non-volatile memory (NOR flash
> >in
> >> >case
> >> >of these patches) used to store the secure EFI variables.
> >> >
> >> >The first patch pulls in additional libraries from the staging branch of
> >> >StandaloneMmPkg into the edk2's StandaloneMmPkg. The existing secure
> >> >variable
> >> >service implementation supports only the traditional MM mode and so the
> >> >rest
> >> >of the patches extends the existing secure variable service support to be
> >> >useable with Standalone MM mode as well.
> >> >
> >> >Jagadeesh Ujja (13):
> >> >  StandaloneMmPkg: Pull in additonal libraries from staging branch
> >> >  MdePkg: Add a PCD that indicates presence of Standalone MM mode
> >> >  MdeModulePkg: Add a PCD to indicate Standalone MM supports secure
> >> >    variable
> >> >  MdePkg/Include: add StandaloneMmServicesTableLib header file
> >> >  MdePkg/Library/BaseLib/AArch64: Add AsmLfence function
> >> >  MdePkg/Library: Add StandaloneMmRuntimeDxe library
> >> >  MdeModulePkg/FaultTolerantWriteDxe: allow reusability as a MM driver
> >> >  MdeModulePkg/Variable/RuntimeDxe: adapt for usability with MM
> >> >    Standalone
> >> >  MdeModulePkg/Variable/RuntimeDxe: adapt as a MM Standalone driver
> >> >  MdeModulePkg/VarCheckLib: allow MM_STANDALONE drivers to use this
> >> >    library
> >> >  ArmPlatformPkg/NorFlashDxe: allow reusability as a MM driver
> >> >  SecurityPkg/AuthVariableLib: allow MM_STANDALONE drivers to use this
> >> >    library
> >> >  CryptoPkg/BaseCryptLib: allow MM_STANDALONE drivers to use this
> >> >    library
> >> >
> >> > 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 ++
> >> > CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf                          
> >> >                    |
> >7
> >> >+-
> >> > CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.inf
> >|   4
> >> >+
> >> > CryptoPkg/Library/BaseCryptLib/SysCall/TimerWrapper.c
> >|
> >> >15 +-
> >> > MdeModulePkg/Library/VarCheckLib/VarCheckLib.inf
> >|
> >> >5 +-
> >> > MdeModulePkg/MdeModulePkg.dec                                            
> >> >                    |   5 +
> >> >
> >MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf
> >> >|   1 +
> >> >
> >MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmm.c
> >> >| 203 +++--
> >> >
> >> >MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteStan
> >dal
> >> >oneMm.inf             | 101 +++
> >> > MdeModulePkg/Universal/FaultTolerantWriteDxe/UpdateWorkingBlock.c
> >> >|  27 +-
> >> > MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c
> >> >|  37 +-
> >> > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf
> >> >|   1 +
> >> > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.c
> >> >| 201 ++++-
> >> >
> >MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.c
> >> >|  31 +-
> >> >
> >> >MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDx
> >e.i
> >> >nf                        |   3 +
> >> >
> >MdeModulePkg/Universal/Variable/RuntimeDxe/VariableStandaloneMm.inf
> >> >| 132 ++++
> >> > MdePkg/Include/Library/BaseLib.h                                         
> >> >                    |  33 +-
> >> > MdePkg/Include/Library/StandaloneMmRuntimeDxe.h
> >> >|  39 +
> >> > MdePkg/Include/Library/StandaloneMmServicesTableLib.h
> >> >|  25 +
> >> > MdePkg/Library/BaseLib/AArch64/AsmLfence.S                               
> >> >                    |
> >42
> >> >+
> >> > MdePkg/Library/BaseLib/AArch64/AsmLfence.asm
> >|
> >> >41 +
> >> > MdePkg/Library/BaseLib/BaseLib.inf                                       
> >> >                    |   2 +
> >> >
> >MdePkg/Library/StandaloneMmRuntimeDxe/StandaloneMmRuntimeDxe.c
> >> >|  36 +
> >> >
> >MdePkg/Library/StandaloneMmRuntimeDxe/StandaloneMmRuntimeDxe.inf
> >> >|  36 +
> >> > MdePkg/MdePkg.dec                                                        
> >> >                    |  12 +
> >> > SecurityPkg/Library/AuthVariableLib/AuthVariableLib.inf
> >|
> >> >5 +-
> >> >
> >> >StandaloneMmPkg/Library/StandaloneMmCoreHobLib/StandaloneMmCor
> >eH
> >> >obLib.inf                   |   2 +-
> >> >
> >> >StandaloneMmPkg/Library/StandaloneMmHobLib/AArch64/StandaloneM
> >mC
> >> >oreHobLibInternal.c         |  64 ++
> >> >
> >StandaloneMmPkg/Library/StandaloneMmHobLib/StandaloneMmHobLib.c
> >> >| 655 ++++++++++++++++
> >> >
> >StandaloneMmPkg/Library/StandaloneMmHobLib/StandaloneMmHobLib.inf
> >> >|  48 ++
> >> >
> >> >StandaloneMmPkg/Library/StandaloneMmMemoryAllocationLib/Standalo
> >ne
> >> >MmMemoryAllocationLib.c   | 824 ++++++++++++++++++++
> >> >
> >> >StandaloneMmPkg/Library/StandaloneMmMemoryAllocationLib/Standalo
> >ne
> >> >MmMemoryAllocationLib.inf |  45 ++
> >> >
> >> >StandaloneMmPkg/Library/StandaloneMmServicesTableLib/StandaloneM
> >mS
> >> >ervicesTableLib.c         |  64 ++
> >> >
> >> >StandaloneMmPkg/Library/StandaloneMmServicesTableLib/StandaloneM
> >mS
> >> >ervicesTableLib.inf       |  36 +
> >> > 39 files changed, 2929 insertions(+), 244 deletions(-)
> >> > create mode 100644
> >> >ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashStandaloneMm.inf
> >> > create mode 100644
> >> >MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteStan
> >dal
> >> >oneMm.inf
> >> > create mode 100644
> >> >MdeModulePkg/Universal/Variable/RuntimeDxe/VariableStandaloneMm.i
> >nf
> >> > create mode 100644
> >MdePkg/Include/Library/StandaloneMmRuntimeDxe.h
> >> > create mode 100644
> >> >MdePkg/Include/Library/StandaloneMmServicesTableLib.h
> >> > create mode 100644 MdePkg/Library/BaseLib/AArch64/AsmLfence.S
> >> > create mode 100644 MdePkg/Library/BaseLib/AArch64/AsmLfence.asm
> >> > create mode 100644
> >> >MdePkg/Library/StandaloneMmRuntimeDxe/StandaloneMmRuntimeDxe.
> >c
> >> > create mode 100644
> >> >MdePkg/Library/StandaloneMmRuntimeDxe/StandaloneMmRuntimeDxe.i
> >nf
> >> > create mode 100644
> >> >StandaloneMmPkg/Library/StandaloneMmHobLib/AArch64/StandaloneM
> >mC
> >> >oreHobLibInternal.c
> >> > create mode 100644
> >> >StandaloneMmPkg/Library/StandaloneMmHobLib/StandaloneMmHobLib.c
> >> > create mode 100644
> >> >StandaloneMmPkg/Library/StandaloneMmHobLib/StandaloneMmHobLib.i
> >nf
> >> > create mode 100644
> >> >StandaloneMmPkg/Library/StandaloneMmMemoryAllocationLib/Standalo
> >ne
> >> >MmMemoryAllocationLib.c
> >> > create mode 100644
> >> >StandaloneMmPkg/Library/StandaloneMmMemoryAllocationLib/Standalo
> >ne
> >> >MmMemoryAllocationLib.inf
> >> > create mode 100644
> >> >StandaloneMmPkg/Library/StandaloneMmServicesTableLib/StandaloneM
> >mS
> >> >ervicesTableLib.c
> >> > create mode 100644
> >> >StandaloneMmPkg/Library/StandaloneMmServicesTableLib/StandaloneM
> >mS
> >> >ervicesTableLib.inf
> >> >
> >> >--
> >> >2.7.4
> >>
> >> _______________________________________________
> >> edk2-devel mailing list
> >> [email protected]
> >> https://lists.01.org/mailman/listinfo/edk2-devel
> _______________________________________________
> edk2-devel mailing list
> [email protected]
> https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to