ShellPkg/UefiShellAcpiViewCommandLib: Fix ECC issues

1. Separate variable definition and initialization.
2. Make the variable naming following Edk2 rule.

V2: Remove the updates of guard macros in header files.

Cc: Sami Mujawar <sami.mujawar@arm.com>
Cc: Evan Lloyd <evan.lloyd@arm.com>
Cc: Jaben Carsey <jaben.carsey@intel.com>
Cc: Ruiyu Ni <ruiyu.ni@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Dandan Bi <dandan.bi@intel.com>
Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
This commit is contained in:
Dandan Bi 2018-06-05 09:20:05 +08:00 committed by Eric Dong
parent a6eaba4d7f
commit f75c747828
14 changed files with 178 additions and 117 deletions

View File

@ -21,6 +21,15 @@ STATIC UINT32 gIndent;
STATIC UINT32 mTableErrorCount;
STATIC UINT32 mTableWarningCount;
STATIC ACPI_DESCRIPTION_HEADER_INFO AcpiHdrInfo;
/**
An ACPI_PARSER array describing the ACPI header.
**/
STATIC CONST ACPI_PARSER AcpiHeaderParser[] = {
PARSE_ACPI_HEADER (&AcpiHdrInfo)
};
/**
This function resets the ACPI table error counter to Zero.
**/
@ -114,10 +123,13 @@ VerifyChecksum (
IN UINT32 Length
)
{
UINTN ByteCount = 0;
UINT8 Checksum = 0;
UINTN ByteCount;
UINT8 Checksum;
UINTN OriginalAttribute;
ByteCount = 0;
Checksum = 0;
while (ByteCount < Length) {
Checksum += *(Ptr++);
ByteCount++;
@ -166,11 +178,14 @@ DumpRaw (
IN UINT32 Length
)
{
UINTN ByteCount = 0;
UINTN ByteCount;
UINTN PartLineChars;
UINTN AsciiBufferIndex = 0;
UINTN AsciiBufferIndex;
CHAR8 AsciiBuffer[17];
ByteCount = 0;
AsciiBufferIndex = 0;
Print (L"Address : 0x%p\n", Ptr);
Print (L"Length : %d\n", Length);
@ -277,7 +292,10 @@ DumpUint64 (
// Some fields are not aligned and this causes alignment faults
// on ARM platforms if the compiler generates LDRD instructions.
// Perform word access so that LDRD instructions are not generated.
UINT64 Val = *(UINT32*)(Ptr + sizeof (UINT32));
UINT64 Val;
Val = *(UINT32*)(Ptr + sizeof (UINT32));
Val <<= 32;
Val |= *(UINT32*)Ptr;
@ -456,13 +474,16 @@ ParseAcpi (
)
{
UINT32 Index;
UINT32 Offset = 0;
UINT32 Offset;
BOOLEAN HighLight;
Offset = 0;
// Increment the Indent
gIndent += Indent;
if (Trace && (AsciiName != NULL)){
BOOLEAN HighLight = GetColourHighlighting ();
HighLight = GetColourHighlighting ();
UINTN OriginalAttribute;
if (HighLight) {
@ -620,11 +641,6 @@ DumpAcpiHeader (
IN UINT8* Ptr
)
{
ACPI_DESCRIPTION_HEADER_INFO AcpiHdrInfo;
ACPI_PARSER AcpiHeaderParser[] = {
PARSE_ACPI_HEADER (&AcpiHdrInfo)
};
return ParseAcpi (
TRUE,
0,
@ -658,10 +674,6 @@ ParseAcpiHeader (
)
{
UINT32 BytesParsed;
ACPI_DESCRIPTION_HEADER_INFO AcpiHdrInfo;
ACPI_PARSER AcpiHeaderParser[] = {
PARSE_ACPI_HEADER (&AcpiHdrInfo)
};
BytesParsed = ParseAcpi (
FALSE,

View File

@ -45,32 +45,32 @@ RegisterParser (
IN PARSE_ACPI_TABLE_PROC ParserProc
)
{
UINT32 index;
UINT32 Index;
if ((ParserProc == NULL) || (Signature == ACPI_PARSER_SIGNATURE_NULL)) {
return EFI_INVALID_PARAMETER;
}
// Search if a parser is already installed
for (index = 0;
index < (sizeof (mTableParserList) / sizeof (mTableParserList[0]));
index++)
for (Index = 0;
Index < (sizeof (mTableParserList) / sizeof (mTableParserList[0]));
Index++)
{
if (Signature == mTableParserList[index].Signature) {
if (mTableParserList[index].Parser != NULL) {
if (Signature == mTableParserList[Index].Signature) {
if (mTableParserList[Index].Parser != NULL) {
return EFI_ALREADY_STARTED;
}
}
}
// Find the first free slot and register the parser
for (index = 0;
index < (sizeof (mTableParserList) / sizeof (mTableParserList[0]));
index++)
for (Index = 0;
Index < (sizeof (mTableParserList) / sizeof (mTableParserList[0]));
Index++)
{
if (mTableParserList[index].Signature == ACPI_PARSER_SIGNATURE_NULL) {
mTableParserList[index].Signature = Signature;
mTableParserList[index].Parser = ParserProc;
if (mTableParserList[Index].Signature == ACPI_PARSER_SIGNATURE_NULL) {
mTableParserList[Index].Signature = Signature;
mTableParserList[Index].Parser = ParserProc;
return EFI_SUCCESS;
}
}
@ -96,19 +96,19 @@ DeregisterParser (
IN UINT32 Signature
)
{
UINT32 index;
UINT32 Index;
if (Signature == ACPI_PARSER_SIGNATURE_NULL) {
return EFI_INVALID_PARAMETER;
}
for (index = 0;
index < (sizeof (mTableParserList) / sizeof (mTableParserList[0]));
index++)
for (Index = 0;
Index < (sizeof (mTableParserList) / sizeof (mTableParserList[0]));
Index++)
{
if (Signature == mTableParserList[index].Signature) {
mTableParserList[index].Signature = ACPI_PARSER_SIGNATURE_NULL;
mTableParserList[index].Parser = NULL;
if (Signature == mTableParserList[Index].Signature) {
mTableParserList[Index].Signature = ACPI_PARSER_SIGNATURE_NULL;
mTableParserList[Index].Parser = NULL;
return EFI_SUCCESS;
}
}
@ -137,18 +137,18 @@ GetParser (
OUT PARSE_ACPI_TABLE_PROC * ParserProc
)
{
UINT32 index;
UINT32 Index;
if ((ParserProc == NULL) || (Signature == ACPI_PARSER_SIGNATURE_NULL)) {
return EFI_INVALID_PARAMETER;
}
for (index = 0;
index < (sizeof (mTableParserList) / sizeof (mTableParserList[0]));
index++)
for (Index = 0;
Index < (sizeof (mTableParserList) / sizeof (mTableParserList[0]));
Index++)
{
if (Signature == mTableParserList[index].Signature) {
*ParserProc = mTableParserList[index].Parser;
if (Signature == mTableParserList[Index].Signature) {
*ParserProc = mTableParserList[Index].Parser;
return EFI_SUCCESS;
}
}

View File

@ -122,8 +122,11 @@ DumpAcpiTableToFile (
{
EFI_STATUS Status;
CHAR16 FileNameBuffer[MAX_FILE_NAME_LEN];
SHELL_FILE_HANDLE DumpFileHandle = NULL;
UINTN TransferBytes = Length;
SHELL_FILE_HANDLE DumpFileHandle;
UINTN TransferBytes;
DumpFileHandle = NULL;
TransferBytes = Length;
UnicodeSPrint (
FileNameBuffer,
@ -186,20 +189,25 @@ ProcessTableReportOptions (
)
{
UINTN OriginalAttribute;
UINT8* SignaturePtr = (UINT8*)(UINTN)&Signature;
BOOLEAN Log = FALSE;
BOOLEAN HighLight = GetColourHighlighting ();
UINT8* SignaturePtr;
BOOLEAN Log;
BOOLEAN HighLight;
SignaturePtr = (UINT8*)(UINTN)&Signature;
Log = FALSE;
HighLight = GetColourHighlighting ();
switch (GetReportOption ()) {
case EREPORT_ALL:
case ReportAll:
Log = TRUE;
break;
case EREPORT_SELECTED:
case ReportSelected:
if (Signature == GetSelectedAcpiTable ()) {
Log = TRUE;
mSelectedAcpiTableFound = TRUE;
}
break;
case EREPORT_TABLE_LIST:
case ReportTableList:
if (mTableCount == 0) {
if (HighLight) {
OriginalAttribute = gST->ConOut->Mode->Attribute;
@ -223,13 +231,13 @@ ProcessTableReportOptions (
SignaturePtr[3]
);
break;
case EREPORT_DUMP_BIN_FILE:
case ReportDumpBinFile:
if (Signature == GetSelectedAcpiTable ()) {
mSelectedAcpiTableFound = TRUE;
DumpAcpiTableToFile (TablePtr, Length);
}
break;
case EREPORT_MAX:
case ReportMax:
// We should never be here.
// This case is only present to prevent compiler warning.
break;
@ -273,9 +281,11 @@ ConvertStrToAcpiSignature (
IN CONST CHAR16* Str
)
{
UINT8 Index = 0;
UINT8 Index;
CHAR8 Ptr[4];
Index = 0;
// Convert to Upper case and convert to ASCII
while ((Index < 4) && (Str[Index] != 0)) {
if (Str[Index] >= L'a' && Str[Index] <= L'z') {
@ -371,12 +381,12 @@ AcpiView (
}
ReportOption = GetReportOption ();
if (EREPORT_TABLE_LIST != ReportOption) {
if (((EREPORT_SELECTED == ReportOption) ||
(EREPORT_DUMP_BIN_FILE == ReportOption)) &&
if (ReportTableList != ReportOption) {
if (((ReportSelected == ReportOption) ||
(ReportDumpBinFile == ReportOption)) &&
(!mSelectedAcpiTableFound)) {
Print (L"\nRequested ACPI Table not found.\n");
} else if (EREPORT_DUMP_BIN_FILE != ReportOption) {
} else if (ReportDumpBinFile != ReportOption) {
OriginalAttribute = gST->ConOut->Mode->Attribute;
Print (L"\nTable Statistics:\n");
@ -426,15 +436,15 @@ ShellCommandRunAcpiView (
)
{
EFI_STATUS Status;
SHELL_STATUS ShellStatus = SHELL_SUCCESS;
LIST_ENTRY* Package = NULL;
SHELL_STATUS ShellStatus;
LIST_ENTRY* Package;
CHAR16* ProblemParam;
CONST CHAR16* Temp;
CHAR8 ColourOption[8];
SHELL_FILE_HANDLE TmpDumpFileHandle = NULL;
SHELL_FILE_HANDLE TmpDumpFileHandle;
// Set Defaults
mReportType = EREPORT_ALL;
mReportType = ReportAll;
mTableCount = 0;
mBinTableCount = 0;
mSelectedAcpiTable = 0;
@ -443,6 +453,10 @@ ShellCommandRunAcpiView (
mVerbose = TRUE;
mConsistencyCheck = TRUE;
ShellStatus = SHELL_SUCCESS;
Package = NULL;
TmpDumpFileHandle = NULL;
// Reset The error/warning counters
ResetErrorCount ();
ResetWarningCount ();
@ -547,19 +561,19 @@ ShellCommandRunAcpiView (
}
if (ShellCommandLineGetFlag (Package, L"-l")) {
mReportType = EREPORT_TABLE_LIST;
mReportType = ReportTableList;
} else {
mSelectedAcpiTableName = ShellCommandLineGetValue (Package, L"-s");
if (mSelectedAcpiTableName != NULL) {
mSelectedAcpiTable = (UINT32)ConvertStrToAcpiSignature (
mSelectedAcpiTableName
);
mReportType = EREPORT_SELECTED;
mReportType = ReportSelected;
if (ShellCommandLineGetFlag (Package, L"-d")) {
// Create a temporary file to check if the media is writable.
CHAR16 FileNameBuffer[MAX_FILE_NAME_LEN];
mReportType = EREPORT_DUMP_BIN_FILE;
mReportType = ReportDumpBinFile;
UnicodeSPrint (
FileNameBuffer,

View File

@ -33,11 +33,11 @@
The EREPORT_OPTION enum describes ACPI table Reporting options.
**/
typedef enum ReportOption {
EREPORT_ALL, ///< Report All tables.
EREPORT_SELECTED, ///< Report Selected table.
EREPORT_TABLE_LIST, ///< Report List of tables.
EREPORT_DUMP_BIN_FILE, ///< Dump selected table to a file.
EREPORT_MAX
ReportAll, ///< Report All tables.
ReportSelected, ///< Report Selected table.
ReportTableList, ///< Report List of tables.
ReportDumpBinFile, ///< Dump selected table to a file.
ReportMax,
} EREPORT_OPTION;
/**

View File

@ -112,7 +112,10 @@ ValidateNameSpaceStrLen (
IN VOID* Context
)
{
UINT16 NameSpaceStrLen = *(UINT16*)Ptr;
UINT16 NameSpaceStrLen;
NameSpaceStrLen = *(UINT16*)Ptr;
if (NameSpaceStrLen < 2) {
IncrementErrorCount ();
Print (

View File

@ -138,7 +138,10 @@ ValidateGtBlockTimerCount (
IN VOID* Context
)
{
UINT32 BlockTimerCount = *(UINT32*)Ptr;
UINT32 BlockTimerCount;
BlockTimerCount = *(UINT32*)Ptr;
if (BlockTimerCount > 8) {
IncrementErrorCount ();
Print (

View File

@ -27,13 +27,13 @@ STATIC ACPI_DESCRIPTION_HEADER_INFO AcpiHdrInfo;
The EIORT_NODE enum describes the IORT Node types.
**/
typedef enum IortNode {
EIORT_NODE_ITS_GROUP, ///< ITS Group node
EIORT_NODE_NAMED_COMPONENT, ///< Named Component node
EIORT_NODE_ROOT_COMPLEX, ///< Root Complex node
EIORT_NODE_SMMUV1_V2, ///< SMMU v1/v2 node
EIORT_NODE_SMMUV3, ///< SMMU v3 node
EIORT_NODE_PMCG, ///< PMC group node
EIORT_NODE_MAX
Iort_Node_ITS_Group, ///< ITS Group node
Iort_Node_Named_Component, ///< Named Component node
Iort_Node_Root_Complex, ///< Root Complex node
Iort_Node_SMMUV1_V2, ///< SMMU v1/v2 node
Iort_Node_SMMUV3, ///< SMMU v3 node
Iort_Node_PMCG, ///< PMC group node
Iort_Node_Max
} EIORT_NODE;
// Local Variables
@ -665,13 +665,13 @@ ParseAcpiIort (
Print (L"0x%x\n", Offset);
switch (*IortNodeType) {
case EIORT_NODE_ITS_GROUP:
case Iort_Node_ITS_Group:
DumpIortNodeIts (
NodePtr,
*IortNodeLength
);
break;
case EIORT_NODE_NAMED_COMPONENT:
case Iort_Node_Named_Component:
DumpIortNodeNamedComponent (
NodePtr,
*IortNodeLength,
@ -679,7 +679,7 @@ ParseAcpiIort (
*IortIdMappingOffset
);
break;
case EIORT_NODE_ROOT_COMPLEX:
case Iort_Node_Root_Complex:
DumpIortNodeRootComplex (
NodePtr,
*IortNodeLength,
@ -687,7 +687,7 @@ ParseAcpiIort (
*IortIdMappingOffset
);
break;
case EIORT_NODE_SMMUV1_V2:
case Iort_Node_SMMUV1_V2:
DumpIortNodeSmmuV1V2 (
NodePtr,
*IortNodeLength,
@ -695,7 +695,7 @@ ParseAcpiIort (
*IortIdMappingOffset
);
break;
case EIORT_NODE_SMMUV3:
case Iort_Node_SMMUV3:
DumpIortNodeSmmuV3 (
NodePtr,
*IortNodeLength,
@ -703,7 +703,7 @@ ParseAcpiIort (
*IortIdMappingOffset
);
break;
case EIORT_NODE_PMCG:
case Iort_Node_PMCG:
DumpIortNodePmcg (
NodePtr,
*IortNodeLength,

View File

@ -197,7 +197,9 @@ ParseAcpiMadt (
{
UINT32 Offset;
UINT8* InterruptContollerPtr;
UINT32 GICDCount = 0;
UINT32 GICDCount;
GICDCount = 0;
if (!Trace) {
return;

View File

@ -88,7 +88,10 @@ ValidateRsdtAddress (
// Root System Description Pointer (RSDP), ACPI ? 5.2.5.
// - Within the RSDP, the RsdtAddress field must be null (zero) and the
// XsdtAddresss MUST be a valid, non-null, 64-bit value.
UINT32 RsdtAddr = *(UINT32*)Ptr;
UINT32 RsdtAddr;
RsdtAddr = *(UINT32*)Ptr;
if (RsdtAddr != 0) {
IncrementErrorCount ();
Print (
@ -120,7 +123,10 @@ ValidateXsdtAddress (
// Root System Description Pointer (RSDP), ACPI ? 5.2.5.
// - Within the RSDP, the RsdtAddress field must be null (zero) and the
// XsdtAddresss MUST be a valid, non-null, 64-bit value.
UINT64 XsdtAddr = *(UINT64*)Ptr;
UINT64 XsdtAddr;
XsdtAddr = *(UINT64*)Ptr;
if (XsdtAddr == 0) {
IncrementErrorCount ();
Print (

View File

@ -63,8 +63,8 @@ ParseAcpiSlit (
)
{
UINT32 Offset;
UINT64 i;
UINT64 j;
UINT64 Count;
UINT64 Index;
UINT64 LocalityCount;
UINT8* LocalityPtr;
CHAR16 Buffer[80]; // Used for AsciiName param of ParseAcpi
@ -98,46 +98,46 @@ ParseAcpiSlit (
PrintFieldName (0, Buffer);
Print (L"\n");
Print (L" ");
for (j = 0; j < LocalityCount; j++) {
Print (L" (%3d) ", j);
for (Index = 0; Index < LocalityCount; Index++) {
Print (L" (%3d) ", Index);
}
Print (L"\n");
for (i = 0; i < LocalityCount; i++) {
Print (L" (%3d) ", i);
for (j = 0; j < LocalityCount; j++) {
Print (L" %3d ", SLIT_ELEMENT (LocalityPtr, i, j));
for (Count = 0; Count< LocalityCount; Count++) {
Print (L" (%3d) ", Count);
for (Index = 0; Index < LocalityCount; Index++) {
Print (L" %3d ", SLIT_ELEMENT (LocalityPtr, Count, Index));
}
Print (L"\n");
}
}
// Validate
for (i = 0; i < LocalityCount; i++) {
for (j = 0; j < LocalityCount; j++) {
for (Count = 0; Count < LocalityCount; Count++) {
for (Index = 0; Index < LocalityCount; Index++) {
// Element[x][x] must be equal to 10
if ((i == j) && (SLIT_ELEMENT (LocalityPtr, i, j) != 10)) {
if ((Count == Index) && (SLIT_ELEMENT (LocalityPtr, Count,Index) != 10)) {
IncrementErrorCount ();
Print (
L"ERROR: Diagonal Element[0x%lx][0x%lx] (%3d)."
" Normalized Value is not 10\n",
i,
j,
SLIT_ELEMENT (LocalityPtr, i, j)
Count,
Index,
SLIT_ELEMENT (LocalityPtr, Count, Index)
);
}
// Element[i][j] must be equal to Element[j][i]
if (SLIT_ELEMENT (LocalityPtr, i, j) !=
SLIT_ELEMENT (LocalityPtr, j, i)) {
if (SLIT_ELEMENT (LocalityPtr, Count, Index) !=
SLIT_ELEMENT (LocalityPtr, Index, Count)) {
IncrementErrorCount ();
Print (
L"ERROR: Relative distances for Element[0x%lx][0x%lx] (%3d) and \n"
"Element[0x%lx][0x%lx] (%3d) do not match.\n",
i,
j,
SLIT_ELEMENT (LocalityPtr, i, j),
j,
i,
SLIT_ELEMENT (LocalityPtr, j, i)
Count,
Index,
SLIT_ELEMENT (LocalityPtr, Count, Index),
Index,
Count,
SLIT_ELEMENT (LocalityPtr, Index, Count)
);
}
}

View File

@ -98,7 +98,10 @@ ValidateInterruptType (
)
{
#if defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64)
UINT8 InterruptType = *Ptr;
UINT8 InterruptType;
InterruptType = *Ptr;
if (InterruptType !=
EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERRUPT_TYPE_GIC) {
IncrementErrorCount ();
@ -126,7 +129,10 @@ ValidateIrq (
)
{
#if defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64)
UINT8 Irq = *Ptr;
UINT8 Irq;
Irq = *Ptr;
if (Irq != 0) {
IncrementErrorCount ();
Print (

View File

@ -177,7 +177,10 @@ DumpSratApicProximity (
IN UINT8* Ptr
)
{
UINT32 ProximityDomain = Ptr[0] | (Ptr[1] << 8) | (Ptr[2] << 16);
UINT32 ProximityDomain;
ProximityDomain = Ptr[0] | (Ptr[1] << 8) | (Ptr[2] << 16);
Print (Format, ProximityDomain);
}
@ -210,13 +213,19 @@ ParseAcpiSrat (
{
UINT32 Offset;
UINT8* ResourcePtr;
UINT32 GicCAffinityIndex = 0;
UINT32 GicITSAffinityIndex = 0;
UINT32 MemoryAffinityIndex = 0;
UINT32 ApicSapicAffinityIndex = 0;
UINT32 X2ApicAffinityIndex = 0;
UINT32 GicCAffinityIndex;
UINT32 GicITSAffinityIndex;
UINT32 MemoryAffinityIndex;
UINT32 ApicSapicAffinityIndex;
UINT32 X2ApicAffinityIndex;
CHAR8 Buffer[80]; // Used for AsciiName param of ParseAcpi
GicCAffinityIndex = 0;
GicITSAffinityIndex = 0;
MemoryAffinityIndex = 0;
ApicSapicAffinityIndex = 0;
X2ApicAffinityIndex = 0;
if (!Trace) {
return;
}

View File

@ -64,7 +64,10 @@ RegisterAllParsers (
)
{
EFI_STATUS Status;
UINTN Count = sizeof (ParserList) / sizeof (ParserList[0]);
UINTN Count;
Count = sizeof (ParserList) / sizeof (ParserList[0]);
while (Count-- != 0) {
Status = RegisterParser (
ParserList[Count].Signature,

View File

@ -27,6 +27,9 @@
UefiShellAcpiViewCommandLib.uni
UefiShellAcpiViewCommandLib.c
UefiShellAcpiViewCommandLib.h
AcpiParser.h
AcpiTableParser.h
AcpiView.h
AcpiParser.c
AcpiTableParser.c
AcpiView.c