From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=134.134.136.20; helo=mga02.intel.com; envelope-from=star.zeng@intel.com; receiver=edk2-devel@lists.01.org Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 7193A21962301 for ; Wed, 9 Jan 2019 23:30:37 -0800 (PST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 09 Jan 2019 23:30:30 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,460,1539673200"; d="scan'208";a="124905240" Received: from shzintpr02.sh.intel.com (HELO [10.7.209.21]) ([10.239.4.160]) by orsmga002.jf.intel.com with ESMTP; 09 Jan 2019 23:30:28 -0800 To: Ard Biesheuvel , edk2-devel@lists.01.org Cc: Hao Wu , Michael D Kinney , Laszlo Ersek , Liming Gao , star.zeng@intel.com References: <20190103182825.32231-1-ard.biesheuvel@linaro.org> <20190103182825.32231-6-ard.biesheuvel@linaro.org> <4a353237-1191-a831-1b6e-e981b7c59a7d@intel.com> From: "Zeng, Star" Message-ID: <539a4ec0-eb09-588b-2a24-4b1f450f587b@intel.com> Date: Thu, 10 Jan 2019 15:29:54 +0800 User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.4.0 MIME-Version: 1.0 In-Reply-To: <4a353237-1191-a831-1b6e-e981b7c59a7d@intel.com> 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 07:30:37 -0000 Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit Hi Ard, Another minor feedback. On 2019/1/10 14:47, Zeng, Star wrote: > Hi Ard, > > Some minor feedback added inline. > > On 2019/1/4 2:28, Ard Biesheuvel wrote: >> 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/FaultTolerantWriteStandaloneMm.c >> | 70 +++++++++++++++ >> >> MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteStandaloneMm.inf >> | 90 ++++++++++++++++++++ >>   2 files changed, 160 insertions(+) Please add it into MdeModulePkg.dsc for package build verification. Thanks, Star >> >> diff --git >> a/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteStandaloneMm.c >> b/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteStandaloneMm.c >> >> new file mode 100644 >> index 000000000000..b6fbf6c64f8a >> --- /dev/null >> +++ >> b/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteStandaloneMm.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; >> +} > > Please add function comment header for it, otherwise some coding style > tool may report error. > >> + >> +/** >> +  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); >> +} > > Please add function comment header for it, otherwise some coding style > tool may report error. > >> + >> +VOID >> +FtwNotifySmmReady ( >> +  VOID >> +  ) >> +{ >> +} > > Please add function comment header for it, otherwise some coding style > tool may report error. > > Thanks, > Star > >> + >> +EFI_STATUS >> +EFIAPI >> +StandaloneMmFaultTolerantWriteInitialize ( >> +  IN EFI_HANDLE            ImageHandle, >> +  IN EFI_MM_SYSTEM_TABLE   *MmSystemTable >> +  ) >> +{ >> +  return MmFaultTolerantWriteInitialize (); >> +} >> diff --git >> a/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteStandaloneMm.inf >> b/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteStandaloneMm.inf >> >> new file mode 100644 >> index 000000000000..99bd62ad5ceb >> --- /dev/null >> +++ >> b/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteStandaloneMm.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 >> +  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 >> + >>