public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Leif Lindholm" <leif.lindholm@linaro.org>
To: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: devel@edk2.groups.io
Subject: Re: [PATCH] EmbeddedPkg/PrePiLib: remove dead status code reporting code
Date: Fri, 17 May 2019 18:05:13 +0100	[thread overview]
Message-ID: <20190517170513.yq3j6orrw5jab47q@bivouac.eciton.net> (raw)
In-Reply-To: <20190517161855.23879-1-ard.biesheuvel@linaro.org>

On Fri, May 17, 2019 at 06:18:55PM +0200, Ard Biesheuvel wrote:
> The status code reporting functionality in PrePiLib is never invoked
> so let's just remove it.
> 
> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>

Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>

*however* - I don't think this constitutes a bugfix, so probably needs
to hold back until stable tag is made.

/
    Leif

> ---
>  EmbeddedPkg/Include/Library/PrePiLib.h          |   7 -
>  EmbeddedPkg/Library/PrePiLib/PrePiLib.inf       |   4 -
>  EmbeddedPkg/Library/PrePiLib/ReportStatusCode.c | 318 --------------------
>  3 files changed, 329 deletions(-)
> 
> diff --git a/EmbeddedPkg/Include/Library/PrePiLib.h b/EmbeddedPkg/Include/Library/PrePiLib.h
> index 787678844093..ee8d4ef4d98a 100644
> --- a/EmbeddedPkg/Include/Library/PrePiLib.h
> +++ b/EmbeddedPkg/Include/Library/PrePiLib.h
> @@ -755,11 +755,4 @@ DecompressFirstFv (
>    VOID
>    );
>  
> -VOID
> -EFIAPI
> -AddDxeCoreReportStatusCodeCallback (
> -  VOID
> -  );
> -
> -
>  #endif
> diff --git a/EmbeddedPkg/Library/PrePiLib/PrePiLib.inf b/EmbeddedPkg/Library/PrePiLib/PrePiLib.inf
> index bdedb8d666df..83a0edcb8d94 100644
> --- a/EmbeddedPkg/Library/PrePiLib/PrePiLib.inf
> +++ b/EmbeddedPkg/Library/PrePiLib/PrePiLib.inf
> @@ -29,7 +29,6 @@
>  [Sources.common]
>    FwVol.c
>    PrePiLib.c
> -  ReportStatusCode.c
>  
>  [Packages]
>    MdePkg/MdePkg.dec
> @@ -51,12 +50,9 @@
>    HobLib
>  
>  [Guids]
> -  gEfiStatusCodeSpecificDataGuid
>    gEfiMemoryTypeInformationGuid
> -  gEfiStatusCodeDataTypeDebugGuid
>  
>  [Protocols]
> -  gEfiStatusCodeRuntimeProtocolGuid
>    gPeCoffLoaderProtocolGuid
>  
>  
> diff --git a/EmbeddedPkg/Library/PrePiLib/ReportStatusCode.c b/EmbeddedPkg/Library/PrePiLib/ReportStatusCode.c
> deleted file mode 100644
> index 043cf5e9cd23..000000000000
> --- a/EmbeddedPkg/Library/PrePiLib/ReportStatusCode.c
> +++ /dev/null
> @@ -1,318 +0,0 @@
> -/** @file
> -  Library that helps implement monolithic PEI
> -
> -  Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
> -
> -  SPDX-License-Identifier: BSD-2-Clause-Patent
> -
> -**/
> -
> -#include <PrePi.h>
> -#include <Library/ReportStatusCodeLib.h>
> -#include <Library/SerialPortLib.h>
> -#include <Library/PrintLib.h>
> -
> -#include <Protocol/StatusCode.h>
> -#include <Guid/StatusCodeDataTypeId.h>
> -#include <Guid/StatusCodeDataTypeDebug.h>
> -
> -EFI_STATUS
> -EFIAPI
> -SerialReportStatusCode (
> -  IN EFI_STATUS_CODE_TYPE             CodeType,
> -  IN EFI_STATUS_CODE_VALUE            Value,
> -  IN UINT32                           Instance,
> -  IN CONST EFI_GUID                   *CallerId,
> -  IN CONST EFI_STATUS_CODE_DATA       *Data OPTIONAL
> -  );
> -
> -
> -EFI_STATUS_CODE_PROTOCOL gStatusCode = {
> -  (EFI_REPORT_STATUS_CODE)SerialReportStatusCode
> -};
> -
> -/**
> -  Extracts ASSERT() information from a status code structure.
> -
> -  Converts the status code specified by CodeType, Value, and Data to the ASSERT()
> -  arguments specified by Filename, Description, and LineNumber.  If CodeType is
> -  an EFI_ERROR_CODE, and CodeType has a severity of EFI_ERROR_UNRECOVERED, and
> -  Value has an operation mask of EFI_SW_EC_ILLEGAL_SOFTWARE_STATE, extract
> -  Filename, Description, and LineNumber from the optional data area of the
> -  status code buffer specified by Data.  The optional data area of Data contains
> -  a Null-terminated ASCII string for the FileName, followed by a Null-terminated
> -  ASCII string for the Description, followed by a 32-bit LineNumber.  If the
> -  ASSERT() information could be extracted from Data, then return TRUE.
> -  Otherwise, FALSE is returned.
> -
> -  If Data is NULL, then ASSERT().
> -  If Filename is NULL, then ASSERT().
> -  If Description is NULL, then ASSERT().
> -  If LineNumber is NULL, then ASSERT().
> -
> -  @param  CodeType     The type of status code being converted.
> -  @param  Value        The status code value being converted.
> -  @param  Data         Pointer to status code data buffer.
> -  @param  Filename     Pointer to the source file name that generated the ASSERT().
> -  @param  Description  Pointer to the description of the ASSERT().
> -  @param  LineNumber   Pointer to source line number that generated the ASSERT().
> -
> -  @retval  TRUE   The status code specified by CodeType, Value, and Data was
> -                  converted ASSERT() arguments specified by Filename, Description,
> -                  and LineNumber.
> -  @retval  FALSE  The status code specified by CodeType, Value, and Data could
> -                  not be converted to ASSERT() arguments.
> -
> -**/
> -BOOLEAN
> -EFIAPI
> -ReportStatusCodeExtractAssertInfo (
> -  IN EFI_STATUS_CODE_TYPE        CodeType,
> -  IN EFI_STATUS_CODE_VALUE       Value,
> -  IN CONST EFI_STATUS_CODE_DATA  *Data,
> -  OUT CHAR8                      **Filename,
> -  OUT CHAR8                      **Description,
> -  OUT UINT32                     *LineNumber
> -  )
> -{
> -  EFI_DEBUG_ASSERT_DATA  *AssertData;
> -
> -  ASSERT (Data        != NULL);
> -  ASSERT (Filename    != NULL);
> -  ASSERT (Description != NULL);
> -  ASSERT (LineNumber  != NULL);
> -
> -  if (((CodeType & EFI_STATUS_CODE_TYPE_MASK)      == EFI_ERROR_CODE) &&
> -      ((CodeType & EFI_STATUS_CODE_SEVERITY_MASK)  == EFI_ERROR_UNRECOVERED) &&
> -      ((Value    & EFI_STATUS_CODE_OPERATION_MASK) == EFI_SW_EC_ILLEGAL_SOFTWARE_STATE)) {
> -    AssertData   = (EFI_DEBUG_ASSERT_DATA *)(Data + 1);
> -    *Filename    = (CHAR8 *)(AssertData + 1);
> -    *Description = *Filename + AsciiStrLen (*Filename) + 1;
> -    *LineNumber  = AssertData->LineNumber;
> -    return TRUE;
> -  }
> -  return FALSE;
> -}
> -
> -
> -/**
> -  Extracts DEBUG() information from a status code structure.
> -
> -  Converts the status code specified by Data to the DEBUG() arguments specified
> -  by ErrorLevel, Marker, and Format.  If type GUID in Data is
> -  EFI_STATUS_CODE_DATA_TYPE_DEBUG_GUID, then extract ErrorLevel, Marker, and
> -  Format from the optional data area of the status code buffer specified by Data.
> -  The optional data area of Data contains a 32-bit ErrorLevel followed by Marker
> -  which is 12 UINTN parameters, followed by a Null-terminated ASCII string for
> -  the Format.  If the DEBUG() information could be extracted from Data, then
> -  return TRUE.  Otherwise, FALSE is returned.
> -
> -  If Data is NULL, then ASSERT().
> -  If ErrorLevel is NULL, then ASSERT().
> -  If Marker is NULL, then ASSERT().
> -  If Format is NULL, then ASSERT().
> -
> -  @param  Data        Pointer to status code data buffer.
> -  @param  ErrorLevel  Pointer to error level mask for a debug message.
> -  @param  Marker      Pointer to the variable argument list associated with Format.
> -  @param  Format      Pointer to a Null-terminated ASCII format string of a
> -                      debug message.
> -
> -  @retval  TRUE   The status code specified by Data was converted DEBUG() arguments
> -                  specified by ErrorLevel, Marker, and Format.
> -  @retval  FALSE  The status code specified by Data could not be converted to
> -                  DEBUG() arguments.
> -
> -**/
> -BOOLEAN
> -EFIAPI
> -ReportStatusCodeExtractDebugInfo (
> -  IN CONST EFI_STATUS_CODE_DATA  *Data,
> -  OUT UINT32                     *ErrorLevel,
> -  OUT BASE_LIST                  *Marker,
> -  OUT CHAR8                      **Format
> -  )
> -{
> -  EFI_DEBUG_INFO  *DebugInfo;
> -
> -  ASSERT (Data          != NULL);
> -  ASSERT (ErrorLevel    != NULL);
> -  ASSERT (Marker     != NULL);
> -  ASSERT (Format     != NULL);
> -
> -  //
> -  // If the GUID type is not EFI_STATUS_CODE_DATA_TYPE_DEBUG_GUID then return FALSE
> -  //
> -  if (!CompareGuid (&Data->Type, &gEfiStatusCodeDataTypeDebugGuid)) {
> -    return FALSE;
> -  }
> -
> -  //
> -  // Retrieve the debug information from the status code record
> -  //
> -  DebugInfo = (EFI_DEBUG_INFO *)(Data + 1);
> -
> -  *ErrorLevel = DebugInfo->ErrorLevel;
> -
> -  //
> -  // The first 12 * UINTN bytes of the string are really an
> -  // argument stack to support varargs on the Format string.
> -  //
> -  *Marker = (BASE_LIST) (DebugInfo + 1);
> -  *Format = (CHAR8 *)(((UINT64 *)*Marker) + 12);
> -
> -  return TRUE;
> -}
> -
> -
> -
> -
> -EFI_STATUS
> -EFIAPI
> -SerialReportStatusCode (
> -  IN EFI_STATUS_CODE_TYPE             CodeType,
> -  IN EFI_STATUS_CODE_VALUE            Value,
> -  IN UINT32                           Instance,
> -  IN CONST EFI_GUID                   *CallerId,
> -  IN CONST EFI_STATUS_CODE_DATA       *Data OPTIONAL
> -  )
> -{
> -  CHAR8           *Filename;
> -  CHAR8           *Description;
> -  CHAR8           *Format;
> -  CHAR8           Buffer[EFI_STATUS_CODE_DATA_MAX_SIZE];
> -  UINT32          ErrorLevel;
> -  UINT32          LineNumber;
> -  UINTN           CharCount;
> -  BASE_LIST       Marker;
> -  EFI_DEBUG_INFO  *DebugInfo;
> -
> -  Buffer[0] = '\0';
> -
> -
> -  if (Data != NULL &&
> -    ReportStatusCodeExtractAssertInfo (CodeType, Value, Data, &Filename, &Description, &LineNumber)) {
> -
> -    //
> -    // Print ASSERT() information into output buffer.
> -    //
> -    CharCount = AsciiSPrint (
> -                  Buffer,
> -                  EFI_STATUS_CODE_DATA_MAX_SIZE,
> -                  "\n\rASSERT!: %a (%d): %a\n\r",
> -                  Filename,
> -                  LineNumber,
> -                  Description
> -                  );
> -
> -
> -    //
> -    // Callout to standard output.
> -    //
> -    SerialPortWrite ((UINT8 *)Buffer, CharCount);
> -    return EFI_SUCCESS;
> -
> -  } else if (Data != NULL &&
> -    ReportStatusCodeExtractDebugInfo (Data, &ErrorLevel, &Marker, &Format)) {
> -
> -    //
> -    // Print DEBUG() information into output buffer.
> -    //
> -    CharCount = AsciiBSPrint (
> -                  Buffer,
> -                  EFI_STATUS_CODE_DATA_MAX_SIZE,
> -                  Format,
> -                  Marker
> -                  );
> -
> -  } else if (Data != NULL &&
> -             CompareGuid (&Data->Type, &gEfiStatusCodeSpecificDataGuid) &&
> -             (CodeType & EFI_STATUS_CODE_TYPE_MASK) == EFI_DEBUG_CODE) {
> -
> -    //
> -    // Print specific data into output buffer.
> -    //
> -    DebugInfo = (EFI_DEBUG_INFO *) (Data + 1);
> -    Marker    = (BASE_LIST) (DebugInfo + 1);
> -    Format    = (CHAR8 *) (((UINT64 *) (DebugInfo + 1)) + 12);
> -
> -    CharCount = AsciiBSPrint (Buffer, EFI_STATUS_CODE_DATA_MAX_SIZE, Format, Marker);
> -
> -  } else if ((CodeType & EFI_STATUS_CODE_TYPE_MASK) == EFI_ERROR_CODE) {
> -    //
> -    // Print ERROR information into output buffer.
> -    //
> -
> -    CharCount = AsciiSPrint (
> -                  Buffer,
> -                  EFI_STATUS_CODE_DATA_MAX_SIZE,
> -                  "ERROR: C%x:V%x I%x",
> -                  CodeType,
> -                  Value,
> -                  Instance
> -                  );
> -
> -    //
> -    // Make sure we don't try to print values that weren't intended to be printed, especially NULL GUID pointers.
> -    //
> -    if (CallerId != NULL) {
> -      CharCount += AsciiSPrint (
> -                     &Buffer[CharCount - 1],
> -                     (EFI_STATUS_CODE_DATA_MAX_SIZE - (sizeof (Buffer[0]) * CharCount)),
> -                     " %g",
> -                     CallerId
> -                     );
> -    }
> -
> -    if (Data != NULL) {
> -      CharCount += AsciiSPrint (
> -                     &Buffer[CharCount - 1],
> -                     (EFI_STATUS_CODE_DATA_MAX_SIZE - (sizeof (Buffer[0]) * CharCount)),
> -                     " %x",
> -                     Data
> -                     );
> -
> -    }
> -
> -
> -    CharCount += AsciiSPrint (
> -                   &Buffer[CharCount - 1],
> -                   (EFI_STATUS_CODE_DATA_MAX_SIZE - (sizeof (Buffer[0]) * CharCount)),
> -                   "\n\r"
> -                   );
> -
> -  } else if ((CodeType & EFI_STATUS_CODE_TYPE_MASK) == EFI_PROGRESS_CODE) {
> -    CharCount = AsciiSPrint (
> -                  Buffer,
> -                  EFI_STATUS_CODE_DATA_MAX_SIZE,
> -                  "PROGRESS CODE: V%x I%x\n\r",
> -                  Value,
> -                  Instance
> -                  );
> -  } else {
> -    CharCount = AsciiSPrint (
> -                  Buffer,
> -                  EFI_STATUS_CODE_DATA_MAX_SIZE,
> -                  "Undefined: C%x:V%x I%x\n\r",
> -                  CodeType,
> -                  Value,
> -                  Instance
> -                  );
> -
> -  }
> -
> -  SerialPortWrite ((UINT8 *)Buffer, CharCount);
> -  return EFI_SUCCESS;
> -
> -}
> -
> -
> -VOID
> -EFIAPI
> -AddDxeCoreReportStatusCodeCallback (
> -  VOID
> -  )
> -{
> -  BuildGuidDataHob (&gEfiStatusCodeRuntimeProtocolGuid, &gStatusCode, sizeof(VOID *));
> -}
> -
> -- 
> 2.20.1
> 

  reply	other threads:[~2019-05-17 17:05 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-05-17 16:18 [PATCH] EmbeddedPkg/PrePiLib: remove dead status code reporting code Ard Biesheuvel
2019-05-17 17:05 ` Leif Lindholm [this message]
2019-06-06 10:38   ` Ard Biesheuvel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190517170513.yq3j6orrw5jab47q@bivouac.eciton.net \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox