From: Edward <edward.pic...@arm.com> ACPI 6.4 spec states that if the revision field in the DSDT header is less than 2, then all integers are restricted in width to 32 bits, including in SSDTs. Adds a check for this field and raise warning if revision is less than 2.
Signed-off-by: Edward Pickup <edward.pic...@arm.com> --- The changes can be seen at https://github.com/edpickup/edk2/tree/2073_add_DSDT_revision_check_v1 ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Dsdt/DsdtParser.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Dsdt/DsdtParser.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Dsdt/DsdtParser.c index e75e4622239ed03b171adc92d32b5eeb75a8edef..7f30a8409bb711d4edf77ed04319c628ef8aea73 100644 --- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Dsdt/DsdtParser.c +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Dsdt/DsdtParser.c @@ -1,7 +1,7 @@ /** @file DSDT table parser - Copyright (c) 2016 - 2018, ARM Limited. All rights reserved. + Copyright (c) 2016 - 2022, ARM Limited. All rights reserved. SPDX-License-Identifier: BSD-2-Clause-Patent @par Reference(s): @@ -39,4 +39,20 @@ ParseAcpiDsdt ( } DumpAcpiHeader (Ptr); + + // As per 19.6.29 in the version 6.4 of the ACPI spec, a revision less than 2 + // restricts integers to 32 bit width. This may not be intended, raise a + // warning + #if defined (MDE_CPU_AARCH64) || defined (MDE_CPU_ARM) + if (AcpiTableRevision < 2) { + IncrementWarningCount (); + Print ( + L"WARNING: DSDT Table Revision less than 2. Integer width restricted to " + L"32 bits. Table Revision = %d.\n", + AcpiTableRevision + ); + return; + } + + #endif } -- Guid("CE165669-3EF3-493F-B85D-6190EE5B9759") -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#89378): https://edk2.groups.io/g/devel/message/89378 Mute This Topic: https://groups.io/mt/90755264/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-