On 28 October 2015 at 10:33, Star Zeng <[email protected]> wrote:
> This patch does below things.
> 1. Smbios3Table used as SmbiosTable wrongly after SmbiosTable got from 
> configuration table.
> 2. Correct the return comments of entrypoint function.
> 3. Add parameters' comments for MeasureSmbiosTable().
> 4. Remove the tailing space from SmbiosMeasurementDxe.c.
> 5. Correct the Protocols and Guids usage comments in SmbiosMeasurementDxe.inf.
> 6. Add (VOID **)  typecast in LocateProtocol call for GCC build failure.
> 7. Use EFI_D_VERBOSE instead of EFI_D_INFO in InternalDumpData() and 
> InternalDumpHex().
> 8. Use correct VendorGuid and VendorTable to measure.
>

If you need a numbered list to summarize the changes you are making in
a patch, that is usually a strong hint that you should split it into
several patches. You have a bug fixes (1,8), comment fixes (2,3,5), a
functional change (7), a build fix (6) and a whitespace fix (4), so
you should split this into 5 or 6 patches at least.

-- 
Ard.



> Cc:Jiewen Yao <[email protected]>
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Star Zeng <[email protected]>
> ---
>  .../SmbiosMeasurementDxe/SmbiosMeasurementDxe.c    | 75 
> +++++++++++++---------
>  .../SmbiosMeasurementDxe/SmbiosMeasurementDxe.inf  |  6 +-
>  2 files changed, 46 insertions(+), 35 deletions(-)
>
> diff --git 
> a/MdeModulePkg/Universal/SmbiosMeasurementDxe/SmbiosMeasurementDxe.c 
> b/MdeModulePkg/Universal/SmbiosMeasurementDxe/SmbiosMeasurementDxe.c
> index 2152827..c10e9f7 100644
> --- a/MdeModulePkg/Universal/SmbiosMeasurementDxe/SmbiosMeasurementDxe.c
> +++ b/MdeModulePkg/Universal/SmbiosMeasurementDxe/SmbiosMeasurementDxe.c
> @@ -1,14 +1,14 @@
>  /** @file
>    This driver measures SMBIOS table to TPM.
> -
> +
>  Copyright (c) 2015, Intel Corporation. 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
> -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.
> +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.
>
>  **/
>
> @@ -125,7 +125,7 @@ InternalDumpData (
>  {
>    UINTN  Index;
>    for (Index = 0; Index < Size; Index++) {
> -    DEBUG ((EFI_D_INFO, "%02x", (UINTN)Data[Index]));
> +    DEBUG ((EFI_D_VERBOSE, "%02x", (UINTN)Data[Index]));
>    }
>  }
>
> @@ -152,15 +152,15 @@ InternalDumpHex (
>    Count = Size / COLUME_SIZE;
>    Left  = Size % COLUME_SIZE;
>    for (Index = 0; Index < Count; Index++) {
> -    DEBUG ((EFI_D_INFO, "%04x: ", Index * COLUME_SIZE));
> +    DEBUG ((EFI_D_VERBOSE, "%04x: ", Index * COLUME_SIZE));
>      InternalDumpData (Data + Index * COLUME_SIZE, COLUME_SIZE);
> -    DEBUG ((EFI_D_INFO, "\n"));
> +    DEBUG ((EFI_D_VERBOSE, "\n"));
>    }
>
>    if (Left != 0) {
> -    DEBUG ((EFI_D_INFO, "%04x: ", Index * COLUME_SIZE));
> +    DEBUG ((EFI_D_VERBOSE, "%04x: ", Index * COLUME_SIZE));
>      InternalDumpData (Data + Index * COLUME_SIZE, Left);
> -    DEBUG ((EFI_D_INFO, "\n"));
> +    DEBUG ((EFI_D_VERBOSE, "\n"));
>    }
>  }
>
> @@ -217,7 +217,7 @@ GetSmbiosStringById (
>    // look for the two consecutive zeros, check the string limit by the way.
>    //
>    String = NULL;
> -  while (*CharInStr != 0 || *(CharInStr+1) != 0) {
> +  while (*CharInStr != 0 || *(CharInStr+1) != 0) {
>      if (*CharInStr == 0) {
>        Size += 1;
>        CharInStr++;
> @@ -271,7 +271,7 @@ FilterSmbiosEntry (
>    UINTN                 StringLen;
>
>    DEBUG ((EFI_D_INFO, "Smbios Table (Type - %d):\n", ((SMBIOS_STRUCTURE 
> *)TableEntry)->Type));
> -  InternalDumpHex (TableEntry, TableEntrySize);
> +  DEBUG_CODE (InternalDumpHex (TableEntry, TableEntrySize););
>
>    FilterStruct = GetFilterStructByType (((SMBIOS_STRUCTURE 
> *)TableEntry)->Type);
>    if (FilterStruct != NULL) {
> @@ -297,7 +297,7 @@ FilterSmbiosEntry (
>    }
>
>    DEBUG ((EFI_D_INFO, "Filter Smbios Table (Type - %d):\n", 
> ((SMBIOS_STRUCTURE *)TableEntry)->Type));
> -  InternalDumpHex (TableEntry, TableEntrySize);
> +  DEBUG_CODE (InternalDumpHex (TableEntry, TableEntrySize););
>  }
>
>  /**
> @@ -306,7 +306,7 @@ FilterSmbiosEntry (
>
>    @param Head                   Pointer to the beginning of SMBIOS structure.
>    @param NumberOfStrings        The returned number of optional strings that 
> follow the formatted structure.
> -
> +
>    @return Size                  The returned size.
>  **/
>  UINTN
> @@ -327,7 +327,7 @@ GetSmbiosStructureSize (
>    //
>    // look for the two consecutive zeros, check the string limit by the way.
>    //
> -  while (*CharInStr != 0 || *(CharInStr+1) != 0) {
> +  while (*CharInStr != 0 || *(CharInStr+1) != 0) {
>      if (*CharInStr == 0) {
>        Size += 1;
>        CharInStr++;
> @@ -432,7 +432,11 @@ FilterSmbiosTable (
>  }
>
>  /**
> -  Measure SMBIOS with EV_EFI_HANDOFF_TABLES to PCR[1]
> +  Measure SMBIOS with EV_EFI_HANDOFF_TABLES to PCR[1].
> +
> +  @param[in] Event      Event whose notification function is being invoked.
> +  @param[in] Context    Pointer to the notification function's context.
> +
>  **/
>  VOID
>  EFIAPI
> @@ -478,6 +482,8 @@ MeasureSmbiosTable (
>        DEBUG ((EFI_D_INFO, "  TableAddress                - 0x%016lx\n", 
> Smbios3Table->TableAddress));
>      }
>    }
> +
> +  if (Smbios3Table == NULL) {
>      Status = EfiGetSystemConfigurationTable (
>                 &gEfiSmbiosTableGuid,
>                 (VOID **) &SmbiosTable
> @@ -485,10 +491,10 @@ MeasureSmbiosTable (
>      if (!EFI_ERROR (Status)) {
>        DEBUG ((EFI_D_INFO, "SmbiosTable:\n"));
>        DEBUG ((EFI_D_INFO, "  AnchorString                - '%c%c%c%c'\n",
> -        Smbios3Table->AnchorString[0],
> -        Smbios3Table->AnchorString[1],
> -        Smbios3Table->AnchorString[2],
> -        Smbios3Table->AnchorString[3]
> +        SmbiosTable->AnchorString[0],
> +        SmbiosTable->AnchorString[1],
> +        SmbiosTable->AnchorString[2],
> +        SmbiosTable->AnchorString[3]
>          ));
>        DEBUG ((EFI_D_INFO, "  EntryPointStructureChecksum - 0x%02x\n", 
> SmbiosTable->EntryPointStructureChecksum));
>        DEBUG ((EFI_D_INFO, "  EntryPointLength            - 0x%02x\n", 
> SmbiosTable->EntryPointLength));
> @@ -516,6 +522,7 @@ MeasureSmbiosTable (
>        DEBUG ((EFI_D_INFO, "  NumberOfSmbiosStructures    - 0x%04x\n", 
> SmbiosTable->NumberOfSmbiosStructures));
>        DEBUG ((EFI_D_INFO, "  SmbiosBcdRevision           - 0x%02x\n", 
> SmbiosTable->SmbiosBcdRevision));
>      }
> +  }
>
>    if (Smbios3Table != NULL) {
>      SmbiosTableAddress = (VOID *)(UINTN)Smbios3Table->TableAddress;
> @@ -528,7 +535,7 @@ MeasureSmbiosTable (
>    if (SmbiosTableAddress != NULL) {
>      DEBUG ((DEBUG_INFO, "The Smbios Table starts at: 0x%x\n", 
> SmbiosTableAddress));
>      DEBUG ((DEBUG_INFO, "The Smbios Table size: 0x%x\n", TableLength));
> -    InternalDumpHex ((UINT8 *)(UINTN)SmbiosTableAddress, TableLength);
> +    DEBUG_CODE (InternalDumpHex ((UINT8 *)(UINTN)SmbiosTableAddress, 
> TableLength););
>
>      TableAddress = AllocateCopyPool ((UINTN)TableLength, (VOID 
> *)(UINTN)SmbiosTableAddress);
>      if (TableAddress == NULL) {
> @@ -539,11 +546,16 @@ MeasureSmbiosTable (
>
>      DEBUG ((DEBUG_INFO, "The final Smbios Table starts at: 0x%x\n", 
> TableAddress));
>      DEBUG ((DEBUG_INFO, "The final Smbios Table size: 0x%x\n", TableLength));
> -    InternalDumpHex (TableAddress, TableLength);
> +    DEBUG_CODE (InternalDumpHex (TableAddress, TableLength););
>
>      HandoffTables.NumberOfTables = 1;
> -    HandoffTables.TableEntry[0].VendorGuid  = gEfiSmbiosTableGuid;
> -    HandoffTables.TableEntry[0].VendorTable = SmbiosTable;
> +    if (Smbios3Table != NULL) {
> +      HandoffTables.TableEntry[0].VendorGuid  = gEfiSmbios3TableGuid;
> +      HandoffTables.TableEntry[0].VendorTable = Smbios3Table;
> +    } else {
> +      HandoffTables.TableEntry[0].VendorGuid  = gEfiSmbiosTableGuid;
> +      HandoffTables.TableEntry[0].VendorTable = SmbiosTable;
> +    }
>      Status = TpmMeasureAndLogData (
>                 1,                       // PCRIndex
>                 EV_EFI_HANDOFF_TABLES,   // EventType
> @@ -562,13 +574,12 @@ MeasureSmbiosTable (
>
>  /**
>
> -  Driver to produce Smbios measurement.
> +  Driver to produce Smbios measurement.
>
>    @param ImageHandle     Module's image handle
>    @param SystemTable     Pointer of EFI_SYSTEM_TABLE
>
> -  @retval EFI_SUCCESS    Smbios protocol installed
> -  @retval Other          No protocol installed, unload driver.
> +  @return Status returned from EfiCreateEventReadyToBootEx().
>
>  **/
>  EFI_STATUS
> @@ -581,10 +592,10 @@ SmbiosMeasurementDriverEntryPoint (
>    EFI_STATUS            Status;
>    EFI_EVENT             Event;
>
> -  Status = gBS->LocateProtocol (&gEfiSmbiosProtocolGuid, NULL, &mSmbios);
> +  Status = gBS->LocateProtocol (&gEfiSmbiosProtocolGuid, NULL, (VOID **) 
> &mSmbios);
>    ASSERT_EFI_ERROR (Status);
>    DEBUG ((DEBUG_INFO, "The Smbios Table Version: %x.%x\n", 
> mSmbios->MajorVersion, mSmbios->MinorVersion));
> -
> +
>    if (mSmbios->MajorVersion < 2 || (mSmbios->MajorVersion == 2 && 
> mSmbios->MinorVersion < 7)){
>      mMaxLen = SMBIOS_STRING_MAX_LENGTH;
>    } else if (mSmbios->MajorVersion < 3) {
> diff --git 
> a/MdeModulePkg/Universal/SmbiosMeasurementDxe/SmbiosMeasurementDxe.inf 
> b/MdeModulePkg/Universal/SmbiosMeasurementDxe/SmbiosMeasurementDxe.inf
> index 6f89447..771259e 100644
> --- a/MdeModulePkg/Universal/SmbiosMeasurementDxe/SmbiosMeasurementDxe.inf
> +++ b/MdeModulePkg/Universal/SmbiosMeasurementDxe/SmbiosMeasurementDxe.inf
> @@ -55,11 +55,11 @@ [LibraryClasses]
>    TpmMeasurementLib
>
>  [Protocols]
> -  gEfiSmbiosProtocolGuid                            ## PRODUCES
> +  gEfiSmbiosProtocolGuid                            ## CONSUMES
>
>  [Guids]
> -  gEfiSmbiosTableGuid                               ## SOMETIMES_PRODUCES ## 
> SystemTable
> -  gEfiSmbios3TableGuid                              ## SOMETIMES_PRODUCES ## 
> SystemTable
> +  gEfiSmbiosTableGuid                               ## SOMETIMES_CONSUMES ## 
> SystemTable
> +  gEfiSmbios3TableGuid                              ## SOMETIMES_CONSUMES ## 
> SystemTable
>
>  [Depex]
>    gEfiSmbiosProtocolGuid
> --
> 1.9.5.msysgit.0
>
> _______________________________________________
> 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