diff options
Diffstat (limited to 'ShellPkg')
3 files changed, 136 insertions, 4 deletions
diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiView.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiView.c index de0851dd5f..49c2e87c43 100644 --- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiView.c +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiView.c @@ -1,6 +1,6 @@ /** @file
- Copyright (c) 2016 - 2019, ARM Limited. All rights reserved.
+ Copyright (c) 2016 - 2020, ARM Limited. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
@@ -27,6 +27,8 @@ STATIC UINT32 mTableCount; STATIC UINT32 mBinTableCount;
STATIC BOOLEAN mConsistencyCheck;
STATIC BOOLEAN mColourHighlighting;
+STATIC BOOLEAN mMandatoryTableValidate;
+STATIC UINTN mMandatoryTableSpec;
/**
An array of acpiview command line parameters.
@@ -37,6 +39,7 @@ STATIC CONST SHELL_PARAM_ITEM ParamList[] = { {L"-h", TypeFlag},
{L"-l", TypeFlag},
{L"-s", TypeValue},
+ {L"-r", TypeValue},
{NULL, TypeMax}
};
@@ -95,6 +98,60 @@ SetConsistencyChecking ( }
/**
+ This function returns the ACPI table requirements validation flag.
+
+ @retval TRUE if check for mandatory table presence should be performed.
+**/
+BOOLEAN
+GetMandatoryTableValidate (
+ VOID
+ )
+{
+ return mMandatoryTableValidate;
+}
+
+/**
+ This function sets the ACPI table requirements validation flag.
+
+ @param Validate Enable/Disable ACPI table requirements validation.
+**/
+VOID
+SetMandatoryTableValidate (
+ BOOLEAN Validate
+ )
+{
+ mMandatoryTableValidate = Validate;
+}
+
+/**
+ This function returns the identifier of specification to validate ACPI table
+ requirements against.
+
+ @return ID of specification listing mandatory tables.
+**/
+UINTN
+GetMandatoryTableSpec (
+ VOID
+ )
+{
+ return mMandatoryTableSpec;
+}
+
+/**
+ This function sets the identifier of specification to validate ACPI table
+ requirements against.
+
+ @param Spec ID of specification listing mandatory tables.
+**/
+VOID
+SetMandatoryTableSpec (
+ UINTN Spec
+ )
+{
+ mMandatoryTableSpec = Spec;
+}
+
+/**
This function returns the report options.
@retval Returns the report option.
@@ -470,6 +527,7 @@ ShellCommandRunAcpiView ( LIST_ENTRY* Package;
CHAR16* ProblemParam;
SHELL_FILE_HANDLE TmpDumpFileHandle;
+ CONST CHAR16* MandatoryTableSpecStr;
// Set Defaults
mReportType = ReportAll;
@@ -479,6 +537,8 @@ ShellCommandRunAcpiView ( mSelectedAcpiTableName = NULL;
mSelectedAcpiTableFound = FALSE;
mConsistencyCheck = TRUE;
+ mMandatoryTableValidate = FALSE;
+ mMandatoryTableSpec = 0;
ShellStatus = SHELL_SUCCESS;
Package = NULL;
@@ -537,6 +597,18 @@ ShellCommandRunAcpiView ( L"-s"
);
ShellStatus = SHELL_INVALID_PARAMETER;
+ } else if (ShellCommandLineGetFlag (Package, L"-r") &&
+ ShellCommandLineGetValue (Package, L"-r") == NULL) {
+ ShellPrintHiiEx (
+ -1,
+ -1,
+ NULL,
+ STRING_TOKEN (STR_GEN_NO_VALUE),
+ gShellAcpiViewHiiHandle,
+ L"acpiview",
+ L"-r"
+ );
+ ShellStatus = SHELL_INVALID_PARAMETER;
} else if ((ShellCommandLineGetFlag (Package, L"-s") &&
ShellCommandLineGetFlag (Package, L"-l"))) {
ShellPrintHiiEx (
@@ -568,6 +640,14 @@ ShellCommandRunAcpiView ( // Surpress consistency checking if requested
SetConsistencyChecking (!ShellCommandLineGetFlag (Package, L"-q"));
+ // Evaluate the parameters for mandatory ACPI table presence checks
+ SetMandatoryTableValidate (ShellCommandLineGetFlag (Package, L"-r"));
+ MandatoryTableSpecStr = ShellCommandLineGetValue (Package, L"-r");
+
+ if (MandatoryTableSpecStr != NULL) {
+ SetMandatoryTableSpec (ShellHexStrToUintn (MandatoryTableSpecStr));
+ }
+
if (ShellCommandLineGetFlag (Package, L"-l")) {
mReportType = ReportTableList;
} else {
diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiView.h b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiView.h index b5cb274ecb..be65564c86 100644 --- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiView.h +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiView.h @@ -1,7 +1,7 @@ /** @file
Header file for AcpiView
- Copyright (c) 2016 - 2019, ARM Limited. All rights reserved.
+ Copyright (c) 2016 - 2020, ARM Limited. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
@@ -113,6 +113,48 @@ SetConsistencyChecking ( );
/**
+ This function returns the ACPI table requirements validation flag.
+
+ @retval TRUE if check for mandatory table presence should be performed.
+**/
+BOOLEAN
+GetMandatoryTableValidate (
+ VOID
+ );
+
+/**
+ This function sets the ACPI table requirements validation flag.
+
+ @param Validate Enable/Disable ACPI table requirements validation.
+**/
+VOID
+SetMandatoryTableValidate (
+ BOOLEAN Validate
+ );
+
+/**
+ This function returns the identifier of specification to validate ACPI table
+ requirements against.
+
+ @return ID of specification listing mandatory tables.
+**/
+UINTN
+GetMandatoryTableSpec (
+ VOID
+ );
+
+/**
+ This function sets the identifier of specification to validate ACPI table
+ requirements against.
+
+ @param Spec ID of specification listing mandatory tables.
+**/
+VOID
+SetMandatoryTableSpec (
+ UINTN Spec
+ );
+
+/**
This function processes the table reporting options for the ACPI table.
@param [in] Signature The ACPI table Signature.
diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommandLib.uni b/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommandLib.uni index 1f07b7ae20..7cd43d0518 100644 --- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommandLib.uni +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommandLib.uni @@ -1,6 +1,6 @@ // /**
//
-// Copyright (c) 2016 - 2019, ARM Limited. All rights reserved.<BR>
+// Copyright (c) 2016 - 2020, ARM Limited. All rights reserved.<BR>
// SPDX-License-Identifier: BSD-2-Clause-Patent
//
// Module Name:
@@ -30,7 +30,7 @@ "Display ACPI Table information.\r\n"
".SH SYNOPSIS\r\n"
" \r\n"
-"ACPIVIEW [[-?] | [[-l] | [-s AcpiTable [-d]]] [-q] [-h]]\r\n"
+"ACPIVIEW [[-?] | [[[[-l] | [-s AcpiTable [-d]]] [-q] [-h]] [-r Spec]]]\r\n"
" \r\n"
".SH OPTIONS\r\n"
" \r\n"
@@ -41,6 +41,12 @@ " -d - Generate a binary file dump of the specified AcpiTable.\r\n"
" -q - Quiet. Suppress errors and warnings. Disables consistency checks.\r\n"
" -h - Enable colour highlighting.\r\n"
+" -r - Validate that all required ACPI tables are installed\r\n"
+" Spec : Specification to validate against.\r\n"
+" For Arm, the possible values are:\r\n"
+" 0 - Server Base Boot Requirements v1.0\r\n"
+" 1 - Server Base Boot Requirements v1.1\r\n"
+" 2 - Server Base Boot Requirements v1.2\r\n"
" -? - Show help.\r\n"
" \r\n"
".SH DESCRIPTION\r\n"
@@ -118,6 +124,10 @@ " * To display contents of all ACPI tables:\r\n"
" fs0:\> acpiview\r\n"
" \r\n"
+" * To check if all Server Base Boot Requirements (SBBR) v1.2 mandatory\r\n"
+" ACPI tables are installed (Arm only):\r\n"
+" fs0:\> acpiview -r 2\r\n"
+" \r\n"
".SH RETURNVALUES\r\n"
" \r\n"
"RETURN VALUES:\r\n"
|