From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: None (no SPF record) identity=mailfrom; client-ip=195.159.176.226; helo=blaine.gmane.org; envelope-from=gcbed-edk2@m.gmane.org; receiver=edk2-devel@lists.01.org Received: from blaine.gmane.org (unknown [195.159.176.226]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 4CBF0211B5A46 for ; Wed, 9 Jan 2019 22:31:43 -0800 (PST) Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1ghTqL-0003N3-2K for edk2-devel@lists.01.org; Thu, 10 Jan 2019 07:29:29 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: edk2-devel@lists.01.org From: "Zeng, Star" Date: Thu, 10 Jan 2019 14:31:01 +0800 Message-ID: <01255ca1-25c6-e2d5-53de-12add5753b8e@intel.com> References: <20190103182825.32231-1-ard.biesheuvel@linaro.org> <20190103182825.32231-6-ard.biesheuvel@linaro.org> Mime-Version: 1.0 X-Complaints-To: usenet@blaine.gmane.org User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.3.3 Cc: "Wu, Hao A" , "Gao, Liming" , "Kinney, Michael D" , Laszlo Ersek In-Reply-To: Subject: Re: [PATCH 4/6] MdeModulePkg/FaultTolerantWriteDxe: implement standalone MM version X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 Jan 2019 06:31:43 -0000 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-Language: en-US On 2019/1/10 9:41, Wang, Jian J wrote: > Ard, > > > Regards, > Jian > > >> -----Original Message----- >> From: Ard Biesheuvel [mailto:ard.biesheuvel@linaro.org] >> Sent: Friday, January 04, 2019 2:28 AM >> To: edk2-devel@lists.01.org >> Cc: Ard Biesheuvel ; Laszlo Ersek >> ; Leif Lindholm ; Kinney, >> Michael D ; Gao, Liming ; >> Wang, Jian J ; Wu, Hao A ; >> Jagadeesh Ujja ; Achin Gupta >> ; Thomas Panakamattam Abraham >> ; Sami Mujawar >> Subject: [PATCH 4/6] MdeModulePkg/FaultTolerantWriteDxe: implement >> standalone MM version >> >> Implement a new version of the fault tolerant write driver that can >> be used in the context of a standalone MM implementation. >> >> Contributed-under: TianoCore Contribution Agreement 1.1 >> Signed-off-by: Ard Biesheuvel >> --- >> >> MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteStandalon >> eMm.c | 70 +++++++++++++++ >> >> MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteStandalon >> eMm.inf | 90 ++++++++++++++++++++ >> 2 files changed, 160 insertions(+) >> >> diff --git >> a/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteStandal >> oneMm.c >> b/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteStandal >> oneMm.c >> new file mode 100644 >> index 000000000000..b6fbf6c64f8a >> --- /dev/null >> +++ >> b/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteStandal >> oneMm.c >> @@ -0,0 +1,70 @@ >> +/** @file >> + >> + Parts of the SMM/MM implementation that are specific to standalone MM >> + >> +Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.
>> +Copyright (c) 2018, Linaro, 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 >> +#include >> +#include "FaultTolerantWrite.h" >> +#include "FaultTolerantWriteSmmCommon.h" >> + >> +BOOLEAN >> +FtwSmmIsBufferOutsideSmmValid ( >> + IN EFI_PHYSICAL_ADDRESS Buffer, >> + IN UINT64 Length >> + ) >> +{ >> + return TRUE; >> +} >> + >> +/** >> + Internal implementation of CRC32. Depending on the execution context >> + (standalone SMM or DXE vs standalone MM), this function is implemented >> + via a call to the CalculateCrc32 () boot service, or via a library >> + call. >> + >> + If Buffer is NULL, then ASSERT(). >> + If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT(). >> + >> + @param[in] Buffer A pointer to the buffer on which the 32-bit CRC is to be >> computed. >> + @param[in] Length The number of bytes in the buffer Data. >> + >> + @retval Crc32 The 32-bit CRC was computed for the data buffer. >> + >> +**/ >> +UINT32 >> +FtwCalculateCrc32 ( >> + IN VOID *Buffer, >> + IN UINTN Length >> + ) >> +{ >> + return CalculateCrc32 (Buffer, Length); >> +} >> + >> +VOID >> +FtwNotifySmmReady ( >> + VOID >> + ) >> +{ >> +} >> + >> +EFI_STATUS >> +EFIAPI >> +StandaloneMmFaultTolerantWriteInitialize ( >> + IN EFI_HANDLE ImageHandle, >> + IN EFI_MM_SYSTEM_TABLE *MmSystemTable >> + ) >> +{ >> + return MmFaultTolerantWriteInitialize (); >> +} >> diff --git >> a/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteStandal >> oneMm.inf >> b/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteStandal >> oneMm.inf >> new file mode 100644 >> index 000000000000..99bd62ad5ceb >> --- /dev/null >> +++ >> b/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteStandal >> oneMm.inf >> @@ -0,0 +1,90 @@ >> + ## @file >> +# Fault Tolerant Write Smm Driver. >> +# >> +# This driver installs SMM Fault Tolerant Write (FTW) protocol, which provides >> fault >> +# tolerant write capability in SMM environment for block devices. Its >> implementation >> +# depends on the full functionality SMM FVB protocol that support read, >> write/erase >> +# flash access. >> +# >> +# Copyright (c) 2010 - 2018, Intel Corporation. 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 = FaultTolerantWriteStandaloneMm >> + FILE_GUID = 3aade4ec-63cc-4a48-a928-5a374dd463eb >> + MODULE_TYPE = MM_STANDALONE >> + VERSION_STRING = 1.0 >> + PI_SPECIFICATION_VERSION = 0x00010032 >> + ENTRY_POINT = StandaloneMmFaultTolerantWriteInitialize >> + >> +# >> +# The following information is for reference only and not required by the build >> tools. >> +# >> +# VALID_ARCHITECTURES = AARCH64 >> +# >> + >> +[Sources] >> + FtwMisc.c >> + UpdateWorkingBlock.c >> + FaultTolerantWrite.c >> + FaultTolerantWriteStandaloneMm.c >> + FaultTolerantWriteSmm.c >> + FaultTolerantWrite.h >> + FaultTolerantWriteSmmCommon.h >> + >> +[Packages] >> + MdePkg/MdePkg.dec >> + MdeModulePkg/MdeModulePkg.dec >> + StandaloneMmPkg/StandaloneMmPkg.dec >> + >> +[LibraryClasses] >> + BaseLib >> + BaseMemoryLib >> + DebugLib >> + MemoryAllocationLib >> + MmServicesTableLib >> + PcdLib >> + ReportStatusCodeLib >> + StandaloneMmDriverEntryPoint >> + >> +[Guids] >> + # >> + # Signature in EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER >> + # >> + ## CONSUMES ## GUID >> + ## PRODUCES ## GUID >> + gEdkiiWorkingBlockSignatureGuid >> + >> +[Protocols] >> + gEfiSmmSwapAddressRangeProtocolGuid | >> gEfiMdeModulePkgTokenSpaceGuid.PcdFullFtwServiceEnable ## >> SOMETIMES_CONSUMES >> + ## NOTIFY >> + ## CONSUMES >> + gEfiSmmFirmwareVolumeBlockProtocolGuid >> + ## PRODUCES >> + ## UNDEFINED # SmiHandlerRegister >> + gEfiSmmFaultTolerantWriteProtocolGuid > > CONSUMES/PRODUCES is normally put in trailing comment. Jian, If there is only one line usage comment for the GUID, it is normally put in trailing comment. But there are two lines usage comments for this GUID, the style is correct. Thanks, Star > > >> + gEfiMmEndOfDxeProtocolGuid ## CONSUMES >> + >> +[FeaturePcd] >> + gEfiMdeModulePkgTokenSpaceGuid.PcdFullFtwServiceEnable ## >> CONSUMES >> + >> +[Pcd] >> + gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase ## >> SOMETIMES_CONSUMES >> + gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase64 >> ## CONSUMES >> + gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize ## >> CONSUMES >> + gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase ## >> SOMETIMES_CONSUMES >> + gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase64 ## >> CONSUMES >> + gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize ## >> CONSUMES >> + >> +[Depex] >> + TRUE >> + >> -- >> 2.17.1