From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=pass header.i=@linaro.org header.s=google header.b=gmI3UCQX; spf=pass (domain: linaro.org, ip: 209.85.128.67, mailfrom: leif.lindholm@linaro.org) Received: from mail-wm1-f67.google.com (mail-wm1-f67.google.com [209.85.128.67]) by groups.io with SMTP; Fri, 17 May 2019 10:05:18 -0700 Received: by mail-wm1-f67.google.com with SMTP id t5so6079140wmh.3 for ; Fri, 17 May 2019 10:05:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=FqhHDD0IZ4ouzCTMjRnxcsPSn8D3U/eU4V4Vza5v96I=; b=gmI3UCQXEweDKl6DOcEa3JeFyNBSFIFLSRZahNgsIvrAcWd339/ZJlG9AJ+2fpioDo JpF5nRD8+qOu9u2JsDGtzNWU6GFXZSAD5MO9y8zVR4oSGojlw42e3W19Gnxm4oEgIpva +IYL8LK5mk2ZJKQ2o3+5yMfklTB6HNDLh+Cv8z4IvYYadMs+OB7PKG5F9zI2zfRqv34r LLrjuGkJ6KNqJ5XoWdN8jKQIke7Q8yXfAemia4aInQl6fN0dgHTzVNigR4W+57TRVgxp f+uXP0HCaFgYSADs2F3PcQTedV3V1ltcILP+yH0ToQFZfxsfHT8TMMJorpt3GHxk+wuF yvJg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=FqhHDD0IZ4ouzCTMjRnxcsPSn8D3U/eU4V4Vza5v96I=; b=UbasqMz1U7TPpoM6AZl63Mo5yhpykv74MH1VvGHR8wvY7UNYOO2vn+COUr9GmehbC/ Um5roqEma+NQpuxjVZT++ZMnfSblWAtwsveUkBSTN/50+dGr6xPUIq5fxsbT0W/S23D5 lDUpJzlVW1uAtky2hCq7FAVAFPwIt5mOu2cDT2XWlYcMeE2ZCzdKoKwNHTwRZdPwkuo1 XGqy0NQK/tvaJYWy298a8gwrST1sFYB01ZreemscEAuXbuxlTXOLKc8YShEXf1Hkhge2 OrYwtZD2s/Lv3NokEu43Hs+afl5dJdGNwC6Y40lBLS9jyf3KZ0QrvJ7xU+4tcaNmDJ5z pH5g== X-Gm-Message-State: APjAAAWxXX3YCLD4YuQ//sLc7/cyuhh3Z8HCmcVgrlj7btD5TriFrRcX D0R+x24tuFCfBhiUVqmj43cOh2XKb3w= X-Google-Smtp-Source: APXvYqwLUJ4SItfxZdrMhArwp2ng83eED5LzKimTJ2pwZ4y2k+lfsmnXdrKNyQ8Kna1wF3VLhogaIw== X-Received: by 2002:a1c:a80b:: with SMTP id r11mr13930018wme.77.1558112716232; Fri, 17 May 2019 10:05:16 -0700 (PDT) Return-Path: Received: from bivouac.eciton.net (bivouac.eciton.net. [2a00:1098:0:86:1000:23:0:2]) by smtp.gmail.com with ESMTPSA id f2sm9954948wme.12.2019.05.17.10.05.14 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 17 May 2019 10:05:15 -0700 (PDT) Date: Fri, 17 May 2019 18:05:13 +0100 From: "Leif Lindholm" To: Ard Biesheuvel Cc: devel@edk2.groups.io Subject: Re: [PATCH] EmbeddedPkg/PrePiLib: remove dead status code reporting code Message-ID: <20190517170513.yq3j6orrw5jab47q@bivouac.eciton.net> References: <20190517161855.23879-1-ard.biesheuvel@linaro.org> MIME-Version: 1.0 In-Reply-To: <20190517161855.23879-1-ard.biesheuvel@linaro.org> User-Agent: NeoMutt/20170113 (1.7.2) Content-Type: text/plain; charset=us-ascii Content-Disposition: inline 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 Reviewed-by: Leif Lindholm *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.
> - > - SPDX-License-Identifier: BSD-2-Clause-Patent > - > -**/ > - > -#include > -#include > -#include > -#include > - > -#include > -#include > -#include > - > -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 >