public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Edward Pickup" <edward.pickup@arm.com>
To: <devel@edk2.groups.io>
Cc: <ray.ni@intel.com>, <zhichao.gao@intel.com>,
	<sami.mujawar@arm.com>, <nd@arm.com>
Subject: [PATCH v1-resend 1/1] ShellPkg: Add revision check for DSDT Header on Arm
Date: Wed, 20 Jul 2022 09:59:49 +0100	[thread overview]
Message-ID: <20220720085949.11532-1-edward.pickup@arm.com> (raw)

Bugzilla: 3995 (https://bugzilla.tianocore.org/show_bug.cgi?id=3995)

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.

Arm Base boot requirements state that platforms must conform to ACPI 6.3
or later, and that legacy tables are not supported.

Adds a check for this field and raise warning if revision is less
than 2 on arm.

Signed-off-by: Edward Pickup <edward.pickup@arm.com>
---

The changes can be seen at https://github.com/edpickup/edk2/tree/2073_add_DSDT_revision_check_v1_resend

Notes:
    v1:
      - Resending with rebase and bugzilla id
      - No code changes since previous submit.
        Ref: https://edk2.groups.io/g/devel/message/89378

 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")


                 reply	other threads:[~2022-07-20  9:00 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=20220720085949.11532-1-edward.pickup@arm.com \
    --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