Update to 20240322 and remove support for big-endian architectures
As s390x was the only one remaining, it has now been excluded. This was best done with an update of the source tree to match upstream. This is turn caused additional patch updates. With s390x gone, all of the big-endian patches can be removed, simplifying things enormously. This is the biggest change. Several other patches that are no longer needed due to changes in Fedora builds (ld flags, for example), or that are no longer needed (such as armv7) have also been removed. Added three new patches to fix problems with dumping various tables, and removed all the remaining patches that no longer serve a purpose. Thanks to the contributors for PR#4 and PR#5 for the suggestions. These have all been incorporated even if they are not in exactly the same form. Signed-off-by: Al Stone <ahs3@ahs3.net> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
parent
f7b51c7ebc
commit
1b78585135
6
.gitignore
vendored
6
.gitignore
vendored
@ -156,3 +156,9 @@ series
|
||||
/acpitests-unix-20211217.tar.gz
|
||||
/acpica-unix2-20220331.tar.gz
|
||||
/acpitests-unix-20220331.tar.gz
|
||||
/acpica-unix2-20230331.tar.gz
|
||||
/acpitests-unix-20230331.tar.gz
|
||||
/acpica-unix2-20240321.tar.gz
|
||||
/acpitests-unix-20240321.tar.gz
|
||||
/acpica-unix2-20240322.tar.gz
|
||||
/acpitests-unix-20240322.tar.gz
|
||||
|
@ -1,530 +0,0 @@
|
||||
From 4594630ec2e6a33efce3047a86b08fa170b75848 Mon Sep 17 00:00:00 2001
|
||||
From: Al Stone <ahs3@redhat.com>
|
||||
Date: Thu, 15 Oct 2020 11:53:33 -0600
|
||||
Subject: [PATCH 01/45] Add in basic infrastructure for big-endian support
|
||||
|
||||
This adds in some basic functions -- AcpiUtReadUint32(), for example,
|
||||
to read a UINT32 value in little-endian form and return it in host-native
|
||||
format -- along with AcpiUtWriteUint() that writes out an integer in
|
||||
host-native format as a little-endian value.
|
||||
|
||||
But, to do that, I'm adding the functions in a new file: utendian.c. So,
|
||||
the header files need fixing, and the makefiles need to be sure to compile
|
||||
the new code. Further, UtIsBigEndianMachine() needed to be moved out of
|
||||
compiler/aslutils.c so it could be used in the new functions and avoid
|
||||
having to do some conditional compilation depending on endian-ness.
|
||||
|
||||
However, this sets things up for the future, where endian-aware code can
|
||||
be added as the need is uncovered. For now, these functions cover all of
|
||||
the cases I know about.
|
||||
|
||||
Signed-off-by: Al Stone <ahs3@redhat.com>
|
||||
---
|
||||
generate/unix/acpibin/Makefile | 1 +
|
||||
generate/unix/acpidump/Makefile | 1 +
|
||||
generate/unix/acpiexamples/Makefile | 1 +
|
||||
generate/unix/acpiexec/Makefile | 1 +
|
||||
generate/unix/acpihelp/Makefile | 1 +
|
||||
generate/unix/iasl/Makefile | 1 +
|
||||
source/compiler/aslcompiler.h | 4 -
|
||||
source/compiler/aslutils.c | 27 ---
|
||||
source/components/utilities/utendian.c | 236 +++++++++++++++++++++++++
|
||||
source/include/acmacros.h | 56 ------
|
||||
source/include/acutils.h | 32 ++++
|
||||
source/include/platform/aclinux.h | 1 +
|
||||
12 files changed, 275 insertions(+), 87 deletions(-)
|
||||
create mode 100644 source/components/utilities/utendian.c
|
||||
|
||||
Index: acpica-unix2-20220331/generate/unix/acpibin/Makefile
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/generate/unix/acpibin/Makefile
|
||||
+++ acpica-unix2-20220331/generate/unix/acpibin/Makefile
|
||||
@@ -37,6 +37,7 @@ OBJECTS = \
|
||||
$(OBJDIR)/utcache.o\
|
||||
$(OBJDIR)/utdebug.o\
|
||||
$(OBJDIR)/utdecode.o\
|
||||
+ $(OBJDIR)/utendian.o\
|
||||
$(OBJDIR)/utexcep.o\
|
||||
$(OBJDIR)/utglobal.o\
|
||||
$(OBJDIR)/utlock.o\
|
||||
Index: acpica-unix2-20220331/generate/unix/acpidump/Makefile
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/generate/unix/acpidump/Makefile
|
||||
+++ acpica-unix2-20220331/generate/unix/acpidump/Makefile
|
||||
@@ -36,6 +36,7 @@ OBJECTS = \
|
||||
$(OBJDIR)/osunixdir.o\
|
||||
$(OBJDIR)/osunixmap.o\
|
||||
$(OBJDIR)/osunixxf.o\
|
||||
+ $(OBJDIR)/utendian.o\
|
||||
$(OBJDIR)/tbprint.o\
|
||||
$(OBJDIR)/tbxfroot.o\
|
||||
$(OBJDIR)/utascii.o\
|
||||
Index: acpica-unix2-20220331/generate/unix/acpiexamples/Makefile
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/generate/unix/acpiexamples/Makefile
|
||||
+++ acpica-unix2-20220331/generate/unix/acpiexamples/Makefile
|
||||
@@ -139,6 +139,7 @@ OBJECTS = \
|
||||
$(OBJDIR)/utdebug.o\
|
||||
$(OBJDIR)/utdecode.o\
|
||||
$(OBJDIR)/utdelete.o\
|
||||
+ $(OBJDIR)/utendian.o\
|
||||
$(OBJDIR)/uterror.o\
|
||||
$(OBJDIR)/uteval.o\
|
||||
$(OBJDIR)/utexcep.o\
|
||||
Index: acpica-unix2-20220331/generate/unix/acpiexec/Makefile
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/generate/unix/acpiexec/Makefile
|
||||
+++ acpica-unix2-20220331/generate/unix/acpiexec/Makefile
|
||||
@@ -214,6 +214,7 @@ OBJECTS = \
|
||||
$(OBJDIR)/utdebug.o\
|
||||
$(OBJDIR)/utdecode.o\
|
||||
$(OBJDIR)/utdelete.o\
|
||||
+ $(OBJDIR)/utendian.o\
|
||||
$(OBJDIR)/uterror.o\
|
||||
$(OBJDIR)/uteval.o\
|
||||
$(OBJDIR)/utexcep.o\
|
||||
Index: acpica-unix2-20220331/generate/unix/acpihelp/Makefile
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/generate/unix/acpihelp/Makefile
|
||||
+++ acpica-unix2-20220331/generate/unix/acpihelp/Makefile
|
||||
@@ -45,6 +45,7 @@ OBJECTS = \
|
||||
$(OBJDIR)/getopt.o\
|
||||
$(OBJDIR)/osunixxf.o\
|
||||
$(OBJDIR)/utdebug.o\
|
||||
+ $(OBJDIR)/utendian.o\
|
||||
$(OBJDIR)/utexcep.o\
|
||||
$(OBJDIR)/utglobal.o\
|
||||
$(OBJDIR)/uthex.o\
|
||||
Index: acpica-unix2-20220331/generate/unix/iasl/Makefile
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/generate/unix/iasl/Makefile
|
||||
+++ acpica-unix2-20220331/generate/unix/iasl/Makefile
|
||||
@@ -225,6 +225,7 @@ OBJECTS = \
|
||||
$(OBJDIR)/utdebug.o\
|
||||
$(OBJDIR)/utdecode.o\
|
||||
$(OBJDIR)/utdelete.o\
|
||||
+ $(OBJDIR)/utendian.o\
|
||||
$(OBJDIR)/uterror.o\
|
||||
$(OBJDIR)/utexcep.o\
|
||||
$(OBJDIR)/utglobal.o\
|
||||
Index: acpica-unix2-20220331/source/compiler/aslcompiler.h
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/compiler/aslcompiler.h
|
||||
+++ acpica-unix2-20220331/source/compiler/aslcompiler.h
|
||||
@@ -1120,10 +1120,6 @@ BOOLEAN
|
||||
UtIsIdInteger (
|
||||
UINT8 *Target);
|
||||
|
||||
-UINT8
|
||||
-UtIsBigEndianMachine (
|
||||
- void);
|
||||
-
|
||||
BOOLEAN
|
||||
UtQueryForOverwrite (
|
||||
char *Pathname);
|
||||
Index: acpica-unix2-20220331/source/compiler/aslutils.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/compiler/aslutils.c
|
||||
+++ acpica-unix2-20220331/source/compiler/aslutils.c
|
||||
@@ -73,33 +73,6 @@ UtDisplayErrorSummary (
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
- * FUNCTION: UtIsBigEndianMachine
|
||||
- *
|
||||
- * PARAMETERS: None
|
||||
- *
|
||||
- * RETURN: TRUE if machine is big endian
|
||||
- * FALSE if machine is little endian
|
||||
- *
|
||||
- * DESCRIPTION: Detect whether machine is little endian or big endian.
|
||||
- *
|
||||
- ******************************************************************************/
|
||||
-
|
||||
-UINT8
|
||||
-UtIsBigEndianMachine (
|
||||
- void)
|
||||
-{
|
||||
- union {
|
||||
- UINT32 Integer;
|
||||
- UINT8 Bytes[4];
|
||||
- } Overlay = {0xFF000000};
|
||||
-
|
||||
-
|
||||
- return (Overlay.Bytes[0]); /* Returns 0xFF (TRUE) for big endian */
|
||||
-}
|
||||
-
|
||||
-
|
||||
-/*******************************************************************************
|
||||
- *
|
||||
* FUNCTION: UtIsIdInteger
|
||||
*
|
||||
* PARAMETERS: Pointer to an ACPI ID (HID, CID) string
|
||||
Index: acpica-unix2-20220331/source/components/utilities/utendian.c
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ acpica-unix2-20220331/source/components/utilities/utendian.c
|
||||
@@ -0,0 +1,236 @@
|
||||
+/******************************************************************************
|
||||
+ *
|
||||
+ * Module Name: utendian -- byte swapping support for other-endianness
|
||||
+ *
|
||||
+ *****************************************************************************/
|
||||
+
|
||||
+/*****************************************************************************
|
||||
+ *
|
||||
+ * Copyright (c) 2020, Al Stone <ahs3@redhat.com>
|
||||
+ *
|
||||
+ * Redistribution and use in source and binary forms, with or without
|
||||
+ * modification, are permitted provided that the following conditions
|
||||
+ * are met:
|
||||
+ * 1. Redistributions of source code must retain the above copyright
|
||||
+ * notice, this list of conditions, and the following disclaimer,
|
||||
+ * without modification.
|
||||
+ * 2. Redistributions in binary form must reproduce at minimum a disclaimer
|
||||
+ * substantially similar to the "NO WARRANTY" disclaimer below
|
||||
+ * ("Disclaimer") and any redistribution must be conditioned upon
|
||||
+ * including a substantially similar Disclaimer requirement for further
|
||||
+ * binary redistribution.
|
||||
+ * 3. Neither the names of the above-listed copyright holders nor the names
|
||||
+ * of any contributors may be used to endorse or promote products derived
|
||||
+ * from this software without specific prior written permission.
|
||||
+ *
|
||||
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
+ *
|
||||
+ * Alternatively, you may choose to be licensed under the terms of the
|
||||
+ * GNU General Public License ("GPL") version 2 as published by the Free
|
||||
+ * Software Foundation.
|
||||
+ *
|
||||
+ *****************************************************************************/
|
||||
+
|
||||
+#include "acpi.h"
|
||||
+#include "accommon.h"
|
||||
+
|
||||
+#define _COMPONENT ACPI_COMPILER
|
||||
+ ACPI_MODULE_NAME ("utendian")
|
||||
+
|
||||
+/*
|
||||
+ * Endianness support functions.
|
||||
+ *
|
||||
+ * Ultimately, everything in ACPI tables or AML must be in little-endian
|
||||
+ * format. However, we sometimes find it necessary to run on a big-endian
|
||||
+ * machine and create or read those little-endian values. This is a small
|
||||
+ * libary of functions to make that easier, and more visible.
|
||||
+ *
|
||||
+ */
|
||||
+
|
||||
+/*******************************************************************************
|
||||
+ *
|
||||
+ * FUNCTION: UtIsBigEndianMachine
|
||||
+ *
|
||||
+ * PARAMETERS: None
|
||||
+ *
|
||||
+ * RETURN: TRUE if machine is big endian
|
||||
+ * FALSE if machine is little endian
|
||||
+ *
|
||||
+ * DESCRIPTION: Detect whether machine is little endian or big endian.
|
||||
+ *
|
||||
+ ******************************************************************************/
|
||||
+
|
||||
+UINT8
|
||||
+UtIsBigEndianMachine (
|
||||
+ void)
|
||||
+{
|
||||
+ union {
|
||||
+ UINT32 Integer;
|
||||
+ UINT8 Bytes[4];
|
||||
+ } Overlay = {0xFF000000};
|
||||
+
|
||||
+
|
||||
+ return (Overlay.Bytes[0]); /* Returns 0xFF (TRUE) for big endian */
|
||||
+}
|
||||
+
|
||||
+
|
||||
+/*******************************************************************************
|
||||
+ *
|
||||
+ * FUNCTION: AcpiUtReadUint16
|
||||
+ *
|
||||
+ * PARAMETERS: Src - location containing the little-endian
|
||||
+ * value
|
||||
+ *
|
||||
+ * RETURN: UINT16 value in host-native form
|
||||
+ *
|
||||
+ * DESCRIPTION: Read a UINT16 little-endian value from a given location
|
||||
+ * and return it in host-native form
|
||||
+ *
|
||||
+ ******************************************************************************/
|
||||
+
|
||||
+UINT16
|
||||
+AcpiUtReadUint16 (
|
||||
+ void *SrcPtr)
|
||||
+{
|
||||
+ UINT16 Result = 0;
|
||||
+ UINT8 *Dst = (UINT8 *) &Result;
|
||||
+ UINT8 *Src = (UINT8 *) SrcPtr;
|
||||
+
|
||||
+ if (!UtIsBigEndianMachine())
|
||||
+ {
|
||||
+ return (*(UINT16 *) SrcPtr);
|
||||
+ }
|
||||
+
|
||||
+ Dst[0] = Src[1];
|
||||
+ Dst[1] = Src[0];
|
||||
+
|
||||
+ return (Result);
|
||||
+}
|
||||
+
|
||||
+/*******************************************************************************
|
||||
+ *
|
||||
+ * FUNCTION: AcpiUtReadUint32
|
||||
+ *
|
||||
+ * PARAMETERS: Src - location containing the little-endian
|
||||
+ * value
|
||||
+ *
|
||||
+ * RETURN: UINT32 value in host-native form
|
||||
+ *
|
||||
+ * DESCRIPTION: Read a UINT32 little-endian value from a given location
|
||||
+ * and return it in host-native form
|
||||
+ *
|
||||
+ ******************************************************************************/
|
||||
+
|
||||
+UINT32
|
||||
+AcpiUtReadUint32 (
|
||||
+ void *SrcPtr)
|
||||
+{
|
||||
+ UINT32 Result = 0;
|
||||
+ UINT8 *Dst = (UINT8 *) &Result;
|
||||
+ UINT8 *Src = (UINT8 *) SrcPtr;
|
||||
+
|
||||
+ if (!UtIsBigEndianMachine())
|
||||
+ {
|
||||
+ return (*(UINT32 *) SrcPtr);
|
||||
+ }
|
||||
+
|
||||
+ Dst[0] = Src[3];
|
||||
+ Dst[1] = Src[2];
|
||||
+ Dst[2] = Src[1];
|
||||
+ Dst[3] = Src[0];
|
||||
+
|
||||
+ return (Result);
|
||||
+}
|
||||
+
|
||||
+/*******************************************************************************
|
||||
+ *
|
||||
+ * FUNCTION: AcpiUtReadUint64
|
||||
+ *
|
||||
+ * PARAMETERS: Src - location containing the little-endian
|
||||
+ * value
|
||||
+ *
|
||||
+ * RETURN: UINT64 value in host-native form
|
||||
+ *
|
||||
+ * DESCRIPTION: Read a UINT64 little-endian value from a given location
|
||||
+ * and return it in host-native form
|
||||
+ *
|
||||
+ ******************************************************************************/
|
||||
+
|
||||
+UINT64
|
||||
+AcpiUtReadUint64 (
|
||||
+ void *SrcPtr)
|
||||
+{
|
||||
+ UINT64 Result = 0;
|
||||
+ UINT8 *Dst = (UINT8 *) &Result;
|
||||
+ UINT8 *Src = (UINT8 *) SrcPtr;
|
||||
+
|
||||
+ if (!UtIsBigEndianMachine())
|
||||
+ {
|
||||
+ return (*(UINT64 *) SrcPtr);
|
||||
+ }
|
||||
+
|
||||
+ Dst[0] = Src[7];
|
||||
+ Dst[1] = Src[6];
|
||||
+ Dst[2] = Src[5];
|
||||
+ Dst[3] = Src[4];
|
||||
+ Dst[4] = Src[3];
|
||||
+ Dst[5] = Src[2];
|
||||
+ Dst[6] = Src[1];
|
||||
+ Dst[7] = Src[0];
|
||||
+
|
||||
+ return (Result);
|
||||
+}
|
||||
+
|
||||
+/*******************************************************************************
|
||||
+ *
|
||||
+ * FUNCTION: AcpiUtWriteUint
|
||||
+ *
|
||||
+ * PARAMETERS: DstPtr - where to place the retrieved value
|
||||
+ * DstLength - space in bytes for this int type
|
||||
+ * SrcPtr - where the little-endian value lives
|
||||
+ * SrcLength - space in bytes for this int type
|
||||
+ *
|
||||
+ * RETURN: None.
|
||||
+ *
|
||||
+ * DESCRIPTION: Write a host-native integer value of the given size, and
|
||||
+ * store it in the location specified in little-endian form.
|
||||
+ * Given the amount of integer type casting done, this general
|
||||
+ * version seems the most useful (vs 32->32, 32->16, 16->32,
|
||||
+ * ad infinitum)
|
||||
+ *
|
||||
+ ******************************************************************************/
|
||||
+
|
||||
+void
|
||||
+AcpiUtWriteUint (
|
||||
+ void *DstPtr,
|
||||
+ int DstLength,
|
||||
+ const void *SrcPtr,
|
||||
+ const int SrcLength)
|
||||
+{
|
||||
+ UINT8 *Dst = (UINT8 *) DstPtr;
|
||||
+ UINT8 *Src = (UINT8 *) SrcPtr;
|
||||
+ int Length;
|
||||
+ int ii;
|
||||
+
|
||||
+ if (!UtIsBigEndianMachine())
|
||||
+ {
|
||||
+ Length = SrcLength > DstLength ? DstLength : SrcLength;
|
||||
+ memcpy (Dst, Src, Length);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ Length = SrcLength >= DstLength ? DstLength : SrcLength;
|
||||
+ for (ii = 0; ii < Length; ii++)
|
||||
+ Dst[ii] = Src[SrcLength - ii - 1];
|
||||
+
|
||||
+}
|
||||
Index: acpica-unix2-20220331/source/include/acmacros.h
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/include/acmacros.h
|
||||
+++ acpica-unix2-20220331/source/include/acmacros.h
|
||||
@@ -76,61 +76,6 @@
|
||||
* If the hardware supports the transfer of unaligned data, just do the store.
|
||||
* Otherwise, we have to move one byte at a time.
|
||||
*/
|
||||
-#ifdef ACPI_BIG_ENDIAN
|
||||
-/*
|
||||
- * Macros for big-endian machines
|
||||
- */
|
||||
-
|
||||
-/* These macros reverse the bytes during the move, converting little-endian to big endian */
|
||||
-
|
||||
- /* Big Endian <== Little Endian */
|
||||
- /* Hi...Lo Lo...Hi */
|
||||
-/* 16-bit source, 16/32/64 destination */
|
||||
-
|
||||
-#define ACPI_MOVE_16_TO_16(d, s) {(( UINT8 *)(void *)(d))[0] = ((UINT8 *)(void *)(s))[1];\
|
||||
- (( UINT8 *)(void *)(d))[1] = ((UINT8 *)(void *)(s))[0];}
|
||||
-
|
||||
-#define ACPI_MOVE_16_TO_32(d, s) {(*(UINT32 *)(void *)(d))=0;\
|
||||
- ((UINT8 *)(void *)(d))[2] = ((UINT8 *)(void *)(s))[1];\
|
||||
- ((UINT8 *)(void *)(d))[3] = ((UINT8 *)(void *)(s))[0];}
|
||||
-
|
||||
-#define ACPI_MOVE_16_TO_64(d, s) {(*(UINT64 *)(void *)(d))=0;\
|
||||
- ((UINT8 *)(void *)(d))[6] = ((UINT8 *)(void *)(s))[1];\
|
||||
- ((UINT8 *)(void *)(d))[7] = ((UINT8 *)(void *)(s))[0];}
|
||||
-
|
||||
-/* 32-bit source, 16/32/64 destination */
|
||||
-
|
||||
-#define ACPI_MOVE_32_TO_16(d, s) ACPI_MOVE_16_TO_16(d, s) /* Truncate to 16 */
|
||||
-
|
||||
-#define ACPI_MOVE_32_TO_32(d, s) {(( UINT8 *)(void *)(d))[0] = ((UINT8 *)(void *)(s))[3];\
|
||||
- (( UINT8 *)(void *)(d))[1] = ((UINT8 *)(void *)(s))[2];\
|
||||
- (( UINT8 *)(void *)(d))[2] = ((UINT8 *)(void *)(s))[1];\
|
||||
- (( UINT8 *)(void *)(d))[3] = ((UINT8 *)(void *)(s))[0];}
|
||||
-
|
||||
-#define ACPI_MOVE_32_TO_64(d, s) {(*(UINT64 *)(void *)(d))=0;\
|
||||
- ((UINT8 *)(void *)(d))[4] = ((UINT8 *)(void *)(s))[3];\
|
||||
- ((UINT8 *)(void *)(d))[5] = ((UINT8 *)(void *)(s))[2];\
|
||||
- ((UINT8 *)(void *)(d))[6] = ((UINT8 *)(void *)(s))[1];\
|
||||
- ((UINT8 *)(void *)(d))[7] = ((UINT8 *)(void *)(s))[0];}
|
||||
-
|
||||
-/* 64-bit source, 16/32/64 destination */
|
||||
-
|
||||
-#define ACPI_MOVE_64_TO_16(d, s) ACPI_MOVE_16_TO_16(d, s) /* Truncate to 16 */
|
||||
-
|
||||
-#define ACPI_MOVE_64_TO_32(d, s) ACPI_MOVE_32_TO_32(d, s) /* Truncate to 32 */
|
||||
-
|
||||
-#define ACPI_MOVE_64_TO_64(d, s) {(( UINT8 *)(void *)(d))[0] = ((UINT8 *)(void *)(s))[7];\
|
||||
- (( UINT8 *)(void *)(d))[1] = ((UINT8 *)(void *)(s))[6];\
|
||||
- (( UINT8 *)(void *)(d))[2] = ((UINT8 *)(void *)(s))[5];\
|
||||
- (( UINT8 *)(void *)(d))[3] = ((UINT8 *)(void *)(s))[4];\
|
||||
- (( UINT8 *)(void *)(d))[4] = ((UINT8 *)(void *)(s))[3];\
|
||||
- (( UINT8 *)(void *)(d))[5] = ((UINT8 *)(void *)(s))[2];\
|
||||
- (( UINT8 *)(void *)(d))[6] = ((UINT8 *)(void *)(s))[1];\
|
||||
- (( UINT8 *)(void *)(d))[7] = ((UINT8 *)(void *)(s))[0];}
|
||||
-#else
|
||||
-/*
|
||||
- * Macros for little-endian machines
|
||||
- */
|
||||
|
||||
#ifndef ACPI_MISALIGNMENT_NOT_SUPPORTED
|
||||
|
||||
@@ -193,7 +138,6 @@
|
||||
(( UINT8 *)(void *)(d))[6] = ((UINT8 *)(void *)(s))[6];\
|
||||
(( UINT8 *)(void *)(d))[7] = ((UINT8 *)(void *)(s))[7];}
|
||||
#endif
|
||||
-#endif
|
||||
|
||||
|
||||
/*
|
||||
Index: acpica-unix2-20220331/source/include/acutils.h
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/include/acutils.h
|
||||
+++ acpica-unix2-20220331/source/include/acutils.h
|
||||
@@ -1167,4 +1167,36 @@ AcpiUtConvertUuidToString (
|
||||
char *OutString);
|
||||
#endif
|
||||
|
||||
+
|
||||
+/*
|
||||
+ * utendian -- byte-swapping for big-endian support
|
||||
+ */
|
||||
+
|
||||
+UINT8
|
||||
+UtIsBigEndianMachine (
|
||||
+ void);
|
||||
+
|
||||
+#if defined(ACPI_ASL_COMPILER) || defined(ACPI_EXEC_APP) || \
|
||||
+ defined(ACPI_HELP_APP) || defined(ACPI_DUMP_APP) || \
|
||||
+ defined(ACPI_EXAMPLE_APP) || defined(ACPI_BIN_APP)
|
||||
+UINT32
|
||||
+AcpiUtReadUint32 (
|
||||
+ void *SrcPtr);
|
||||
+
|
||||
+UINT16
|
||||
+AcpiUtReadUint16 (
|
||||
+ void *SrcPtr);
|
||||
+
|
||||
+UINT64
|
||||
+AcpiUtReadUint64 (
|
||||
+ void *SrcPtr);
|
||||
+
|
||||
+void
|
||||
+AcpiUtWriteUint (
|
||||
+ void *DstPtr,
|
||||
+ int DstLength,
|
||||
+ const void *SrcPtr,
|
||||
+ const int SrcLength);
|
||||
+#endif
|
||||
+
|
||||
#endif /* _ACUTILS_H */
|
||||
Index: acpica-unix2-20220331/source/include/platform/aclinux.h
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/include/platform/aclinux.h
|
||||
+++ acpica-unix2-20220331/source/include/platform/aclinux.h
|
||||
@@ -203,6 +203,7 @@
|
||||
|
||||
#ifdef ACPI_USE_STANDARD_HEADERS
|
||||
#include <unistd.h>
|
||||
+#include <endian.h>
|
||||
#endif
|
||||
|
||||
/* Define/disable kernel-specific declarators */
|
34
0001-Correct-DBG2-dump-of-OemData.patch
Normal file
34
0001-Correct-DBG2-dump-of-OemData.patch
Normal file
@ -0,0 +1,34 @@
|
||||
From ec87f7e157a23078dc5458d6d26951fe4e2ac926 Mon Sep 17 00:00:00 2001
|
||||
From: Al Stone <ahs3@ahs3.net>
|
||||
Date: Wed, 14 Apr 2021 20:52:05 -0600
|
||||
Subject: [PATCH 1/2] Correct DBG2 dump of OemData
|
||||
|
||||
When OemData is present in a Device subtable, the original code was
|
||||
reading data to put in OemData from the beginning of the DBG2 table,
|
||||
not from the subtable that was being built. So, when dumping the
|
||||
table, read from the proper place (the subtable) and not the beginning
|
||||
of the DBG2 table.
|
||||
|
||||
Signed-off-by: Al Stone <ahs3@ahs3.net>
|
||||
---
|
||||
source/common/dmtbdump1.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/source/common/dmtbdump1.c b/source/common/dmtbdump1.c
|
||||
index bcf985325..56d959fd0 100644
|
||||
--- a/source/common/dmtbdump1.c
|
||||
+++ b/source/common/dmtbdump1.c
|
||||
@@ -1371,8 +1371,8 @@ AcpiDmDumpDbg2 (
|
||||
|
||||
if (Subtable->OemDataOffset)
|
||||
{
|
||||
- Status = AcpiDmDumpTable (Length, Offset + Subtable->OemDataOffset,
|
||||
- Table, Subtable->OemDataLength,
|
||||
+ Status = AcpiDmDumpTable (Length, Subtable->OemDataOffset,
|
||||
+ Subtable, Subtable->OemDataLength,
|
||||
AcpiDmTableInfoDbg2OemData);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
--
|
||||
2.45.2
|
||||
|
30
0002-Correct-dumping-of-SLIC-tables.patch
Normal file
30
0002-Correct-dumping-of-SLIC-tables.patch
Normal file
@ -0,0 +1,30 @@
|
||||
From 957662e99f6ec38849a9cf47eaebe1c232f74bbd Mon Sep 17 00:00:00 2001
|
||||
From: Al Stone <ahs3@ahs3.net>
|
||||
Date: Wed, 14 Apr 2021 21:18:12 -0600
|
||||
Subject: [PATCH 2/2] Correct dumping of SLIC tables
|
||||
|
||||
When dumping the SLIC table, the code was not starting at the proper
|
||||
offset. Set the offset to the first byte after the header.
|
||||
|
||||
Signed-off-by: Al Stone <ahs3@ahs3.net>
|
||||
---
|
||||
source/common/dmtbdump3.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/source/common/dmtbdump3.c b/source/common/dmtbdump3.c
|
||||
index 6e5f5d7ff..9a5b5ecd5 100644
|
||||
--- a/source/common/dmtbdump3.c
|
||||
+++ b/source/common/dmtbdump3.c
|
||||
@@ -177,7 +177,8 @@ AcpiDmDumpSlic (
|
||||
ACPI_TABLE_HEADER *Table)
|
||||
{
|
||||
|
||||
- (void) AcpiDmDumpTable (Table->Length, sizeof (ACPI_TABLE_HEADER), Table,
|
||||
+ (void) AcpiDmDumpTable (Table->Length, sizeof (ACPI_TABLE_HEADER),
|
||||
+ (void *) (Table + sizeof (*Table)),
|
||||
Table->Length - sizeof (*Table), AcpiDmTableInfoSlic);
|
||||
}
|
||||
|
||||
--
|
||||
2.45.2
|
||||
|
@ -1,200 +0,0 @@
|
||||
From 51b0d06c0a6c4d4e19432ebf930299855c8fcf23 Mon Sep 17 00:00:00 2001
|
||||
From: Al Stone <ahs3@redhat.com>
|
||||
Date: Fri, 18 Sep 2020 15:14:30 -0600
|
||||
Subject: [PATCH 02/45] Modify utility functions to be endian-agnostic
|
||||
|
||||
All of the modifications here use the big-endian code previously added
|
||||
(see utendian.c) to make themselves endian-agnostic; i.e., that the code
|
||||
does not need to change further to work on both big- and little-endian
|
||||
machines.
|
||||
|
||||
These particular files were changed to handle the reading and writing
|
||||
of files (the length is often embedded in the binary stream), and to
|
||||
handle the reading and writing of integer values. The common cases are
|
||||
to "read" a 32-bit unsigned int in little-endian format, but convert it
|
||||
to host-native, and to write a byte, word, double word or quad word value
|
||||
as little-endian, regardless of host-native format.
|
||||
|
||||
Signed-off-by: Al Stone <ahs3@redhat.com>
|
||||
---
|
||||
source/common/acfileio.c | 16 ++++++++++------
|
||||
source/common/dmtable.c | 8 ++++----
|
||||
source/compiler/dtfield.c | 2 +-
|
||||
source/compiler/dtsubtable.c | 4 ++--
|
||||
source/components/tables/tbprint.c | 13 +++++++++----
|
||||
5 files changed, 26 insertions(+), 17 deletions(-)
|
||||
|
||||
Index: acpica-unix2-20220331/source/common/acfileio.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/common/acfileio.c
|
||||
+++ acpica-unix2-20220331/source/common/acfileio.c
|
||||
@@ -280,6 +280,7 @@ AcGetOneTableFromFile (
|
||||
ACPI_TABLE_HEADER *Table;
|
||||
INT32 Count;
|
||||
long TableOffset;
|
||||
+ UINT32 Length;
|
||||
|
||||
|
||||
*ReturnTable = NULL;
|
||||
@@ -319,7 +320,8 @@ AcGetOneTableFromFile (
|
||||
|
||||
/* Allocate a buffer for the entire table */
|
||||
|
||||
- Table = AcpiOsAllocate ((ACPI_SIZE) TableHeader.Length);
|
||||
+ Length = AcpiUtReadUint32 (&TableHeader.Length);
|
||||
+ Table = AcpiOsAllocate ((ACPI_SIZE) Length);
|
||||
if (!Table)
|
||||
{
|
||||
return (AE_NO_MEMORY);
|
||||
@@ -329,13 +331,13 @@ AcGetOneTableFromFile (
|
||||
|
||||
fseek (File, TableOffset, SEEK_SET);
|
||||
|
||||
- Count = fread (Table, 1, TableHeader.Length, File);
|
||||
+ Count = fread (Table, 1, Length, File);
|
||||
|
||||
/*
|
||||
* Checks for data table headers happen later in the execution. Only verify
|
||||
* for Aml tables at this point in the code.
|
||||
*/
|
||||
- if (GetOnlyAmlTables && Count != (INT32) TableHeader.Length)
|
||||
+ if (GetOnlyAmlTables && Count != (INT32) Length)
|
||||
{
|
||||
Status = AE_ERROR;
|
||||
goto ErrorExit;
|
||||
@@ -343,7 +345,7 @@ AcGetOneTableFromFile (
|
||||
|
||||
/* Validate the checksum (just issue a warning) */
|
||||
|
||||
- Status = AcpiTbVerifyChecksum (Table, TableHeader.Length);
|
||||
+ Status = AcpiTbVerifyChecksum (Table, Length);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
Status = AcCheckTextModeCorruption (Table);
|
||||
@@ -436,6 +438,7 @@ AcValidateTableHeader (
|
||||
long OriginalOffset;
|
||||
UINT32 FileSize;
|
||||
UINT32 i;
|
||||
+ UINT32 Length;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE (AcValidateTableHeader);
|
||||
@@ -472,11 +475,12 @@ AcValidateTableHeader (
|
||||
/* Validate table length against bytes remaining in the file */
|
||||
|
||||
FileSize = CmGetFileSize (File);
|
||||
- if (TableHeader.Length > (UINT32) (FileSize - TableOffset))
|
||||
+ Length = AcpiUtReadUint32 (&TableHeader.Length);
|
||||
+ if (Length > (UINT32) (FileSize - TableOffset))
|
||||
{
|
||||
fprintf (stderr, "Table [%4.4s] is too long for file - "
|
||||
"needs: 0x%.2X, remaining in file: 0x%.2X\n",
|
||||
- TableHeader.Signature, TableHeader.Length,
|
||||
+ TableHeader.Signature, Length,
|
||||
(UINT32) (FileSize - TableOffset));
|
||||
return (AE_BAD_HEADER);
|
||||
}
|
||||
Index: acpica-unix2-20220331/source/common/dmtable.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/common/dmtable.c
|
||||
+++ acpica-unix2-20220331/source/common/dmtable.c
|
||||
@@ -713,7 +713,7 @@ AcpiDmDumpDataTable (
|
||||
{
|
||||
/* Dump the raw table data */
|
||||
|
||||
- Length = Table->Length;
|
||||
+ Length = AcpiUtReadUint32 (&Table->Length);
|
||||
|
||||
AcpiOsPrintf ("\n/*\n%s: Length %d (0x%X)\n\n",
|
||||
ACPI_RAW_TABLE_DATA_HEADER, Length, Length);
|
||||
@@ -730,7 +730,7 @@ AcpiDmDumpDataTable (
|
||||
*/
|
||||
if (ACPI_COMPARE_NAMESEG (Table->Signature, ACPI_SIG_FACS))
|
||||
{
|
||||
- Length = Table->Length;
|
||||
+ Length = AcpiUtReadUint32 (&Table->Length);
|
||||
Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoFacs);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
@@ -751,7 +751,7 @@ AcpiDmDumpDataTable (
|
||||
/*
|
||||
* All other tables must use the common ACPI table header, dump it now
|
||||
*/
|
||||
- Length = Table->Length;
|
||||
+ Length = AcpiUtReadUint32(&Table->Length);
|
||||
Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoHeader);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
@@ -1415,7 +1415,7 @@ AcpiDmDumpTable (
|
||||
|
||||
AcpiOsPrintf ("%2.2X", *Target);
|
||||
Temp8 = AcpiDmGenerateChecksum (Table,
|
||||
- ACPI_CAST_PTR (ACPI_TABLE_HEADER, Table)->Length,
|
||||
+ AcpiUtReadUint32 (&(ACPI_CAST_PTR (ACPI_TABLE_HEADER, Table)->Length)),
|
||||
ACPI_CAST_PTR (ACPI_TABLE_HEADER, Table)->Checksum);
|
||||
|
||||
if (Temp8 != ACPI_CAST_PTR (ACPI_TABLE_HEADER, Table)->Checksum)
|
||||
Index: acpica-unix2-20220331/source/compiler/dtfield.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/compiler/dtfield.c
|
||||
+++ acpica-unix2-20220331/source/compiler/dtfield.c
|
||||
@@ -361,7 +361,7 @@ DtCompileInteger (
|
||||
DtError (ASL_ERROR, ASL_MSG_INTEGER_SIZE, Field, AslGbl_MsgBuffer);
|
||||
}
|
||||
|
||||
- memcpy (Buffer, &Value, ByteLength);
|
||||
+ AcpiUtWriteUint (Buffer, ByteLength, &Value, sizeof (UINT64));
|
||||
return;
|
||||
}
|
||||
|
||||
Index: acpica-unix2-20220331/source/compiler/dtsubtable.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/compiler/dtsubtable.c
|
||||
+++ acpica-unix2-20220331/source/compiler/dtsubtable.c
|
||||
@@ -378,6 +378,6 @@ DtSetSubtableLength (
|
||||
return;
|
||||
}
|
||||
|
||||
- memcpy (Subtable->LengthField, &Subtable->TotalLength,
|
||||
- Subtable->SizeOfLengthField);
|
||||
+ AcpiUtWriteUint (Subtable->LengthField, Subtable->SizeOfLengthField,
|
||||
+ &Subtable->TotalLength, sizeof (Subtable->TotalLength));
|
||||
}
|
||||
Index: acpica-unix2-20220331/source/components/tables/tbprint.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/components/tables/tbprint.c
|
||||
+++ acpica-unix2-20220331/source/components/tables/tbprint.c
|
||||
@@ -44,6 +44,8 @@
|
||||
#include "acpi.h"
|
||||
#include "accommon.h"
|
||||
#include "actables.h"
|
||||
+#include "platform/acenv.h"
|
||||
+#include "acutils.h"
|
||||
|
||||
#define _COMPONENT ACPI_TABLES
|
||||
ACPI_MODULE_NAME ("tbprint")
|
||||
@@ -151,7 +153,7 @@ AcpiTbPrintTableHeader (
|
||||
|
||||
ACPI_INFO (("%-4.4s 0x%8.8X%8.8X %06X",
|
||||
Header->Signature, ACPI_FORMAT_UINT64 (Address),
|
||||
- Header->Length));
|
||||
+ AcpiUtReadUint32 (&Header->Length)));
|
||||
}
|
||||
else if (ACPI_VALIDATE_RSDP_SIG (ACPI_CAST_PTR (ACPI_TABLE_RSDP,
|
||||
Header)->Signature))
|
||||
@@ -179,9 +181,12 @@ AcpiTbPrintTableHeader (
|
||||
"%-4.4s 0x%8.8X%8.8X"
|
||||
" %06X (v%.2d %-6.6s %-8.8s %08X %-4.4s %08X)",
|
||||
LocalHeader.Signature, ACPI_FORMAT_UINT64 (Address),
|
||||
- LocalHeader.Length, LocalHeader.Revision, LocalHeader.OemId,
|
||||
- LocalHeader.OemTableId, LocalHeader.OemRevision,
|
||||
- LocalHeader.AslCompilerId, LocalHeader.AslCompilerRevision));
|
||||
+ AcpiUtReadUint32 (&LocalHeader.Length),
|
||||
+ LocalHeader.Revision, LocalHeader.OemId,
|
||||
+ LocalHeader.OemTableId,
|
||||
+ AcpiUtReadUint32 (&LocalHeader.OemRevision),
|
||||
+ LocalHeader.AslCompilerId,
|
||||
+ AcpiUtReadUint32 (&LocalHeader.AslCompilerRevision)));
|
||||
}
|
||||
}
|
||||
|
@ -1,45 +0,0 @@
|
||||
From 62cc2f4ae212bd0fad83f643921ac216ebb9a986 Mon Sep 17 00:00:00 2001
|
||||
From: Al Stone <ahs3@redhat.com>
|
||||
Date: Fri, 18 Sep 2020 15:20:37 -0600
|
||||
Subject: [PATCH 03/45] Always display table header content in human-readable
|
||||
form
|
||||
|
||||
When comparing two binary data tables, little-endian values are read
|
||||
from each table header and printed out. Make sure they show up in a
|
||||
form that makes sense to humans.
|
||||
|
||||
Signed-off-by: Al Stone <ahs3@redhat.com>
|
||||
---
|
||||
source/tools/acpibin/abcompare.c | 7 ++++---
|
||||
1 file changed, 4 insertions(+), 3 deletions(-)
|
||||
|
||||
Index: acpica-unix2-20220331/source/tools/acpibin/abcompare.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/tools/acpibin/abcompare.c
|
||||
+++ acpica-unix2-20220331/source/tools/acpibin/abcompare.c
|
||||
@@ -42,6 +42,7 @@
|
||||
*/
|
||||
|
||||
#include "acpibin.h"
|
||||
+#include "acutils.h"
|
||||
|
||||
|
||||
ACPI_TABLE_HEADER Header1;
|
||||
@@ -179,14 +180,14 @@ AbPrintHeadersInfo (
|
||||
/* Display header information for both headers */
|
||||
|
||||
printf ("Signature %8.4s : %4.4s\n", Header->Signature, Header2->Signature);
|
||||
- printf ("Length %8.8X : %8.8X\n", Header->Length, Header2->Length);
|
||||
+ printf ("Length %8.8X : %8.8X\n", AcpiUtReadUint32 (&Header->Length), AcpiUtReadUint32 (&Header2->Length));
|
||||
printf ("Revision %8.2X : %2.2X\n", Header->Revision, Header2->Revision);
|
||||
printf ("Checksum %8.2X : %2.2X\n", Header->Checksum, Header2->Checksum);
|
||||
printf ("OEM ID %8.6s : %.6s\n", Header->OemId, Header2->OemId);
|
||||
printf ("OEM Table ID %8.8s : %.8s\n", Header->OemTableId, Header2->OemTableId);
|
||||
- printf ("OEM Revision %8.8X : %8.8X\n", Header->OemRevision, Header2->OemRevision);
|
||||
+ printf ("OEM Revision %8.8X : %8.8X\n", AcpiUtReadUint32 (&Header->OemRevision), AcpiUtReadUint32 (&Header2->OemRevision));
|
||||
printf ("ASL Compiler ID %8.4s : %.4s\n", Header->AslCompilerId, Header2->AslCompilerId);
|
||||
- printf ("Compiler Revision %8.8X : %8.8X\n", Header->AslCompilerRevision, Header2->AslCompilerRevision);
|
||||
+ printf ("Compiler Revision %8.8X : %8.8X\n", AcpiUtReadUint32 (&Header->AslCompilerRevision), AcpiUtReadUint32 (&Header2->AslCompilerRevision));
|
||||
printf ("\n");
|
||||
}
|
||||
|
37
0003-PHAT-FW-health-table-can-be-zero-length.patch
Normal file
37
0003-PHAT-FW-health-table-can-be-zero-length.patch
Normal file
@ -0,0 +1,37 @@
|
||||
From 1fb473e41bcbfbe21c02bcb30983b87aa94a6cb8 Mon Sep 17 00:00:00 2001
|
||||
From: Al Stone <ahs3@ahs3.net>
|
||||
Date: Tue, 13 Aug 2024 09:50:37 -0600
|
||||
Subject: [PATCH] PHAT FW health table can be zero-length
|
||||
|
||||
When calculating the VendorLength of the PHAT FW health data subtable,
|
||||
the result becomes a negative integer. However, since UINT32 is being
|
||||
used, it looks like a huge positive integer instead. Conditionalize
|
||||
the length calculation to handle this case properly.
|
||||
|
||||
This was discovered by using the command: iasl -T phat
|
||||
|
||||
Signed-off-by: Al Stone <ahs3@ahs3.net>
|
||||
---
|
||||
source/common/dmtbdump2.c | 6 ++++--
|
||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/source/common/dmtbdump2.c b/source/common/dmtbdump2.c
|
||||
index 32b76b382..dd4d4878e 100644
|
||||
--- a/source/common/dmtbdump2.c
|
||||
+++ b/source/common/dmtbdump2.c
|
||||
@@ -2432,8 +2432,10 @@ AcpiDmDumpPhat (
|
||||
|
||||
/* Get Device-Specific Data - length of which is the remaining subtable length. */
|
||||
|
||||
- VendorLength =
|
||||
- Subtable->Length - sizeof (ACPI_PHAT_HEALTH_DATA) - PathLength;
|
||||
+ VendorLength = 0;
|
||||
+ if (Subtable->Length > sizeof (ACPI_PHAT_HEALTH_DATA) + PathLength)
|
||||
+ VendorLength =
|
||||
+ Subtable->Length - sizeof (ACPI_PHAT_HEALTH_DATA) - PathLength;
|
||||
DbgPrint (ASL_DEBUG_OUTPUT, "%u, Subtable->Length %X, VendorLength %X, Offset %X PathLength: %X\n",
|
||||
__LINE__, Subtable->Length, VendorLength, Offset, PathLength);
|
||||
|
||||
--
|
||||
2.45.2
|
||||
|
@ -1,78 +0,0 @@
|
||||
From 16734feab4204d6930c1ede62e527920607daace Mon Sep 17 00:00:00 2001
|
||||
From: Al Stone <ahs3@redhat.com>
|
||||
Date: Wed, 16 Sep 2020 16:27:06 -0600
|
||||
Subject: [PATCH 04/45] Re-enable support for big-endian machines
|
||||
|
||||
First, disable the big-endian check and fail. Then, make sure the
|
||||
namespace gets initialized properly (NB: needed even if we are only
|
||||
compiling/disassembling data tables).
|
||||
|
||||
Signed-off-by: Al Stone <ahs3@redhat.com>
|
||||
---
|
||||
source/compiler/aslmain.c | 12 ------------
|
||||
source/components/namespace/nsutils.c | 7 +++++--
|
||||
2 files changed, 5 insertions(+), 14 deletions(-)
|
||||
|
||||
Index: acpica-unix2-20220331/source/compiler/aslmain.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/compiler/aslmain.c
|
||||
+++ acpica-unix2-20220331/source/compiler/aslmain.c
|
||||
@@ -101,18 +101,6 @@ main (
|
||||
|
||||
signal (SIGINT, AslSignalHandler);
|
||||
|
||||
- /*
|
||||
- * Big-endian machines are not currently supported. ACPI tables must
|
||||
- * be little-endian, and support for big-endian machines needs to
|
||||
- * be implemented.
|
||||
- */
|
||||
- if (UtIsBigEndianMachine ())
|
||||
- {
|
||||
- fprintf (stderr,
|
||||
- "iASL is not currently supported on big-endian machines.\n");
|
||||
- return (-1);
|
||||
- }
|
||||
-
|
||||
AcpiOsInitialize ();
|
||||
ACPI_DEBUG_INITIALIZE (); /* For debug version only */
|
||||
|
||||
Index: acpica-unix2-20220331/source/components/namespace/nsutils.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/components/namespace/nsutils.c
|
||||
+++ acpica-unix2-20220331/source/components/namespace/nsutils.c
|
||||
@@ -272,6 +272,7 @@ AcpiNsBuildInternalName (
|
||||
const char *ExternalName = Info->NextExternalChar;
|
||||
char *Result = NULL;
|
||||
UINT32 i;
|
||||
+ char TmpSeg[ACPI_NAMESEG_SIZE+1];
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE (NsBuildInternalName);
|
||||
@@ -335,6 +336,7 @@ AcpiNsBuildInternalName (
|
||||
|
||||
for (; NumSegments; NumSegments--)
|
||||
{
|
||||
+ memset (TmpSeg, 0, ACPI_NAMESEG_SIZE+1);
|
||||
for (i = 0; i < ACPI_NAMESEG_SIZE; i++)
|
||||
{
|
||||
if (ACPI_IS_PATH_SEPARATOR (*ExternalName) ||
|
||||
@@ -342,16 +344,17 @@ AcpiNsBuildInternalName (
|
||||
{
|
||||
/* Pad the segment with underscore(s) if segment is short */
|
||||
|
||||
- Result[i] = '_';
|
||||
+ TmpSeg[i] = '_';
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Convert the character to uppercase and save it */
|
||||
|
||||
- Result[i] = (char) toupper ((int) *ExternalName);
|
||||
+ TmpSeg[i] = (char) toupper ((int) *ExternalName);
|
||||
ExternalName++;
|
||||
}
|
||||
}
|
||||
+ AcpiUtWriteUint (Result, ACPI_NAMESEG_SIZE, TmpSeg, ACPI_NAMESEG_SIZE);
|
||||
|
||||
/* Now we must have a path separator, or the pathname is bad */
|
||||
|
@ -1,41 +0,0 @@
|
||||
From 055fee09d8f9244b6c437ad18b98edb81a87e8bc Mon Sep 17 00:00:00 2001
|
||||
From: Al Stone <ahs3@redhat.com>
|
||||
Date: Tue, 27 Oct 2020 17:50:52 -0600
|
||||
Subject: [PATCH 05/45] Correct an endian-ness problem when converting ASL to
|
||||
ASL+
|
||||
|
||||
Signed-off-by: Al Stone <ahs3@redhat.com>
|
||||
---
|
||||
source/compiler/cvparser.c | 5 +++--
|
||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: acpica-unix2-20220331/source/compiler/cvparser.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/compiler/cvparser.c
|
||||
+++ acpica-unix2-20220331/source/compiler/cvparser.c
|
||||
@@ -144,6 +144,7 @@ CvInitFileTree (
|
||||
char *ChildFilename = NULL;
|
||||
UINT8 *AmlStart;
|
||||
UINT32 AmlLength;
|
||||
+ UINT32 TableLength = AcpiUtReadUint32 (&Table->Length);
|
||||
|
||||
|
||||
if (!AcpiGbl_CaptureComments)
|
||||
@@ -152,7 +153,7 @@ CvInitFileTree (
|
||||
}
|
||||
|
||||
|
||||
- AmlLength = Table->Length - sizeof (ACPI_TABLE_HEADER);
|
||||
+ AmlLength = TableLength - sizeof (ACPI_TABLE_HEADER);
|
||||
AmlStart = ((UINT8 *) Table + sizeof (ACPI_TABLE_HEADER));
|
||||
|
||||
CvDbgPrint ("AmlLength: %x\n", AmlLength);
|
||||
@@ -162,7 +163,7 @@ CvInitFileTree (
|
||||
AcpiGbl_FileTreeRoot = AcpiOsAcquireObject (AcpiGbl_FileCache);
|
||||
|
||||
AcpiGbl_FileTreeRoot->FileStart = (char *)(AmlStart);
|
||||
- AcpiGbl_FileTreeRoot->FileEnd = (char *)(AmlStart + Table->Length);
|
||||
+ AcpiGbl_FileTreeRoot->FileEnd = (char *)(AmlStart + TableLength);
|
||||
AcpiGbl_FileTreeRoot->Next = NULL;
|
||||
AcpiGbl_FileTreeRoot->Parent = NULL;
|
||||
AcpiGbl_FileTreeRoot->Filename = (char *)(AmlStart+2);
|
@ -1,32 +0,0 @@
|
||||
From 790c016107e98ded2d0ae579f84dd4cd3fa06587 Mon Sep 17 00:00:00 2001
|
||||
From: Al Stone <ahs3@redhat.com>
|
||||
Date: Tue, 29 Jun 2021 17:48:31 -0600
|
||||
Subject: [PATCH 06/45] Use more reliable ACPI_COPY_NAMSEG in GPE name checks
|
||||
|
||||
Signed-off-by: Al Stone <ahs3@redhat.com>
|
||||
---
|
||||
source/compiler/aslanalyze.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: acpica-unix2-20220331/source/compiler/aslanalyze.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/compiler/aslanalyze.c
|
||||
+++ acpica-unix2-20220331/source/compiler/aslanalyze.c
|
||||
@@ -469,7 +469,7 @@ ApCheckForGpeNameConflict (
|
||||
|
||||
/* Need a null-terminated string version of NameSeg */
|
||||
|
||||
- ACPI_MOVE_32_TO_32 (Name, Op->Asl.NameSeg);
|
||||
+ ACPI_COPY_NAMESEG (Name, Op->Asl.NameSeg);
|
||||
Name[ACPI_NAMESEG_SIZE] = 0;
|
||||
|
||||
/*
|
||||
@@ -496,7 +496,7 @@ ApCheckForGpeNameConflict (
|
||||
* We are now sure we have an _Lxx or _Exx.
|
||||
* Create the target name that would cause collision (Flip E/L)
|
||||
*/
|
||||
- ACPI_MOVE_32_TO_32 (Target, Name);
|
||||
+ ACPI_COPY_NAMESEG (Target, Name);
|
||||
|
||||
/* Inject opposite letter ("L" versus "E") */
|
||||
|
@ -1,53 +0,0 @@
|
||||
From 9a4a32c597fcdfa8a3bc33230c40a18e39c3449d Mon Sep 17 00:00:00 2001
|
||||
From: Al Stone <ahs3@redhat.com>
|
||||
Date: Thu, 1 Jul 2021 17:46:19 -0600
|
||||
Subject: [PATCH 07/45] Handle dumping Unicode properly when big-endian
|
||||
|
||||
Signed-off-by: Al Stone <ahs3@redhat.com>
|
||||
---
|
||||
source/common/dmtbdump.c | 11 ++++++++---
|
||||
1 file changed, 8 insertions(+), 3 deletions(-)
|
||||
|
||||
Index: acpica-unix2-20220331/source/common/dmtbdump.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/common/dmtbdump.c
|
||||
+++ acpica-unix2-20220331/source/common/dmtbdump.c
|
||||
@@ -200,6 +200,8 @@ AcpiDmDumpUnicode (
|
||||
UINT8 *Buffer;
|
||||
UINT32 Length;
|
||||
UINT32 i;
|
||||
+ UINT16 Tmp16;
|
||||
+ UINT32 start;
|
||||
|
||||
|
||||
Buffer = ((UINT8 *) Table) + BufferOffset;
|
||||
@@ -209,7 +211,8 @@ AcpiDmDumpUnicode (
|
||||
|
||||
for (i = 0; i < Length; i += 2)
|
||||
{
|
||||
- if (!isprint (Buffer[i]))
|
||||
+ Tmp16 = AcpiUtReadUint16 (&Buffer[i]);
|
||||
+ if (!isprint (Tmp16))
|
||||
{
|
||||
goto DumpRawBuffer;
|
||||
}
|
||||
@@ -217,7 +220,8 @@ AcpiDmDumpUnicode (
|
||||
|
||||
/* Ensure all high bytes are zero */
|
||||
|
||||
- for (i = 1; i < Length; i += 2)
|
||||
+ start = UtIsBigEndianMachine() ? 0 : 1;
|
||||
+ for (i = start; i < Length; i += 2)
|
||||
{
|
||||
if (Buffer[i])
|
||||
{
|
||||
@@ -230,7 +234,8 @@ AcpiDmDumpUnicode (
|
||||
AcpiOsPrintf ("\"");
|
||||
for (i = 0; i < Length; i += 2)
|
||||
{
|
||||
- AcpiOsPrintf ("%c", Buffer[i]);
|
||||
+ Tmp16 = AcpiUtReadUint16 (&Buffer[i]);
|
||||
+ AcpiOsPrintf ("%c", Tmp16);
|
||||
}
|
||||
|
||||
AcpiOsPrintf ("\"\n");
|
@ -1,32 +0,0 @@
|
||||
From 7b107ab7348d903108140f6033e90596b12325c4 Mon Sep 17 00:00:00 2001
|
||||
From: Al Stone <ahs3@redhat.com>
|
||||
Date: Thu, 15 Oct 2020 12:12:11 -0600
|
||||
Subject: [PATCH 08/45] Support MADT (aka APIC) in a big-endian world
|
||||
|
||||
Signed-off-by: Al Stone <ahs3@redhat.com>
|
||||
---
|
||||
source/common/dmtbdump2.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: acpica-unix2-20220331/source/common/dmtbdump2.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/common/dmtbdump2.c
|
||||
+++ acpica-unix2-20220331/source/common/dmtbdump2.c
|
||||
@@ -763,7 +763,7 @@ AcpiDmDumpMadt (
|
||||
{
|
||||
ACPI_STATUS Status;
|
||||
ACPI_SUBTABLE_HEADER *Subtable;
|
||||
- UINT32 Length = Table->Length;
|
||||
+ UINT32 Length = AcpiUtReadUint32 (&Table->Length);
|
||||
UINT32 Offset = sizeof (ACPI_TABLE_MADT);
|
||||
ACPI_DMTABLE_INFO *InfoTable;
|
||||
|
||||
@@ -781,7 +781,7 @@ AcpiDmDumpMadt (
|
||||
Subtable = ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, Table, Offset);
|
||||
DbgPrint (ASL_PARSE_OUTPUT, "//0B) Offset %X, from table start: 0x%8.8X%8.8X\n",
|
||||
Offset, ACPI_FORMAT_UINT64 (ACPI_CAST_PTR (char, Subtable) - ACPI_CAST_PTR (char, Table)));
|
||||
- while (Offset < Table->Length)
|
||||
+ while (Offset < Length)
|
||||
{
|
||||
/* Common subtable header */
|
||||
|
@ -1,55 +0,0 @@
|
||||
From ce811b4c38b9a09533ee8bafa22813f6e43c023d Mon Sep 17 00:00:00 2001
|
||||
From: Al Stone <ahs3@redhat.com>
|
||||
Date: Fri, 18 Sep 2020 16:41:02 -0600
|
||||
Subject: [PATCH 09/45] Support ASF! tables in a big-endian world
|
||||
|
||||
Read the table length properly and it all works right for big-endian.
|
||||
|
||||
Signed-off-by: Al Stone <ahs3@redhat.com>
|
||||
---
|
||||
source/common/dmtbdump1.c | 10 ++++++----
|
||||
1 file changed, 6 insertions(+), 4 deletions(-)
|
||||
|
||||
Index: acpica-unix2-20220331/source/common/dmtbdump1.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/common/dmtbdump1.c
|
||||
+++ acpica-unix2-20220331/source/common/dmtbdump1.c
|
||||
@@ -358,16 +358,18 @@ AcpiDmDumpAsf (
|
||||
UINT32 DataOffset = 0;
|
||||
UINT32 i;
|
||||
UINT8 Type;
|
||||
+ UINT32 TableLength;
|
||||
|
||||
|
||||
/* No main table, only subtables */
|
||||
|
||||
Subtable = ACPI_ADD_PTR (ACPI_ASF_INFO, Table, Offset);
|
||||
- while (Offset < Table->Length)
|
||||
+ TableLength = AcpiUtReadUint32 (&Table->Length);
|
||||
+ while (Offset < TableLength)
|
||||
{
|
||||
/* Common subtable header */
|
||||
|
||||
- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset, Subtable,
|
||||
Subtable->Header.Length, AcpiDmTableInfoAsfHdr);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
@@ -425,7 +427,7 @@ AcpiDmDumpAsf (
|
||||
return;
|
||||
}
|
||||
|
||||
- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset, Subtable,
|
||||
Subtable->Header.Length, InfoTable);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
@@ -442,7 +444,7 @@ AcpiDmDumpAsf (
|
||||
for (i = 0; i < DataCount; i++)
|
||||
{
|
||||
AcpiOsPrintf ("\n");
|
||||
- Status = AcpiDmDumpTable (Table->Length, DataOffset,
|
||||
+ Status = AcpiDmDumpTable (TableLength, DataOffset,
|
||||
DataTable, DataLength, DataInfoTable);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
@ -1,32 +0,0 @@
|
||||
From 0c4be57a5e0e45b4197c2d9a0b26462d3b1a9b80 Mon Sep 17 00:00:00 2001
|
||||
From: Al Stone <ahs3@redhat.com>
|
||||
Date: Fri, 18 Sep 2020 16:54:13 -0600
|
||||
Subject: [PATCH 10/45] Support CPEP tables in a big-endian world
|
||||
|
||||
Signed-off-by: Al Stone <ahs3@redhat.com>
|
||||
---
|
||||
source/common/dmtbdump1.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: acpica-unix2-20220331/source/common/dmtbdump1.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/common/dmtbdump1.c
|
||||
+++ acpica-unix2-20220331/source/common/dmtbdump1.c
|
||||
@@ -614,7 +614,7 @@ AcpiDmDumpCpep (
|
||||
{
|
||||
ACPI_STATUS Status;
|
||||
ACPI_CPEP_POLLING *Subtable;
|
||||
- UINT32 Length = Table->Length;
|
||||
+ UINT32 Length = AcpiUtReadUint32 (&Table->Length);
|
||||
UINT32 Offset = sizeof (ACPI_TABLE_CPEP);
|
||||
|
||||
|
||||
@@ -629,7 +629,7 @@ AcpiDmDumpCpep (
|
||||
/* Subtables */
|
||||
|
||||
Subtable = ACPI_ADD_PTR (ACPI_CPEP_POLLING, Table, Offset);
|
||||
- while (Offset < Table->Length)
|
||||
+ while (Offset < Length)
|
||||
{
|
||||
AcpiOsPrintf ("\n");
|
||||
Status = AcpiDmDumpTable (Length, Offset, Subtable,
|
@ -1,256 +0,0 @@
|
||||
From 2cb0b87a15682da4f19f707fa3ffece504f94b5a Mon Sep 17 00:00:00 2001
|
||||
From: Al Stone <ahs3@redhat.com>
|
||||
Date: Sat, 19 Sep 2020 13:37:38 -0600
|
||||
Subject: [PATCH 11/45] Support DBG2 table in a big-endian world
|
||||
|
||||
Signed-off-by: Al Stone <ahs3@redhat.com>
|
||||
---
|
||||
source/common/dmtbdump1.c | 37 ++++++++++++++++++--------------
|
||||
source/compiler/dttable1.c | 43 ++++++++++++++++++++++++--------------
|
||||
2 files changed, 48 insertions(+), 32 deletions(-)
|
||||
|
||||
Index: acpica-unix2-20220331/source/common/dmtbdump1.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/common/dmtbdump1.c
|
||||
+++ acpica-unix2-20220331/source/common/dmtbdump1.c
|
||||
@@ -669,7 +669,7 @@ AcpiDmDumpCsrt (
|
||||
ACPI_CSRT_GROUP *Subtable;
|
||||
ACPI_CSRT_SHARED_INFO *SharedInfoTable;
|
||||
ACPI_CSRT_DESCRIPTOR *SubSubtable;
|
||||
- UINT32 Length = Table->Length;
|
||||
+ UINT32 Length = AcpiUtReadUint32 (&Table->Length);
|
||||
UINT32 Offset = sizeof (ACPI_TABLE_CSRT);
|
||||
UINT32 SubOffset;
|
||||
UINT32 SubSubOffset;
|
||||
@@ -681,7 +681,7 @@ AcpiDmDumpCsrt (
|
||||
/* Subtables (Resource Groups) */
|
||||
|
||||
Subtable = ACPI_ADD_PTR (ACPI_CSRT_GROUP, Table, Offset);
|
||||
- while (Offset < Table->Length)
|
||||
+ while (Offset < Length)
|
||||
{
|
||||
/* Resource group subtable */
|
||||
|
||||
@@ -715,7 +715,7 @@ AcpiDmDumpCsrt (
|
||||
Offset + SubOffset);
|
||||
|
||||
while ((SubOffset < Subtable->Length) &&
|
||||
- ((Offset + SubOffset) < Table->Length))
|
||||
+ ((Offset + SubOffset) < Length))
|
||||
{
|
||||
AcpiOsPrintf ("\n");
|
||||
Status = AcpiDmDumpTable (Length, Offset + SubOffset, SubSubtable,
|
||||
@@ -776,12 +776,13 @@ AcpiDmDumpDbg2 (
|
||||
{
|
||||
ACPI_STATUS Status;
|
||||
ACPI_DBG2_DEVICE *Subtable;
|
||||
- UINT32 Length = Table->Length;
|
||||
+ UINT32 Length = AcpiUtReadUint32 (&Table->Length);
|
||||
UINT32 Offset = sizeof (ACPI_TABLE_DBG2);
|
||||
UINT32 i;
|
||||
UINT32 ArrayOffset;
|
||||
UINT32 AbsoluteOffset;
|
||||
UINT8 *Array;
|
||||
+ UINT16 SubtableLength;
|
||||
|
||||
|
||||
/* Main table */
|
||||
@@ -795,11 +796,12 @@ AcpiDmDumpDbg2 (
|
||||
/* Subtables */
|
||||
|
||||
Subtable = ACPI_ADD_PTR (ACPI_DBG2_DEVICE, Table, Offset);
|
||||
- while (Offset < Table->Length)
|
||||
+ while (Offset < Length)
|
||||
{
|
||||
AcpiOsPrintf ("\n");
|
||||
+ SubtableLength = AcpiUtReadUint16 (&Subtable->Length);
|
||||
Status = AcpiDmDumpTable (Length, Offset, Subtable,
|
||||
- Subtable->Length, AcpiDmTableInfoDbg2Device);
|
||||
+ SubtableLength, AcpiDmTableInfoDbg2Device);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
@@ -809,13 +811,13 @@ AcpiDmDumpDbg2 (
|
||||
|
||||
for (i = 0; i < Subtable->RegisterCount; i++)
|
||||
{
|
||||
- ArrayOffset = Subtable->BaseAddressOffset +
|
||||
+ ArrayOffset = AcpiUtReadUint16 (&Subtable->BaseAddressOffset) +
|
||||
(sizeof (ACPI_GENERIC_ADDRESS) * i);
|
||||
AbsoluteOffset = Offset + ArrayOffset;
|
||||
Array = (UINT8 *) Subtable + ArrayOffset;
|
||||
|
||||
Status = AcpiDmDumpTable (Length, AbsoluteOffset, Array,
|
||||
- Subtable->Length, AcpiDmTableInfoDbg2Addr);
|
||||
+ SubtableLength, AcpiDmTableInfoDbg2Addr);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
@@ -826,13 +828,13 @@ AcpiDmDumpDbg2 (
|
||||
|
||||
for (i = 0; i < Subtable->RegisterCount; i++)
|
||||
{
|
||||
- ArrayOffset = Subtable->AddressSizeOffset +
|
||||
+ ArrayOffset = AcpiUtReadUint16 (&Subtable->AddressSizeOffset) +
|
||||
(sizeof (UINT32) * i);
|
||||
AbsoluteOffset = Offset + ArrayOffset;
|
||||
Array = (UINT8 *) Subtable + ArrayOffset;
|
||||
|
||||
Status = AcpiDmDumpTable (Length, AbsoluteOffset, Array,
|
||||
- Subtable->Length, AcpiDmTableInfoDbg2Size);
|
||||
+ SubtableLength, AcpiDmTableInfoDbg2Size);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
@@ -842,12 +844,12 @@ AcpiDmDumpDbg2 (
|
||||
/* Dump the Namestring (required) */
|
||||
|
||||
AcpiOsPrintf ("\n");
|
||||
- ArrayOffset = Subtable->NamepathOffset;
|
||||
+ ArrayOffset = AcpiUtReadUint16 (&Subtable->NamepathOffset);
|
||||
AbsoluteOffset = Offset + ArrayOffset;
|
||||
Array = (UINT8 *) Subtable + ArrayOffset;
|
||||
|
||||
Status = AcpiDmDumpTable (Length, AbsoluteOffset, Array,
|
||||
- Subtable->Length, AcpiDmTableInfoDbg2Name);
|
||||
+ SubtableLength, AcpiDmTableInfoDbg2Name);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
@@ -857,8 +859,11 @@ AcpiDmDumpDbg2 (
|
||||
|
||||
if (Subtable->OemDataOffset)
|
||||
{
|
||||
- Status = AcpiDmDumpTable (Length, Offset + Subtable->OemDataOffset,
|
||||
- Table, Subtable->OemDataLength,
|
||||
+ Array = (UINT8 *) Subtable + AcpiUtReadUint16 (&Subtable->OemDataOffset);
|
||||
+
|
||||
+ Status = AcpiDmDumpTable (Length,
|
||||
+ Offset + AcpiUtReadUint16 (&Subtable->OemDataOffset),
|
||||
+ Array, AcpiUtReadUint16 (&Subtable->OemDataLength),
|
||||
AcpiDmTableInfoDbg2OemData);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
@@ -868,9 +873,9 @@ AcpiDmDumpDbg2 (
|
||||
|
||||
/* Point to next subtable */
|
||||
|
||||
- Offset += Subtable->Length;
|
||||
+ Offset += SubtableLength;
|
||||
Subtable = ACPI_ADD_PTR (ACPI_DBG2_DEVICE, Subtable,
|
||||
- Subtable->Length);
|
||||
+ SubtableLength);
|
||||
}
|
||||
}
|
||||
|
||||
Index: acpica-unix2-20220331/source/compiler/dttable1.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/compiler/dttable1.c
|
||||
+++ acpica-unix2-20220331/source/compiler/dttable1.c
|
||||
@@ -718,6 +718,7 @@ DtCompileCsrt (
|
||||
DT_FIELD **PFieldList = (DT_FIELD **) List;
|
||||
UINT32 DescriptorCount;
|
||||
UINT32 GroupLength;
|
||||
+ UINT32 Tmp;
|
||||
|
||||
|
||||
/* Subtables (Resource Groups) */
|
||||
@@ -736,12 +737,13 @@ DtCompileCsrt (
|
||||
|
||||
/* Compute the number of resource descriptors */
|
||||
|
||||
- GroupLength =
|
||||
- (ACPI_CAST_PTR (ACPI_CSRT_GROUP,
|
||||
- Subtable->Buffer))->Length -
|
||||
- (ACPI_CAST_PTR (ACPI_CSRT_GROUP,
|
||||
- Subtable->Buffer))->SharedInfoLength -
|
||||
- sizeof (ACPI_CSRT_GROUP);
|
||||
+ Tmp = AcpiUtReadUint32 (&(ACPI_CAST_PTR (ACPI_CSRT_GROUP,
|
||||
+ Subtable->Buffer))->Length);
|
||||
+ GroupLength = Tmp;
|
||||
+ Tmp = AcpiUtReadUint32 (&(ACPI_CAST_PTR (ACPI_CSRT_GROUP,
|
||||
+ Subtable->Buffer))->SharedInfoLength);
|
||||
+ GroupLength -= Tmp;
|
||||
+ GroupLength -= sizeof (ACPI_CSRT_GROUP);
|
||||
|
||||
DescriptorCount = (GroupLength /
|
||||
sizeof (ACPI_CSRT_DESCRIPTOR));
|
||||
@@ -829,6 +831,7 @@ DtCompileDbg2 (
|
||||
ACPI_DBG2_DEVICE *DeviceInfo;
|
||||
UINT16 CurrentOffset;
|
||||
UINT32 i;
|
||||
+ UINT32 Tmp;
|
||||
|
||||
|
||||
/* Main table */
|
||||
@@ -845,10 +848,12 @@ DtCompileDbg2 (
|
||||
/* Main table fields */
|
||||
|
||||
Dbg2Header = ACPI_CAST_PTR (ACPI_DBG2_HEADER, Subtable->Buffer);
|
||||
- Dbg2Header->InfoOffset = sizeof (ACPI_TABLE_HEADER) + ACPI_PTR_DIFF (
|
||||
- ACPI_ADD_PTR (UINT8, Dbg2Header, sizeof (ACPI_DBG2_HEADER)), Dbg2Header);
|
||||
+ Tmp = sizeof (ACPI_TABLE_HEADER) + ACPI_PTR_DIFF (
|
||||
+ ACPI_ADD_PTR (UINT8, Dbg2Header, sizeof (ACPI_DBG2_HEADER)), Dbg2Header);
|
||||
+ AcpiUtWriteUint (&Dbg2Header->InfoOffset, sizeof (UINT32),
|
||||
+ &Tmp, sizeof (UINT32));
|
||||
|
||||
- SubtableCount = Dbg2Header->InfoCount;
|
||||
+ SubtableCount = Tmp;
|
||||
DtPushSubtable (Subtable);
|
||||
|
||||
/* Process all Device Information subtables (Count = InfoCount) */
|
||||
@@ -875,7 +880,8 @@ DtCompileDbg2 (
|
||||
|
||||
/* BaseAddressRegister GAS array (Required, size is RegisterCount) */
|
||||
|
||||
- DeviceInfo->BaseAddressOffset = CurrentOffset;
|
||||
+ AcpiUtWriteUint (&DeviceInfo->BaseAddressOffset, sizeof (UINT16),
|
||||
+ &CurrentOffset, sizeof (UINT16));
|
||||
for (i = 0; *PFieldList && (i < DeviceInfo->RegisterCount); i++)
|
||||
{
|
||||
Status = DtCompileTable (PFieldList, AcpiDmTableInfoDbg2Addr,
|
||||
@@ -891,7 +897,8 @@ DtCompileDbg2 (
|
||||
|
||||
/* AddressSize array (Required, size = RegisterCount) */
|
||||
|
||||
- DeviceInfo->AddressSizeOffset = CurrentOffset;
|
||||
+ AcpiUtWriteUint (&DeviceInfo->AddressSizeOffset, sizeof (UINT16),
|
||||
+ &CurrentOffset, sizeof (UINT16));
|
||||
for (i = 0; *PFieldList && (i < DeviceInfo->RegisterCount); i++)
|
||||
{
|
||||
Status = DtCompileTable (PFieldList, AcpiDmTableInfoDbg2Size,
|
||||
@@ -907,7 +914,8 @@ DtCompileDbg2 (
|
||||
|
||||
/* NamespaceString device identifier (Required, size = NamePathLength) */
|
||||
|
||||
- DeviceInfo->NamepathOffset = CurrentOffset;
|
||||
+ AcpiUtWriteUint (&DeviceInfo->NamepathOffset, sizeof (UINT16),
|
||||
+ &CurrentOffset, sizeof (UINT16));
|
||||
Status = DtCompileTable (PFieldList, AcpiDmTableInfoDbg2Name,
|
||||
&Subtable);
|
||||
if (ACPI_FAILURE (Status))
|
||||
@@ -917,8 +925,9 @@ DtCompileDbg2 (
|
||||
|
||||
/* Update the device info header */
|
||||
|
||||
- DeviceInfo->NamepathLength = (UINT16) Subtable->Length;
|
||||
- CurrentOffset += (UINT16) DeviceInfo->NamepathLength;
|
||||
+ AcpiUtWriteUint (&DeviceInfo->NamepathLength, sizeof (UINT16),
|
||||
+ &Subtable->Length, sizeof (UINT32));
|
||||
+ CurrentOffset += AcpiUtReadUint16 (&DeviceInfo->NamepathLength);
|
||||
DtInsertSubtable (ParentTable, Subtable);
|
||||
|
||||
/* OemData - Variable-length data (Optional, size = OemDataLength) */
|
||||
@@ -945,8 +954,10 @@ DtCompileDbg2 (
|
||||
|
||||
if (Subtable && Subtable->Length)
|
||||
{
|
||||
- DeviceInfo->OemDataOffset = CurrentOffset;
|
||||
- DeviceInfo->OemDataLength = (UINT16) Subtable->Length;
|
||||
+ AcpiUtWriteUint (&DeviceInfo->OemDataOffset, sizeof (UINT16),
|
||||
+ &CurrentOffset, sizeof (UINT16));
|
||||
+ AcpiUtWriteUint (&DeviceInfo->OemDataLength, sizeof (UINT16),
|
||||
+ &Subtable->Length, sizeof (UINT32));
|
||||
|
||||
DtInsertSubtable (ParentTable, Subtable);
|
||||
}
|
@ -1,171 +0,0 @@
|
||||
From 06623392351dfea54bd69507b6672c933a5e3fd2 Mon Sep 17 00:00:00 2001
|
||||
From: Al Stone <ahs3@redhat.com>
|
||||
Date: Sat, 19 Sep 2020 15:22:00 -0600
|
||||
Subject: [PATCH 12/45] Support DMAR in a big-endian world
|
||||
|
||||
Signed-off-by: Al Stone <ahs3@redhat.com>
|
||||
---
|
||||
source/common/dmtable.c | 4 ++--
|
||||
source/common/dmtbdump1.c | 26 +++++++++++++++-----------
|
||||
source/compiler/dttable1.c | 12 +++++++-----
|
||||
3 files changed, 24 insertions(+), 18 deletions(-)
|
||||
|
||||
Index: acpica-unix2-20220331/source/common/dmtable.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/common/dmtable.c
|
||||
+++ acpica-unix2-20220331/source/common/dmtable.c
|
||||
@@ -1578,13 +1578,13 @@ AcpiDmDumpTable (
|
||||
|
||||
/* DMAR subtable types */
|
||||
|
||||
- Temp16 = ACPI_GET16 (Target);
|
||||
+ Temp16 = AcpiUtReadUint16 (Target);
|
||||
if (Temp16 > ACPI_DMAR_TYPE_RESERVED)
|
||||
{
|
||||
Temp16 = ACPI_DMAR_TYPE_RESERVED;
|
||||
}
|
||||
|
||||
- AcpiOsPrintf (UINT16_FORMAT, ACPI_GET16 (Target),
|
||||
+ AcpiOsPrintf (UINT16_FORMAT, Temp16,
|
||||
AcpiDmDmarSubnames[Temp16]);
|
||||
break;
|
||||
|
||||
Index: acpica-unix2-20220331/source/common/dmtbdump1.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/common/dmtbdump1.c
|
||||
+++ acpica-unix2-20220331/source/common/dmtbdump1.c
|
||||
@@ -899,13 +899,15 @@ AcpiDmDumpDmar (
|
||||
{
|
||||
ACPI_STATUS Status;
|
||||
ACPI_DMAR_HEADER *Subtable;
|
||||
- UINT32 Length = Table->Length;
|
||||
+ UINT32 Length = AcpiUtReadUint32 (&Table->Length);
|
||||
UINT32 Offset = sizeof (ACPI_TABLE_DMAR);
|
||||
ACPI_DMTABLE_INFO *InfoTable;
|
||||
ACPI_DMAR_DEVICE_SCOPE *ScopeTable;
|
||||
UINT32 ScopeOffset;
|
||||
UINT8 *PciPath;
|
||||
UINT32 PathOffset;
|
||||
+ UINT16 SubtableType;
|
||||
+ UINT16 SubtableLength;
|
||||
|
||||
|
||||
/* Main table */
|
||||
@@ -919,13 +921,14 @@ AcpiDmDumpDmar (
|
||||
/* Subtables */
|
||||
|
||||
Subtable = ACPI_ADD_PTR (ACPI_DMAR_HEADER, Table, Offset);
|
||||
- while (Offset < Table->Length)
|
||||
+ while (Offset < Length)
|
||||
{
|
||||
/* Common subtable header */
|
||||
|
||||
AcpiOsPrintf ("\n");
|
||||
+ SubtableLength = AcpiUtReadUint16 (&Subtable->Length);
|
||||
Status = AcpiDmDumpTable (Length, Offset, Subtable,
|
||||
- Subtable->Length, AcpiDmTableInfoDmarHdr);
|
||||
+ SubtableLength, AcpiDmTableInfoDmarHdr);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
@@ -933,7 +936,8 @@ AcpiDmDumpDmar (
|
||||
|
||||
AcpiOsPrintf ("\n");
|
||||
|
||||
- switch (Subtable->Type)
|
||||
+ SubtableType = AcpiUtReadUint16 (&Subtable->Type);
|
||||
+ switch (SubtableType)
|
||||
{
|
||||
case ACPI_DMAR_TYPE_HARDWARE_UNIT:
|
||||
|
||||
@@ -974,12 +978,12 @@ AcpiDmDumpDmar (
|
||||
default:
|
||||
|
||||
AcpiOsPrintf ("\n**** Unknown DMAR subtable type 0x%X\n\n",
|
||||
- Subtable->Type);
|
||||
+ SubtableType);
|
||||
return;
|
||||
}
|
||||
|
||||
Status = AcpiDmDumpTable (Length, Offset, Subtable,
|
||||
- Subtable->Length, InfoTable);
|
||||
+ SubtableLength, InfoTable);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
@@ -988,8 +992,8 @@ AcpiDmDumpDmar (
|
||||
/*
|
||||
* Dump the optional device scope entries
|
||||
*/
|
||||
- if ((Subtable->Type == ACPI_DMAR_TYPE_HARDWARE_AFFINITY) ||
|
||||
- (Subtable->Type == ACPI_DMAR_TYPE_NAMESPACE))
|
||||
+ if ((SubtableType == ACPI_DMAR_TYPE_HARDWARE_AFFINITY) ||
|
||||
+ (SubtableType == ACPI_DMAR_TYPE_NAMESPACE))
|
||||
{
|
||||
/* These types do not support device scopes */
|
||||
|
||||
@@ -997,7 +1001,7 @@ AcpiDmDumpDmar (
|
||||
}
|
||||
|
||||
ScopeTable = ACPI_ADD_PTR (ACPI_DMAR_DEVICE_SCOPE, Subtable, ScopeOffset);
|
||||
- while (ScopeOffset < Subtable->Length)
|
||||
+ while (ScopeOffset < SubtableLength)
|
||||
{
|
||||
AcpiOsPrintf ("\n");
|
||||
Status = AcpiDmDumpTable (Length, Offset + ScopeOffset, ScopeTable,
|
||||
@@ -1038,9 +1042,9 @@ AcpiDmDumpDmar (
|
||||
NextSubtable:
|
||||
/* Point to next subtable */
|
||||
|
||||
- Offset += Subtable->Length;
|
||||
+ Offset += SubtableLength;
|
||||
Subtable = ACPI_ADD_PTR (ACPI_DMAR_HEADER, Subtable,
|
||||
- Subtable->Length);
|
||||
+ SubtableLength);
|
||||
}
|
||||
}
|
||||
|
||||
Index: acpica-unix2-20220331/source/compiler/dttable1.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/compiler/dttable1.c
|
||||
+++ acpica-unix2-20220331/source/compiler/dttable1.c
|
||||
@@ -997,6 +997,7 @@ DtCompileDmar (
|
||||
ACPI_DMAR_DEVICE_SCOPE *DmarDeviceScope;
|
||||
UINT32 DeviceScopeLength;
|
||||
UINT32 PciPathLength;
|
||||
+ UINT16 DmarHeaderType;
|
||||
|
||||
|
||||
Status = DtCompileTable (PFieldList, AcpiDmTableInfoDmar, &Subtable);
|
||||
@@ -1027,7 +1028,8 @@ DtCompileDmar (
|
||||
|
||||
DmarHeader = ACPI_CAST_PTR (ACPI_DMAR_HEADER, Subtable->Buffer);
|
||||
|
||||
- switch (DmarHeader->Type)
|
||||
+ DmarHeaderType = AcpiUtReadUint16 (&DmarHeader->Type);
|
||||
+ switch (DmarHeaderType)
|
||||
{
|
||||
case ACPI_DMAR_TYPE_HARDWARE_UNIT:
|
||||
|
||||
@@ -1079,8 +1081,8 @@ DtCompileDmar (
|
||||
/*
|
||||
* Optional Device Scope subtables
|
||||
*/
|
||||
- if ((DmarHeader->Type == ACPI_DMAR_TYPE_HARDWARE_AFFINITY) ||
|
||||
- (DmarHeader->Type == ACPI_DMAR_TYPE_NAMESPACE))
|
||||
+ if ((DmarHeaderType == ACPI_DMAR_TYPE_HARDWARE_AFFINITY) ||
|
||||
+ (DmarHeaderType == ACPI_DMAR_TYPE_NAMESPACE))
|
||||
{
|
||||
/* These types do not support device scopes */
|
||||
|
||||
@@ -1089,8 +1091,8 @@ DtCompileDmar (
|
||||
}
|
||||
|
||||
DtPushSubtable (Subtable);
|
||||
- DeviceScopeLength = DmarHeader->Length - Subtable->Length -
|
||||
- ParentTable->Length;
|
||||
+ DeviceScopeLength = AcpiUtReadUint16 (&DmarHeader->Length) -
|
||||
+ Subtable->Length - ParentTable->Length;
|
||||
while (DeviceScopeLength)
|
||||
{
|
||||
Status = DtCompileTable (PFieldList, AcpiDmTableInfoDmarScope,
|
@ -1,112 +0,0 @@
|
||||
From bcdec27f562b0df37546b5e8ad2eab76348062eb Mon Sep 17 00:00:00 2001
|
||||
From: Al Stone <ahs3@redhat.com>
|
||||
Date: Sat, 19 Sep 2020 15:44:06 -0600
|
||||
Subject: [PATCH 13/45] Support DRTM in a big-endian world
|
||||
|
||||
Signed-off-by: Al Stone <ahs3@redhat.com>
|
||||
---
|
||||
source/common/dmtbdump1.c | 25 +++++++++++++++----------
|
||||
source/compiler/dttable1.c | 6 ++++--
|
||||
2 files changed, 19 insertions(+), 12 deletions(-)
|
||||
|
||||
Index: acpica-unix2-20220331/source/common/dmtbdump1.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/common/dmtbdump1.c
|
||||
+++ acpica-unix2-20220331/source/common/dmtbdump1.c
|
||||
@@ -1071,11 +1071,14 @@ AcpiDmDumpDrtm (
|
||||
ACPI_DRTM_RESOURCE_LIST *DrtmRl;
|
||||
ACPI_DRTM_DPS_ID *DrtmDps;
|
||||
UINT32 Count;
|
||||
+ UINT32 ResourceCount;
|
||||
+ UINT32 ValidatedTableCount;
|
||||
+ UINT32 TableLength = AcpiUtReadUint32 (&Table->Length);
|
||||
|
||||
|
||||
/* Main table */
|
||||
|
||||
- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0,
|
||||
+ Status = AcpiDmDumpTable (TableLength, 0, Table, 0,
|
||||
AcpiDmTableInfoDrtm);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
@@ -1090,7 +1093,7 @@ AcpiDmDumpDrtm (
|
||||
|
||||
DrtmVtl = ACPI_ADD_PTR (ACPI_DRTM_VTABLE_LIST, Table, Offset);
|
||||
AcpiOsPrintf ("\n");
|
||||
- Status = AcpiDmDumpTable (Table->Length, Offset,
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset,
|
||||
DrtmVtl, ACPI_OFFSET (ACPI_DRTM_VTABLE_LIST, ValidatedTables),
|
||||
AcpiDmTableInfoDrtm0);
|
||||
if (ACPI_FAILURE (Status))
|
||||
@@ -1103,10 +1106,11 @@ AcpiDmDumpDrtm (
|
||||
/* Dump Validated table addresses */
|
||||
|
||||
Count = 0;
|
||||
- while ((Offset < Table->Length) &&
|
||||
- (DrtmVtl->ValidatedTableCount > Count))
|
||||
+ ValidatedTableCount = AcpiUtReadUint32 (&DrtmVtl->ValidatedTableCount);
|
||||
+ while ((Offset < TableLength) &&
|
||||
+ (ValidatedTableCount > Count))
|
||||
{
|
||||
- Status = AcpiDmDumpTable (Table->Length, Offset,
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset,
|
||||
ACPI_ADD_PTR (void, Table, Offset), sizeof (UINT64),
|
||||
AcpiDmTableInfoDrtm0a);
|
||||
if (ACPI_FAILURE (Status))
|
||||
@@ -1122,7 +1126,7 @@ AcpiDmDumpDrtm (
|
||||
|
||||
DrtmRl = ACPI_ADD_PTR (ACPI_DRTM_RESOURCE_LIST, Table, Offset);
|
||||
AcpiOsPrintf ("\n");
|
||||
- Status = AcpiDmDumpTable (Table->Length, Offset,
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset,
|
||||
DrtmRl, ACPI_OFFSET (ACPI_DRTM_RESOURCE_LIST, Resources),
|
||||
AcpiDmTableInfoDrtm1);
|
||||
if (ACPI_FAILURE (Status))
|
||||
@@ -1135,10 +1139,11 @@ AcpiDmDumpDrtm (
|
||||
/* Dump the Resource List */
|
||||
|
||||
Count = 0;
|
||||
- while ((Offset < Table->Length) &&
|
||||
- (DrtmRl->ResourceCount > Count))
|
||||
+ ResourceCount = AcpiUtReadUint32 (&DrtmRl->ResourceCount);
|
||||
+ while ((Offset < TableLength) &&
|
||||
+ (ResourceCount > Count))
|
||||
{
|
||||
- Status = AcpiDmDumpTable (Table->Length, Offset,
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset,
|
||||
ACPI_ADD_PTR (void, Table, Offset),
|
||||
sizeof (ACPI_DRTM_RESOURCE), AcpiDmTableInfoDrtm1a);
|
||||
if (ACPI_FAILURE (Status))
|
||||
@@ -1154,7 +1159,7 @@ AcpiDmDumpDrtm (
|
||||
|
||||
DrtmDps = ACPI_ADD_PTR (ACPI_DRTM_DPS_ID, Table, Offset);
|
||||
AcpiOsPrintf ("\n");
|
||||
- (void) AcpiDmDumpTable (Table->Length, Offset,
|
||||
+ (void) AcpiDmDumpTable (TableLength, Offset,
|
||||
DrtmDps, sizeof (ACPI_DRTM_DPS_ID), AcpiDmTableInfoDrtm2);
|
||||
}
|
||||
|
||||
Index: acpica-unix2-20220331/source/compiler/dttable1.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/compiler/dttable1.c
|
||||
+++ acpica-unix2-20220331/source/compiler/dttable1.c
|
||||
@@ -1217,7 +1217,8 @@ DtCompileDrtm (
|
||||
Count++;
|
||||
}
|
||||
|
||||
- DrtmVtl->ValidatedTableCount = Count;
|
||||
+ AcpiUtWriteUint (&DrtmVtl->ValidatedTableCount, sizeof (UINT32),
|
||||
+ &Count, sizeof (UINT32));
|
||||
DtPopSubtable ();
|
||||
ParentTable = DtPeekSubtable ();
|
||||
|
||||
@@ -1255,7 +1256,8 @@ DtCompileDrtm (
|
||||
Count++;
|
||||
}
|
||||
|
||||
- DrtmRl->ResourceCount = Count;
|
||||
+ AcpiUtWriteUint(&DrtmRl->ResourceCount, sizeof(UINT32),
|
||||
+ &Count, sizeof(UINT32));
|
||||
DtPopSubtable ();
|
||||
ParentTable = DtPeekSubtable ();
|
||||
|
@ -1,32 +0,0 @@
|
||||
From 70d1047abe010c80c2dd74f6afdc7005b91e6163 Mon Sep 17 00:00:00 2001
|
||||
From: Al Stone <ahs3@redhat.com>
|
||||
Date: Sat, 19 Sep 2020 15:50:19 -0600
|
||||
Subject: [PATCH 14/45] Support EINJ in a big-endian world
|
||||
|
||||
Signed-off-by: Al Stone <ahs3@redhat.com>
|
||||
---
|
||||
source/common/dmtbdump1.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: acpica-unix2-20220331/source/common/dmtbdump1.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/common/dmtbdump1.c
|
||||
+++ acpica-unix2-20220331/source/common/dmtbdump1.c
|
||||
@@ -1183,7 +1183,7 @@ AcpiDmDumpEinj (
|
||||
{
|
||||
ACPI_STATUS Status;
|
||||
ACPI_WHEA_HEADER *Subtable;
|
||||
- UINT32 Length = Table->Length;
|
||||
+ UINT32 Length = AcpiUtReadUint32 (&Table->Length);
|
||||
UINT32 Offset = sizeof (ACPI_TABLE_EINJ);
|
||||
|
||||
|
||||
@@ -1198,7 +1198,7 @@ AcpiDmDumpEinj (
|
||||
/* Subtables */
|
||||
|
||||
Subtable = ACPI_ADD_PTR (ACPI_WHEA_HEADER, Table, Offset);
|
||||
- while (Offset < Table->Length)
|
||||
+ while (Offset < Length)
|
||||
{
|
||||
AcpiOsPrintf ("\n");
|
||||
Status = AcpiDmDumpTable (Length, Offset, Subtable,
|
@ -1,32 +0,0 @@
|
||||
From e588961ca36e70c24aa1c49e96bcd1997bf98f89 Mon Sep 17 00:00:00 2001
|
||||
From: Al Stone <ahs3@redhat.com>
|
||||
Date: Sat, 19 Sep 2020 15:54:56 -0600
|
||||
Subject: [PATCH 15/45] Support ERST in a big-endian world
|
||||
|
||||
Signed-off-by: Al Stone <ahs3@redhat.com>
|
||||
---
|
||||
source/common/dmtbdump1.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: acpica-unix2-20220331/source/common/dmtbdump1.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/common/dmtbdump1.c
|
||||
+++ acpica-unix2-20220331/source/common/dmtbdump1.c
|
||||
@@ -1236,7 +1236,7 @@ AcpiDmDumpErst (
|
||||
{
|
||||
ACPI_STATUS Status;
|
||||
ACPI_WHEA_HEADER *Subtable;
|
||||
- UINT32 Length = Table->Length;
|
||||
+ UINT32 Length = AcpiUtReadUint32 (&Table->Length);
|
||||
UINT32 Offset = sizeof (ACPI_TABLE_ERST);
|
||||
|
||||
|
||||
@@ -1251,7 +1251,7 @@ AcpiDmDumpErst (
|
||||
/* Subtables */
|
||||
|
||||
Subtable = ACPI_ADD_PTR (ACPI_WHEA_HEADER, Table, Offset);
|
||||
- while (Offset < Table->Length)
|
||||
+ while (Offset < Length)
|
||||
{
|
||||
AcpiOsPrintf ("\n");
|
||||
Status = AcpiDmDumpTable (Length, Offset, Subtable,
|
@ -1,189 +0,0 @@
|
||||
From b3051bc2bad8988f3ad81a8307de6f1d0eef4ace Mon Sep 17 00:00:00 2001
|
||||
From: Al Stone <ahs3@redhat.com>
|
||||
Date: Sun, 20 Sep 2020 11:42:21 -0600
|
||||
Subject: [PATCH 16/45] Support FADT (aka, FACP) in a big-endian world
|
||||
|
||||
Signed-off-by: Al Stone <ahs3@redhat.com>
|
||||
---
|
||||
source/common/dmtbdump.c | 25 ++++++++++++-----------
|
||||
source/components/tables/tbfadt.c | 34 +++++++++++++++++++++++--------
|
||||
2 files changed, 38 insertions(+), 21 deletions(-)
|
||||
|
||||
Index: acpica-unix2-20220331/source/common/dmtbdump.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/common/dmtbdump.c
|
||||
+++ acpica-unix2-20220331/source/common/dmtbdump.c
|
||||
@@ -417,11 +417,12 @@ AcpiDmDumpFadt (
|
||||
ACPI_TABLE_HEADER *Table)
|
||||
{
|
||||
ACPI_STATUS Status;
|
||||
+ UINT32 TableLength = AcpiUtReadUint32 (&Table->Length);
|
||||
|
||||
|
||||
/* Always dump the minimum FADT revision 1 fields (ACPI 1.0) */
|
||||
|
||||
- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0,
|
||||
+ Status = AcpiDmDumpTable (TableLength, 0, Table, 0,
|
||||
AcpiDmTableInfoFadt1);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
@@ -430,10 +431,10 @@ AcpiDmDumpFadt (
|
||||
|
||||
/* Check for FADT revision 2 fields (ACPI 1.0B MS extensions) */
|
||||
|
||||
- if ((Table->Length > ACPI_FADT_V1_SIZE) &&
|
||||
- (Table->Length <= ACPI_FADT_V2_SIZE))
|
||||
+ if ((TableLength > ACPI_FADT_V1_SIZE) &&
|
||||
+ (TableLength <= ACPI_FADT_V2_SIZE))
|
||||
{
|
||||
- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0,
|
||||
+ Status = AcpiDmDumpTable (TableLength, 0, Table, 0,
|
||||
AcpiDmTableInfoFadt2);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
@@ -443,9 +444,9 @@ AcpiDmDumpFadt (
|
||||
|
||||
/* Check for FADT revision 3/4 fields and up (ACPI 2.0+ extended data) */
|
||||
|
||||
- else if (Table->Length > ACPI_FADT_V2_SIZE)
|
||||
+ else if (TableLength > ACPI_FADT_V2_SIZE)
|
||||
{
|
||||
- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0,
|
||||
+ Status = AcpiDmDumpTable (TableLength, 0, Table, 0,
|
||||
AcpiDmTableInfoFadt3);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
@@ -454,9 +455,9 @@ AcpiDmDumpFadt (
|
||||
|
||||
/* Check for FADT revision 5 fields and up (ACPI 5.0+) */
|
||||
|
||||
- if (Table->Length > ACPI_FADT_V3_SIZE)
|
||||
+ if (TableLength > ACPI_FADT_V3_SIZE)
|
||||
{
|
||||
- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0,
|
||||
+ Status = AcpiDmDumpTable (TableLength, 0, Table, 0,
|
||||
AcpiDmTableInfoFadt5);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
@@ -466,9 +467,9 @@ AcpiDmDumpFadt (
|
||||
|
||||
/* Check for FADT revision 6 fields and up (ACPI 6.0+) */
|
||||
|
||||
- if (Table->Length > ACPI_FADT_V3_SIZE)
|
||||
+ if (TableLength > ACPI_FADT_V3_SIZE)
|
||||
{
|
||||
- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0,
|
||||
+ Status = AcpiDmDumpTable (TableLength, 0, Table, 0,
|
||||
AcpiDmTableInfoFadt6);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
@@ -479,11 +480,11 @@ AcpiDmDumpFadt (
|
||||
|
||||
/* Validate various fields in the FADT, including length */
|
||||
|
||||
- AcpiTbCreateLocalFadt (Table, Table->Length);
|
||||
+ AcpiTbCreateLocalFadt (Table, TableLength);
|
||||
|
||||
/* Validate FADT length against the revision */
|
||||
|
||||
- AcpiDmValidateFadtLength (Table->Revision, Table->Length);
|
||||
+ AcpiDmValidateFadtLength (Table->Revision, TableLength);
|
||||
}
|
||||
|
||||
|
||||
Index: acpica-unix2-20220331/source/components/tables/tbfadt.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/components/tables/tbfadt.c
|
||||
+++ acpica-unix2-20220331/source/components/tables/tbfadt.c
|
||||
@@ -289,7 +289,6 @@ AcpiTbSelectAddress (
|
||||
UINT32 Address32,
|
||||
UINT64 Address64)
|
||||
{
|
||||
-
|
||||
if (!Address64)
|
||||
{
|
||||
/* 64-bit address is zero, use 32-bit address */
|
||||
@@ -520,6 +519,9 @@ AcpiTbConvertFadt (
|
||||
UINT8 Length;
|
||||
UINT8 Flags;
|
||||
UINT32 i;
|
||||
+ UINT32 Tmp;
|
||||
+ UINT32 Value32;
|
||||
+ UINT64 Value64;
|
||||
|
||||
|
||||
/*
|
||||
@@ -533,7 +535,7 @@ AcpiTbConvertFadt (
|
||||
* Note: The FADT revision value is unreliable. Only the length can be
|
||||
* trusted.
|
||||
*/
|
||||
- if (AcpiGbl_FADT.Header.Length <= ACPI_FADT_V2_SIZE)
|
||||
+ if (AcpiUtReadUint32 (&AcpiGbl_FADT.Header.Length) <= ACPI_FADT_V2_SIZE)
|
||||
{
|
||||
AcpiGbl_FADT.PreferredProfile = 0;
|
||||
AcpiGbl_FADT.PstateControl = 0;
|
||||
@@ -546,14 +548,19 @@ AcpiTbConvertFadt (
|
||||
* current FADT version as defined by the ACPI specification.
|
||||
* Thus, we will have a common FADT internally.
|
||||
*/
|
||||
- AcpiGbl_FADT.Header.Length = sizeof (ACPI_TABLE_FADT);
|
||||
+ Tmp = sizeof (ACPI_TABLE_FADT);
|
||||
+ AcpiUtWriteUint (&AcpiGbl_FADT.Header.Length, sizeof (UINT32),
|
||||
+ &Tmp, sizeof (UINT32));
|
||||
|
||||
/*
|
||||
* Expand the 32-bit DSDT addresses to 64-bit as necessary.
|
||||
* Later ACPICA code will always use the X 64-bit field.
|
||||
*/
|
||||
- AcpiGbl_FADT.XDsdt = AcpiTbSelectAddress ("DSDT",
|
||||
- AcpiGbl_FADT.Dsdt, AcpiGbl_FADT.XDsdt);
|
||||
+ Value32 = AcpiUtReadUint32 (&AcpiGbl_FADT.Dsdt);
|
||||
+ Value64 = AcpiUtReadUint64 (&AcpiGbl_FADT.XDsdt);
|
||||
+ Value64 = AcpiTbSelectAddress ("DSDT", Value32, Value64);
|
||||
+ AcpiUtWriteUint (&AcpiGbl_FADT.XDsdt, sizeof (UINT64),
|
||||
+ &Value64, sizeof (UINT64));
|
||||
|
||||
/* If Hardware Reduced flag is set, we are all done */
|
||||
|
||||
@@ -614,7 +621,11 @@ AcpiTbConvertFadt (
|
||||
{
|
||||
if (Address64->Address)
|
||||
{
|
||||
- if (Address64->Address != (UINT64) Address32)
|
||||
+ Value32 = AcpiUtReadUint32 (&Address32);
|
||||
+ Value64 = AcpiUtReadUint64 (&Address64->Address);
|
||||
+
|
||||
+ /* if (Address64->Address != (UINT64) Address32) */
|
||||
+ if (Value64 != (UINT64) Value32)
|
||||
{
|
||||
/* Address mismatch */
|
||||
|
||||
@@ -655,9 +666,10 @@ AcpiTbConvertFadt (
|
||||
*/
|
||||
if (!Address64->Address || AcpiGbl_Use32BitFadtAddresses)
|
||||
{
|
||||
+ Value32 = AcpiUtReadUint32 (&Address32);
|
||||
AcpiTbInitGenericAddress (Address64,
|
||||
ACPI_ADR_SPACE_SYSTEM_IO, Length,
|
||||
- (UINT64) Address32, Name, Flags);
|
||||
+ (UINT64) Value32, Name, Flags);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -780,10 +792,14 @@ AcpiTbSetupFadtRegisters (
|
||||
|
||||
if (Source64->Address)
|
||||
{
|
||||
+ UINT64 Address64;
|
||||
+
|
||||
+ Address64 = AcpiUtReadUint64 (&Source64->Address);
|
||||
+ Address64 +=
|
||||
+ (FadtPmInfoTable[i].RegisterNum * Pm1RegisterByteWidth);
|
||||
AcpiTbInitGenericAddress (FadtPmInfoTable[i].Target,
|
||||
Source64->SpaceId, Pm1RegisterByteWidth,
|
||||
- Source64->Address +
|
||||
- (FadtPmInfoTable[i].RegisterNum * Pm1RegisterByteWidth),
|
||||
+ Address64,
|
||||
"PmRegisters", 0);
|
||||
}
|
||||
}
|
@ -1,85 +0,0 @@
|
||||
From 35f533074fb78d52e87c5a14406a136480a6fe62 Mon Sep 17 00:00:00 2001
|
||||
From: Al Stone <ahs3@redhat.com>
|
||||
Date: Tue, 22 Sep 2020 17:51:45 -0600
|
||||
Subject: [PATCH 17/45] Support most FPDTs in a big-endian world
|
||||
|
||||
NB: there is no support for vendor specific records even in
|
||||
the little-endian version.
|
||||
|
||||
Signed-off-by: Al Stone <ahs3@redhat.com>
|
||||
---
|
||||
source/common/dmtbdump1.c | 12 +++++++-----
|
||||
source/compiler/dttable1.c | 4 +++-
|
||||
2 files changed, 10 insertions(+), 6 deletions(-)
|
||||
|
||||
Index: acpica-unix2-20220331/source/common/dmtbdump1.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/common/dmtbdump1.c
|
||||
+++ acpica-unix2-20220331/source/common/dmtbdump1.c
|
||||
@@ -1289,9 +1289,10 @@ AcpiDmDumpFpdt (
|
||||
{
|
||||
ACPI_STATUS Status;
|
||||
ACPI_FPDT_HEADER *Subtable;
|
||||
- UINT32 Length = Table->Length;
|
||||
+ UINT32 TableLength = AcpiUtReadUint32 (&Table->Length);
|
||||
UINT32 Offset = sizeof (ACPI_TABLE_FPDT);
|
||||
ACPI_DMTABLE_INFO *InfoTable;
|
||||
+ UINT16 SubtableType;
|
||||
|
||||
|
||||
/* There is no main table (other than the standard ACPI header) */
|
||||
@@ -1299,19 +1300,20 @@ AcpiDmDumpFpdt (
|
||||
/* Subtables */
|
||||
|
||||
Subtable = ACPI_ADD_PTR (ACPI_FPDT_HEADER, Table, Offset);
|
||||
- while (Offset < Table->Length)
|
||||
+ while (Offset < TableLength)
|
||||
{
|
||||
/* Common subtable header */
|
||||
|
||||
AcpiOsPrintf ("\n");
|
||||
- Status = AcpiDmDumpTable (Length, Offset, Subtable,
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset, Subtable,
|
||||
Subtable->Length, AcpiDmTableInfoFpdtHdr);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
- switch (Subtable->Type)
|
||||
+ SubtableType = AcpiUtReadUint16 (&Subtable->Type);
|
||||
+ switch (SubtableType)
|
||||
{
|
||||
case ACPI_FPDT_TYPE_BOOT:
|
||||
|
||||
@@ -1338,7 +1340,7 @@ AcpiDmDumpFpdt (
|
||||
goto NextSubtable;
|
||||
}
|
||||
|
||||
- Status = AcpiDmDumpTable (Length, Offset, Subtable,
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset, Subtable,
|
||||
Subtable->Length, InfoTable);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
Index: acpica-unix2-20220331/source/compiler/dttable1.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/compiler/dttable1.c
|
||||
+++ acpica-unix2-20220331/source/compiler/dttable1.c
|
||||
@@ -1493,6 +1493,7 @@ DtCompileFpdt (
|
||||
ACPI_DMTABLE_INFO *InfoTable;
|
||||
DT_FIELD **PFieldList = (DT_FIELD **) List;
|
||||
DT_FIELD *SubtableStart;
|
||||
+ UINT16 SubtableType;
|
||||
|
||||
|
||||
while (*PFieldList)
|
||||
@@ -1511,7 +1512,8 @@ DtCompileFpdt (
|
||||
|
||||
FpdtHeader = ACPI_CAST_PTR (ACPI_FPDT_HEADER, Subtable->Buffer);
|
||||
|
||||
- switch (FpdtHeader->Type)
|
||||
+ SubtableType = AcpiUtReadUint16 (&FpdtHeader->Type);
|
||||
+ switch (SubtableType)
|
||||
{
|
||||
case ACPI_FPDT_TYPE_BOOT:
|
||||
|
@ -1,69 +0,0 @@
|
||||
From 492e41a24fd088c7ab609ee8ad518f69c9cd29e3 Mon Sep 17 00:00:00 2001
|
||||
From: Al Stone <ahs3@redhat.com>
|
||||
Date: Tue, 22 Sep 2020 18:12:01 -0600
|
||||
Subject: [PATCH 18/45] Support GTDT in a big-endian world
|
||||
|
||||
Signed-off-by: Al Stone <ahs3@redhat.com>
|
||||
---
|
||||
source/common/dmtbdump1.c | 13 +++++++++----
|
||||
source/compiler/dttable1.c | 9 +++++++--
|
||||
2 files changed, 16 insertions(+), 6 deletions(-)
|
||||
|
||||
Index: acpica-unix2-20220331/source/common/dmtbdump1.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/common/dmtbdump1.c
|
||||
+++ acpica-unix2-20220331/source/common/dmtbdump1.c
|
||||
@@ -1376,7 +1376,7 @@ AcpiDmDumpGtdt (
|
||||
{
|
||||
ACPI_STATUS Status;
|
||||
ACPI_GTDT_HEADER *Subtable;
|
||||
- UINT32 Length = Table->Length;
|
||||
+ UINT32 Length = AcpiUtReadUint32 (&Table->Length);
|
||||
UINT32 Offset = sizeof (ACPI_TABLE_GTDT);
|
||||
ACPI_DMTABLE_INFO *InfoTable;
|
||||
UINT32 SubtableLength;
|
||||
@@ -1412,7 +1412,7 @@ AcpiDmDumpGtdt (
|
||||
|
||||
/* Subtables */
|
||||
|
||||
- while (Offset < Table->Length)
|
||||
+ while (Offset < Length)
|
||||
{
|
||||
/* Common subtable header */
|
||||
|
||||
@@ -1430,8 +1430,13 @@ AcpiDmDumpGtdt (
|
||||
case ACPI_GTDT_TYPE_TIMER_BLOCK:
|
||||
|
||||
SubtableLength = sizeof (ACPI_GTDT_TIMER_BLOCK);
|
||||
- GtCount = (ACPI_CAST_PTR (ACPI_GTDT_TIMER_BLOCK,
|
||||
- Subtable))->TimerCount;
|
||||
+ {
|
||||
+ UINT32 Tmp32;
|
||||
+
|
||||
+ Tmp32 = (ACPI_CAST_PTR (ACPI_GTDT_TIMER_BLOCK,
|
||||
+ Subtable))->TimerCount;
|
||||
+ GtCount = AcpiUtReadUint32 (&Tmp32);
|
||||
+ }
|
||||
|
||||
InfoTable = AcpiDmTableInfoGtdt0;
|
||||
break;
|
||||
Index: acpica-unix2-20220331/source/compiler/dttable1.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/compiler/dttable1.c
|
||||
+++ acpica-unix2-20220331/source/compiler/dttable1.c
|
||||
@@ -1439,8 +1439,13 @@ DtCompileGtdt (
|
||||
DtPushSubtable (Subtable);
|
||||
ParentTable = DtPeekSubtable ();
|
||||
|
||||
- GtCount = (ACPI_CAST_PTR (ACPI_GTDT_TIMER_BLOCK,
|
||||
- Subtable->Buffer - sizeof(ACPI_GTDT_HEADER)))->TimerCount;
|
||||
+ {
|
||||
+ UINT32 Tmp32;
|
||||
+
|
||||
+ Tmp32 = (ACPI_CAST_PTR (ACPI_GTDT_TIMER_BLOCK,
|
||||
+ Subtable->Buffer - sizeof (ACPI_GTDT_HEADER)))->TimerCount;
|
||||
+ GtCount = AcpiUtReadUint32 (&Tmp32);
|
||||
+ }
|
||||
|
||||
while (GtCount)
|
||||
{
|
@ -1,75 +0,0 @@
|
||||
From 6b73a4881e436bb8cf86c05c1cc4b5360efe1c7f Mon Sep 17 00:00:00 2001
|
||||
From: Al Stone <ahs3@redhat.com>
|
||||
Date: Wed, 23 Sep 2020 11:54:49 -0600
|
||||
Subject: [PATCH 19/45] Support HEST in a big-endian world
|
||||
|
||||
Signed-off-by: Al Stone <ahs3@redhat.com>
|
||||
---
|
||||
source/common/dmtbdump1.c | 10 ++++++----
|
||||
source/compiler/dttable1.c | 4 +++-
|
||||
2 files changed, 9 insertions(+), 5 deletions(-)
|
||||
|
||||
Index: acpica-unix2-20220331/source/common/dmtbdump1.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/common/dmtbdump1.c
|
||||
+++ acpica-unix2-20220331/source/common/dmtbdump1.c
|
||||
@@ -1517,12 +1517,13 @@ AcpiDmDumpHest (
|
||||
{
|
||||
ACPI_STATUS Status;
|
||||
ACPI_HEST_HEADER *Subtable;
|
||||
- UINT32 Length = Table->Length;
|
||||
+ UINT32 Length = AcpiUtReadUint32 (&Table->Length);
|
||||
UINT32 Offset = sizeof (ACPI_TABLE_HEST);
|
||||
ACPI_DMTABLE_INFO *InfoTable;
|
||||
UINT32 SubtableLength;
|
||||
UINT32 BankCount;
|
||||
ACPI_HEST_IA_ERROR_BANK *BankTable;
|
||||
+ UINT16 SubtableType;
|
||||
|
||||
|
||||
/* Main table */
|
||||
@@ -1536,10 +1537,11 @@ AcpiDmDumpHest (
|
||||
/* Subtables */
|
||||
|
||||
Subtable = ACPI_ADD_PTR (ACPI_HEST_HEADER, Table, Offset);
|
||||
- while (Offset < Table->Length)
|
||||
+ while (Offset < Length)
|
||||
{
|
||||
BankCount = 0;
|
||||
- switch (Subtable->Type)
|
||||
+ SubtableType = Subtable->Type;
|
||||
+ switch (SubtableType)
|
||||
{
|
||||
case ACPI_HEST_TYPE_IA32_CHECK:
|
||||
|
||||
@@ -1606,7 +1608,7 @@ AcpiDmDumpHest (
|
||||
/* Cannot continue on unknown type - no length */
|
||||
|
||||
AcpiOsPrintf ("\n**** Unknown HEST subtable type 0x%X\n",
|
||||
- Subtable->Type);
|
||||
+ SubtableType);
|
||||
return;
|
||||
}
|
||||
|
||||
Index: acpica-unix2-20220331/source/compiler/dttable1.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/compiler/dttable1.c
|
||||
+++ acpica-unix2-20220331/source/compiler/dttable1.c
|
||||
@@ -1575,6 +1575,7 @@ DtCompileHest (
|
||||
DT_FIELD *SubtableStart;
|
||||
ACPI_DMTABLE_INFO *InfoTable;
|
||||
UINT16 Type;
|
||||
+ UINT16 Tmp16;
|
||||
UINT32 BankCount;
|
||||
|
||||
|
||||
@@ -1593,7 +1594,8 @@ DtCompileHest (
|
||||
/* Get subtable type */
|
||||
|
||||
SubtableStart = *PFieldList;
|
||||
- DtCompileInteger ((UINT8 *) &Type, *PFieldList, 2, 0);
|
||||
+ DtCompileInteger ((UINT8 *) &Tmp16, *PFieldList, 2, 0);
|
||||
+ Type = AcpiUtReadUint32 (&Tmp16);
|
||||
|
||||
switch (Type)
|
||||
{
|
@ -1,37 +0,0 @@
|
||||
From 198abe6e9fcb03676513146bf2f9b8ccc49e5827 Mon Sep 17 00:00:00 2001
|
||||
From: Al Stone <ahs3@redhat.com>
|
||||
Date: Wed, 23 Sep 2020 12:11:46 -0600
|
||||
Subject: [PATCH 20/45] Support RSDT ('RSD PTR') in a big-endian world
|
||||
|
||||
Signed-off-by: Al Stone <ahs3@redhat.com>
|
||||
---
|
||||
source/common/dmtbdump.c | 5 +++--
|
||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: acpica-unix2-20220331/source/common/dmtbdump.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/common/dmtbdump.c
|
||||
+++ acpica-unix2-20220331/source/common/dmtbdump.c
|
||||
@@ -336,6 +336,7 @@ AcpiDmDumpRsdt (
|
||||
UINT32 Entries;
|
||||
UINT32 Offset;
|
||||
UINT32 i;
|
||||
+ UINT32 TableLength = AcpiUtReadUint32 (&Table->Length);
|
||||
|
||||
|
||||
/* Point to start of table pointer array */
|
||||
@@ -345,12 +346,12 @@ AcpiDmDumpRsdt (
|
||||
|
||||
/* RSDT uses 32-bit pointers */
|
||||
|
||||
- Entries = (Table->Length - sizeof (ACPI_TABLE_HEADER)) / sizeof (UINT32);
|
||||
+ Entries = (TableLength - sizeof (ACPI_TABLE_HEADER)) / sizeof (UINT32);
|
||||
|
||||
for (i = 0; i < Entries; i++)
|
||||
{
|
||||
AcpiDmLineHeader2 (Offset, sizeof (UINT32), "ACPI Table Address", i);
|
||||
- AcpiOsPrintf ("%8.8X\n", Array[i]);
|
||||
+ AcpiOsPrintf ("%8.8X\n", AcpiUtReadUint32 (&Array[i]));
|
||||
Offset += sizeof (UINT32);
|
||||
}
|
||||
}
|
@ -1,38 +0,0 @@
|
||||
From 75d974e42fefabfd6684d62f58bff678b55f396b Mon Sep 17 00:00:00 2001
|
||||
From: Al Stone <ahs3@redhat.com>
|
||||
Date: Wed, 23 Sep 2020 12:16:37 -0600
|
||||
Subject: [PATCH 21/45] Support XSDT in a big-endian world
|
||||
|
||||
Signed-off-by: Al Stone <ahs3@redhat.com>
|
||||
---
|
||||
source/common/dmtbdump.c | 6 ++++--
|
||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: acpica-unix2-20220331/source/common/dmtbdump.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/common/dmtbdump.c
|
||||
+++ acpica-unix2-20220331/source/common/dmtbdump.c
|
||||
@@ -377,6 +377,7 @@ AcpiDmDumpXsdt (
|
||||
UINT32 Entries;
|
||||
UINT32 Offset;
|
||||
UINT32 i;
|
||||
+ UINT32 TableLength = AcpiUtReadUint32 (&Table->Length);
|
||||
|
||||
|
||||
/* Point to start of table pointer array */
|
||||
@@ -386,12 +387,13 @@ AcpiDmDumpXsdt (
|
||||
|
||||
/* XSDT uses 64-bit pointers */
|
||||
|
||||
- Entries = (Table->Length - sizeof (ACPI_TABLE_HEADER)) / sizeof (UINT64);
|
||||
+ Entries = (TableLength - sizeof (ACPI_TABLE_HEADER)) / sizeof (UINT64);
|
||||
|
||||
for (i = 0; i < Entries; i++)
|
||||
{
|
||||
AcpiDmLineHeader2 (Offset, sizeof (UINT64), "ACPI Table Address", i);
|
||||
- AcpiOsPrintf ("%8.8X%8.8X\n", ACPI_FORMAT_UINT64 (Array[i]));
|
||||
+ AcpiOsPrintf ("%8.8X%8.8X\n",
|
||||
+ ACPI_FORMAT_UINT64 (AcpiUtReadUint64 (&Array[i])));
|
||||
Offset += sizeof (UINT64);
|
||||
}
|
||||
}
|
@ -1,52 +0,0 @@
|
||||
From 724fcc83d359e4c8abbd2a48755e96049afa06d6 Mon Sep 17 00:00:00 2001
|
||||
From: Al Stone <ahs3@redhat.com>
|
||||
Date: Wed, 23 Sep 2020 12:25:38 -0600
|
||||
Subject: [PATCH 22/45] Support SRAT in a big-endian world
|
||||
|
||||
Signed-off-by: Al Stone <ahs3@redhat.com>
|
||||
---
|
||||
source/common/dmtbdump3.c | 9 +++++----
|
||||
1 file changed, 5 insertions(+), 4 deletions(-)
|
||||
|
||||
Index: acpica-unix2-20220331/source/common/dmtbdump3.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/common/dmtbdump3.c
|
||||
+++ acpica-unix2-20220331/source/common/dmtbdump3.c
|
||||
@@ -173,11 +173,12 @@ AcpiDmDumpSrat (
|
||||
UINT32 Offset = sizeof (ACPI_TABLE_SRAT);
|
||||
ACPI_SUBTABLE_HEADER *Subtable;
|
||||
ACPI_DMTABLE_INFO *InfoTable;
|
||||
+ UINT32 TableLength = AcpiUtReadUint32 (&Table->Length);
|
||||
|
||||
|
||||
/* Main table */
|
||||
|
||||
- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoSrat);
|
||||
+ Status = AcpiDmDumpTable (TableLength, 0, Table, 0, AcpiDmTableInfoSrat);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
@@ -186,12 +187,12 @@ AcpiDmDumpSrat (
|
||||
/* Subtables */
|
||||
|
||||
Subtable = ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, Table, Offset);
|
||||
- while (Offset < Table->Length)
|
||||
+ while (Offset < TableLength)
|
||||
{
|
||||
/* Common subtable header */
|
||||
|
||||
AcpiOsPrintf ("\n");
|
||||
- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset, Subtable,
|
||||
Subtable->Length, AcpiDmTableInfoSratHdr);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
@@ -250,7 +251,7 @@ AcpiDmDumpSrat (
|
||||
}
|
||||
|
||||
AcpiOsPrintf ("\n");
|
||||
- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset, Subtable,
|
||||
Subtable->Length, InfoTable);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
@ -1,61 +0,0 @@
|
||||
From b11d50752feb9f1b52db076d1fb4753b30a53642 Mon Sep 17 00:00:00 2001
|
||||
From: Al Stone <ahs3@redhat.com>
|
||||
Date: Wed, 23 Sep 2020 12:49:52 -0600
|
||||
Subject: [PATCH 23/45] Support SLIT in a big-endian world
|
||||
|
||||
Signed-off-by: Al Stone <ahs3@redhat.com>
|
||||
---
|
||||
source/common/dmtbdump3.c | 8 +++++---
|
||||
source/compiler/dttable2.c | 2 +-
|
||||
2 files changed, 6 insertions(+), 4 deletions(-)
|
||||
|
||||
Index: acpica-unix2-20220331/source/common/dmtbdump3.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/common/dmtbdump3.c
|
||||
+++ acpica-unix2-20220331/source/common/dmtbdump3.c
|
||||
@@ -96,11 +96,12 @@ AcpiDmDumpSlit (
|
||||
UINT32 Localities;
|
||||
UINT32 i;
|
||||
UINT32 j;
|
||||
+ UINT32 TableLength = AcpiUtReadUint32 (&Table->Length);
|
||||
|
||||
|
||||
/* Main table */
|
||||
|
||||
- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoSlit);
|
||||
+ Status = AcpiDmDumpTable (TableLength, 0, Table, 0, AcpiDmTableInfoSlit);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
@@ -108,7 +109,8 @@ AcpiDmDumpSlit (
|
||||
|
||||
/* Display the Locality NxN Matrix */
|
||||
|
||||
- Localities = (UINT32) ACPI_CAST_PTR (ACPI_TABLE_SLIT, Table)->LocalityCount;
|
||||
+ Localities = (UINT32)
|
||||
+ AcpiUtReadUint64 (&ACPI_CAST_PTR (ACPI_TABLE_SLIT, Table)->LocalityCount);
|
||||
Offset = ACPI_OFFSET (ACPI_TABLE_SLIT, Entry[0]);
|
||||
Row = (UINT8 *) ACPI_CAST_PTR (ACPI_TABLE_SLIT, Table)->Entry;
|
||||
|
||||
@@ -121,7 +123,7 @@ AcpiDmDumpSlit (
|
||||
{
|
||||
/* Check for beyond EOT */
|
||||
|
||||
- if (Offset >= Table->Length)
|
||||
+ if (Offset >= TableLength)
|
||||
{
|
||||
AcpiOsPrintf (
|
||||
"\n**** Not enough room in table for all localities\n");
|
||||
Index: acpica-unix2-20220331/source/compiler/dttable2.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/compiler/dttable2.c
|
||||
+++ acpica-unix2-20220331/source/compiler/dttable2.c
|
||||
@@ -2234,7 +2234,7 @@ DtCompileSlit (
|
||||
ParentTable = DtPeekSubtable ();
|
||||
DtInsertSubtable (ParentTable, Subtable);
|
||||
|
||||
- Localities = *ACPI_CAST_PTR (UINT32, Subtable->Buffer);
|
||||
+ Localities = (UINT32) AcpiUtReadUint64 (Subtable->Buffer);
|
||||
LocalityBuffer = UtLocalCalloc (Localities);
|
||||
LocalityListLength = 0;
|
||||
|
@ -1,43 +0,0 @@
|
||||
From ae38e1578d18abf41330bb3dbaef9ea56a52f49b Mon Sep 17 00:00:00 2001
|
||||
From: Al Stone <ahs3@redhat.com>
|
||||
Date: Wed, 23 Sep 2020 15:44:21 -0600
|
||||
Subject: [PATCH 24/45] Support MSCT in a big-endian world
|
||||
|
||||
Signed-off-by: Al Stone <ahs3@redhat.com>
|
||||
---
|
||||
source/common/dmtbdump2.c | 7 ++++---
|
||||
1 file changed, 4 insertions(+), 3 deletions(-)
|
||||
|
||||
Index: acpica-unix2-20220331/source/common/dmtbdump2.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/common/dmtbdump2.c
|
||||
+++ acpica-unix2-20220331/source/common/dmtbdump2.c
|
||||
@@ -1185,11 +1185,12 @@ AcpiDmDumpMsct (
|
||||
ACPI_STATUS Status;
|
||||
UINT32 Offset = sizeof (ACPI_TABLE_MSCT);
|
||||
ACPI_MSCT_PROXIMITY *Subtable;
|
||||
+ UINT32 TableLength = AcpiUtReadUint32 (&Table->Length);
|
||||
|
||||
|
||||
/* Main table */
|
||||
|
||||
- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoMsct);
|
||||
+ Status = AcpiDmDumpTable (TableLength, 0, Table, 0, AcpiDmTableInfoMsct);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
@@ -1198,12 +1199,12 @@ AcpiDmDumpMsct (
|
||||
/* Subtables */
|
||||
|
||||
Subtable = ACPI_ADD_PTR (ACPI_MSCT_PROXIMITY, Table, Offset);
|
||||
- while (Offset < Table->Length)
|
||||
+ while (Offset < TableLength)
|
||||
{
|
||||
/* Common subtable header */
|
||||
|
||||
AcpiOsPrintf ("\n");
|
||||
- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset, Subtable,
|
||||
sizeof (ACPI_MSCT_PROXIMITY), AcpiDmTableInfoMsct0);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
@ -1,152 +0,0 @@
|
||||
From 0a25688f36df62579f4dd0444ceba33a0f8d4dcc Mon Sep 17 00:00:00 2001
|
||||
From: Al Stone <ahs3@redhat.com>
|
||||
Date: Wed, 23 Sep 2020 16:08:24 -0600
|
||||
Subject: [PATCH 25/45] Support MPST in a big-endian world
|
||||
|
||||
Signed-off-by: Al Stone <ahs3@redhat.com>
|
||||
---
|
||||
source/common/dmtbdump2.c | 33 +++++++++++++++++++--------------
|
||||
source/compiler/dttable2.c | 8 ++++----
|
||||
2 files changed, 23 insertions(+), 18 deletions(-)
|
||||
|
||||
Index: acpica-unix2-20220331/source/common/dmtbdump2.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/common/dmtbdump2.c
|
||||
+++ acpica-unix2-20220331/source/common/dmtbdump2.c
|
||||
@@ -1047,11 +1047,13 @@ AcpiDmDumpMpst (
|
||||
UINT16 SubtableCount;
|
||||
UINT32 PowerStateCount;
|
||||
UINT32 ComponentCount;
|
||||
+ UINT32 TableLength = AcpiUtReadUint32 (&Table->Length);
|
||||
+ UINT16 Tmp16;
|
||||
|
||||
|
||||
/* Main table */
|
||||
|
||||
- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoMpst);
|
||||
+ Status = AcpiDmDumpTable (TableLength, 0, Table, 0, AcpiDmTableInfoMpst);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
@@ -1059,13 +1061,14 @@ AcpiDmDumpMpst (
|
||||
|
||||
/* Subtable: Memory Power Node(s) */
|
||||
|
||||
- SubtableCount = (ACPI_CAST_PTR (ACPI_TABLE_MPST, Table))->PowerNodeCount;
|
||||
+ Tmp16 = (ACPI_CAST_PTR (ACPI_TABLE_MPST, Table))->PowerNodeCount;
|
||||
+ SubtableCount = AcpiUtReadUint16 (&Tmp16);
|
||||
Subtable0 = ACPI_ADD_PTR (ACPI_MPST_POWER_NODE, Table, Offset);
|
||||
|
||||
- while ((Offset < Table->Length) && SubtableCount)
|
||||
+ while ((Offset < TableLength) && SubtableCount)
|
||||
{
|
||||
AcpiOsPrintf ("\n");
|
||||
- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable0,
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset, Subtable0,
|
||||
sizeof (ACPI_MPST_POWER_NODE), AcpiDmTableInfoMpst0);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
@@ -1074,8 +1077,8 @@ AcpiDmDumpMpst (
|
||||
|
||||
/* Extract the sub-subtable counts */
|
||||
|
||||
- PowerStateCount = Subtable0->NumPowerStates;
|
||||
- ComponentCount = Subtable0->NumPhysicalComponents;
|
||||
+ PowerStateCount = AcpiUtReadUint16 (&Subtable0->NumPowerStates);
|
||||
+ ComponentCount = AcpiUtReadUint16 (&Subtable0->NumPhysicalComponents);
|
||||
Offset += sizeof (ACPI_MPST_POWER_NODE);
|
||||
|
||||
/* Sub-subtables - Memory Power State Structure(s) */
|
||||
@@ -1086,7 +1089,7 @@ AcpiDmDumpMpst (
|
||||
while (PowerStateCount)
|
||||
{
|
||||
AcpiOsPrintf ("\n");
|
||||
- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable0A,
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset, Subtable0A,
|
||||
sizeof (ACPI_MPST_POWER_STATE), AcpiDmTableInfoMpst0A);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
@@ -1109,7 +1112,7 @@ AcpiDmDumpMpst (
|
||||
|
||||
while (ComponentCount)
|
||||
{
|
||||
- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable0B,
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset, Subtable0B,
|
||||
sizeof (ACPI_MPST_COMPONENT), AcpiDmTableInfoMpst0B);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
@@ -1126,22 +1129,24 @@ AcpiDmDumpMpst (
|
||||
SubtableCount--;
|
||||
Subtable0 = ACPI_ADD_PTR (ACPI_MPST_POWER_NODE, Subtable0,
|
||||
sizeof (ACPI_MPST_POWER_NODE) +
|
||||
- (sizeof (ACPI_MPST_POWER_STATE) * Subtable0->NumPowerStates) +
|
||||
- (sizeof (ACPI_MPST_COMPONENT) * Subtable0->NumPhysicalComponents));
|
||||
+ (sizeof (ACPI_MPST_POWER_STATE) *
|
||||
+ AcpiUtReadUint16 (&Subtable0->NumPowerStates)) +
|
||||
+ (sizeof (ACPI_MPST_COMPONENT) *
|
||||
+ AcpiUtReadUint16 (&Subtable0->NumPhysicalComponents)));
|
||||
}
|
||||
|
||||
/* Subtable: Count of Memory Power State Characteristic structures */
|
||||
|
||||
AcpiOsPrintf ("\n");
|
||||
Subtable1 = ACPI_CAST_PTR (ACPI_MPST_DATA_HDR, Subtable0);
|
||||
- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable1,
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset, Subtable1,
|
||||
sizeof (ACPI_MPST_DATA_HDR), AcpiDmTableInfoMpst1);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
- SubtableCount = Subtable1->CharacteristicsCount;
|
||||
+ SubtableCount = AcpiUtReadUint16 (&Subtable1->CharacteristicsCount);
|
||||
Offset += sizeof (ACPI_MPST_DATA_HDR);
|
||||
|
||||
/* Subtable: Memory Power State Characteristics structure(s) */
|
||||
@@ -1149,10 +1154,10 @@ AcpiDmDumpMpst (
|
||||
Subtable2 = ACPI_ADD_PTR (ACPI_MPST_POWER_DATA, Subtable1,
|
||||
sizeof (ACPI_MPST_DATA_HDR));
|
||||
|
||||
- while ((Offset < Table->Length) && SubtableCount)
|
||||
+ while ((Offset < TableLength) && SubtableCount)
|
||||
{
|
||||
AcpiOsPrintf ("\n");
|
||||
- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable2,
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset, Subtable2,
|
||||
sizeof (ACPI_MPST_POWER_DATA), AcpiDmTableInfoMpst2);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
Index: acpica-unix2-20220331/source/compiler/dttable2.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/compiler/dttable2.c
|
||||
+++ acpica-unix2-20220331/source/compiler/dttable2.c
|
||||
@@ -359,7 +359,7 @@ DtCompileMpst (
|
||||
DtPushSubtable (Subtable);
|
||||
|
||||
MpstChannelInfo = ACPI_CAST_PTR (ACPI_MPST_CHANNEL, Subtable->Buffer);
|
||||
- SubtableCount = MpstChannelInfo->PowerNodeCount;
|
||||
+ SubtableCount = AcpiUtReadUint16 (&MpstChannelInfo->PowerNodeCount);
|
||||
|
||||
while (*PFieldList && SubtableCount)
|
||||
{
|
||||
@@ -377,8 +377,8 @@ DtCompileMpst (
|
||||
DtPushSubtable (Subtable);
|
||||
|
||||
MpstPowerNode = ACPI_CAST_PTR (ACPI_MPST_POWER_NODE, Subtable->Buffer);
|
||||
- PowerStateCount = MpstPowerNode->NumPowerStates;
|
||||
- ComponentCount = MpstPowerNode->NumPhysicalComponents;
|
||||
+ PowerStateCount = AcpiUtReadUint16 (&MpstPowerNode->NumPowerStates);
|
||||
+ ComponentCount = AcpiUtReadUint16 (&MpstPowerNode->NumPhysicalComponents);
|
||||
|
||||
ParentTable = DtPeekSubtable ();
|
||||
|
||||
@@ -431,7 +431,7 @@ DtCompileMpst (
|
||||
DtPushSubtable (Subtable);
|
||||
|
||||
MpstDataHeader = ACPI_CAST_PTR (ACPI_MPST_DATA_HDR, Subtable->Buffer);
|
||||
- SubtableCount = MpstDataHeader->CharacteristicsCount;
|
||||
+ SubtableCount = AcpiUtReadUint16(&MpstDataHeader->CharacteristicsCount);
|
||||
|
||||
ParentTable = DtPeekSubtable ();
|
||||
|
@ -1,227 +0,0 @@
|
||||
From 5aec8511fc433a71cb8b6d26be464355d0c3f5cc Mon Sep 17 00:00:00 2001
|
||||
From: Al Stone <ahs3@redhat.com>
|
||||
Date: Thu, 24 Sep 2020 15:25:53 -0600
|
||||
Subject: [PATCH 26/45] Support NFIT in a big-endian world
|
||||
|
||||
NB: this required correcting the starting pointer for the NFIT
|
||||
SMBIOS subtable; otherwise, disassembly did not work properly.
|
||||
|
||||
Signed-off-by: Al Stone <ahs3@redhat.com>
|
||||
---
|
||||
source/common/dmtable.c | 4 ++--
|
||||
source/common/dmtbdump2.c | 49 ++++++++++++++++++++++----------------
|
||||
source/compiler/dttable2.c | 11 ++++++---
|
||||
3 files changed, 39 insertions(+), 25 deletions(-)
|
||||
|
||||
Index: acpica-unix2-20220331/source/common/dmtable.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/common/dmtable.c
|
||||
+++ acpica-unix2-20220331/source/common/dmtable.c
|
||||
@@ -1766,13 +1766,13 @@ AcpiDmDumpTable (
|
||||
|
||||
/* NFIT subtable types */
|
||||
|
||||
- Temp16 = ACPI_GET16 (Target);
|
||||
+ Temp16 = AcpiUtReadUint16 (Target);
|
||||
if (Temp16 > ACPI_NFIT_TYPE_RESERVED)
|
||||
{
|
||||
Temp16 = ACPI_NFIT_TYPE_RESERVED;
|
||||
}
|
||||
|
||||
- AcpiOsPrintf (UINT16_FORMAT, ACPI_GET16 (Target),
|
||||
+ AcpiOsPrintf (UINT16_FORMAT, Temp16,
|
||||
AcpiDmNfitSubnames[Temp16]);
|
||||
break;
|
||||
|
||||
Index: acpica-unix2-20220331/source/common/dmtbdump2.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/common/dmtbdump2.c
|
||||
+++ acpica-unix2-20220331/source/common/dmtbdump2.c
|
||||
@@ -1244,18 +1244,23 @@ AcpiDmDumpNfit (
|
||||
ACPI_STATUS Status;
|
||||
UINT32 Offset = sizeof (ACPI_TABLE_NFIT);
|
||||
UINT32 FieldOffset = 0;
|
||||
- UINT32 Length;
|
||||
+ UINT32 TableLength = AcpiUtReadUint32 (&Table->Length);
|
||||
ACPI_NFIT_HEADER *Subtable;
|
||||
ACPI_DMTABLE_INFO *InfoTable;
|
||||
ACPI_NFIT_INTERLEAVE *Interleave = NULL;
|
||||
ACPI_NFIT_SMBIOS *SmbiosInfo = NULL;
|
||||
ACPI_NFIT_FLUSH_ADDRESS *Hint = NULL;
|
||||
UINT32 i;
|
||||
+ UINT32 Length;
|
||||
+ UINT32 LineCount;
|
||||
+ UINT16 SubtableLength;
|
||||
+ UINT16 SubtableType;
|
||||
+ UINT16 HintCount;
|
||||
|
||||
|
||||
/* Main table */
|
||||
|
||||
- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoNfit);
|
||||
+ Status = AcpiDmDumpTable (TableLength, 0, Table, 0, AcpiDmTableInfoNfit);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
@@ -1264,19 +1269,21 @@ AcpiDmDumpNfit (
|
||||
/* Subtables */
|
||||
|
||||
Subtable = ACPI_ADD_PTR (ACPI_NFIT_HEADER, Table, Offset);
|
||||
- while (Offset < Table->Length)
|
||||
+ while (Offset < TableLength)
|
||||
{
|
||||
/* NFIT subtable header */
|
||||
|
||||
AcpiOsPrintf ("\n");
|
||||
- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
|
||||
- Subtable->Length, AcpiDmTableInfoNfitHdr);
|
||||
+ SubtableType = AcpiUtReadUint16 (&Subtable->Type);
|
||||
+ SubtableLength = AcpiUtReadUint16 (&Subtable->Length);
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset, Subtable,
|
||||
+ SubtableLength, AcpiDmTableInfoNfitHdr);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
- switch (Subtable->Type)
|
||||
+ switch (SubtableType)
|
||||
{
|
||||
case ACPI_NFIT_TYPE_SYSTEM_ADDRESS:
|
||||
|
||||
@@ -1327,11 +1334,11 @@ AcpiDmDumpNfit (
|
||||
|
||||
default:
|
||||
AcpiOsPrintf ("\n**** Unknown NFIT subtable type 0x%X\n",
|
||||
- Subtable->Type);
|
||||
+ SubtableType);
|
||||
|
||||
/* Attempt to continue */
|
||||
|
||||
- if (!Subtable->Length)
|
||||
+ if (!SubtableLength)
|
||||
{
|
||||
AcpiOsPrintf ("Invalid zero length subtable\n");
|
||||
return;
|
||||
@@ -1340,8 +1347,8 @@ AcpiDmDumpNfit (
|
||||
}
|
||||
|
||||
AcpiOsPrintf ("\n");
|
||||
- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
|
||||
- Subtable->Length, InfoTable);
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset, Subtable,
|
||||
+ SubtableLength, InfoTable);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
@@ -1349,14 +1356,15 @@ AcpiDmDumpNfit (
|
||||
|
||||
/* Per-subtable variable-length fields */
|
||||
|
||||
- switch (Subtable->Type)
|
||||
+ switch (SubtableType)
|
||||
{
|
||||
case ACPI_NFIT_TYPE_INTERLEAVE:
|
||||
|
||||
Interleave = ACPI_CAST_PTR (ACPI_NFIT_INTERLEAVE, Subtable);
|
||||
- for (i = 0; i < Interleave->LineCount; i++)
|
||||
+ LineCount = AcpiUtReadUint32 (&Interleave->LineCount);
|
||||
+ for (i = 0; i < LineCount; i++)
|
||||
{
|
||||
- Status = AcpiDmDumpTable (Table->Length, Offset + FieldOffset,
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset + FieldOffset,
|
||||
&Interleave->LineOffset[i],
|
||||
sizeof (UINT32), AcpiDmTableInfoNfit2a);
|
||||
if (ACPI_FAILURE (Status))
|
||||
@@ -1370,14 +1378,14 @@ AcpiDmDumpNfit (
|
||||
|
||||
case ACPI_NFIT_TYPE_SMBIOS:
|
||||
|
||||
- Length = Subtable->Length -
|
||||
+ Length = SubtableLength -
|
||||
sizeof (ACPI_NFIT_SMBIOS) + sizeof (UINT8);
|
||||
|
||||
if (Length)
|
||||
{
|
||||
- Status = AcpiDmDumpTable (Table->Length,
|
||||
+ Status = AcpiDmDumpTable (TableLength,
|
||||
sizeof (ACPI_NFIT_SMBIOS) - sizeof (UINT8),
|
||||
- SmbiosInfo,
|
||||
+ SmbiosInfo + Offset,
|
||||
Length, AcpiDmTableInfoNfit3a);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
@@ -1390,9 +1398,10 @@ AcpiDmDumpNfit (
|
||||
case ACPI_NFIT_TYPE_FLUSH_ADDRESS:
|
||||
|
||||
Hint = ACPI_CAST_PTR (ACPI_NFIT_FLUSH_ADDRESS, Subtable);
|
||||
- for (i = 0; i < Hint->HintCount; i++)
|
||||
+ HintCount = AcpiUtReadUint16 (&Hint->HintCount);
|
||||
+ for (i = 0; i < HintCount; i++)
|
||||
{
|
||||
- Status = AcpiDmDumpTable (Table->Length, Offset + FieldOffset,
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset + FieldOffset,
|
||||
&Hint->HintAddress[i],
|
||||
sizeof (UINT64), AcpiDmTableInfoNfit6a);
|
||||
if (ACPI_FAILURE (Status))
|
||||
@@ -1411,8 +1420,8 @@ AcpiDmDumpNfit (
|
||||
NextSubtable:
|
||||
/* Point to next subtable */
|
||||
|
||||
- Offset += Subtable->Length;
|
||||
- Subtable = ACPI_ADD_PTR (ACPI_NFIT_HEADER, Subtable, Subtable->Length);
|
||||
+ Offset += SubtableLength;
|
||||
+ Subtable = ACPI_ADD_PTR (ACPI_NFIT_HEADER, Subtable, SubtableLength);
|
||||
}
|
||||
}
|
||||
|
||||
Index: acpica-unix2-20220331/source/compiler/dttable2.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/compiler/dttable2.c
|
||||
+++ acpica-unix2-20220331/source/compiler/dttable2.c
|
||||
@@ -506,6 +506,7 @@ DtCompileNfit (
|
||||
UINT32 Count;
|
||||
ACPI_NFIT_INTERLEAVE *Interleave = NULL;
|
||||
ACPI_NFIT_FLUSH_ADDRESS *Hint = NULL;
|
||||
+ UINT16 NfitHeaderType;
|
||||
|
||||
|
||||
/* Main table */
|
||||
@@ -539,7 +540,8 @@ DtCompileNfit (
|
||||
|
||||
NfitHeader = ACPI_CAST_PTR (ACPI_NFIT_HEADER, Subtable->Buffer);
|
||||
|
||||
- switch (NfitHeader->Type)
|
||||
+ NfitHeaderType = AcpiUtReadUint16 (&NfitHeader->Type);
|
||||
+ switch (NfitHeaderType)
|
||||
{
|
||||
case ACPI_NFIT_TYPE_SYSTEM_ADDRESS:
|
||||
|
||||
@@ -599,7 +601,7 @@ DtCompileNfit (
|
||||
DtInsertSubtable (ParentTable, Subtable);
|
||||
DtPopSubtable ();
|
||||
|
||||
- switch (NfitHeader->Type)
|
||||
+ switch (NfitHeaderType)
|
||||
{
|
||||
case ACPI_NFIT_TYPE_INTERLEAVE:
|
||||
|
||||
@@ -625,7 +627,8 @@ DtCompileNfit (
|
||||
Count++;
|
||||
}
|
||||
|
||||
- Interleave->LineCount = Count;
|
||||
+ AcpiUtWriteUint (&Interleave->LineCount, sizeof (UINT32),
|
||||
+ &Count, sizeof (UINT32));
|
||||
break;
|
||||
|
||||
case ACPI_NFIT_TYPE_SMBIOS:
|
||||
@@ -671,6 +674,8 @@ DtCompileNfit (
|
||||
}
|
||||
|
||||
Hint->HintCount = (UINT16) Count;
|
||||
+ AcpiUtWriteUint (&Hint->HintCount, sizeof (UINT16),
|
||||
+ &Count, sizeof (UINT32));
|
||||
break;
|
||||
|
||||
default:
|
@ -1,206 +0,0 @@
|
||||
From 3d1ac6e76ad0c0d6454671b190ccbbfafb0cb4cc Mon Sep 17 00:00:00 2001
|
||||
From: Al Stone <ahs3@redhat.com>
|
||||
Date: Tue, 29 Jun 2021 16:03:36 -0600
|
||||
Subject: [PATCH 27/45] Support SDEV in a big-endian world
|
||||
|
||||
Signed-off-by: Al Stone <ahs3@redhat.com>
|
||||
---
|
||||
source/common/dmtbdump2.c | 48 +++++++++++++++++++++-----------------
|
||||
source/compiler/dttable2.c | 27 ++++++++++++++++++++-
|
||||
2 files changed, 52 insertions(+), 23 deletions(-)
|
||||
|
||||
Index: acpica-unix2-20220331/source/common/dmtbdump2.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/common/dmtbdump2.c
|
||||
+++ acpica-unix2-20220331/source/common/dmtbdump2.c
|
||||
@@ -2581,7 +2581,7 @@ AcpiDmDumpSdev (
|
||||
ACPI_SDEV_NAMESPACE *Namesp;
|
||||
ACPI_DMTABLE_INFO *InfoTable;
|
||||
ACPI_DMTABLE_INFO *SecureComponentInfoTable;
|
||||
- UINT32 Length = Table->Length;
|
||||
+ UINT32 TableLength = AcpiUtReadUint32 (&Table->Length);
|
||||
UINT32 Offset = sizeof (ACPI_TABLE_SDEV);
|
||||
UINT16 PathOffset;
|
||||
UINT16 PathLength;
|
||||
@@ -2589,11 +2589,12 @@ AcpiDmDumpSdev (
|
||||
UINT16 VendorDataLength;
|
||||
ACPI_SDEV_SECURE_COMPONENT *SecureComponent = NULL;
|
||||
UINT32 CurrentOffset = 0;
|
||||
+ UINT16 SubtableLength;
|
||||
|
||||
|
||||
/* Main table */
|
||||
|
||||
- Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoSdev);
|
||||
+ Status = AcpiDmDumpTable (TableLength, 0, Table, 0, AcpiDmTableInfoSdev);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
@@ -2602,13 +2603,14 @@ AcpiDmDumpSdev (
|
||||
/* Subtables */
|
||||
|
||||
Subtable = ACPI_ADD_PTR (ACPI_SDEV_HEADER, Table, Offset);
|
||||
- while (Offset < Table->Length)
|
||||
+ while (Offset < TableLength)
|
||||
{
|
||||
/* Common subtable header */
|
||||
|
||||
AcpiOsPrintf ("\n");
|
||||
- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
|
||||
- Subtable->Length, AcpiDmTableInfoSdevHdr);
|
||||
+ SubtableLength = AcpiUtReadUint16 (&Subtable->Length);
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset, Subtable,
|
||||
+ SubtableLength, AcpiDmTableInfoSdevHdr);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
@@ -2631,8 +2633,8 @@ AcpiDmDumpSdev (
|
||||
}
|
||||
|
||||
AcpiOsPrintf ("\n");
|
||||
- Status = AcpiDmDumpTable (Table->Length, 0, Subtable,
|
||||
- Subtable->Length, InfoTable);
|
||||
+ Status = AcpiDmDumpTable (TableLength, 0, Subtable,
|
||||
+ SubtableLength, InfoTable);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
@@ -2691,12 +2693,12 @@ AcpiDmDumpSdev (
|
||||
/* Dump the PCIe device ID(s) */
|
||||
|
||||
Namesp = ACPI_CAST_PTR (ACPI_SDEV_NAMESPACE, Subtable);
|
||||
- PathOffset = Namesp->DeviceIdOffset;
|
||||
- PathLength = Namesp->DeviceIdLength;
|
||||
+ PathOffset = AcpiUtReadUint16 (&Namesp->DeviceIdOffset);
|
||||
+ PathLength = AcpiUtReadUint16 (&Namesp->DeviceIdLength);
|
||||
|
||||
if (PathLength)
|
||||
{
|
||||
- Status = AcpiDmDumpTable (Table->Length, CurrentOffset,
|
||||
+ Status = AcpiDmDumpTable (TableLength, CurrentOffset,
|
||||
ACPI_ADD_PTR (UINT8, Namesp, PathOffset),
|
||||
PathLength, AcpiDmTableInfoSdev0a);
|
||||
if (ACPI_FAILURE (Status))
|
||||
@@ -2708,14 +2710,14 @@ AcpiDmDumpSdev (
|
||||
|
||||
/* Dump the vendor-specific data */
|
||||
|
||||
- VendorDataLength =
|
||||
- Namesp->VendorDataLength;
|
||||
+ VendorDataLength = AcpiUtReadUint16 (&Namesp->VendorDataLength);
|
||||
VendorDataOffset =
|
||||
- Namesp->DeviceIdOffset + Namesp->DeviceIdLength;
|
||||
+ AcpiUtReadUint16 (&Namesp->DeviceIdOffset) +
|
||||
+ AcpiUtReadUint16 (&Namesp->DeviceIdLength);
|
||||
|
||||
if (VendorDataLength)
|
||||
{
|
||||
- Status = AcpiDmDumpTable (Table->Length, 0,
|
||||
+ Status = AcpiDmDumpTable (TableLength, 0,
|
||||
ACPI_ADD_PTR (UINT8, Namesp, VendorDataOffset),
|
||||
VendorDataLength, AcpiDmTableInfoSdev1b);
|
||||
if (ACPI_FAILURE (Status))
|
||||
@@ -2730,12 +2732,12 @@ AcpiDmDumpSdev (
|
||||
/* PCI path substructures */
|
||||
|
||||
Pcie = ACPI_CAST_PTR (ACPI_SDEV_PCIE, Subtable);
|
||||
- PathOffset = Pcie->PathOffset;
|
||||
- PathLength = Pcie->PathLength;
|
||||
+ PathOffset = AcpiUtReadUint16 (&Pcie->PathOffset);
|
||||
+ PathLength = AcpiUtReadUint16 (&Pcie->PathLength);
|
||||
|
||||
while (PathLength)
|
||||
{
|
||||
- Status = AcpiDmDumpTable (Table->Length,
|
||||
+ Status = AcpiDmDumpTable (TableLength,
|
||||
PathOffset + Offset,
|
||||
ACPI_ADD_PTR (UINT8, Pcie, PathOffset),
|
||||
sizeof (ACPI_SDEV_PCIE_PATH), AcpiDmTableInfoSdev1a);
|
||||
@@ -2750,12 +2752,14 @@ AcpiDmDumpSdev (
|
||||
|
||||
/* VendorData */
|
||||
|
||||
- VendorDataLength = Pcie->VendorDataLength;
|
||||
- VendorDataOffset = Pcie->PathOffset + Pcie->PathLength;
|
||||
+ VendorDataLength = AcpiUtReadUint16 (&Pcie->VendorDataLength);
|
||||
+ VendorDataOffset =
|
||||
+ AcpiUtReadUint16 (&Pcie->PathOffset) +
|
||||
+ AcpiUtReadUint16 (&Pcie->PathLength);
|
||||
|
||||
if (VendorDataLength)
|
||||
{
|
||||
- Status = AcpiDmDumpTable (Table->Length, 0,
|
||||
+ Status = AcpiDmDumpTable (TableLength, 0,
|
||||
ACPI_ADD_PTR (UINT8, Pcie, VendorDataOffset),
|
||||
VendorDataLength, AcpiDmTableInfoSdev1b);
|
||||
if (ACPI_FAILURE (Status))
|
||||
@@ -2772,8 +2776,8 @@ AcpiDmDumpSdev (
|
||||
NextSubtable:
|
||||
/* Point to next subtable */
|
||||
|
||||
- Offset += Subtable->Length;
|
||||
+ Offset += SubtableLength;
|
||||
Subtable = ACPI_ADD_PTR (ACPI_SDEV_HEADER, Subtable,
|
||||
- Subtable->Length);
|
||||
+ SubtableLength);
|
||||
}
|
||||
}
|
||||
Index: acpica-unix2-20220331/source/compiler/dttable2.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/compiler/dttable2.c
|
||||
+++ acpica-unix2-20220331/source/compiler/dttable2.c
|
||||
@@ -1890,6 +1890,7 @@ DtCompileSdev (
|
||||
UINT32 EntryCount;
|
||||
ACPI_SDEV_SECURE_COMPONENT *SecureComponent = NULL;
|
||||
UINT16 ComponentLength = 0;
|
||||
+ UINT16 Tmp16;
|
||||
|
||||
|
||||
/* Subtables */
|
||||
@@ -1911,7 +1912,7 @@ DtCompileSdev (
|
||||
DtPushSubtable (Subtable);
|
||||
|
||||
SdevHeader = ACPI_CAST_PTR (ACPI_SDEV_HEADER, Subtable->Buffer);
|
||||
- SdevHeader->Length = (UINT8)(sizeof (ACPI_SDEV_HEADER));
|
||||
+ SdevHeader->Length = (UINT16) (sizeof (ACPI_SDEV_HEADER));
|
||||
|
||||
switch (SdevHeader->Type)
|
||||
{
|
||||
@@ -2084,6 +2085,18 @@ DtCompileSdev (
|
||||
}
|
||||
}
|
||||
|
||||
+ /* Make sure everything is now little-endian */
|
||||
+ Tmp16 = AcpiUtReadUint16 (&SdevHeader->Length);
|
||||
+ SdevHeader->Length = Tmp16;
|
||||
+ Tmp16 = AcpiUtReadUint16 (&Namesp->DeviceIdOffset);
|
||||
+ Namesp->DeviceIdOffset = Tmp16;
|
||||
+ Tmp16 = AcpiUtReadUint16 (&Namesp->DeviceIdLength);
|
||||
+ Namesp->DeviceIdLength = Tmp16;
|
||||
+ Tmp16 = AcpiUtReadUint16 (&Namesp->VendorDataOffset);
|
||||
+ Namesp->VendorDataOffset = Tmp16;
|
||||
+ Tmp16 = AcpiUtReadUint16 (&Namesp->VendorDataLength);
|
||||
+ Namesp->VendorDataLength = Tmp16;
|
||||
+
|
||||
break;
|
||||
|
||||
case ACPI_SDEV_TYPE_PCIE_ENDPOINT_DEVICE:
|
||||
@@ -2146,6 +2159,18 @@ DtCompileSdev (
|
||||
SdevHeader->Length =
|
||||
sizeof (ACPI_SDEV_PCIE) +
|
||||
Pcie->PathLength + Pcie->VendorDataLength;
|
||||
+
|
||||
+ Tmp16 = AcpiUtReadUint16 (&SdevHeader->Length);
|
||||
+ SdevHeader->Length = Tmp16;
|
||||
+ Tmp16 = AcpiUtReadUint16 (&Pcie->PathOffset);
|
||||
+ Pcie->PathOffset = Tmp16;
|
||||
+ Tmp16 = AcpiUtReadUint16 (&Pcie->PathLength);
|
||||
+ Pcie->PathLength = Tmp16;
|
||||
+ Tmp16 = AcpiUtReadUint16 (&Pcie->VendorDataOffset);
|
||||
+ Pcie->VendorDataOffset = Tmp16;
|
||||
+ Tmp16 = AcpiUtReadUint16 (&Pcie->VendorDataLength);
|
||||
+ Pcie->VendorDataLength = Tmp16;
|
||||
+
|
||||
break;
|
||||
|
||||
default:
|
@ -1,278 +0,0 @@
|
||||
From 915b8b70726fd01befdeac0c8630db528ac40552 Mon Sep 17 00:00:00 2001
|
||||
From: Al Stone <ahs3@redhat.com>
|
||||
Date: Fri, 25 Sep 2020 16:56:55 -0600
|
||||
Subject: [PATCH 28/45] Support HMAT in a big-endian world
|
||||
|
||||
Signed-off-by: Al Stone <ahs3@redhat.com>
|
||||
---
|
||||
source/common/dmtbdump1.c | 70 ++++++++++++++++++++++----------------
|
||||
source/compiler/dttable1.c | 24 ++++++++++---
|
||||
2 files changed, 59 insertions(+), 35 deletions(-)
|
||||
|
||||
Index: acpica-unix2-20220331/source/common/dmtbdump1.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/common/dmtbdump1.c
|
||||
+++ acpica-unix2-20220331/source/common/dmtbdump1.c
|
||||
@@ -1680,37 +1680,45 @@ AcpiDmDumpHmat (
|
||||
UINT32 Length;
|
||||
ACPI_DMTABLE_INFO *InfoTable;
|
||||
UINT32 i, j;
|
||||
+ UINT32 TableLength = AcpiUtReadUint32 (&Table->Length);
|
||||
+ UINT16 HmatStructType;
|
||||
+ UINT32 HmatStructLength;
|
||||
+ UINT32 InitPDs;
|
||||
+ UINT32 TgtPDs;
|
||||
+ UINT16 SMBIOSHandles;
|
||||
|
||||
|
||||
/* Main table */
|
||||
|
||||
- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoHmat);
|
||||
+ Status = AcpiDmDumpTable (TableLength, 0, Table, 0, AcpiDmTableInfoHmat);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
}
|
||||
Offset = sizeof (ACPI_TABLE_HMAT);
|
||||
|
||||
- while (Offset < Table->Length)
|
||||
+ while (Offset < TableLength)
|
||||
{
|
||||
AcpiOsPrintf ("\n");
|
||||
|
||||
/* Dump HMAT structure header */
|
||||
|
||||
HmatStruct = ACPI_ADD_PTR (ACPI_HMAT_STRUCTURE, Table, Offset);
|
||||
- if (HmatStruct->Length < sizeof (ACPI_HMAT_STRUCTURE))
|
||||
+ HmatStructLength = AcpiUtReadUint32 (&HmatStruct->Length);
|
||||
+ if (HmatStructLength < sizeof (ACPI_HMAT_STRUCTURE))
|
||||
{
|
||||
AcpiOsPrintf ("Invalid HMAT structure length\n");
|
||||
return;
|
||||
}
|
||||
- Status = AcpiDmDumpTable (Table->Length, Offset, HmatStruct,
|
||||
- HmatStruct->Length, AcpiDmTableInfoHmatHdr);
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset, HmatStruct,
|
||||
+ HmatStructLength, AcpiDmTableInfoHmatHdr);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
- switch (HmatStruct->Type)
|
||||
+ HmatStructType = AcpiUtReadUint16 (&HmatStruct->Type);
|
||||
+ switch (HmatStructType)
|
||||
{
|
||||
case ACPI_HMAT_TYPE_ADDRESS_RANGE:
|
||||
|
||||
@@ -1733,7 +1741,7 @@ AcpiDmDumpHmat (
|
||||
default:
|
||||
|
||||
AcpiOsPrintf ("\n**** Unknown HMAT structure type 0x%X\n",
|
||||
- HmatStruct->Type);
|
||||
+ HmatStructType);
|
||||
|
||||
/* Attempt to continue */
|
||||
|
||||
@@ -1742,13 +1750,13 @@ AcpiDmDumpHmat (
|
||||
|
||||
/* Dump HMAT structure body */
|
||||
|
||||
- if (HmatStruct->Length < Length)
|
||||
+ if (HmatStructLength < Length)
|
||||
{
|
||||
AcpiOsPrintf ("Invalid HMAT structure length\n");
|
||||
return;
|
||||
}
|
||||
- Status = AcpiDmDumpTable (Table->Length, Offset, HmatStruct,
|
||||
- HmatStruct->Length, InfoTable);
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset, HmatStruct,
|
||||
+ HmatStructLength, InfoTable);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
@@ -1756,7 +1764,7 @@ AcpiDmDumpHmat (
|
||||
|
||||
/* Dump HMAT structure additionals */
|
||||
|
||||
- switch (HmatStruct->Type)
|
||||
+ switch (HmatStructType)
|
||||
{
|
||||
case ACPI_HMAT_TYPE_LOCALITY:
|
||||
|
||||
@@ -1765,15 +1773,16 @@ AcpiDmDumpHmat (
|
||||
|
||||
/* Dump initiator proximity domains */
|
||||
|
||||
- if ((UINT32)(HmatStruct->Length - SubtableOffset) <
|
||||
- (UINT32)(HmatLocality->NumberOfInitiatorPDs * 4))
|
||||
+ InitPDs = AcpiUtReadUint32 (&HmatLocality->NumberOfInitiatorPDs);
|
||||
+ if ((UINT32) (HmatStructLength - SubtableOffset) <
|
||||
+ (UINT32) (InitPDs * 4))
|
||||
{
|
||||
AcpiOsPrintf ("Invalid initiator proximity domain number\n");
|
||||
return;
|
||||
}
|
||||
- for (i = 0; i < HmatLocality->NumberOfInitiatorPDs; i++)
|
||||
+ for (i = 0; i < InitPDs; i++)
|
||||
{
|
||||
- Status = AcpiDmDumpTable (Table->Length, Offset + SubtableOffset,
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset + SubtableOffset,
|
||||
ACPI_ADD_PTR (ACPI_HMAT_STRUCTURE, HmatStruct, SubtableOffset),
|
||||
4, AcpiDmTableInfoHmat1a);
|
||||
if (ACPI_FAILURE (Status))
|
||||
@@ -1786,15 +1795,16 @@ AcpiDmDumpHmat (
|
||||
|
||||
/* Dump target proximity domains */
|
||||
|
||||
- if ((UINT32)(HmatStruct->Length - SubtableOffset) <
|
||||
- (UINT32)(HmatLocality->NumberOfTargetPDs * 4))
|
||||
+ TgtPDs = AcpiUtReadUint32 (&HmatLocality->NumberOfTargetPDs);
|
||||
+ if ((UINT32) (HmatStructLength - SubtableOffset) <
|
||||
+ (UINT32) (TgtPDs * 4))
|
||||
{
|
||||
AcpiOsPrintf ("Invalid target proximity domain number\n");
|
||||
return;
|
||||
}
|
||||
- for (i = 0; i < HmatLocality->NumberOfTargetPDs; i++)
|
||||
+ for (i = 0; i < TgtPDs; i++)
|
||||
{
|
||||
- Status = AcpiDmDumpTable (Table->Length, Offset + SubtableOffset,
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset + SubtableOffset,
|
||||
ACPI_ADD_PTR (ACPI_HMAT_STRUCTURE, HmatStruct, SubtableOffset),
|
||||
4, AcpiDmTableInfoHmat1b);
|
||||
if (ACPI_FAILURE (Status))
|
||||
@@ -1807,18 +1817,17 @@ AcpiDmDumpHmat (
|
||||
|
||||
/* Dump latency/bandwidth entris */
|
||||
|
||||
- if ((UINT32)(HmatStruct->Length - SubtableOffset) <
|
||||
- (UINT32)(HmatLocality->NumberOfInitiatorPDs *
|
||||
- HmatLocality->NumberOfTargetPDs * 2))
|
||||
+ if ((UINT32) (HmatStructLength - SubtableOffset) <
|
||||
+ (UINT32) (InitPDs * TgtPDs * 2))
|
||||
{
|
||||
AcpiOsPrintf ("Invalid latency/bandwidth entry number\n");
|
||||
return;
|
||||
}
|
||||
- for (i = 0; i < HmatLocality->NumberOfInitiatorPDs; i++)
|
||||
+ for (i = 0; i < InitPDs; i++)
|
||||
{
|
||||
- for (j = 0; j < HmatLocality->NumberOfTargetPDs; j++)
|
||||
+ for (j = 0; j < TgtPDs; j++)
|
||||
{
|
||||
- Status = AcpiDmDumpTable (Table->Length, Offset + SubtableOffset,
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset + SubtableOffset,
|
||||
ACPI_ADD_PTR (ACPI_HMAT_STRUCTURE, HmatStruct, SubtableOffset),
|
||||
2, AcpiDmTableInfoHmat1c);
|
||||
if (ACPI_FAILURE(Status))
|
||||
@@ -1838,15 +1847,16 @@ AcpiDmDumpHmat (
|
||||
|
||||
/* Dump SMBIOS handles */
|
||||
|
||||
- if ((UINT32)(HmatStruct->Length - SubtableOffset) <
|
||||
- (UINT32)(HmatCache->NumberOfSMBIOSHandles * 2))
|
||||
+ SMBIOSHandles = AcpiUtReadUint16 (&HmatCache->NumberOfSMBIOSHandles);
|
||||
+ if ((UINT32) (HmatStructLength - SubtableOffset) <
|
||||
+ (UINT32) (SMBIOSHandles * 2))
|
||||
{
|
||||
AcpiOsPrintf ("Invalid SMBIOS handle number\n");
|
||||
return;
|
||||
}
|
||||
- for (i = 0; i < HmatCache->NumberOfSMBIOSHandles; i++)
|
||||
+ for (i = 0; i < SMBIOSHandles; i++)
|
||||
{
|
||||
- Status = AcpiDmDumpTable (Table->Length, Offset + SubtableOffset,
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset + SubtableOffset,
|
||||
ACPI_ADD_PTR (ACPI_HMAT_STRUCTURE, HmatStruct, SubtableOffset),
|
||||
2, AcpiDmTableInfoHmat2a);
|
||||
if (ACPI_FAILURE (Status))
|
||||
@@ -1866,6 +1876,6 @@ AcpiDmDumpHmat (
|
||||
NextSubtable:
|
||||
/* Point to next HMAT structure subtable */
|
||||
|
||||
- Offset += (HmatStruct->Length);
|
||||
+ Offset += (HmatStructLength);
|
||||
}
|
||||
}
|
||||
Index: acpica-unix2-20220331/source/compiler/dttable1.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/compiler/dttable1.c
|
||||
+++ acpica-unix2-20220331/source/compiler/dttable1.c
|
||||
@@ -1737,6 +1737,8 @@ DtCompileHmat (
|
||||
UINT32 TgtPDNumber;
|
||||
UINT64 EntryNumber;
|
||||
UINT16 SMBIOSHandleNumber;
|
||||
+ UINT16 HmatStructType;
|
||||
+ UINT32 Length;
|
||||
|
||||
|
||||
ParentTable = DtPeekSubtable ();
|
||||
@@ -1767,7 +1769,8 @@ DtCompileHmat (
|
||||
|
||||
/* Compile HMAT structure body */
|
||||
|
||||
- switch (HmatStruct->Type)
|
||||
+ HmatStructType = AcpiUtReadUint16 (&HmatStruct->Type);
|
||||
+ switch (HmatStructType)
|
||||
{
|
||||
case ACPI_HMAT_TYPE_ADDRESS_RANGE:
|
||||
|
||||
@@ -1800,7 +1803,7 @@ DtCompileHmat (
|
||||
|
||||
/* Compile HMAT structure additionals */
|
||||
|
||||
- switch (HmatStruct->Type)
|
||||
+ switch (HmatStructType)
|
||||
{
|
||||
case ACPI_HMAT_TYPE_LOCALITY:
|
||||
|
||||
@@ -1826,7 +1829,7 @@ DtCompileHmat (
|
||||
HmatStruct->Length += Subtable->Length;
|
||||
IntPDNumber++;
|
||||
}
|
||||
- HmatLocality->NumberOfInitiatorPDs = IntPDNumber;
|
||||
+ HmatLocality->NumberOfInitiatorPDs = AcpiUtReadUint32 (&IntPDNumber);
|
||||
|
||||
/* Compile target proximity domain list */
|
||||
|
||||
@@ -1847,7 +1850,7 @@ DtCompileHmat (
|
||||
HmatStruct->Length += Subtable->Length;
|
||||
TgtPDNumber++;
|
||||
}
|
||||
- HmatLocality->NumberOfTargetPDs = TgtPDNumber;
|
||||
+ HmatLocality->NumberOfTargetPDs = AcpiUtReadUint32 (&TgtPDNumber);
|
||||
|
||||
/* Save start of the entries for reporting errors */
|
||||
|
||||
@@ -1873,6 +1876,9 @@ DtCompileHmat (
|
||||
EntryNumber++;
|
||||
}
|
||||
|
||||
+ Length = AcpiUtReadUint32 (&HmatStruct->Length);
|
||||
+ HmatStruct->Length = Length;
|
||||
+
|
||||
/* Validate number of entries */
|
||||
|
||||
if (EntryNumber !=
|
||||
@@ -1906,11 +1912,19 @@ DtCompileHmat (
|
||||
HmatStruct->Length += Subtable->Length;
|
||||
SMBIOSHandleNumber++;
|
||||
}
|
||||
- HmatCache->NumberOfSMBIOSHandles = SMBIOSHandleNumber;
|
||||
+ HmatCache->NumberOfSMBIOSHandles =
|
||||
+ AcpiUtReadUint16 (&SMBIOSHandleNumber);
|
||||
+
|
||||
+ Length = AcpiUtReadUint32 (&HmatStruct->Length);
|
||||
+ HmatStruct->Length = Length;
|
||||
+
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
+ Length = AcpiUtReadUint32(&HmatStruct->Length);
|
||||
+ HmatStruct->Length = Length;
|
||||
+
|
||||
break;
|
||||
}
|
||||
}
|
@ -1,43 +0,0 @@
|
||||
From 253fe3545e7d4eaa9cb93c771c9619f410109a02 Mon Sep 17 00:00:00 2001
|
||||
From: Al Stone <ahs3@redhat.com>
|
||||
Date: Fri, 25 Sep 2020 17:03:05 -0600
|
||||
Subject: [PATCH 29/45] Support PDTT in a big-endian world
|
||||
|
||||
Signed-off-by: Al Stone <ahs3@redhat.com>
|
||||
---
|
||||
source/common/dmtbdump2.c | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
Index: acpica-unix2-20220331/source/common/dmtbdump2.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/common/dmtbdump2.c
|
||||
+++ acpica-unix2-20220331/source/common/dmtbdump2.c
|
||||
@@ -1954,13 +1954,13 @@ AcpiDmDumpPdtt (
|
||||
{
|
||||
ACPI_STATUS Status;
|
||||
ACPI_PDTT_CHANNEL *Subtable;
|
||||
- UINT32 Length = Table->Length;
|
||||
+ UINT32 TableLength = AcpiUtReadUint32 (&Table->Length);
|
||||
UINT32 Offset = sizeof (ACPI_TABLE_PDTT);
|
||||
|
||||
|
||||
/* Main table */
|
||||
|
||||
- Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoPdtt);
|
||||
+ Status = AcpiDmDumpTable (TableLength, 0, Table, 0, AcpiDmTableInfoPdtt);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
@@ -1969,10 +1969,10 @@ AcpiDmDumpPdtt (
|
||||
/* Subtables. Currently there is only one type, but can be multiples */
|
||||
|
||||
Subtable = ACPI_ADD_PTR (ACPI_PDTT_CHANNEL, Table, Offset);
|
||||
- while (Offset < Table->Length)
|
||||
+ while (Offset < TableLength)
|
||||
{
|
||||
AcpiOsPrintf ("\n");
|
||||
- Status = AcpiDmDumpTable (Length, Offset, Subtable,
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset, Subtable,
|
||||
sizeof (ACPI_PDTT_CHANNEL), AcpiDmTableInfoPdtt0);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
@ -1,105 +0,0 @@
|
||||
From 8923211d8bc1b0e4d3af6ff31ed6479057f612f6 Mon Sep 17 00:00:00 2001
|
||||
From: Al Stone <ahs3@redhat.com>
|
||||
Date: Fri, 25 Sep 2020 17:16:12 -0600
|
||||
Subject: [PATCH 30/45] Support PPTT in a big-endian world
|
||||
|
||||
Signed-off-by: Al Stone <ahs3@redhat.com>
|
||||
---
|
||||
source/common/dmtbdump2.c | 17 ++++++++++-------
|
||||
source/compiler/dttable2.c | 7 +++++--
|
||||
2 files changed, 15 insertions(+), 9 deletions(-)
|
||||
|
||||
Index: acpica-unix2-20220331/source/common/dmtbdump2.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/common/dmtbdump2.c
|
||||
+++ acpica-unix2-20220331/source/common/dmtbdump2.c
|
||||
@@ -2241,6 +2241,8 @@ AcpiDmDumpPptt (
|
||||
UINT32 Offset = sizeof (ACPI_TABLE_FPDT);
|
||||
ACPI_DMTABLE_INFO *InfoTable;
|
||||
UINT32 i;
|
||||
+ UINT32 TableLength = AcpiUtReadUint32 (&Table->Length);
|
||||
+ UINT32 NumPrivRes;
|
||||
|
||||
|
||||
/* There is no main table (other than the standard ACPI header) */
|
||||
@@ -2248,7 +2250,7 @@ AcpiDmDumpPptt (
|
||||
/* Subtables */
|
||||
|
||||
Offset = sizeof (ACPI_TABLE_HEADER);
|
||||
- while (Offset < Table->Length)
|
||||
+ while (Offset < TableLength)
|
||||
{
|
||||
AcpiOsPrintf ("\n");
|
||||
|
||||
@@ -2260,7 +2262,7 @@ AcpiDmDumpPptt (
|
||||
AcpiOsPrintf ("Invalid subtable length\n");
|
||||
return;
|
||||
}
|
||||
- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset, Subtable,
|
||||
Subtable->Length, AcpiDmTableInfoPpttHdr);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
@@ -2302,7 +2304,7 @@ AcpiDmDumpPptt (
|
||||
AcpiOsPrintf ("Invalid subtable length\n");
|
||||
return;
|
||||
}
|
||||
- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset, Subtable,
|
||||
Subtable->Length, InfoTable);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
@@ -2318,15 +2320,16 @@ AcpiDmDumpPptt (
|
||||
|
||||
/* Dump SMBIOS handles */
|
||||
|
||||
- if ((UINT8)(Subtable->Length - SubtableOffset) <
|
||||
- (UINT8)(PpttProcessor->NumberOfPrivResources * 4))
|
||||
+ NumPrivRes = AcpiUtReadUint32 (&PpttProcessor->NumberOfPrivResources);
|
||||
+ if ((UINT8) (Subtable->Length - SubtableOffset) <
|
||||
+ (UINT8) (NumPrivRes * 4))
|
||||
{
|
||||
AcpiOsPrintf ("Invalid private resource number\n");
|
||||
return;
|
||||
}
|
||||
- for (i = 0; i < PpttProcessor->NumberOfPrivResources; i++)
|
||||
+ for (i = 0; i < NumPrivRes; i++)
|
||||
{
|
||||
- Status = AcpiDmDumpTable (Table->Length, Offset + SubtableOffset,
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset + SubtableOffset,
|
||||
ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, Subtable, SubtableOffset),
|
||||
4, AcpiDmTableInfoPptt0a);
|
||||
if (ACPI_FAILURE (Status))
|
||||
Index: acpica-unix2-20220331/source/compiler/dttable2.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/compiler/dttable2.c
|
||||
+++ acpica-unix2-20220331/source/compiler/dttable2.c
|
||||
@@ -1520,6 +1520,7 @@ DtCompilePptt (
|
||||
DT_FIELD **PFieldList = (DT_FIELD **) List;
|
||||
DT_FIELD *SubtableStart;
|
||||
ACPI_TABLE_HEADER *PpttAcpiHeader;
|
||||
+ UINT32 NumPrivRes;
|
||||
|
||||
|
||||
ParentTable = DtPeekSubtable ();
|
||||
@@ -1584,7 +1585,7 @@ DtCompilePptt (
|
||||
{
|
||||
/* Compile initiator proximity domain list */
|
||||
|
||||
- PpttProcessor->NumberOfPrivResources = 0;
|
||||
+ NumPrivRes = 0;
|
||||
while (*PFieldList)
|
||||
{
|
||||
Status = DtCompileTable (PFieldList,
|
||||
@@ -1600,8 +1601,10 @@ DtCompilePptt (
|
||||
|
||||
DtInsertSubtable (ParentTable, Subtable);
|
||||
PpttHeader->Length += (UINT8)(Subtable->Length);
|
||||
- PpttProcessor->NumberOfPrivResources++;
|
||||
+ NumPrivRes++;
|
||||
}
|
||||
+ PpttProcessor->NumberOfPrivResources =
|
||||
+ AcpiUtReadUint32 (&NumPrivRes);
|
||||
}
|
||||
break;
|
||||
|
@ -1,54 +0,0 @@
|
||||
From a58ff76fc6e68488d93b55016a7aeb257971a252 Mon Sep 17 00:00:00 2001
|
||||
From: Al Stone <ahs3@redhat.com>
|
||||
Date: Fri, 25 Sep 2020 17:39:34 -0600
|
||||
Subject: [PATCH 31/45] Support PCCT in a big-endian world
|
||||
|
||||
Signed-off-by: Al Stone <ahs3@redhat.com>
|
||||
---
|
||||
source/common/dmtbdump2.c | 10 +++++-----
|
||||
1 file changed, 5 insertions(+), 5 deletions(-)
|
||||
|
||||
Index: acpica-unix2-20220331/source/common/dmtbdump2.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/common/dmtbdump2.c
|
||||
+++ acpica-unix2-20220331/source/common/dmtbdump2.c
|
||||
@@ -1850,13 +1850,13 @@ AcpiDmDumpPcct (
|
||||
ACPI_STATUS Status;
|
||||
ACPI_PCCT_SUBSPACE *Subtable;
|
||||
ACPI_DMTABLE_INFO *InfoTable;
|
||||
- UINT32 Length = Table->Length;
|
||||
+ UINT32 TableLength = AcpiUtReadUint32 (&Table->Length);
|
||||
UINT32 Offset = sizeof (ACPI_TABLE_PCCT);
|
||||
|
||||
|
||||
/* Main table */
|
||||
|
||||
- Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoPcct);
|
||||
+ Status = AcpiDmDumpTable (TableLength, 0, Table, 0, AcpiDmTableInfoPcct);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
@@ -1865,12 +1865,12 @@ AcpiDmDumpPcct (
|
||||
/* Subtables */
|
||||
|
||||
Subtable = ACPI_ADD_PTR (ACPI_PCCT_SUBSPACE, Table, Offset);
|
||||
- while (Offset < Table->Length)
|
||||
+ while (Offset < TableLength)
|
||||
{
|
||||
/* Common subtable header */
|
||||
|
||||
AcpiOsPrintf ("\n");
|
||||
- Status = AcpiDmDumpTable (Length, Offset, Subtable,
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset, Subtable,
|
||||
Subtable->Header.Length, AcpiDmTableInfoPcctHdr);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
@@ -1918,7 +1918,7 @@ AcpiDmDumpPcct (
|
||||
}
|
||||
|
||||
AcpiOsPrintf ("\n");
|
||||
- Status = AcpiDmDumpTable (Length, Offset, Subtable,
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset, Subtable,
|
||||
Subtable->Header.Length, InfoTable);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
@ -1,43 +0,0 @@
|
||||
From ff1449919ee7d395d301e3a56a4ba333604d0458 Mon Sep 17 00:00:00 2001
|
||||
From: Al Stone <ahs3@redhat.com>
|
||||
Date: Fri, 25 Sep 2020 18:13:20 -0600
|
||||
Subject: [PATCH 32/45] Support WDAT in a big-endian world
|
||||
|
||||
Signed-off-by: Al Stone <ahs3@redhat.com>
|
||||
---
|
||||
source/common/dmtbdump3.c | 7 ++++---
|
||||
1 file changed, 4 insertions(+), 3 deletions(-)
|
||||
|
||||
Index: acpica-unix2-20220331/source/common/dmtbdump3.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/common/dmtbdump3.c
|
||||
+++ acpica-unix2-20220331/source/common/dmtbdump3.c
|
||||
@@ -680,11 +680,12 @@ AcpiDmDumpWdat (
|
||||
ACPI_STATUS Status;
|
||||
UINT32 Offset = sizeof (ACPI_TABLE_WDAT);
|
||||
ACPI_WDAT_ENTRY *Subtable;
|
||||
+ UINT32 TableLength = AcpiUtReadUint32 (&Table->Length);
|
||||
|
||||
|
||||
/* Main table */
|
||||
|
||||
- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoWdat);
|
||||
+ Status = AcpiDmDumpTable (TableLength, 0, Table, 0, AcpiDmTableInfoWdat);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
@@ -693,12 +694,12 @@ AcpiDmDumpWdat (
|
||||
/* Subtables */
|
||||
|
||||
Subtable = ACPI_ADD_PTR (ACPI_WDAT_ENTRY, Table, Offset);
|
||||
- while (Offset < Table->Length)
|
||||
+ while (Offset < TableLength)
|
||||
{
|
||||
/* Common subtable header */
|
||||
|
||||
AcpiOsPrintf ("\n");
|
||||
- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset, Subtable,
|
||||
sizeof (ACPI_WDAT_ENTRY), AcpiDmTableInfoWdat0);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
@ -1,76 +0,0 @@
|
||||
From b69b833f5a9205080b27d83379a31fad7fca1575 Mon Sep 17 00:00:00 2001
|
||||
From: Al Stone <ahs3@redhat.com>
|
||||
Date: Sun, 27 Sep 2020 12:09:28 -0600
|
||||
Subject: [PATCH 33/45] Support TCPA in a big-endian world
|
||||
|
||||
Signed-off-by: Al Stone <ahs3@redhat.com>
|
||||
---
|
||||
source/common/dmtbdump3.c | 13 ++++++++-----
|
||||
source/compiler/dttable2.c | 4 +++-
|
||||
2 files changed, 11 insertions(+), 6 deletions(-)
|
||||
|
||||
Index: acpica-unix2-20220331/source/common/dmtbdump3.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/common/dmtbdump3.c
|
||||
+++ acpica-unix2-20220331/source/common/dmtbdump3.c
|
||||
@@ -406,11 +406,13 @@ AcpiDmDumpTcpa (
|
||||
ACPI_TABLE_TCPA_HDR *Subtable = ACPI_ADD_PTR (
|
||||
ACPI_TABLE_TCPA_HDR, Table, Offset);
|
||||
ACPI_STATUS Status;
|
||||
+ UINT32 TableLength = AcpiUtReadUint32 (&Table->Length);
|
||||
+ UINT16 PlatformClass;
|
||||
|
||||
|
||||
/* Main table */
|
||||
|
||||
- Status = AcpiDmDumpTable (Table->Length, 0, Table,
|
||||
+ Status = AcpiDmDumpTable (TableLength, 0, Table,
|
||||
0, AcpiDmTableInfoTcpaHdr);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
@@ -421,18 +423,19 @@ AcpiDmDumpTcpa (
|
||||
* Examine the PlatformClass field to determine the table type.
|
||||
* Either a client or server table. Only one.
|
||||
*/
|
||||
- switch (CommonHeader->PlatformClass)
|
||||
+ PlatformClass = AcpiUtReadUint16 (&CommonHeader->PlatformClass);
|
||||
+ switch (PlatformClass)
|
||||
{
|
||||
case ACPI_TCPA_CLIENT_TABLE:
|
||||
|
||||
- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset, Subtable,
|
||||
Table->Length - Offset, AcpiDmTableInfoTcpaClient);
|
||||
break;
|
||||
|
||||
case ACPI_TCPA_SERVER_TABLE:
|
||||
|
||||
- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
|
||||
- Table->Length - Offset, AcpiDmTableInfoTcpaServer);
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset, Subtable,
|
||||
+ TableLength - Offset, AcpiDmTableInfoTcpaServer);
|
||||
break;
|
||||
|
||||
default:
|
||||
Index: acpica-unix2-20220331/source/compiler/dttable2.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/compiler/dttable2.c
|
||||
+++ acpica-unix2-20220331/source/compiler/dttable2.c
|
||||
@@ -2540,6 +2540,7 @@ DtCompileTcpa (
|
||||
ACPI_TABLE_TCPA_HDR *TcpaHeader;
|
||||
DT_SUBTABLE *ParentTable;
|
||||
ACPI_STATUS Status;
|
||||
+ UINT16 PlatformClass;
|
||||
|
||||
|
||||
/* Compile the main table */
|
||||
@@ -2560,7 +2561,8 @@ DtCompileTcpa (
|
||||
*/
|
||||
TcpaHeader = ACPI_CAST_PTR (ACPI_TABLE_TCPA_HDR, ParentTable->Buffer);
|
||||
|
||||
- switch (TcpaHeader->PlatformClass)
|
||||
+ PlatformClass = AcpiUtReadUint16 (&TcpaHeader->PlatformClass);
|
||||
+ switch (PlatformClass)
|
||||
{
|
||||
case ACPI_TCPA_CLIENT_TABLE:
|
||||
|
@ -1,40 +0,0 @@
|
||||
From c313a76ce818135f02ab158a9f0c8e4b8e96698a Mon Sep 17 00:00:00 2001
|
||||
From: Al Stone <ahs3@redhat.com>
|
||||
Date: Mon, 28 Sep 2020 11:49:42 -0600
|
||||
Subject: [PATCH 34/45] Support STAO in a big-endian world
|
||||
|
||||
Signed-off-by: Al Stone <ahs3@redhat.com>
|
||||
---
|
||||
source/common/dmtbdump3.c | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
Index: acpica-unix2-20220331/source/common/dmtbdump3.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/common/dmtbdump3.c
|
||||
+++ acpica-unix2-20220331/source/common/dmtbdump3.c
|
||||
@@ -290,14 +290,14 @@ AcpiDmDumpStao (
|
||||
{
|
||||
ACPI_STATUS Status;
|
||||
char *Namepath;
|
||||
- UINT32 Length = Table->Length;
|
||||
+ UINT32 TableLength = AcpiUtReadUint32 (&Table->Length);
|
||||
UINT32 StringLength;
|
||||
UINT32 Offset = sizeof (ACPI_TABLE_STAO);
|
||||
|
||||
|
||||
/* Main table */
|
||||
|
||||
- Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoStao);
|
||||
+ Status = AcpiDmDumpTable (TableLength, 0, Table, 0, AcpiDmTableInfoStao);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
@@ -305,7 +305,7 @@ AcpiDmDumpStao (
|
||||
|
||||
/* The rest of the table consists of Namepath strings */
|
||||
|
||||
- while (Offset < Table->Length)
|
||||
+ while (Offset < TableLength)
|
||||
{
|
||||
Namepath = ACPI_ADD_PTR (char, Table, Offset);
|
||||
StringLength = strlen (Namepath) + 1;
|
@ -1,33 +0,0 @@
|
||||
From 948bebd1a0999bc3481641d3fc996c49432709c6 Mon Sep 17 00:00:00 2001
|
||||
From: Al Stone <ahs3@redhat.com>
|
||||
Date: Mon, 28 Sep 2020 12:49:23 -0600
|
||||
Subject: [PATCH 35/45] Support SLIC and MSDM in a big-endian world
|
||||
|
||||
When dumping the SLIC table, it was also found that the code was
|
||||
not starting at the proper offset on disassembly. Set the offset
|
||||
to the first byte after the header instead of the very beginning
|
||||
of the table.
|
||||
|
||||
Signed-off-by: Al Stone <ahs3@redhat.com>
|
||||
---
|
||||
source/common/dmtbdump3.c | 6 ++++--
|
||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: acpica-unix2-20220331/source/common/dmtbdump3.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/common/dmtbdump3.c
|
||||
+++ acpica-unix2-20220331/source/common/dmtbdump3.c
|
||||
@@ -68,9 +68,11 @@ void
|
||||
AcpiDmDumpSlic (
|
||||
ACPI_TABLE_HEADER *Table)
|
||||
{
|
||||
+ UINT32 TableLength = AcpiUtReadUint32 (&Table->Length);
|
||||
|
||||
- (void) AcpiDmDumpTable (Table->Length, sizeof (ACPI_TABLE_HEADER), Table,
|
||||
- Table->Length - sizeof (*Table), AcpiDmTableInfoSlic);
|
||||
+ (void) AcpiDmDumpTable (TableLength, sizeof (ACPI_TABLE_HEADER),
|
||||
+ (void *) (Table + sizeof (*Table)),
|
||||
+ TableLength - sizeof (*Table), AcpiDmTableInfoSlic);
|
||||
}
|
||||
|
||||
|
@ -1,50 +0,0 @@
|
||||
From 0fb79a24fb70ab1e1e4879220af82a9fa00af586 Mon Sep 17 00:00:00 2001
|
||||
From: Al Stone <ahs3@redhat.com>
|
||||
Date: Mon, 28 Sep 2020 13:01:18 -0600
|
||||
Subject: [PATCH 36/45] Support MCFG in a big-endian world
|
||||
|
||||
Signed-off-by: Al Stone <ahs3@redhat.com>
|
||||
---
|
||||
source/common/dmtbdump2.c | 11 ++++++-----
|
||||
1 file changed, 6 insertions(+), 5 deletions(-)
|
||||
|
||||
Index: acpica-unix2-20220331/source/common/dmtbdump2.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/common/dmtbdump2.c
|
||||
+++ acpica-unix2-20220331/source/common/dmtbdump2.c
|
||||
@@ -982,11 +982,12 @@ AcpiDmDumpMcfg (
|
||||
ACPI_STATUS Status;
|
||||
UINT32 Offset = sizeof (ACPI_TABLE_MCFG);
|
||||
ACPI_MCFG_ALLOCATION *Subtable;
|
||||
+ UINT32 TableLength = AcpiUtReadUint32 (&Table->Length);
|
||||
|
||||
|
||||
/* Main table */
|
||||
|
||||
- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoMcfg);
|
||||
+ Status = AcpiDmDumpTable (TableLength, 0, Table, 0, AcpiDmTableInfoMcfg);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
@@ -995,17 +996,17 @@ AcpiDmDumpMcfg (
|
||||
/* Subtables */
|
||||
|
||||
Subtable = ACPI_ADD_PTR (ACPI_MCFG_ALLOCATION, Table, Offset);
|
||||
- while (Offset < Table->Length)
|
||||
+ while (Offset < TableLength)
|
||||
{
|
||||
- if (Offset + sizeof (ACPI_MCFG_ALLOCATION) > Table->Length)
|
||||
+ if (Offset + sizeof (ACPI_MCFG_ALLOCATION) > TableLength)
|
||||
{
|
||||
AcpiOsPrintf ("Warning: there are %u invalid trailing bytes\n",
|
||||
- (UINT32) sizeof (ACPI_MCFG_ALLOCATION) - (Offset - Table->Length));
|
||||
+ (UINT32) sizeof (ACPI_MCFG_ALLOCATION) - (Offset - TableLength));
|
||||
return;
|
||||
}
|
||||
|
||||
AcpiOsPrintf ("\n");
|
||||
- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset, Subtable,
|
||||
sizeof (ACPI_MCFG_ALLOCATION), AcpiDmTableInfoMcfg0);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
@ -1,46 +0,0 @@
|
||||
From d10bfd67b5352ff5587e06fc1f82b896bab49614 Mon Sep 17 00:00:00 2001
|
||||
From: Al Stone <ahs3@redhat.com>
|
||||
Date: Mon, 28 Sep 2020 16:49:30 -0600
|
||||
Subject: [PATCH 37/45] Support LPIT in a big-endian world
|
||||
|
||||
Signed-off-by: Al Stone <ahs3@redhat.com>
|
||||
---
|
||||
source/common/dmtbdump2.c | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
Index: acpica-unix2-20220331/source/common/dmtbdump2.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/common/dmtbdump2.c
|
||||
+++ acpica-unix2-20220331/source/common/dmtbdump2.c
|
||||
@@ -690,7 +690,7 @@ AcpiDmDumpLpit (
|
||||
{
|
||||
ACPI_STATUS Status;
|
||||
ACPI_LPIT_HEADER *Subtable;
|
||||
- UINT32 Length = Table->Length;
|
||||
+ UINT32 TableLength = AcpiUtReadUint32 (&Table->Length);
|
||||
UINT32 Offset = sizeof (ACPI_TABLE_LPIT);
|
||||
ACPI_DMTABLE_INFO *InfoTable;
|
||||
UINT32 SubtableLength;
|
||||
@@ -699,11 +699,11 @@ AcpiDmDumpLpit (
|
||||
/* Subtables */
|
||||
|
||||
Subtable = ACPI_ADD_PTR (ACPI_LPIT_HEADER, Table, Offset);
|
||||
- while (Offset < Table->Length)
|
||||
+ while (Offset < TableLength)
|
||||
{
|
||||
/* Common subtable header */
|
||||
|
||||
- Status = AcpiDmDumpTable (Length, Offset, Subtable,
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset, Subtable,
|
||||
sizeof (ACPI_LPIT_HEADER), AcpiDmTableInfoLpitHdr);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
@@ -727,7 +727,7 @@ AcpiDmDumpLpit (
|
||||
return;
|
||||
}
|
||||
|
||||
- Status = AcpiDmDumpTable (Length, Offset, Subtable,
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset, Subtable,
|
||||
SubtableLength, InfoTable);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
@ -1,85 +0,0 @@
|
||||
From bd19995fa268ed3e93c071162d0e9c2d35ada0d4 Mon Sep 17 00:00:00 2001
|
||||
From: Al Stone <ahs3@redhat.com>
|
||||
Date: Tue, 29 Jun 2021 16:23:30 -0600
|
||||
Subject: [PATCH 38/45] Support PMTT in a big-endian world
|
||||
|
||||
Signed-off-by: Al Stone <ahs3@redhat.com>
|
||||
---
|
||||
source/common/dmtbdump2.c | 18 ++++++++++--------
|
||||
1 file changed, 10 insertions(+), 8 deletions(-)
|
||||
|
||||
Index: acpica-unix2-20220331/source/common/dmtbdump2.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/common/dmtbdump2.c
|
||||
+++ acpica-unix2-20220331/source/common/dmtbdump2.c
|
||||
@@ -2142,8 +2142,9 @@ AcpiDmDumpPmtt (
|
||||
{
|
||||
ACPI_STATUS Status;
|
||||
ACPI_PMTT_HEADER *Subtable;
|
||||
- UINT32 Length = Table->Length;
|
||||
+ UINT32 Length = AcpiUtReadUint32 (&Table->Length);
|
||||
UINT32 Offset = sizeof (ACPI_TABLE_PMTT);
|
||||
+ UINT16 SubtableLength;
|
||||
|
||||
|
||||
/* Main table */
|
||||
@@ -2157,17 +2158,18 @@ AcpiDmDumpPmtt (
|
||||
/* Subtables */
|
||||
|
||||
Subtable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, Table, Offset);
|
||||
- while (Offset < Table->Length)
|
||||
+ while (Offset < Length)
|
||||
{
|
||||
/* Each of the types below contain the common subtable header */
|
||||
|
||||
AcpiOsPrintf ("\n");
|
||||
+ SubtableLength = AcpiUtReadUint16 (&Subtable->Length);
|
||||
switch (Subtable->Type)
|
||||
{
|
||||
case ACPI_PMTT_TYPE_SOCKET:
|
||||
|
||||
Status = AcpiDmDumpTable (Length, Offset, Subtable,
|
||||
- Subtable->Length, AcpiDmTableInfoPmtt0);
|
||||
+ SubtableLength, AcpiDmTableInfoPmtt0);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
@@ -2176,7 +2178,7 @@ AcpiDmDumpPmtt (
|
||||
|
||||
case ACPI_PMTT_TYPE_CONTROLLER:
|
||||
Status = AcpiDmDumpTable (Length, Offset, Subtable,
|
||||
- Subtable->Length, AcpiDmTableInfoPmtt1);
|
||||
+ SubtableLength, AcpiDmTableInfoPmtt1);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
@@ -2185,7 +2187,7 @@ AcpiDmDumpPmtt (
|
||||
|
||||
case ACPI_PMTT_TYPE_DIMM:
|
||||
Status = AcpiDmDumpTable (Length, Offset, Subtable,
|
||||
- Subtable->Length, AcpiDmTableInfoPmtt2);
|
||||
+ SubtableLength, AcpiDmTableInfoPmtt2);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
@@ -2194,7 +2196,7 @@ AcpiDmDumpPmtt (
|
||||
|
||||
case ACPI_PMTT_TYPE_VENDOR:
|
||||
Status = AcpiDmDumpTable (Length, Offset, Subtable,
|
||||
- Subtable->Length, AcpiDmTableInfoPmttVendor);
|
||||
+ SubtableLength, AcpiDmTableInfoPmttVendor);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
@@ -2210,9 +2212,9 @@ AcpiDmDumpPmtt (
|
||||
|
||||
/* Point to next subtable */
|
||||
|
||||
- Offset += Subtable->Length;
|
||||
+ Offset += SubtableLength;
|
||||
Subtable = ACPI_ADD_PTR (ACPI_PMTT_HEADER,
|
||||
- Subtable, Subtable->Length);
|
||||
+ Subtable, SubtableLength);
|
||||
}
|
||||
}
|
||||
|
@ -1,119 +0,0 @@
|
||||
From c240ab3af6a4ad4405def7188e3d64da06a69f37 Mon Sep 17 00:00:00 2001
|
||||
From: Al Stone <ahs3@redhat.com>
|
||||
Date: Wed, 30 Sep 2020 18:42:38 -0600
|
||||
Subject: [PATCH 39/45] Support TPM2 in a big-endian world
|
||||
|
||||
Signed-off-by: Al Stone <ahs3@redhat.com>
|
||||
---
|
||||
source/common/dmtbdump3.c | 18 ++++++++++--------
|
||||
source/compiler/dttable2.c | 8 +++++---
|
||||
2 files changed, 15 insertions(+), 11 deletions(-)
|
||||
|
||||
Index: acpica-unix2-20220331/source/common/dmtbdump3.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/common/dmtbdump3.c
|
||||
+++ acpica-unix2-20220331/source/common/dmtbdump3.c
|
||||
@@ -475,11 +475,12 @@ AcpiDmDumpTpm2Rev3 (
|
||||
ACPI_TABLE_TPM23 *CommonHeader = ACPI_CAST_PTR (ACPI_TABLE_TPM23, Table);
|
||||
ACPI_TPM23_TRAILER *Subtable = ACPI_ADD_PTR (ACPI_TPM23_TRAILER, Table, Offset);
|
||||
ACPI_STATUS Status;
|
||||
+ UINT32 TableLength = AcpiUtReadUint32 (&Table->Length);
|
||||
|
||||
|
||||
/* Main table */
|
||||
|
||||
- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoTpm23);
|
||||
+ Status = AcpiDmDumpTable (TableLength, 0, Table, 0, AcpiDmTableInfoTpm23);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
@@ -491,8 +492,8 @@ AcpiDmDumpTpm2Rev3 (
|
||||
{
|
||||
case ACPI_TPM23_ACPI_START_METHOD:
|
||||
|
||||
- (void) AcpiDmDumpTable (Table->Length, Offset, Subtable,
|
||||
- Table->Length - Offset, AcpiDmTableInfoTpm23a);
|
||||
+ (void) AcpiDmDumpTable (TableLength, Offset, Subtable,
|
||||
+ TableLength - Offset, AcpiDmTableInfoTpm23a);
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -522,6 +523,7 @@ AcpiDmDumpTpm2 (
|
||||
ACPI_TPM2_TRAILER *Subtable = ACPI_ADD_PTR (ACPI_TPM2_TRAILER, Table, Offset);
|
||||
ACPI_TPM2_ARM_SMC *ArmSubtable;
|
||||
ACPI_STATUS Status;
|
||||
+ UINT32 TableLength = AcpiUtReadUint32 (&Table->Length);
|
||||
|
||||
|
||||
if (Table->Revision == 3)
|
||||
@@ -532,7 +534,7 @@ AcpiDmDumpTpm2 (
|
||||
|
||||
/* Main table */
|
||||
|
||||
- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoTpm2);
|
||||
+ Status = AcpiDmDumpTable (TableLength, 0, Table, 0, AcpiDmTableInfoTpm2);
|
||||
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
@@ -540,8 +542,8 @@ AcpiDmDumpTpm2 (
|
||||
}
|
||||
|
||||
AcpiOsPrintf ("\n");
|
||||
- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
|
||||
- Table->Length - Offset, AcpiDmTableInfoTpm2a);
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset, Subtable,
|
||||
+ TableLength - Offset, AcpiDmTableInfoTpm2a);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
@@ -556,8 +558,8 @@ AcpiDmDumpTpm2 (
|
||||
Offset += sizeof (ACPI_TPM2_TRAILER);
|
||||
|
||||
AcpiOsPrintf ("\n");
|
||||
- (void) AcpiDmDumpTable (Table->Length, Offset, ArmSubtable,
|
||||
- Table->Length - Offset, AcpiDmTableInfoTpm211);
|
||||
+ (void) AcpiDmDumpTable (TableLength, Offset, ArmSubtable,
|
||||
+ TableLength - Offset, AcpiDmTableInfoTpm211);
|
||||
break;
|
||||
|
||||
default:
|
||||
Index: acpica-unix2-20220331/source/compiler/dttable2.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/compiler/dttable2.c
|
||||
+++ acpica-unix2-20220331/source/compiler/dttable2.c
|
||||
@@ -2668,6 +2668,7 @@ DtCompileTpm2 (
|
||||
DT_SUBTABLE *ParentTable;
|
||||
ACPI_STATUS Status = AE_OK;
|
||||
ACPI_TABLE_HEADER *Header;
|
||||
+ UINT8 StartMethod;
|
||||
|
||||
|
||||
ParentTable = DtPeekSubtable ();
|
||||
@@ -2711,7 +2712,8 @@ DtCompileTpm2 (
|
||||
|
||||
/* Subtable type depends on the StartMethod */
|
||||
|
||||
- switch (Tpm2Header->StartMethod)
|
||||
+ StartMethod = *(UINT8 *) &Tpm2Header->StartMethod;
|
||||
+ switch (StartMethod)
|
||||
{
|
||||
case ACPI_TPM2_COMMAND_BUFFER_WITH_ARM_SMC:
|
||||
|
||||
@@ -2742,7 +2744,7 @@ DtCompileTpm2 (
|
||||
case ACPI_TPM2_RESERVED10:
|
||||
|
||||
AcpiOsPrintf ("\n**** Reserved TPM2 Start Method type 0x%X\n",
|
||||
- Tpm2Header->StartMethod);
|
||||
+ StartMethod);
|
||||
Status = AE_ERROR;
|
||||
break;
|
||||
|
||||
@@ -2750,7 +2752,7 @@ DtCompileTpm2 (
|
||||
default:
|
||||
|
||||
AcpiOsPrintf ("\n**** Unknown TPM2 Start Method type 0x%X\n",
|
||||
- Tpm2Header->StartMethod);
|
||||
+ StartMethod);
|
||||
Status = AE_ERROR;
|
||||
break;
|
||||
}
|
@ -1,96 +0,0 @@
|
||||
From 9fc0e46189feb926b13713422ea2722e273a31b5 Mon Sep 17 00:00:00 2001
|
||||
From: Al Stone <ahs3@redhat.com>
|
||||
Date: Mon, 19 Oct 2020 17:30:30 -0400
|
||||
Subject: [PATCH 40/45] Support S3PT in a big-endian world
|
||||
|
||||
---
|
||||
source/common/dmtbdump2.c | 15 +++++++++------
|
||||
source/compiler/dttable2.c | 4 +++-
|
||||
2 files changed, 12 insertions(+), 7 deletions(-)
|
||||
|
||||
Index: acpica-unix2-20220331/source/common/dmtbdump2.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/common/dmtbdump2.c
|
||||
+++ acpica-unix2-20220331/source/common/dmtbdump2.c
|
||||
@@ -2495,6 +2495,8 @@ AcpiDmDumpS3pt (
|
||||
ACPI_FPDT_HEADER *Subtable;
|
||||
ACPI_DMTABLE_INFO *InfoTable;
|
||||
ACPI_TABLE_S3PT *S3ptTable = ACPI_CAST_PTR (ACPI_TABLE_S3PT, Tables);
|
||||
+ UINT32 S3ptTableLength = AcpiUtReadUint32 (&S3ptTable->Length);
|
||||
+ UINT16 SubtableType;
|
||||
|
||||
|
||||
/* Main table */
|
||||
@@ -2506,19 +2508,20 @@ AcpiDmDumpS3pt (
|
||||
}
|
||||
|
||||
Subtable = ACPI_ADD_PTR (ACPI_FPDT_HEADER, S3ptTable, Offset);
|
||||
- while (Offset < S3ptTable->Length)
|
||||
+ while (Offset < S3ptTableLength)
|
||||
{
|
||||
/* Common subtable header */
|
||||
|
||||
AcpiOsPrintf ("\n");
|
||||
- Status = AcpiDmDumpTable (S3ptTable->Length, Offset, Subtable,
|
||||
+ Status = AcpiDmDumpTable (S3ptTableLength, Offset, Subtable,
|
||||
Subtable->Length, AcpiDmTableInfoS3ptHdr);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
- switch (Subtable->Type)
|
||||
+ SubtableType = AcpiUtReadUint16 (&Subtable->Type);
|
||||
+ switch (SubtableType)
|
||||
{
|
||||
case ACPI_S3PT_TYPE_RESUME:
|
||||
|
||||
@@ -2533,7 +2536,7 @@ AcpiDmDumpS3pt (
|
||||
default:
|
||||
|
||||
AcpiOsPrintf ("\n**** Unknown S3PT subtable type 0x%X\n",
|
||||
- Subtable->Type);
|
||||
+ SubtableType);
|
||||
|
||||
/* Attempt to continue */
|
||||
|
||||
@@ -2546,7 +2549,7 @@ AcpiDmDumpS3pt (
|
||||
}
|
||||
|
||||
AcpiOsPrintf ("\n");
|
||||
- Status = AcpiDmDumpTable (S3ptTable->Length, Offset, Subtable,
|
||||
+ Status = AcpiDmDumpTable (S3ptTableLength, Offset, Subtable,
|
||||
Subtable->Length, InfoTable);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
@@ -2560,7 +2563,7 @@ NextSubtable:
|
||||
Subtable = ACPI_ADD_PTR (ACPI_FPDT_HEADER, Subtable, Subtable->Length);
|
||||
}
|
||||
|
||||
- return (S3ptTable->Length);
|
||||
+ return (S3ptTableLength);
|
||||
}
|
||||
|
||||
|
||||
Index: acpica-unix2-20220331/source/compiler/dttable2.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/compiler/dttable2.c
|
||||
+++ acpica-unix2-20220331/source/compiler/dttable2.c
|
||||
@@ -1803,6 +1803,7 @@ DtCompileS3pt (
|
||||
DT_SUBTABLE *ParentTable;
|
||||
ACPI_DMTABLE_INFO *InfoTable;
|
||||
DT_FIELD *SubtableStart;
|
||||
+ UINT16 S3ptHeaderType;
|
||||
|
||||
|
||||
Status = DtCompileTable (PFieldList, AcpiDmTableInfoS3pt,
|
||||
@@ -1830,7 +1831,8 @@ DtCompileS3pt (
|
||||
|
||||
S3ptHeader = ACPI_CAST_PTR (ACPI_FPDT_HEADER, Subtable->Buffer);
|
||||
|
||||
- switch (S3ptHeader->Type)
|
||||
+ S3ptHeaderType = AcpiUtReadUint16 (&S3ptHeader->Type);
|
||||
+ switch (S3ptHeaderType)
|
||||
{
|
||||
case ACPI_S3PT_TYPE_RESUME:
|
||||
|
@ -1,414 +0,0 @@
|
||||
From 5bd43bca1708a56d32e63da0278e04caf2865927 Mon Sep 17 00:00:00 2001
|
||||
From: Al Stone <ahs3@redhat.com>
|
||||
Date: Tue, 29 Jun 2021 17:38:20 -0600
|
||||
Subject: [PATCH 41/45] Support IORT in a big-endian world
|
||||
|
||||
Signed-off-by: Al Stone <ahs3@redhat.com>
|
||||
---
|
||||
source/common/dmtbdump2.c | 85 ++++++++++++++++++++++----------------
|
||||
source/compiler/dttable1.c | 40 ++++++++++--------
|
||||
2 files changed, 72 insertions(+), 53 deletions(-)
|
||||
|
||||
Index: acpica-unix2-20220331/source/common/dmtbdump2.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/common/dmtbdump2.c
|
||||
+++ acpica-unix2-20220331/source/common/dmtbdump2.c
|
||||
@@ -77,17 +77,20 @@ AcpiDmDumpIort (
|
||||
ACPI_IORT_RMR *IortRmr = NULL;
|
||||
UINT32 Offset;
|
||||
UINT32 NodeOffset;
|
||||
+ UINT32 NodeLength;
|
||||
UINT32 Length;
|
||||
ACPI_DMTABLE_INFO *InfoTable;
|
||||
char *String;
|
||||
UINT32 i;
|
||||
UINT32 MappingByteLength;
|
||||
UINT8 Revision;
|
||||
+ UINT32 MappingCount;
|
||||
+ UINT32 TableLength = AcpiUtReadUint32 (&Table->Length);
|
||||
|
||||
|
||||
/* Main table */
|
||||
|
||||
- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoIort);
|
||||
+ Status = AcpiDmDumpTable (TableLength, 0, Table, 0, AcpiDmTableInfoIort);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
@@ -109,18 +112,19 @@ AcpiDmDumpIort (
|
||||
|
||||
/* Dump the OptionalPadding (optional) */
|
||||
|
||||
- if (Iort->NodeOffset > Offset)
|
||||
+ NodeOffset = AcpiUtReadUint32 (&Iort->NodeOffset);
|
||||
+ if (NodeOffset > Offset)
|
||||
{
|
||||
- Status = AcpiDmDumpTable (Table->Length, Offset, Table,
|
||||
- Iort->NodeOffset - Offset, AcpiDmTableInfoIortPad);
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset, Table,
|
||||
+ NodeOffset - Offset, AcpiDmTableInfoIortPad);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
- Offset = Iort->NodeOffset;
|
||||
- while (Offset < Table->Length)
|
||||
+ Offset = AcpiUtReadUint32 (&Iort->NodeOffset);
|
||||
+ while (Offset < TableLength)
|
||||
{
|
||||
/* Common subtable header */
|
||||
|
||||
@@ -130,12 +134,12 @@ AcpiDmDumpIort (
|
||||
|
||||
if (Revision == 0)
|
||||
{
|
||||
- Status = AcpiDmDumpTable (Table->Length, Offset,
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset,
|
||||
IortNode, Length, AcpiDmTableInfoIortHdr);
|
||||
}
|
||||
else if (Revision >= 3)
|
||||
{
|
||||
- Status = AcpiDmDumpTable (Table->Length, Offset,
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset,
|
||||
IortNode, Length, AcpiDmTableInfoIortHdr3);
|
||||
}
|
||||
|
||||
@@ -166,7 +170,7 @@ AcpiDmDumpIort (
|
||||
case ACPI_IORT_NODE_PCI_ROOT_COMPLEX:
|
||||
|
||||
InfoTable = AcpiDmTableInfoIort2;
|
||||
- Length = IortNode->Length - NodeOffset;
|
||||
+ Length = AcpiUtReadUint16 (&IortNode->Length) - NodeOffset;
|
||||
break;
|
||||
|
||||
case ACPI_IORT_NODE_SMMU:
|
||||
@@ -179,19 +183,19 @@ AcpiDmDumpIort (
|
||||
case ACPI_IORT_NODE_SMMU_V3:
|
||||
|
||||
InfoTable = AcpiDmTableInfoIort4;
|
||||
- Length = IortNode->Length - NodeOffset;
|
||||
+ Length = AcpiUtReadUint16 (&IortNode->Length) - NodeOffset;
|
||||
break;
|
||||
|
||||
case ACPI_IORT_NODE_PMCG:
|
||||
|
||||
InfoTable = AcpiDmTableInfoIort5;
|
||||
- Length = IortNode->Length - NodeOffset;
|
||||
+ Length = AcpiUtReadUint16 (&IortNode->Length) - NodeOffset;
|
||||
break;
|
||||
|
||||
case ACPI_IORT_NODE_RMR:
|
||||
|
||||
InfoTable = AcpiDmTableInfoIort6;
|
||||
- Length = IortNode->Length - NodeOffset;
|
||||
+ Length = AcpiUtReadUint16 (&IortNode->Length) - NodeOffset;
|
||||
IortRmr = ACPI_ADD_PTR (ACPI_IORT_RMR, IortNode, NodeOffset);
|
||||
break;
|
||||
|
||||
@@ -202,7 +206,7 @@ AcpiDmDumpIort (
|
||||
|
||||
/* Attempt to continue */
|
||||
|
||||
- if (!IortNode->Length)
|
||||
+ if (!AcpiUtReadUint16 (&IortNode->Length))
|
||||
{
|
||||
AcpiOsPrintf ("Invalid zero length IORT node\n");
|
||||
return;
|
||||
@@ -213,7 +217,7 @@ AcpiDmDumpIort (
|
||||
/* Dump the node subtable header */
|
||||
|
||||
AcpiOsPrintf ("\n");
|
||||
- Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset,
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset + NodeOffset,
|
||||
ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset),
|
||||
Length, InfoTable);
|
||||
if (ACPI_FAILURE (Status))
|
||||
@@ -233,9 +237,10 @@ AcpiDmDumpIort (
|
||||
|
||||
if (IortItsGroup)
|
||||
{
|
||||
- for (i = 0; i < IortItsGroup->ItsCount; i++)
|
||||
+ UINT32 ItsCount = AcpiUtReadUint32 (&IortItsGroup->ItsCount);
|
||||
+ for (i = 0; i < ItsCount; i++)
|
||||
{
|
||||
- Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset,
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset + NodeOffset,
|
||||
ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset),
|
||||
4, AcpiDmTableInfoIort0a);
|
||||
if (ACPI_FAILURE (Status))
|
||||
@@ -252,12 +257,14 @@ AcpiDmDumpIort (
|
||||
|
||||
/* Dump the Padding (optional) */
|
||||
|
||||
- if (IortNode->Length > NodeOffset)
|
||||
+ NodeLength = AcpiUtReadUint16 (&IortNode->Length);
|
||||
+ if (NodeLength > NodeOffset)
|
||||
{
|
||||
MappingByteLength =
|
||||
- IortNode->MappingCount * sizeof (ACPI_IORT_ID_MAPPING);
|
||||
- Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset,
|
||||
- Table, IortNode->Length - NodeOffset - MappingByteLength,
|
||||
+ AcpiUtReadUint32 (&IortNode->MappingCount) *
|
||||
+ sizeof (ACPI_IORT_ID_MAPPING);
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset + NodeOffset,
|
||||
+ Table, NodeLength - NodeOffset - MappingByteLength,
|
||||
AcpiDmTableInfoIort1a);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
@@ -274,9 +281,11 @@ AcpiDmDumpIort (
|
||||
|
||||
if (IortSmmu)
|
||||
{
|
||||
+ UINT32 InterruptCount;
|
||||
+
|
||||
Length = 2 * sizeof (UINT64);
|
||||
- NodeOffset = IortSmmu->GlobalInterruptOffset;
|
||||
- Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset,
|
||||
+ NodeOffset = AcpiUtReadUint32 (&IortSmmu->GlobalInterruptOffset);
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset + NodeOffset,
|
||||
ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset),
|
||||
Length, AcpiDmTableInfoIort3a);
|
||||
if (ACPI_FAILURE (Status))
|
||||
@@ -284,10 +293,11 @@ AcpiDmDumpIort (
|
||||
return;
|
||||
}
|
||||
|
||||
- NodeOffset = IortSmmu->ContextInterruptOffset;
|
||||
- for (i = 0; i < IortSmmu->ContextInterruptCount; i++)
|
||||
+ NodeOffset = AcpiUtReadUint32 (&IortSmmu->ContextInterruptOffset);
|
||||
+ InterruptCount = AcpiUtReadUint32 (&IortSmmu->ContextInterruptCount);
|
||||
+ for (i = 0; i < InterruptCount; i++)
|
||||
{
|
||||
- Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset,
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset + NodeOffset,
|
||||
ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset),
|
||||
8, AcpiDmTableInfoIort3b);
|
||||
if (ACPI_FAILURE (Status))
|
||||
@@ -298,10 +308,11 @@ AcpiDmDumpIort (
|
||||
NodeOffset += 8;
|
||||
}
|
||||
|
||||
- NodeOffset = IortSmmu->PmuInterruptOffset;
|
||||
- for (i = 0; i < IortSmmu->PmuInterruptCount; i++)
|
||||
+ NodeOffset = AcpiUtReadUint32 (&IortSmmu->PmuInterruptOffset);
|
||||
+ InterruptCount = AcpiUtReadUint32 (&IortSmmu->PmuInterruptCount);
|
||||
+ for (i = 0; i < InterruptCount; i++)
|
||||
{
|
||||
- Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset,
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset + NodeOffset,
|
||||
ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset),
|
||||
8, AcpiDmTableInfoIort3c);
|
||||
if (ACPI_FAILURE (Status))
|
||||
@@ -319,12 +330,15 @@ AcpiDmDumpIort (
|
||||
/* Validate IortRmr to avoid compiler warnings */
|
||||
if (IortRmr)
|
||||
{
|
||||
- NodeOffset = IortRmr->RmrOffset;
|
||||
+ UINT32 RmrCount;
|
||||
+
|
||||
+ NodeOffset = AcpiUtReadUint32 (&IortRmr->RmrOffset);
|
||||
+ RmrCount = AcpiUtReadUint32 (&IortRmr->RmrCount);
|
||||
Length = sizeof (ACPI_IORT_RMR_DESC);
|
||||
- for (i = 0; i < IortRmr->RmrCount; i++)
|
||||
+ for (i = 0; i < RmrCount; i++)
|
||||
{
|
||||
AcpiOsPrintf ("\n");
|
||||
- Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset,
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset + NodeOffset,
|
||||
ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset),
|
||||
Length, AcpiDmTableInfoIort6a);
|
||||
if (ACPI_FAILURE (Status))
|
||||
@@ -344,12 +358,13 @@ AcpiDmDumpIort (
|
||||
|
||||
/* Dump the ID mappings */
|
||||
|
||||
- NodeOffset = IortNode->MappingOffset;
|
||||
- for (i = 0; i < IortNode->MappingCount; i++)
|
||||
+ NodeOffset = AcpiUtReadUint32 (&IortNode->MappingOffset);
|
||||
+ MappingCount = AcpiUtReadUint32 (&IortNode->MappingCount);
|
||||
+ for (i = 0; i < MappingCount; i++)
|
||||
{
|
||||
AcpiOsPrintf ("\n");
|
||||
Length = sizeof (ACPI_IORT_ID_MAPPING);
|
||||
- Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset,
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset + NodeOffset,
|
||||
ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset),
|
||||
Length, AcpiDmTableInfoIortMap);
|
||||
if (ACPI_FAILURE (Status))
|
||||
@@ -363,7 +378,7 @@ AcpiDmDumpIort (
|
||||
NextSubtable:
|
||||
/* Point to next node subtable */
|
||||
|
||||
- Offset += IortNode->Length;
|
||||
+ Offset += AcpiUtReadUint16 (&IortNode->Length);
|
||||
}
|
||||
}
|
||||
|
||||
Index: acpica-unix2-20220331/source/compiler/dttable1.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/compiler/dttable1.c
|
||||
+++ acpica-unix2-20220331/source/compiler/dttable1.c
|
||||
@@ -1960,6 +1960,7 @@ DtCompileIort (
|
||||
ACPI_IORT_ITS_GROUP *IortItsGroup;
|
||||
ACPI_IORT_SMMU *IortSmmu;
|
||||
ACPI_IORT_RMR *IortRmr;
|
||||
+ UINT32 IortNodeOffset;
|
||||
UINT32 NodeNumber;
|
||||
UINT32 NodeLength;
|
||||
UINT32 IdMappingNumber;
|
||||
@@ -2005,7 +2006,7 @@ DtCompileIort (
|
||||
* Optionally allows the generic data types to be used for filling
|
||||
* this field.
|
||||
*/
|
||||
- Iort->NodeOffset = sizeof (ACPI_TABLE_IORT);
|
||||
+ IortNodeOffset = sizeof (ACPI_TABLE_IORT);
|
||||
Status = DtCompileTable (PFieldList, AcpiDmTableInfoIortPad,
|
||||
&Subtable);
|
||||
if (ACPI_FAILURE (Status))
|
||||
@@ -2015,7 +2016,7 @@ DtCompileIort (
|
||||
if (Subtable)
|
||||
{
|
||||
DtInsertSubtable (ParentTable, Subtable);
|
||||
- Iort->NodeOffset += Subtable->Length;
|
||||
+ IortNodeOffset += Subtable->Length;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -2025,7 +2026,7 @@ DtCompileIort (
|
||||
{
|
||||
return (Status);
|
||||
}
|
||||
- Iort->NodeOffset += PaddingLength;
|
||||
+ IortNodeOffset += PaddingLength;
|
||||
}
|
||||
|
||||
NodeNumber = 0;
|
||||
@@ -2089,7 +2090,7 @@ DtCompileIort (
|
||||
ItsNumber++;
|
||||
}
|
||||
|
||||
- IortItsGroup->ItsCount = ItsNumber;
|
||||
+ IortItsGroup->ItsCount = AcpiUtReadUint32 (&ItsNumber);
|
||||
break;
|
||||
|
||||
case ACPI_IORT_NODE_NAMED_COMPONENT:
|
||||
@@ -2123,15 +2124,18 @@ DtCompileIort (
|
||||
}
|
||||
else
|
||||
{
|
||||
- if (NodeLength > IortNode->MappingOffset)
|
||||
+ UINT32 MappingOffset;
|
||||
+
|
||||
+ MappingOffset = IortNode->MappingOffset;
|
||||
+ if (NodeLength > MappingOffset)
|
||||
{
|
||||
return (AE_BAD_DATA);
|
||||
}
|
||||
|
||||
- if (NodeLength < IortNode->MappingOffset)
|
||||
+ if (NodeLength < MappingOffset)
|
||||
{
|
||||
Status = DtCompilePadding (
|
||||
- IortNode->MappingOffset - NodeLength,
|
||||
+ MappingOffset - NodeLength,
|
||||
&Subtable);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
@@ -2139,7 +2143,7 @@ DtCompileIort (
|
||||
}
|
||||
|
||||
DtInsertSubtable (ParentTable, Subtable);
|
||||
- NodeLength = IortNode->MappingOffset;
|
||||
+ NodeLength = MappingOffset;
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -2172,7 +2176,7 @@ DtCompileIort (
|
||||
|
||||
/* Compile global interrupt array */
|
||||
|
||||
- IortSmmu->GlobalInterruptOffset = NodeLength;
|
||||
+ IortSmmu->GlobalInterruptOffset = AcpiUtReadUint32 (&NodeLength);
|
||||
Status = DtCompileTable (PFieldList, AcpiDmTableInfoIort3a,
|
||||
&Subtable);
|
||||
if (ACPI_FAILURE (Status))
|
||||
@@ -2186,7 +2190,7 @@ DtCompileIort (
|
||||
/* Compile context interrupt array */
|
||||
|
||||
ContextIrptNumber = 0;
|
||||
- IortSmmu->ContextInterruptOffset = NodeLength;
|
||||
+ IortSmmu->ContextInterruptOffset = AcpiUtReadUint32 (&NodeLength);
|
||||
while (*PFieldList)
|
||||
{
|
||||
Status = DtCompileTable (PFieldList, AcpiDmTableInfoIort3b,
|
||||
@@ -2206,12 +2210,12 @@ DtCompileIort (
|
||||
ContextIrptNumber++;
|
||||
}
|
||||
|
||||
- IortSmmu->ContextInterruptCount = ContextIrptNumber;
|
||||
+ IortSmmu->ContextInterruptCount = AcpiUtReadUint32 (&ContextIrptNumber);
|
||||
|
||||
/* Compile PMU interrupt array */
|
||||
|
||||
PmuIrptNumber = 0;
|
||||
- IortSmmu->PmuInterruptOffset = NodeLength;
|
||||
+ IortSmmu->PmuInterruptOffset = AcpiUtReadUint32 (&NodeLength);
|
||||
while (*PFieldList)
|
||||
{
|
||||
Status = DtCompileTable (PFieldList, AcpiDmTableInfoIort3c,
|
||||
@@ -2231,7 +2235,7 @@ DtCompileIort (
|
||||
PmuIrptNumber++;
|
||||
}
|
||||
|
||||
- IortSmmu->PmuInterruptCount = PmuIrptNumber;
|
||||
+ IortSmmu->PmuInterruptCount = AcpiUtReadUint32 (&PmuIrptNumber);
|
||||
break;
|
||||
|
||||
case ACPI_IORT_NODE_SMMU_V3:
|
||||
@@ -2276,7 +2280,7 @@ DtCompileIort (
|
||||
/* Compile RMR Descriptors */
|
||||
|
||||
RmrCount = 0;
|
||||
- IortRmr->RmrOffset = NodeLength;
|
||||
+ IortRmr->RmrOffset = AcpiUtReadUint32 (&NodeLength);
|
||||
while (*PFieldList)
|
||||
{
|
||||
Status = DtCompileTable (PFieldList, AcpiDmTableInfoIort6a,
|
||||
@@ -2296,7 +2300,7 @@ DtCompileIort (
|
||||
RmrCount++;
|
||||
}
|
||||
|
||||
- IortRmr->RmrCount = RmrCount;
|
||||
+ IortRmr->RmrCount = AcpiUtReadUint32 (&RmrCount);
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -2307,7 +2311,7 @@ DtCompileIort (
|
||||
|
||||
/* Compile Array of ID mappings */
|
||||
|
||||
- IortNode->MappingOffset = NodeLength;
|
||||
+ IortNode->MappingOffset = AcpiUtReadUint32 (&NodeLength);
|
||||
IdMappingNumber = 0;
|
||||
while (*PFieldList)
|
||||
{
|
||||
@@ -2328,7 +2332,7 @@ DtCompileIort (
|
||||
IdMappingNumber++;
|
||||
}
|
||||
|
||||
- IortNode->MappingCount = IdMappingNumber;
|
||||
+ IortNode->MappingCount = AcpiUtReadUint32 (&IdMappingNumber);
|
||||
if (!IdMappingNumber)
|
||||
{
|
||||
IortNode->MappingOffset = 0;
|
||||
@@ -2343,7 +2347,7 @@ DtCompileIort (
|
||||
NodeNumber++;
|
||||
}
|
||||
|
||||
- Iort->NodeCount = NodeNumber;
|
||||
+ Iort->NodeCount = AcpiUtReadUint32 (&NodeNumber);
|
||||
return (AE_OK);
|
||||
}
|
||||
|
@ -1,138 +0,0 @@
|
||||
From b64cff82b2b33ed659826d777d2db039f64fd198 Mon Sep 17 00:00:00 2001
|
||||
From: Al Stone <ahs3@redhat.com>
|
||||
Date: Tue, 29 Jun 2021 17:45:24 -0600
|
||||
Subject: [PATCH 42/45] Support IVRS in a big-endian world
|
||||
|
||||
Signed-off-by: Al Stone <ahs3@redhat.com>
|
||||
---
|
||||
source/common/dmtbdump2.c | 34 +++++++++++++++++++---------------
|
||||
1 file changed, 19 insertions(+), 15 deletions(-)
|
||||
|
||||
Index: acpica-unix2-20220331/source/common/dmtbdump2.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/common/dmtbdump2.c
|
||||
+++ acpica-unix2-20220331/source/common/dmtbdump2.c
|
||||
@@ -419,11 +419,14 @@ AcpiDmDumpIvrs (
|
||||
ACPI_IVRS_DE_HEADER *DeviceEntry;
|
||||
ACPI_IVRS_HEADER *Subtable;
|
||||
ACPI_DMTABLE_INFO *InfoTable;
|
||||
+ UINT32 TableLength = AcpiUtReadUint32 (&Table->Length);
|
||||
+ UINT16 SubtableLength;
|
||||
+
|
||||
|
||||
|
||||
/* Main table */
|
||||
|
||||
- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoIvrs);
|
||||
+ Status = AcpiDmDumpTable (TableLength, 0, Table, 0, AcpiDmTableInfoIvrs);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
@@ -433,8 +436,9 @@ AcpiDmDumpIvrs (
|
||||
|
||||
Subtable = ACPI_ADD_PTR (ACPI_IVRS_HEADER, Table, Offset);
|
||||
|
||||
- while (Offset < Table->Length)
|
||||
+ while (Offset < TableLength)
|
||||
{
|
||||
+ SubtableLength = AcpiUtReadUint16 (&Subtable->Length);
|
||||
switch (Subtable->Type)
|
||||
{
|
||||
/* Type 10h, IVHD (I/O Virtualization Hardware Definition) */
|
||||
@@ -471,7 +475,7 @@ AcpiDmDumpIvrs (
|
||||
|
||||
/* Attempt to continue */
|
||||
|
||||
- if (!Subtable->Length)
|
||||
+ if (!SubtableLength)
|
||||
{
|
||||
AcpiOsPrintf ("Invalid zero length subtable\n");
|
||||
return;
|
||||
@@ -481,8 +485,8 @@ AcpiDmDumpIvrs (
|
||||
|
||||
/* Dump the subtable */
|
||||
|
||||
- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
|
||||
- Subtable->Length, InfoTable);
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset, Subtable,
|
||||
+ SubtableLength, InfoTable);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
@@ -511,7 +515,7 @@ AcpiDmDumpIvrs (
|
||||
|
||||
/* Process all of the Device Entries */
|
||||
|
||||
- while (EntryOffset < (Offset + Subtable->Length))
|
||||
+ while (EntryOffset < (Offset + SubtableLength))
|
||||
{
|
||||
AcpiOsPrintf ("\n");
|
||||
|
||||
@@ -581,7 +585,7 @@ AcpiDmDumpIvrs (
|
||||
|
||||
/* Dump the Device Entry */
|
||||
|
||||
- Status = AcpiDmDumpTable (Table->Length, EntryOffset,
|
||||
+ Status = AcpiDmDumpTable (TableLength, EntryOffset,
|
||||
DeviceEntry, EntryLength, InfoTable);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
@@ -605,12 +609,12 @@ AcpiDmDumpIvrs (
|
||||
*/
|
||||
if (UtIsIdInteger ((UINT8 *) &HidSubtable->AcpiHid))
|
||||
{
|
||||
- Status = AcpiDmDumpTable (Table->Length, EntryOffset,
|
||||
+ Status = AcpiDmDumpTable (TableLength, EntryOffset,
|
||||
&HidSubtable->AcpiHid, 8, AcpiDmTableInfoIvrsHidInteger);
|
||||
}
|
||||
else
|
||||
{
|
||||
- Status = AcpiDmDumpTable (Table->Length, EntryOffset,
|
||||
+ Status = AcpiDmDumpTable (TableLength, EntryOffset,
|
||||
&HidSubtable->AcpiHid, 8, AcpiDmTableInfoIvrsHidString);
|
||||
}
|
||||
if (ACPI_FAILURE (Status))
|
||||
@@ -628,12 +632,12 @@ AcpiDmDumpIvrs (
|
||||
*/
|
||||
if (UtIsIdInteger ((UINT8 *) &HidSubtable->AcpiCid))
|
||||
{
|
||||
- Status = AcpiDmDumpTable (Table->Length, EntryOffset,
|
||||
+ Status = AcpiDmDumpTable (TableLength, EntryOffset,
|
||||
&HidSubtable->AcpiCid, 8, AcpiDmTableInfoIvrsCidInteger);
|
||||
}
|
||||
else
|
||||
{
|
||||
- Status = AcpiDmDumpTable (Table->Length, EntryOffset,
|
||||
+ Status = AcpiDmDumpTable (TableLength, EntryOffset,
|
||||
&HidSubtable->AcpiCid, 8, AcpiDmTableInfoIvrsCidString);
|
||||
}
|
||||
if (ACPI_FAILURE (Status))
|
||||
@@ -650,7 +654,7 @@ AcpiDmDumpIvrs (
|
||||
|
||||
if (HidSubtable->UidType == ACPI_IVRS_UID_IS_STRING)
|
||||
{
|
||||
- Status = AcpiDmDumpTable (Table->Length, EntryOffset,
|
||||
+ Status = AcpiDmDumpTable (TableLength, EntryOffset,
|
||||
&HidSubtable->UidType, EntryLength, AcpiDmTableInfoIvrsUidString);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
@@ -659,7 +663,7 @@ AcpiDmDumpIvrs (
|
||||
}
|
||||
else /* ACPI_IVRS_UID_IS_INTEGER */
|
||||
{
|
||||
- Status = AcpiDmDumpTable (Table->Length, EntryOffset,
|
||||
+ Status = AcpiDmDumpTable (TableLength, EntryOffset,
|
||||
&HidSubtable->UidType, EntryLength, AcpiDmTableInfoIvrsUidInteger);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
@@ -678,8 +682,8 @@ AcpiDmDumpIvrs (
|
||||
NextSubtable:
|
||||
/* Point to next subtable */
|
||||
|
||||
- Offset += Subtable->Length;
|
||||
- Subtable = ACPI_ADD_PTR (ACPI_IVRS_HEADER, Subtable, Subtable->Length);
|
||||
+ Offset += SubtableLength;
|
||||
+ Subtable = ACPI_ADD_PTR (ACPI_IVRS_HEADER, Subtable, SubtableLength);
|
||||
}
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,23 +0,0 @@
|
||||
From bd137d3712e6bc7e4d2d11350a208a36750e4063 Mon Sep 17 00:00:00 2001
|
||||
From: Al Stone <ahs3@redhat.com>
|
||||
Date: Tue, 6 Jul 2021 18:26:41 -0600
|
||||
Subject: [PATCH 44/45] Initial support for WPBT in big-endian, needs more
|
||||
|
||||
Signed-off-by: Al Stone <ahs3@redhat.com>
|
||||
---
|
||||
source/compiler/dttable2.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
Index: acpica-unix2-20210604/source/compiler/dttable2.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20210604.orig/source/compiler/dttable2.c
|
||||
+++ acpica-unix2-20210604/source/compiler/dttable2.c
|
||||
@@ -2638,7 +2638,7 @@ DtCompileWpbt (
|
||||
AcpiUtWriteUint (&Length, sizeof (UINT16),
|
||||
&Subtable->TotalLength, sizeof (UINT32));
|
||||
Table = ACPI_CAST_PTR (ACPI_TABLE_WPBT, ParentTable->Buffer);
|
||||
- Table->ArgumentsLength = Length;
|
||||
+ Table->ArgumentsLength = AcpiUtReadUint16 (&Length);
|
||||
|
||||
ParentTable = DtPeekSubtable ();
|
||||
DtInsertSubtable (ParentTable, Subtable);
|
@ -1,213 +0,0 @@
|
||||
From 0d87ee42adda7837bec3cc0ff86e40c2f2e8dc4f Mon Sep 17 00:00:00 2001
|
||||
From: Al Stone <ahs3@redhat.com>
|
||||
Date: Fri, 9 Jul 2021 14:52:55 -0600
|
||||
Subject: [PATCH 45/45] CSRT: fixed use of optional ResourceInfo
|
||||
|
||||
In a resource sub-sub-table, there may be a ResourceInfo entry. Neither
|
||||
the compiler nor disassembler accounted for that possibility properly.
|
||||
|
||||
Signed-off-by: Al Stone <ahs3@redhat.com>
|
||||
---
|
||||
source/common/dmtbdump1.c | 43 +++++++++++++++++++++-----------------
|
||||
source/compiler/dttable1.c | 28 +++++++++++++------------
|
||||
2 files changed, 39 insertions(+), 32 deletions(-)
|
||||
|
||||
Index: acpica-unix2-20220331/source/common/dmtbdump1.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/common/dmtbdump1.c
|
||||
+++ acpica-unix2-20220331/source/common/dmtbdump1.c
|
||||
@@ -669,11 +669,13 @@ AcpiDmDumpCsrt (
|
||||
ACPI_CSRT_GROUP *Subtable;
|
||||
ACPI_CSRT_SHARED_INFO *SharedInfoTable;
|
||||
ACPI_CSRT_DESCRIPTOR *SubSubtable;
|
||||
- UINT32 Length = AcpiUtReadUint32 (&Table->Length);
|
||||
+ UINT32 TableLength = AcpiUtReadUint32 (&Table->Length);
|
||||
UINT32 Offset = sizeof (ACPI_TABLE_CSRT);
|
||||
UINT32 SubOffset;
|
||||
UINT32 SubSubOffset;
|
||||
UINT32 InfoLength;
|
||||
+ UINT32 SubtableLength;
|
||||
+ UINT32 SubSubtableLength;
|
||||
|
||||
|
||||
/* The main table only contains the ACPI header, thus already handled */
|
||||
@@ -681,13 +683,14 @@ AcpiDmDumpCsrt (
|
||||
/* Subtables (Resource Groups) */
|
||||
|
||||
Subtable = ACPI_ADD_PTR (ACPI_CSRT_GROUP, Table, Offset);
|
||||
- while (Offset < Length)
|
||||
+ while (Offset < TableLength)
|
||||
{
|
||||
/* Resource group subtable */
|
||||
|
||||
+ SubtableLength = AcpiUtReadUint32 (&Subtable->Length);
|
||||
AcpiOsPrintf ("\n");
|
||||
- Status = AcpiDmDumpTable (Length, Offset, Subtable,
|
||||
- Subtable->Length, AcpiDmTableInfoCsrt0);
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset, Subtable,
|
||||
+ SubtableLength, AcpiDmTableInfoCsrt0);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
@@ -700,26 +703,28 @@ AcpiDmDumpCsrt (
|
||||
Offset + SubOffset);
|
||||
|
||||
AcpiOsPrintf ("\n");
|
||||
- Status = AcpiDmDumpTable (Length, Offset + SubOffset, SharedInfoTable,
|
||||
- sizeof (ACPI_CSRT_SHARED_INFO), AcpiDmTableInfoCsrt1);
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset + SubOffset,
|
||||
+ SharedInfoTable, sizeof (ACPI_CSRT_SHARED_INFO),
|
||||
+ AcpiDmTableInfoCsrt1);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
- SubOffset += Subtable->SharedInfoLength;
|
||||
+ SubOffset += AcpiUtReadUint32 (&Subtable->SharedInfoLength);
|
||||
|
||||
/* Sub-Subtables (Resource Descriptors) */
|
||||
|
||||
SubSubtable = ACPI_ADD_PTR (ACPI_CSRT_DESCRIPTOR, Table,
|
||||
Offset + SubOffset);
|
||||
|
||||
- while ((SubOffset < Subtable->Length) &&
|
||||
- ((Offset + SubOffset) < Length))
|
||||
+ while ((SubOffset < SubtableLength) &&
|
||||
+ ((Offset + SubOffset) < TableLength))
|
||||
{
|
||||
+ SubSubtableLength = AcpiUtReadUint32 (&SubSubtable->Length);
|
||||
AcpiOsPrintf ("\n");
|
||||
- Status = AcpiDmDumpTable (Length, Offset + SubOffset, SubSubtable,
|
||||
- SubSubtable->Length, AcpiDmTableInfoCsrt2);
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset + SubOffset,
|
||||
+ SubSubtable, SubSubtableLength, AcpiDmTableInfoCsrt2);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
@@ -729,11 +734,12 @@ AcpiDmDumpCsrt (
|
||||
|
||||
/* Resource-specific info buffer */
|
||||
|
||||
- InfoLength = SubSubtable->Length - SubSubOffset;
|
||||
+ InfoLength = SubSubtableLength - SubSubOffset;
|
||||
if (InfoLength)
|
||||
{
|
||||
- Status = AcpiDmDumpTable (Length,
|
||||
- Offset + SubOffset + SubSubOffset, Table,
|
||||
+ Status = AcpiDmDumpTable (TableLength,
|
||||
+ Offset + SubOffset + SubSubOffset,
|
||||
+ (UINT8 *)SubSubtable + SubSubOffset,
|
||||
InfoLength, AcpiDmTableInfoCsrt2a);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
@@ -743,16 +749,15 @@ AcpiDmDumpCsrt (
|
||||
|
||||
/* Point to next sub-subtable */
|
||||
|
||||
- SubOffset += SubSubtable->Length;
|
||||
+ SubOffset += SubSubtableLength;
|
||||
SubSubtable = ACPI_ADD_PTR (ACPI_CSRT_DESCRIPTOR, SubSubtable,
|
||||
- SubSubtable->Length);
|
||||
+ SubSubtableLength);
|
||||
}
|
||||
|
||||
/* Point to next subtable */
|
||||
|
||||
- Offset += Subtable->Length;
|
||||
- Subtable = ACPI_ADD_PTR (ACPI_CSRT_GROUP, Subtable,
|
||||
- Subtable->Length);
|
||||
+ Offset += SubtableLength;
|
||||
+ Subtable = ACPI_ADD_PTR (ACPI_CSRT_GROUP, Subtable, SubtableLength);
|
||||
}
|
||||
}
|
||||
|
||||
Index: acpica-unix2-20220331/source/compiler/dttable1.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/compiler/dttable1.c
|
||||
+++ acpica-unix2-20220331/source/compiler/dttable1.c
|
||||
@@ -716,14 +716,16 @@ DtCompileCsrt (
|
||||
DT_SUBTABLE *Subtable;
|
||||
DT_SUBTABLE *ParentTable;
|
||||
DT_FIELD **PFieldList = (DT_FIELD **) List;
|
||||
- UINT32 DescriptorCount;
|
||||
+ UINT32 DescriptorLength;
|
||||
UINT32 GroupLength;
|
||||
UINT32 Tmp;
|
||||
+ UINT32 Offset;
|
||||
|
||||
|
||||
/* Subtables (Resource Groups) */
|
||||
|
||||
ParentTable = DtPeekSubtable ();
|
||||
+
|
||||
while (*PFieldList)
|
||||
{
|
||||
/* Resource group subtable */
|
||||
@@ -738,16 +740,13 @@ DtCompileCsrt (
|
||||
/* Compute the number of resource descriptors */
|
||||
|
||||
Tmp = AcpiUtReadUint32 (&(ACPI_CAST_PTR (ACPI_CSRT_GROUP,
|
||||
- Subtable->Buffer))->Length);
|
||||
+ Subtable->Buffer))->Length);
|
||||
GroupLength = Tmp;
|
||||
Tmp = AcpiUtReadUint32 (&(ACPI_CAST_PTR (ACPI_CSRT_GROUP,
|
||||
- Subtable->Buffer))->SharedInfoLength);
|
||||
+ Subtable->Buffer))->SharedInfoLength);
|
||||
GroupLength -= Tmp;
|
||||
GroupLength -= sizeof (ACPI_CSRT_GROUP);
|
||||
|
||||
- DescriptorCount = (GroupLength /
|
||||
- sizeof (ACPI_CSRT_DESCRIPTOR));
|
||||
-
|
||||
DtInsertSubtable (ParentTable, Subtable);
|
||||
DtPushSubtable (Subtable);
|
||||
ParentTable = DtPeekSubtable ();
|
||||
@@ -762,10 +761,13 @@ DtCompileCsrt (
|
||||
}
|
||||
|
||||
DtInsertSubtable (ParentTable, Subtable);
|
||||
+ DtPushSubtable (Subtable);
|
||||
+ ParentTable = DtPeekSubtable ();
|
||||
|
||||
/* Sub-Subtables (Resource Descriptors) */
|
||||
|
||||
- while (*PFieldList && DescriptorCount)
|
||||
+ Offset = 0;
|
||||
+ while (*PFieldList && (Offset < GroupLength))
|
||||
{
|
||||
|
||||
Status = DtCompileTable (PFieldList, AcpiDmTableInfoCsrt2,
|
||||
@@ -774,6 +776,10 @@ DtCompileCsrt (
|
||||
{
|
||||
return (Status);
|
||||
}
|
||||
+ DescriptorLength = AcpiUtReadUint32 (
|
||||
+ &(ACPI_CAST_PTR (ACPI_CSRT_GROUP,
|
||||
+ Subtable->Buffer))->Length);
|
||||
+
|
||||
|
||||
DtInsertSubtable (ParentTable, Subtable);
|
||||
|
||||
@@ -783,11 +789,7 @@ DtCompileCsrt (
|
||||
{
|
||||
Status = DtCompileTable (PFieldList, AcpiDmTableInfoCsrt2a,
|
||||
&Subtable);
|
||||
- if (ACPI_FAILURE (Status))
|
||||
- {
|
||||
- return (Status);
|
||||
- }
|
||||
- if (Subtable)
|
||||
+ if (ACPI_SUCCESS (Status) && Subtable)
|
||||
{
|
||||
DtInsertSubtable (ParentTable, Subtable);
|
||||
}
|
||||
@@ -795,7 +797,7 @@ DtCompileCsrt (
|
||||
|
||||
DtPopSubtable ();
|
||||
ParentTable = DtPeekSubtable ();
|
||||
- DescriptorCount--;
|
||||
+ Offset += DescriptorLength;
|
||||
}
|
||||
|
||||
DtPopSubtable ();
|
@ -1,180 +0,0 @@
|
||||
From 5fd729c8f6c4ce295edd142fc41e03e831ba4afb Mon Sep 17 00:00:00 2001
|
||||
From: Al Stone <ahs3@redhat.com>
|
||||
Date: Mon, 12 Jul 2021 09:39:38 -0600
|
||||
Subject: [PATCH] Support PHAT in a big-endian world
|
||||
|
||||
Signed-off-by: Al Stone <ahs3@redhat.com>
|
||||
---
|
||||
source/common/dmtbdump2.c | 36 ++++++++++++++++++++----------------
|
||||
source/compiler/dttable2.c | 12 +++++++++---
|
||||
2 files changed, 29 insertions(+), 19 deletions(-)
|
||||
|
||||
Index: acpica-unix2-20220331/source/common/dmtbdump2.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/common/dmtbdump2.c
|
||||
+++ acpica-unix2-20220331/source/common/dmtbdump2.c
|
||||
@@ -2029,39 +2029,41 @@ AcpiDmDumpPhat (
|
||||
ACPI_PHAT_HEADER *Subtable;
|
||||
ACPI_PHAT_VERSION_DATA *VersionData;
|
||||
UINT32 RecordCount;
|
||||
- UINT32 Length = Table->Length;
|
||||
+ UINT32 TableLength = AcpiUtReadUint32 (&Table->Length);
|
||||
UINT32 Offset = sizeof (ACPI_TABLE_PHAT);
|
||||
- UINT32 SubtableLength;
|
||||
+ UINT16 SubtableLength;
|
||||
UINT32 PathLength;
|
||||
UINT32 VendorLength;
|
||||
+ UINT16 SubtableType;
|
||||
|
||||
|
||||
Subtable = ACPI_ADD_PTR (ACPI_PHAT_HEADER, Table, sizeof (ACPI_TABLE_PHAT));
|
||||
|
||||
- while (Offset < Table->Length)
|
||||
+ while (Offset < TableLength)
|
||||
{
|
||||
/* Common subtable header */
|
||||
|
||||
+ SubtableType = AcpiUtReadUint16 (&Subtable->Type);
|
||||
+ SubtableLength = AcpiUtReadUint16 (&Subtable->Length);
|
||||
+
|
||||
AcpiOsPrintf ("\n");
|
||||
- Status = AcpiDmDumpTable (Length, 0, Subtable,
|
||||
+ Status = AcpiDmDumpTable (TableLength, 0, Subtable,
|
||||
sizeof (ACPI_PHAT_HEADER), AcpiDmTableInfoPhatHdr);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
- switch (Subtable->Type)
|
||||
+ switch (SubtableType)
|
||||
{
|
||||
case ACPI_PHAT_TYPE_FW_VERSION_DATA:
|
||||
|
||||
InfoTable = AcpiDmTableInfoPhat0;
|
||||
- SubtableLength = sizeof (ACPI_PHAT_VERSION_DATA);
|
||||
break;
|
||||
|
||||
case ACPI_PHAT_TYPE_FW_HEALTH_DATA:
|
||||
|
||||
InfoTable = AcpiDmTableInfoPhat1;
|
||||
- SubtableLength = sizeof (ACPI_PHAT_HEALTH_DATA);
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -2072,22 +2074,22 @@ AcpiDmDumpPhat (
|
||||
return;
|
||||
}
|
||||
|
||||
- Status = AcpiDmDumpTable (Length, 0, Subtable,
|
||||
+ Status = AcpiDmDumpTable (TableLength, 0, Subtable,
|
||||
SubtableLength, InfoTable);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
- switch (Subtable->Type)
|
||||
+ switch (SubtableType)
|
||||
{
|
||||
case ACPI_PHAT_TYPE_FW_VERSION_DATA:
|
||||
|
||||
VersionData = ACPI_CAST_PTR (ACPI_PHAT_VERSION_DATA, Subtable);
|
||||
- RecordCount = VersionData->ElementCount;
|
||||
+ RecordCount = AcpiUtReadUint32 (&VersionData->ElementCount);
|
||||
while (RecordCount)
|
||||
{
|
||||
- Status = AcpiDmDumpTable (Length, Offset,
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset,
|
||||
ACPI_ADD_PTR (ACPI_PHAT_HEADER, Subtable, sizeof (ACPI_PHAT_VERSION_DATA)),
|
||||
sizeof (ACPI_PHAT_VERSION_ELEMENT), AcpiDmTableInfoPhat0a);
|
||||
if (ACPI_FAILURE (Status))
|
||||
@@ -2105,7 +2107,7 @@ AcpiDmDumpPhat (
|
||||
/* account for the null terminator */
|
||||
|
||||
PathLength = strlen (ACPI_ADD_PTR (char, Subtable, sizeof (ACPI_PHAT_HEALTH_DATA))) + 1;
|
||||
- Status = AcpiDmDumpTable (Length, Offset,
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset,
|
||||
ACPI_ADD_PTR (ACPI_PHAT_HEADER, Subtable, sizeof (ACPI_PHAT_HEALTH_DATA)),
|
||||
PathLength, AcpiDmTableInfoPhat1a);
|
||||
if (ACPI_FAILURE (Status))
|
||||
@@ -2116,8 +2118,8 @@ AcpiDmDumpPhat (
|
||||
/* Get vendor data - data length is the remaining subtable length */
|
||||
|
||||
VendorLength =
|
||||
- Subtable->Length - sizeof (ACPI_PHAT_HEALTH_DATA) - PathLength;
|
||||
- Status = AcpiDmDumpTable (Length, 0,
|
||||
+ SubtableLength - sizeof (ACPI_PHAT_HEALTH_DATA) - PathLength;
|
||||
+ Status = AcpiDmDumpTable (TableLength, 0,
|
||||
ACPI_ADD_PTR (ACPI_PHAT_HEADER, Subtable, sizeof (ACPI_PHAT_HEALTH_DATA) + PathLength),
|
||||
VendorLength, AcpiDmTableInfoPhat1b);
|
||||
if (ACPI_FAILURE (Status))
|
||||
@@ -2129,15 +2131,15 @@ AcpiDmDumpPhat (
|
||||
default:
|
||||
|
||||
AcpiOsPrintf ("\n**** Unknown PHAT subtable type 0x%X\n\n",
|
||||
- Subtable->Type);
|
||||
+ SubtableType);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Next subtable */
|
||||
|
||||
- Offset += Subtable->Length;
|
||||
+ Offset += SubtableLength;
|
||||
Subtable = ACPI_ADD_PTR (ACPI_PHAT_HEADER, Subtable,
|
||||
- Subtable->Length);
|
||||
+ SubtableLength);
|
||||
}
|
||||
}
|
||||
|
||||
Index: acpica-unix2-20220331/source/compiler/dttable2.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/compiler/dttable2.c
|
||||
+++ acpica-unix2-20220331/source/compiler/dttable2.c
|
||||
@@ -1267,6 +1267,8 @@ DtCompilePhat (
|
||||
ACPI_DMTABLE_INFO *Info;
|
||||
ACPI_PHAT_VERSION_DATA *VersionData;
|
||||
UINT32 RecordCount;
|
||||
+ UINT16 SubtableType;
|
||||
+ UINT16 Tmp16;
|
||||
|
||||
|
||||
/* The table consist of subtables */
|
||||
@@ -1284,8 +1286,9 @@ DtCompilePhat (
|
||||
DtPushSubtable (Subtable);
|
||||
|
||||
PhatHeader = ACPI_CAST_PTR (ACPI_PHAT_HEADER, Subtable->Buffer);
|
||||
+ SubtableType = AcpiUtReadUint16 (&PhatHeader->Type);
|
||||
|
||||
- switch (PhatHeader->Type)
|
||||
+ switch (SubtableType)
|
||||
{
|
||||
case ACPI_PHAT_TYPE_FW_VERSION_DATA:
|
||||
|
||||
@@ -1316,13 +1319,13 @@ DtCompilePhat (
|
||||
ParentTable = DtPeekSubtable ();
|
||||
DtInsertSubtable (ParentTable, Subtable);
|
||||
|
||||
- switch (PhatHeader->Type)
|
||||
+ switch (SubtableType)
|
||||
{
|
||||
case ACPI_PHAT_TYPE_FW_VERSION_DATA:
|
||||
|
||||
VersionData = ACPI_CAST_PTR (ACPI_PHAT_VERSION_DATA,
|
||||
(Subtable->Buffer - sizeof (ACPI_PHAT_HEADER)));
|
||||
- RecordCount = VersionData->ElementCount;
|
||||
+ RecordCount = AcpiUtReadUint32 (&VersionData->ElementCount);
|
||||
|
||||
while (RecordCount)
|
||||
{
|
||||
@@ -1373,6 +1376,9 @@ DtCompilePhat (
|
||||
DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, *PFieldList, "PHAT");
|
||||
return (AE_ERROR);
|
||||
}
|
||||
+
|
||||
+ Tmp16 = AcpiUtReadUint16 (&PhatHeader->Length);
|
||||
+ PhatHeader->Length = Tmp16;
|
||||
}
|
||||
|
||||
return (Status);
|
@ -1,51 +0,0 @@
|
||||
Signed-off-by: Dean Nelson <dnelson@redhat.com>
|
||||
Reviewed-by: Al Stone <ahs3@redhat.com>
|
||||
---
|
||||
source/common/dmtbdump2.c | 11 ++++++-----
|
||||
1 file changed, 6 insertions(+), 5 deletions(-)
|
||||
|
||||
Index: acpica-unix2-20220331/source/common/dmtbdump2.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/common/dmtbdump2.c
|
||||
+++ acpica-unix2-20220331/source/common/dmtbdump2.c
|
||||
@@ -2415,13 +2415,14 @@ AcpiDmDumpPrmt (
|
||||
ACPI_PRMT_MODULE_INFO *PrmtModuleInfo;
|
||||
ACPI_PRMT_HANDLER_INFO *PrmtHandlerInfo;
|
||||
ACPI_STATUS Status;
|
||||
+ UINT32 TableLength = AcpiUtReadUint32 (&Table->Length);
|
||||
UINT32 i, j;
|
||||
|
||||
|
||||
/* Main table header */
|
||||
|
||||
PrmtHeader = ACPI_ADD_PTR (ACPI_TABLE_PRMT_HEADER, Table, CurrentOffset);
|
||||
- Status = AcpiDmDumpTable (Table->Length, CurrentOffset, PrmtHeader,
|
||||
+ Status = AcpiDmDumpTable (TableLength, CurrentOffset, PrmtHeader,
|
||||
sizeof (ACPI_TABLE_PRMT_HEADER), AcpiDmTableInfoPrmtHdr);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
@@ -2433,20 +2434,20 @@ AcpiDmDumpPrmt (
|
||||
|
||||
/* PRM Module Information Structure array */
|
||||
|
||||
- for (i = 0; i < PrmtHeader->ModuleInfoCount; ++i)
|
||||
+ for (i = 0; i < AcpiUtReadUint32 (&PrmtHeader->ModuleInfoCount); ++i)
|
||||
{
|
||||
PrmtModuleInfo = ACPI_ADD_PTR (ACPI_PRMT_MODULE_INFO, Table, CurrentOffset);
|
||||
- Status = AcpiDmDumpTable (Table->Length, CurrentOffset, PrmtModuleInfo,
|
||||
+ Status = AcpiDmDumpTable (TableLength, CurrentOffset, PrmtModuleInfo,
|
||||
sizeof (ACPI_PRMT_MODULE_INFO), AcpiDmTableInfoPrmtModule);
|
||||
|
||||
CurrentOffset += sizeof (ACPI_PRMT_MODULE_INFO);
|
||||
|
||||
/* PRM handler information structure array */
|
||||
|
||||
- for (j = 0; j < PrmtModuleInfo->HandlerInfoCount; ++j)
|
||||
+ for (j = 0; j < AcpiUtReadUint16 (&PrmtModuleInfo->HandlerInfoCount); ++j)
|
||||
{
|
||||
PrmtHandlerInfo = ACPI_ADD_PTR (ACPI_PRMT_HANDLER_INFO, Table, CurrentOffset);
|
||||
- Status = AcpiDmDumpTable (Table->Length, CurrentOffset, PrmtHandlerInfo,
|
||||
+ Status = AcpiDmDumpTable (TableLength, CurrentOffset, PrmtHandlerInfo,
|
||||
sizeof (ACPI_PRMT_HANDLER_INFO), AcpiDmTableInfoPrmtHandler);
|
||||
|
||||
CurrentOffset += sizeof (ACPI_PRMT_HANDLER_INFO);
|
@ -1,35 +0,0 @@
|
||||
Signed-off-by: Dean Nelson <dnelson@redhat.com>
|
||||
Reviewed-by: Al Stone <ahs3@redhat.com>
|
||||
---
|
||||
source/common/dmtbdump2.c | 7 ++++---
|
||||
1 file changed, 4 insertions(+), 3 deletions(-)
|
||||
|
||||
Index: acpica-unix2-20220331/source/common/dmtbdump2.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/common/dmtbdump2.c
|
||||
+++ acpica-unix2-20220331/source/common/dmtbdump2.c
|
||||
@@ -2475,11 +2475,12 @@ AcpiDmDumpRgrt (
|
||||
ACPI_STATUS Status;
|
||||
ACPI_TABLE_RGRT *Subtable = ACPI_CAST_PTR (ACPI_TABLE_RGRT, Table);
|
||||
UINT32 Offset = sizeof (ACPI_TABLE_RGRT);
|
||||
+ UINT32 TableLength = AcpiUtReadUint32 (&Table->Length);
|
||||
|
||||
|
||||
/* Main table */
|
||||
|
||||
- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoRgrt);
|
||||
+ Status = AcpiDmDumpTable (TableLength, 0, Table, 0, AcpiDmTableInfoRgrt);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
@@ -2487,8 +2488,8 @@ AcpiDmDumpRgrt (
|
||||
|
||||
/* Dump the binary image as a subtable */
|
||||
|
||||
- Status = AcpiDmDumpTable (Table->Length, Offset, &Subtable->Image,
|
||||
- Table->Length - Offset, AcpiDmTableInfoRgrt0);
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset, &Subtable->Image,
|
||||
+ TableLength - Offset, AcpiDmTableInfoRgrt0);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
@ -1,42 +0,0 @@
|
||||
Signed-off-by: Dean Nelson <dnelson@redhat.com>
|
||||
Reviewed-by: Al Stone <ahs3@redhat.com>
|
||||
---
|
||||
source/common/dmtbdump3.c | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
Index: acpica-unix2-20220331/source/common/dmtbdump3.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/common/dmtbdump3.c
|
||||
+++ acpica-unix2-20220331/source/common/dmtbdump3.c
|
||||
@@ -344,14 +344,14 @@ AcpiDmDumpSvkl (
|
||||
ACPI_TABLE_HEADER *Table)
|
||||
{
|
||||
ACPI_STATUS Status;
|
||||
- UINT32 Length = Table->Length;
|
||||
+ UINT32 TableLength = AcpiUtReadUint32 (&Table->Length);
|
||||
UINT32 Offset = sizeof (ACPI_TABLE_SVKL);
|
||||
ACPI_SVKL_KEY *Subtable;
|
||||
|
||||
|
||||
/* Main table */
|
||||
|
||||
- Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoSvkl);
|
||||
+ Status = AcpiDmDumpTable (TableLength, 0, Table, 0, AcpiDmTableInfoSvkl);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
@@ -360,12 +360,12 @@ AcpiDmDumpSvkl (
|
||||
/* The rest of the table consists of subtables (single type) */
|
||||
|
||||
Subtable = ACPI_ADD_PTR (ACPI_SVKL_KEY, Table, Offset);
|
||||
- while (Offset < Table->Length)
|
||||
+ while (Offset < TableLength)
|
||||
{
|
||||
/* Dump the subtable */
|
||||
|
||||
AcpiOsPrintf ("\n");
|
||||
- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
|
||||
+ Status = AcpiDmDumpTable (TableLength, Offset, Subtable,
|
||||
sizeof (ACPI_SVKL_KEY), AcpiDmTableInfoSvkl0);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
@ -1,26 +0,0 @@
|
||||
Index: acpica-unix2-20220331/generate/unix/Makefile.config
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/generate/unix/Makefile.config
|
||||
+++ acpica-unix2-20220331/generate/unix/Makefile.config
|
||||
@@ -23,6 +23,9 @@
|
||||
# OPT_CFLAGS can be overridden on the make command line by
|
||||
# adding OPT_CFLAGS="..." to the invocation.
|
||||
#
|
||||
+# OPT_LDFLAGS can be overridden on the make command line by
|
||||
+# adding OPT_LDFLAGS="..." to the invocation.
|
||||
+#
|
||||
# Notes:
|
||||
# gcc should be version 4 or greater, otherwise some of the options
|
||||
# used will not be recognized.
|
||||
@@ -164,6 +167,11 @@ LDFLAGS +=-m32
|
||||
endif
|
||||
|
||||
#
|
||||
+# Common linker flags
|
||||
+#
|
||||
+OPT_LDFLAGS ?=
|
||||
+
|
||||
+#
|
||||
# Optionally disable optimizations. Optimization causes problems on
|
||||
# some compilers such as gcc 4.4
|
||||
#
|
@ -1,12 +1,12 @@
|
||||
Name: acpica-tools
|
||||
Version: 20220331
|
||||
Release: 10%{?dist}
|
||||
Version: 20240322
|
||||
Release: 1%{?dist}
|
||||
Summary: ACPICA tools for the development and debug of ACPI tables
|
||||
|
||||
License: GPLv2
|
||||
URL: https://www.acpica.org/
|
||||
|
||||
ExcludeArch: i686 armv7hl
|
||||
ExcludeArch: i686 armv7hl s390x
|
||||
|
||||
Source0: https://acpica.org/sites/acpica/files/acpica-unix2-%{version}.tar.gz
|
||||
Source1: https://acpica.org/sites/acpica/files/acpitests-unix-%{version}.tar.gz
|
||||
@ -25,75 +25,20 @@ Source14: converterSample.asl.result
|
||||
Source15: run-misc-tests.sh
|
||||
Source16: COPYING
|
||||
|
||||
# the big-endian patch set
|
||||
Patch0: 0001-Add-in-basic-infrastructure-for-big-endian-support.patch
|
||||
Patch1: 0002-Modify-utility-functions-to-be-endian-agnostic.patch
|
||||
Patch2: 0003-Always-display-table-header-content-in-human-readabl.patch
|
||||
Patch3: 0004-Re-enable-support-for-big-endian-machines.patch
|
||||
Patch4: 0005-Correct-an-endian-ness-problem-when-converting-ASL-t.patch
|
||||
Patch5: 0006-Use-more-reliable-ACPI_COPY_NAMSEG-in-GPE-name-check.patch
|
||||
Patch6: 0007-Handle-dumping-Unicode-properly-when-big-endian.patch
|
||||
Patch7: 0008-Support-MADT-aka-APIC-in-a-big-endian-world.patch
|
||||
Patch8: 0009-Support-ASF-tables-in-a-big-endian-world.patch
|
||||
Patch9: 0010-Support-CPEP-tables-in-a-big-endian-world.patch
|
||||
Patch10: 0011-Support-DBG2-table-in-a-big-endian-world.patch
|
||||
Patch11: 0012-Support-DMAR-in-a-big-endian-world.patch
|
||||
Patch12: 0013-Support-DRTM-in-a-big-endian-world.patch
|
||||
Patch13: 0014-Support-EINJ-in-a-big-endian-world.patch
|
||||
Patch14: 0015-Support-ERST-in-a-big-endian-world.patch
|
||||
Patch15: 0016-Support-FADT-aka-FACP-in-a-big-endian-world.patch
|
||||
Patch16: 0017-Support-most-FPDTs-in-a-big-endian-world.patch
|
||||
Patch17: 0018-Support-GTDT-in-a-big-endian-world.patch
|
||||
Patch18: 0019-Support-HEST-in-a-big-endian-world.patch
|
||||
Patch19: 0020-Support-RSDT-RSD-PTR-in-a-big-endian-world.patch
|
||||
Patch20: 0021-Support-XSDT-in-a-big-endian-world.patch
|
||||
Patch21: 0022-Support-SRAT-in-a-big-endian-world.patch
|
||||
Patch22: 0023-Support-SLIT-in-a-big-endian-world.patch
|
||||
Patch23: 0024-Support-MSCT-in-a-big-endian-world.patch
|
||||
Patch24: 0025-Support-MPST-in-a-big-endian-world.patch
|
||||
Patch25: 0026-Support-NFIT-in-a-big-endian-world.patch
|
||||
Patch26: 0027-Support-SDEV-in-a-big-endian-world.patch
|
||||
Patch27: 0028-Support-HMAT-in-a-big-endian-world.patch
|
||||
Patch28: 0029-Support-PDTT-in-a-big-endian-world.patch
|
||||
Patch29: 0030-Support-PPTT-in-a-big-endian-world.patch
|
||||
Patch30: 0031-Support-PCCT-in-a-big-endian-world.patch
|
||||
Patch31: 0032-Support-WDAT-in-a-big-endian-world.patch
|
||||
Patch32: 0033-Support-TCPA-in-a-big-endian-world.patch
|
||||
Patch33: 0034-Support-STAO-in-a-big-endian-world.patch
|
||||
Patch34: 0035-Support-SLIC-and-MSDM-in-a-big-endian-world.patch
|
||||
Patch35: 0036-Support-MCFG-in-a-big-endian-world.patch
|
||||
Patch36: 0037-Support-LPIT-in-a-big-endian-world.patch
|
||||
Patch37: 0038-Support-PMTT-in-a-big-endian-world.patch
|
||||
Patch38: 0039-Support-TPM2-in-a-big-endian-world.patch
|
||||
Patch39: 0040-Support-S3PT-in-a-big-endian-world.patch
|
||||
Patch40: 0041-Support-IORT-in-a-big-endian-world.patch
|
||||
Patch41: 0042-Support-IVRS-in-a-big-endian-world.patch
|
||||
Patch42: 0043-Support-DSDT-SSDT-in-a-big-endian-world.patch
|
||||
Patch43: 0045-CSRT-fixed-use-of-optional-ResourceInfo.patch
|
||||
Patch44: 0046-Support-PHAT-in-a-big-endian-world.patch
|
||||
Patch45: 0047-Support-PRMT-in-a-big-endian-world.patch
|
||||
Patch46: 0048-Support-RGRT-in-a-big-endian-world.patch
|
||||
Patch47: 0049-Support-SVKL-in-a-big-endian-world.patch
|
||||
|
||||
# other miscellaneous patches
|
||||
Patch100: unaligned.patch
|
||||
Patch101: OPT_LDFLAGS.patch
|
||||
Patch102: int-format.patch
|
||||
Patch103: f23-harden.patch
|
||||
Patch104: template.patch
|
||||
Patch105: arm7hl.patch
|
||||
Patch106: simple-64bit.patch
|
||||
Patch107: mips-be-fix.patch
|
||||
Patch108: cve-2017-13693.patch
|
||||
Patch109: cve-2017-13694.patch
|
||||
Patch110: cve-2017-13695.patch
|
||||
Patch111: str-trunc-warn.patch
|
||||
Patch112: ptr-cast.patch
|
||||
Patch113: armv7-str-fixes.patch
|
||||
Patch114: dbtest.patch
|
||||
Patch115: ull-32bit.patch
|
||||
Patch116: dangling-ptr.patch
|
||||
Patch117: uuid-len.patch
|
||||
Patch00: unaligned.patch
|
||||
Patch01: template.patch
|
||||
Patch02: cve-2017-13693.patch
|
||||
Patch03: cve-2017-13694.patch
|
||||
Patch04: cve-2017-13695.patch
|
||||
Patch05: str-trunc-warn.patch
|
||||
Patch06: dbtest.patch
|
||||
Patch07: dangling-ptr.patch
|
||||
Patch08: uuid-len.patch
|
||||
Patch09: fix-version.patch
|
||||
Patch10: 0001-Correct-DBG2-dump-of-OemData.patch
|
||||
Patch11: 0002-Correct-dumping-of-SLIC-tables.patch
|
||||
Patch12: 0003-PHAT-FW-health-table-can-be-zero-length.patch
|
||||
|
||||
BuildRequires: make
|
||||
BuildRequires: bison patchutils flex gcc
|
||||
@ -203,7 +148,7 @@ OPT_LDFLAGS="%{__global_ldflags}"
|
||||
export OPT_CFLAGS
|
||||
export OPT_LDFLAGS
|
||||
|
||||
make
|
||||
%{make_build}
|
||||
|
||||
|
||||
%install
|
||||
@ -259,6 +204,24 @@ fi
|
||||
|
||||
|
||||
%changelog
|
||||
* Wed Nov 6 2024 Al Stone <ahs3@fedoraproject.org> - 20240322-1
|
||||
- Update source tree to 20240322 version from upstream. NB: this update
|
||||
is done in conjunction with removing s390x support due to the large
|
||||
number of patches that are now rendered obsolete. Closes BZ#2138250.
|
||||
- Note, too, that the upstream version of the tarball is missing two
|
||||
commits and has the wrong name; discussed this with upstream and
|
||||
included a patch with the two commits to correct this, and renamed
|
||||
the tarballs to try to maintain consistency. So, upstream is actually
|
||||
named version 20240321, but it should be 20240322 according to their
|
||||
own git tree (see tag G20240322 on github).
|
||||
- Removed executable bit from all the upstream source files
|
||||
- Remove big-endian support, aka s390x. Closes BZ#2298855.
|
||||
- Remove several 32-bit only patches that are also obsolete since they
|
||||
are for unsupported architectures (thanks to pbonzini and PR#5).
|
||||
- Remove PIE patches since that is currently the default (again, thanks
|
||||
to pbonzini and PR#5)
|
||||
- Resolves: RHEL-66144
|
||||
|
||||
* Tue Oct 29 2024 Troy Dawson <tdawson@redhat.com> - 20220331-10
|
||||
- Bump release for October 2024 mass rebuild:
|
||||
Resolves: RHEL-64018
|
||||
|
21
arm7hl.patch
21
arm7hl.patch
@ -1,21 +0,0 @@
|
||||
Index: acpica-unix2-20220331/source/include/acmacros.h
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/include/acmacros.h
|
||||
+++ acpica-unix2-20220331/source/include/acmacros.h
|
||||
@@ -108,6 +108,8 @@
|
||||
|
||||
/* 16-bit source, 16/32/64 destination */
|
||||
|
||||
+#define ACPI_MOVE_16_TO_8(d, s) {(( UINT8 *)(void *)(d))[0] = ((UINT8 *)(void *)(s))[0];}
|
||||
+
|
||||
#define ACPI_MOVE_16_TO_16(d, s) {(( UINT8 *)(void *)(d))[0] = ((UINT8 *)(void *)(s))[0];\
|
||||
(( UINT8 *)(void *)(d))[1] = ((UINT8 *)(void *)(s))[1];}
|
||||
|
||||
@@ -127,6 +129,7 @@
|
||||
|
||||
/* 64-bit source, 16/32/64 destination */
|
||||
|
||||
+#define ACPI_MOVE_64_TO_8(d, s) ACPI_MOVE_16_TO_8(d, s) /* Truncate to 8 */
|
||||
#define ACPI_MOVE_64_TO_16(d, s) ACPI_MOVE_16_TO_16(d, s) /* Truncate to 16 */
|
||||
#define ACPI_MOVE_64_TO_32(d, s) ACPI_MOVE_32_TO_32(d, s) /* Truncate to 32 */
|
||||
#define ACPI_MOVE_64_TO_64(d, s) {(( UINT8 *)(void *)(d))[0] = ((UINT8 *)(void *)(s))[0];\
|
@ -1,13 +0,0 @@
|
||||
Index: acpica-unix2-20220331/source/include/actypes.h
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/include/actypes.h
|
||||
+++ acpica-unix2-20220331/source/include/actypes.h
|
||||
@@ -564,7 +564,7 @@ typedef UINT64
|
||||
#define ACPI_COPY_NAMESEG(dest,src) (*ACPI_CAST_PTR (UINT32, (dest)) = *ACPI_CAST_PTR (UINT32, (src)))
|
||||
#else
|
||||
#define ACPI_COMPARE_NAMESEG(a,b) (!strncmp (ACPI_CAST_PTR (char, (a)), ACPI_CAST_PTR (char, (b)), ACPI_NAMESEG_SIZE))
|
||||
-#define ACPI_COPY_NAMESEG(dest,src) (strncpy (ACPI_CAST_PTR (char, (dest)), ACPI_CAST_PTR (char, (src)), ACPI_NAMESEG_SIZE))
|
||||
+#define ACPI_COPY_NAMESEG(dest,src) (memcpy (ACPI_CAST_PTR (char, (dest)), ACPI_CAST_PTR (char, (src)), ACPI_NAMESEG_SIZE))
|
||||
#endif
|
||||
|
||||
/* Support for the special RSDP signature (8 characters) */
|
@ -1,3 +1,12 @@
|
||||
badcode.asl 37: Name (PATH, Buffer() {"\_SB_.PCI2._CRS"})
|
||||
Warning 3046 - ^ Invalid or unknown escape sequence
|
||||
|
||||
badcode.asl 41: Name (ESC1, "abcdefg\x00hijklmn")
|
||||
Warning 3055 - ^ Invalid Hex/Octal Escape - Non-ASCII or NULL
|
||||
|
||||
badcode.asl 268: QWordSpace (0xB0, ResourceConsumer, PosDecode, MinFixed, MaxFixed, 0xA5,
|
||||
Error 6139 - Constant out of range ^ (0xB0, allowable: 0xC0-0xFF)
|
||||
|
||||
badcode.asl 25: Mutex (MTX1, 32)
|
||||
Error 6125 - ^ SyncLevel must be in the range 0-15
|
||||
|
||||
@ -256,11 +265,11 @@ Warning 3144 - ^ Method Local is set but never used
|
||||
|
||||
Intel ACPI Component Architecture
|
||||
ASL+ Optimizing Compiler/Disassembler version VVVVVVVV
|
||||
Copyright (c) 2000 - 2022 Intel Corporation
|
||||
Copyright (c) 2000 - 2023 Intel Corporation
|
||||
|
||||
Ignoring all errors, forcing AML file generation
|
||||
|
||||
ASL Input: badcode.asl - 11588 bytes 81 keywords 408 source lines
|
||||
ASL Input: badcode.asl - 11588 bytes 81 keywords 0 source lines
|
||||
AML Output: badcode.aml - 1195 bytes 20 opcodes 61 named objects
|
||||
|
||||
Compilation successful. 0 Errors, 28 Warnings, 11 Remarks, 16 Optimizations, 1 Constants Folded
|
||||
Compilation successful. 46 Errors, 28 Warnings, 11 Remarks, 16 Optimizations, 1 Constants Folded
|
||||
|
@ -4,6 +4,21 @@ Remark 2182 - ^ At least one lower case letter found in N
|
||||
converterSample.asl 16: Name(p008, Package()
|
||||
Remark 2182 - ^ At least one lower case letter found in NameSeg, ASL is case insensitive - converting to upper case (P008)
|
||||
|
||||
converterSample.asl 48: Name(b,0);
|
||||
Remark 2182 - ^ At least one lower case letter found in NameSeg, ASL is case insensitive - converting to upper case (B___)
|
||||
|
||||
converterSample.asl 53: Name (a,
|
||||
Remark 2182 - ^ At least one lower case letter found in NameSeg, ASL is case insensitive - converting to upper case (A___)
|
||||
|
||||
converterSample.asl 68: Name (a1, 0x04)
|
||||
Remark 2182 - ^ At least one lower case letter found in NameSeg, ASL is case insensitive - converting to upper case (A1__)
|
||||
|
||||
converterSample.asl 15: Name (b, 5)
|
||||
Remark 2182 - ^ At least one lower case letter found in NameSeg, ASL is case insensitive - converting to upper case (B___)
|
||||
|
||||
converterSample.asl 16: Name(p008, Package()
|
||||
Remark 2182 - ^ At least one lower case letter found in NameSeg, ASL is case insensitive - converting to upper case (P008)
|
||||
|
||||
converterSample.asl 37: Method(MAIN) {
|
||||
Remark 2120 - ^ Control Method should be made Serialized due to creation of named objects within (\MAIN)
|
||||
|
||||
@ -28,11 +43,11 @@ Remark 2089 - Object is not referenced ^ (Name [A1__] is within a method [SC
|
||||
|
||||
Intel ACPI Component Architecture
|
||||
ASL+ Optimizing Compiler/Disassembler version VVVVVVVV
|
||||
Copyright (c) 2000 - 2022 Intel Corporation
|
||||
Copyright (c) 2000 - 2023 Intel Corporation
|
||||
|
||||
Ignoring all errors, forcing AML file generation
|
||||
|
||||
ASL Input: converterSample.asl - 1968 bytes 11 keywords 85 source lines
|
||||
ASL Input: converterSample.asl - 1968 bytes 11 keywords 0 source lines
|
||||
AML Output: converterSample.aml - 184 bytes 2 opcodes 9 named objects
|
||||
|
||||
Compilation successful. 0 Errors, 0 Warnings, 9 Remarks, 9 Optimizations
|
||||
|
@ -63,10 +63,10 @@ Github-Location: https://github.com/acpica/acpica/pull/295/commits/987a3b5cf7175
|
||||
source/components/dispatcher/dsutils.c | 9 ++++++++-
|
||||
1 file changed, 8 insertions(+), 1 deletion(-)
|
||||
|
||||
Index: acpica-unix2-20220331/source/components/dispatcher/dsutils.c
|
||||
Index: acpica-unix2-20240321/source/components/dispatcher/dsutils.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/components/dispatcher/dsutils.c
|
||||
+++ acpica-unix2-20220331/source/components/dispatcher/dsutils.c
|
||||
--- acpica-unix2-20240321.orig/source/components/dispatcher/dsutils.c
|
||||
+++ acpica-unix2-20240321/source/components/dispatcher/dsutils.c
|
||||
@@ -759,6 +759,8 @@ AcpiDsCreateOperands (
|
||||
ACPI_PARSE_OBJECT *Arguments[ACPI_OBJ_NUM_OPERANDS];
|
||||
UINT32 ArgCount = 0;
|
||||
|
@ -130,10 +130,10 @@ Github-Location: https://github.com/acpica/acpica/pull/278/commits/4a0243ecb4c94
|
||||
source/components/parser/psobject.c | 44 ++++++++++++++-----------------------
|
||||
1 file changed, 16 insertions(+), 28 deletions(-)
|
||||
|
||||
Index: acpica-unix2-20220331/source/components/parser/psobject.c
|
||||
Index: acpica-unix2-20240321/source/components/parser/psobject.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/components/parser/psobject.c
|
||||
+++ acpica-unix2-20220331/source/components/parser/psobject.c
|
||||
--- acpica-unix2-20240321.orig/source/components/parser/psobject.c
|
||||
+++ acpica-unix2-20240321/source/components/parser/psobject.c
|
||||
@@ -707,7 +707,8 @@ AcpiPsCompleteFinalOp (
|
||||
ACPI_PARSE_OBJECT *Op,
|
||||
ACPI_STATUS Status)
|
||||
|
@ -67,10 +67,10 @@ Github-Location: https://github.com/acpica/acpica/pull/296/commits/37f2c716f2c6a
|
||||
source/components/namespace/nseval.c | 10 ++++++++++
|
||||
1 file changed, 10 insertions(+)
|
||||
|
||||
Index: acpica-unix2-20220331/source/components/namespace/nseval.c
|
||||
Index: acpica-unix2-20240321/source/components/namespace/nseval.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/components/namespace/nseval.c
|
||||
+++ acpica-unix2-20220331/source/components/namespace/nseval.c
|
||||
--- acpica-unix2-20240321.orig/source/components/namespace/nseval.c
|
||||
+++ acpica-unix2-20240321/source/components/namespace/nseval.c
|
||||
@@ -329,6 +329,16 @@ AcpiNsEvaluate (
|
||||
Info->ReturnObject = NULL;
|
||||
}
|
||||
|
@ -1,7 +1,8 @@
|
||||
diff -Naur acpica-unix2-20211217/source/components/utilities/utdebug.c acpica-unix2-20211217.orig/source/components/utilities/utdebug.c
|
||||
--- acpica-unix2-20211217/source/components/utilities/utdebug.c 2022-03-15 17:05:07.992387565 -0600
|
||||
+++ acpica-unix2-20211217.orig/source/components/utilities/utdebug.c 2021-12-17 10:48:16.000000000 -0700
|
||||
@@ -58,6 +58,10 @@
|
||||
Index: acpica-unix2-20240321/source/components/utilities/utdebug.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20240321.orig/source/components/utilities/utdebug.c
|
||||
+++ acpica-unix2-20240321/source/components/utilities/utdebug.c
|
||||
@@ -58,6 +58,10 @@ static const char *AcpiGbl_Fun
|
||||
static const char *AcpiGbl_FunctionExitPrefix = "----Exit-";
|
||||
|
||||
|
||||
@ -12,7 +13,7 @@ diff -Naur acpica-unix2-20211217/source/components/utilities/utdebug.c acpica-un
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiUtInitStackPtrTrace
|
||||
@@ -114,6 +110,9 @@
|
||||
@@ -120,6 +124,9 @@ AcpiUtTrackStackPtr (
|
||||
AcpiGbl_DeepestNesting = AcpiGbl_NestingLevel;
|
||||
}
|
||||
}
|
||||
|
@ -4,10 +4,10 @@ into an ACPI_OBJECT instead of just the pointer (see the use in the call
|
||||
to memcpy()). So, move the init so GCC recognizes that ValueToWrite is
|
||||
only a pointer, and not a whole string that needs to be moved.
|
||||
|
||||
Index: acpica-unix2-20220331/source/components/debugger/dbtest.c
|
||||
Index: acpica-unix2-20240321/source/components/debugger/dbtest.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/components/debugger/dbtest.c
|
||||
+++ acpica-unix2-20220331/source/components/debugger/dbtest.c
|
||||
--- acpica-unix2-20240321.orig/source/components/debugger/dbtest.c
|
||||
+++ acpica-unix2-20240321/source/components/debugger/dbtest.c
|
||||
@@ -719,9 +719,10 @@ AcpiDbTestStringType (
|
||||
ACPI_OBJECT *Temp1 = NULL;
|
||||
ACPI_OBJECT *Temp2 = NULL;
|
||||
|
@ -1,71 +0,0 @@
|
||||
Introduce build hardening flags for f23
|
||||
|
||||
From: Al Stone <ahs3@redhat.com>
|
||||
|
||||
|
||||
---
|
||||
generate/unix/Makefile.config | 2 ++
|
||||
generate/unix/iasl/Makefile | 13 +++++++------
|
||||
2 files changed, 9 insertions(+), 6 deletions(-)
|
||||
|
||||
Index: acpica-unix2-20220331/generate/unix/Makefile.config
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/generate/unix/Makefile.config
|
||||
+++ acpica-unix2-20220331/generate/unix/Makefile.config
|
||||
@@ -189,6 +189,8 @@ ifneq ($(NOFORTIFY),TRUE)
|
||||
OPT_CFLAGS += -D_FORTIFY_SOURCE=2
|
||||
endif
|
||||
|
||||
+OPT_CFLAGS += -fPIC -pie
|
||||
+
|
||||
CFLAGS += \
|
||||
-D$(ACPI_HOST)\
|
||||
-D_GNU_SOURCE\
|
||||
Index: acpica-unix2-20220331/generate/unix/iasl/Makefile
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/generate/unix/iasl/Makefile
|
||||
+++ acpica-unix2-20220331/generate/unix/iasl/Makefile
|
||||
@@ -359,34 +359,35 @@ $(OBJDIR)/prparserparse.c $(OBJDIR)/prpa
|
||||
# Cannot use the common compile warning flags since the C files are created
|
||||
# by the utilities above and they are not necessarily ANSI C, etc.
|
||||
#
|
||||
+HARDENING_FLAGS = -fPIC -pie
|
||||
$(OBJDIR)/aslcompilerlex.o : $(OBJDIR)/aslcompilerlex.c
|
||||
@echo "- " "Intermediate" $<
|
||||
- @$(CC) -c $(CFLAGS) -Wall -Werror -o$@ $<
|
||||
+ @$(CC) -c $(CFLAGS) $(HARDENING_FLAGS) -Wall -Werror -o$@ $<
|
||||
|
||||
$(OBJDIR)/aslcompilerparse.o : $(OBJDIR)/aslcompilerparse.c
|
||||
@echo "- " "Intermediate" $<
|
||||
- @$(CC) -c $(CFLAGS) -Wall -Werror -o$@ $<
|
||||
+ @$(CC) -c $(CFLAGS) $(HARDENING_FLAGS) -Wall -Werror -o$@ $<
|
||||
|
||||
$(OBJDIR)/dtcompilerparserlex.o : $(OBJDIR)/dtcompilerparserlex.c
|
||||
@echo "- " "Intermediate" $<
|
||||
- @$(CC) -c $(CFLAGS) -Wall -Werror -o$@ $<
|
||||
+ @$(CC) -c $(CFLAGS) $(HARDENING_FLAGS) -Wall -Werror -o$@ $<
|
||||
|
||||
$(OBJDIR)/dtcompilerparserparse.o : $(OBJDIR)/dtcompilerparserparse.c
|
||||
@echo "- " "Intermediate" $<
|
||||
- @$(CC) -c $(CFLAGS) -Wall -Werror -o$@ $<
|
||||
+ @$(CC) -c $(CFLAGS) $(HARDENING_FLAGS) -Wall -Werror -o$@ $<
|
||||
|
||||
$(OBJDIR)/dtparserlex.o : $(OBJDIR)/dtparserlex.c
|
||||
@echo "- " "Intermediate" $<
|
||||
- @$(CC) -c $(CFLAGS) -Wall -Werror -o$@ $<
|
||||
+ @$(CC) -c $(CFLAGS) $(HARDENING_FLAGS) -Wall -Werror -o$@ $<
|
||||
|
||||
$(OBJDIR)/dtparserparse.o : $(OBJDIR)/dtparserparse.c
|
||||
@echo "- " "Intermediate" $<
|
||||
- @$(CC) -c $(CFLAGS) -Wall -Werror -o$@ $<
|
||||
+ @$(CC) -c $(CFLAGS) $(HARDENING_FLAGS) -Wall -Werror -o$@ $<
|
||||
|
||||
$(OBJDIR)/prparserlex.o : $(OBJDIR)/prparserlex.c
|
||||
@echo "- " "Intermediate" $<
|
||||
- @$(CC) -c $(CFLAGS) -Wall -Werror -o$@ $<
|
||||
+ @$(CC) -c $(CFLAGS) $(HARDENING_FLAGS) -Wall -Werror -o$@ $<
|
||||
|
||||
$(OBJDIR)/prparserparse.o : $(OBJDIR)/prparserparse.c
|
||||
@echo "- " "Intermediate" $<
|
||||
- @$(CC) -c $(CFLAGS) -Wall -Werror -o$@ $<
|
||||
+ @$(CC) -c $(CFLAGS) $(HARDENING_FLAGS) -Wall -Werror -o$@ $<
|
50
fix-version.patch
Normal file
50
fix-version.patch
Normal file
@ -0,0 +1,50 @@
|
||||
The two changes that follow were inadvertently dropped by upstream
|
||||
when creating the source tarball; the G20240322 tag in github contains
|
||||
them.
|
||||
|
||||
Signed-off-by: Al Stone <ahs3@fedoraproject.org>
|
||||
|
||||
diff -Naur acpica-unix-20240321/changes.txt acpica-unix-20240808/changes.txt
|
||||
--- acpica-unix-20240321/changes.txt 2024-03-22 00:16:29.000000000 -0600
|
||||
+++ acpica-unix-20240808/changes.txt 2024-08-08 10:54:25.000000000 -0600
|
||||
@@ -1,4 +1,28 @@
|
||||
----------------------------------------
|
||||
+22 March 2024. Summary of changes for version 20240322:
|
||||
+
|
||||
+Major changes:
|
||||
+
|
||||
+Update all the license header year from 2023 to 2024.
|
||||
+
|
||||
+Fix table argument ordering to work properly with iasl.
|
||||
+
|
||||
+Get rid of the annoying repeated warning types in MSVC and Windows.
|
||||
+
|
||||
+Fix a test in ASLTS with edge case failure.
|
||||
+
|
||||
+Fix a couple of issues with how GPEs are counted and enabled.
|
||||
+
|
||||
+Add new tables for various architectures/OS, mainly RISC-V and also update many more.
|
||||
+
|
||||
+Add an option to either make the output deterministic or non-deterministic.
|
||||
+
|
||||
+Remove redundant checks, duplicated code and fix spellings in various files.
|
||||
+
|
||||
+Fix flex arrays for C++ compilers and also make ACPICA overall more compatible with different compilers which throw warnings related to memory sanitization etc.
|
||||
+
|
||||
+
|
||||
+----------------------------------------
|
||||
28 June 2023. Summary of changes for version 20230628:
|
||||
|
||||
0) Global changes:
|
||||
diff -Naur acpica-unix-20240321/source/include/acpixf.h acpica-unix-20240808/source/include/acpixf.h
|
||||
--- acpica-unix-20240321/source/include/acpixf.h 2024-03-22 00:16:32.000000000 -0600
|
||||
+++ acpica-unix-20240808/source/include/acpixf.h 2024-08-08 10:54:25.000000000 -0600
|
||||
@@ -154,7 +154,7 @@
|
||||
|
||||
/* Current ACPICA subsystem version in YYYYMMDD format */
|
||||
|
||||
-#define ACPI_CA_VERSION 0x20230628
|
||||
+#define ACPI_CA_VERSION 0x20240322
|
||||
|
||||
#include "acconfig.h"
|
||||
#include "actypes.h"
|
@ -1,3 +1,18 @@
|
||||
grammar.asl 522: NAME (ESC1, "abcdefg\x00hijklmn")
|
||||
Warning 3055 - ^ Invalid Hex/Octal Escape - Non-ASCII or NULL
|
||||
|
||||
grammar.asl 523: NAME (ESC2, "abcdefg\000hijklmn")
|
||||
Warning 3055 - ^ Invalid Hex/Octal Escape - Non-ASCII or NULL
|
||||
|
||||
grammar.asl 552: IRQNoFlags(xxxt){3,4,10,11}
|
||||
Remark 2182 - ^ At least one lower case letter found in NameSeg, ASL is case insensitive - converting to upper case (XXXT)
|
||||
|
||||
grammar.asl 566: Name(Bxxx,0xFFFFFFFF)
|
||||
Remark 2182 - ^ At least one lower case letter found in NameSeg, ASL is case insensitive - converting to upper case (BXXX)
|
||||
|
||||
grammar.asl 6478: Name (_CRS, Buffer(26) {"\_SB_.PCI2._CRS..........."})
|
||||
Warning 3046 - Invalid or unknown escape sequence ^
|
||||
|
||||
grammar.asl 120: Device (A1)
|
||||
Error 6141 - ^ Missing dependency (Device object requires a _HID or _ADR)
|
||||
|
||||
@ -595,11 +610,11 @@ Error 6141 - Missing dependency ^ (Device object requires a _HID or _ADR)
|
||||
|
||||
Intel ACPI Component Architecture
|
||||
ASL+ Optimizing Compiler/Disassembler version VVVVVVVV
|
||||
Copyright (c) 2000 - 2022 Intel Corporation
|
||||
Copyright (c) 2000 - 2023 Intel Corporation
|
||||
|
||||
Ignoring all errors, forcing AML file generation
|
||||
|
||||
ASL Input: grammar.asl - 323653 bytes 4818 keywords 10284 source lines
|
||||
ASL Input: grammar.asl - 323653 bytes 4818 keywords 0 source lines
|
||||
AML Output: grammar.aml - 43758 bytes 4148 opcodes 670 named objects
|
||||
|
||||
Compilation successful. 0 Errors, 41 Warnings, 97 Remarks, 1106 Optimizations
|
||||
Compilation successful. 60 Errors, 41 Warnings, 97 Remarks, 1106 Optimizations
|
||||
|
283
int-format.patch
283
int-format.patch
@ -1,283 +0,0 @@
|
||||
Use proper integer formatting
|
||||
|
||||
From: Al Stone <ahs3@redhat.com>
|
||||
|
||||
|
||||
---
|
||||
source/compiler/aslerror.c | 4 ++--
|
||||
source/compiler/aslopt.c | 2 +-
|
||||
source/compiler/aslprepkg.c | 2 +-
|
||||
source/components/debugger/dbexec.c | 2 +-
|
||||
source/components/dispatcher/dsmthdat.c | 4 ++--
|
||||
source/components/dispatcher/dsutils.c | 2 +-
|
||||
source/components/dispatcher/dswscope.c | 4 ++--
|
||||
source/components/events/evgpe.c | 4 ++--
|
||||
source/components/executer/exdump.c | 2 +-
|
||||
source/components/executer/exfldio.c | 4 ++--
|
||||
source/components/executer/exnames.c | 4 ++--
|
||||
source/components/hardware/hwregs.c | 2 +-
|
||||
source/components/tables/tbfadt.c | 6 +++---
|
||||
source/components/tables/tbxfroot.c | 6 +++---
|
||||
source/components/utilities/utownerid.c | 2 +-
|
||||
18 files changed, 28 insertions(+), 28 deletions(-)
|
||||
|
||||
Index: acpica-unix2-20220331/source/compiler/aslerror.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/compiler/aslerror.c
|
||||
+++ acpica-unix2-20220331/source/compiler/aslerror.c
|
||||
@@ -917,7 +917,7 @@ AslLogNewError (
|
||||
AslGbl_ExceptionCount[ModifiedLevel]++;
|
||||
if (!AslGbl_IgnoreErrors && AslGbl_ExceptionCount[ASL_ERROR] > ASL_MAX_ERROR_COUNT)
|
||||
{
|
||||
- printf ("\nMaximum error count (%u) exceeded (aslerror.c)\n", ASL_MAX_ERROR_COUNT);
|
||||
+ printf ("\nMaximum error count (%d) exceeded (aslerror.c)\n", ASL_MAX_ERROR_COUNT);
|
||||
|
||||
AslGbl_SourceLine = 0;
|
||||
AslGbl_NextError = AslGbl_ErrorLog;
|
||||
Index: acpica-unix2-20220331/source/compiler/aslopt.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/compiler/aslopt.c
|
||||
+++ acpica-unix2-20220331/source/compiler/aslopt.c
|
||||
@@ -583,7 +583,7 @@ OptOptimizeNamePath (
|
||||
}
|
||||
|
||||
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS,
|
||||
- "PATH OPTIMIZE: Line %5d ParentOp [%12.12s] ThisOp [%12.12s] ",
|
||||
+ "PATH OPTIMIZE: Line %5u ParentOp [%12.12s] ThisOp [%12.12s] ",
|
||||
Op->Asl.LogicalLineNumber,
|
||||
AcpiPsGetOpcodeName (Op->Common.Parent->Common.AmlOpcode),
|
||||
AcpiPsGetOpcodeName (Op->Common.AmlOpcode)));
|
||||
Index: acpica-unix2-20220331/source/compiler/aslprepkg.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/compiler/aslprepkg.c
|
||||
+++ acpica-unix2-20220331/source/compiler/aslprepkg.c
|
||||
@@ -320,7 +320,7 @@ ApCheckPackage (
|
||||
|
||||
if (Count & 1)
|
||||
{
|
||||
- sprintf (AslGbl_MsgBuffer, "%4.4s: Package length, %d, must be even.",
|
||||
+ sprintf (AslGbl_MsgBuffer, "%4.4s: Package length, %u, must be even.",
|
||||
Predefined->Info.Name, Count);
|
||||
|
||||
AslError (ASL_ERROR, ASL_MSG_RESERVED_PACKAGE_LENGTH,
|
||||
Index: acpica-unix2-20220331/source/components/debugger/dbexec.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/components/debugger/dbexec.c
|
||||
+++ acpica-unix2-20220331/source/components/debugger/dbexec.c
|
||||
@@ -231,7 +231,7 @@ AcpiDbExecuteMethod (
|
||||
ACPI_ERROR ((AE_INFO,
|
||||
"Possible buffer overflow within AML Debugger "
|
||||
"buffer (size 0x%X needed 0x%X)",
|
||||
- ACPI_DEBUG_BUFFER_SIZE, (UINT32) ReturnObj->Length));
|
||||
+ (UINT32) ACPI_DEBUG_BUFFER_SIZE, (UINT32) ReturnObj->Length));
|
||||
}
|
||||
}
|
||||
|
||||
Index: acpica-unix2-20220331/source/components/dispatcher/dsmthdat.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/components/dispatcher/dsmthdat.c
|
||||
+++ acpica-unix2-20220331/source/components/dispatcher/dsmthdat.c
|
||||
@@ -291,7 +291,7 @@ AcpiDsMethodDataGetNode (
|
||||
if (Index > ACPI_METHOD_MAX_LOCAL)
|
||||
{
|
||||
ACPI_ERROR ((AE_INFO,
|
||||
- "Local index %u is invalid (max %u)",
|
||||
+ "Local index %u is invalid (max %d)",
|
||||
Index, ACPI_METHOD_MAX_LOCAL));
|
||||
return_ACPI_STATUS (AE_AML_INVALID_INDEX);
|
||||
}
|
||||
@@ -306,7 +306,7 @@ AcpiDsMethodDataGetNode (
|
||||
if (Index > ACPI_METHOD_MAX_ARG)
|
||||
{
|
||||
ACPI_ERROR ((AE_INFO,
|
||||
- "Arg index %u is invalid (max %u)",
|
||||
+ "Arg index %u is invalid (max %d)",
|
||||
Index, ACPI_METHOD_MAX_ARG));
|
||||
return_ACPI_STATUS (AE_AML_INVALID_INDEX);
|
||||
}
|
||||
Index: acpica-unix2-20220331/source/components/dispatcher/dsutils.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/components/dispatcher/dsutils.c
|
||||
+++ acpica-unix2-20220331/source/components/dispatcher/dsutils.c
|
||||
@@ -786,7 +786,7 @@ AcpiDsCreateOperands (
|
||||
}
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
|
||||
- "NumOperands %d, ArgCount %d, Index %d\n",
|
||||
+ "NumOperands %d, ArgCount %u, Index %u\n",
|
||||
WalkState->NumOperands, ArgCount, Index));
|
||||
|
||||
/* Create the interpreter arguments, in reverse order */
|
||||
Index: acpica-unix2-20220331/source/components/dispatcher/dswscope.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/components/dispatcher/dswscope.c
|
||||
+++ acpica-unix2-20220331/source/components/dispatcher/dswscope.c
|
||||
@@ -149,7 +149,7 @@ AcpiDsScopeStackPush (
|
||||
WalkState->ScopeDepth++;
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
|
||||
- "[%.2d] Pushed scope ", (UINT32) WalkState->ScopeDepth));
|
||||
+ "[%.2d] Pushed scope ", WalkState->ScopeDepth));
|
||||
|
||||
OldScopeInfo = WalkState->ScopeInfo;
|
||||
if (OldScopeInfo)
|
||||
@@ -211,7 +211,7 @@ AcpiDsScopeStackPop (
|
||||
WalkState->ScopeDepth--;
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
|
||||
- "[%.2d] Popped scope [%4.4s] (%s), New scope -> ",
|
||||
+ "[%.2u] Popped scope [%4.4s] (%s), New scope -> ",
|
||||
(UINT32) WalkState->ScopeDepth,
|
||||
AcpiUtGetNodeName (ScopeInfo->Scope.Node),
|
||||
AcpiUtGetTypeName (ScopeInfo->Common.Value)));
|
||||
Index: acpica-unix2-20220331/source/components/events/evgpe.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/components/events/evgpe.c
|
||||
+++ acpica-unix2-20220331/source/components/events/evgpe.c
|
||||
@@ -488,7 +488,7 @@ AcpiEvGpeDetect (
|
||||
"Ignore disabled registers for GPE %02X-%02X: "
|
||||
"RunEnable=%02X, WakeEnable=%02X\n",
|
||||
GpeRegisterInfo->BaseGpeNumber,
|
||||
- GpeRegisterInfo->BaseGpeNumber + (ACPI_GPE_REGISTER_WIDTH - 1),
|
||||
+ (unsigned int) (GpeRegisterInfo->BaseGpeNumber + (ACPI_GPE_REGISTER_WIDTH - 1)),
|
||||
GpeRegisterInfo->EnableForRun,
|
||||
GpeRegisterInfo->EnableForWake));
|
||||
continue;
|
||||
Index: acpica-unix2-20220331/source/components/executer/exdump.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/components/executer/exdump.c
|
||||
+++ acpica-unix2-20220331/source/components/executer/exdump.c
|
||||
@@ -678,7 +678,7 @@ AcpiExDumpOperand (
|
||||
if (Depth > 0)
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%*s[%u] %p Refs=%u ",
|
||||
- Depth, " ", Depth, ObjDesc, ObjDesc->Common.ReferenceCount));
|
||||
+ (int) Depth, " ", Depth, ObjDesc, ObjDesc->Common.ReferenceCount));
|
||||
}
|
||||
else
|
||||
{
|
||||
Index: acpica-unix2-20220331/source/components/executer/exfldio.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/components/executer/exfldio.c
|
||||
+++ acpica-unix2-20220331/source/components/executer/exfldio.c
|
||||
@@ -681,8 +681,8 @@ AcpiExWriteWithUpdateRule (
|
||||
|
||||
ACPI_ERROR ((AE_INFO,
|
||||
"Unknown UpdateRule value: 0x%X",
|
||||
- (ObjDesc->CommonField.FieldFlags &
|
||||
- AML_FIELD_UPDATE_RULE_MASK)));
|
||||
+ (unsigned int) (ObjDesc->CommonField.FieldFlags &
|
||||
+ AML_FIELD_UPDATE_RULE_MASK)));
|
||||
return_ACPI_STATUS (AE_AML_OPERAND_VALUE);
|
||||
}
|
||||
}
|
||||
Index: acpica-unix2-20220331/source/components/executer/exnames.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/components/executer/exnames.c
|
||||
+++ acpica-unix2-20220331/source/components/executer/exnames.c
|
||||
@@ -237,7 +237,7 @@ AcpiExNameSegment (
|
||||
*/
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
|
||||
"Leading character is not alpha: %02Xh (not a name)\n",
|
||||
- CharBuf[0]));
|
||||
+ (unsigned int) CharBuf[0]));
|
||||
Status = AE_CTRL_PENDING;
|
||||
}
|
||||
else
|
||||
@@ -249,7 +249,7 @@ AcpiExNameSegment (
|
||||
Status = AE_AML_BAD_NAME;
|
||||
ACPI_ERROR ((AE_INFO,
|
||||
"Bad character 0x%02x in name, at %p",
|
||||
- *AmlAddress, AmlAddress));
|
||||
+ (unsigned int) (*AmlAddress), AmlAddress));
|
||||
}
|
||||
|
||||
*InAmlAddress = ACPI_CAST_PTR (UINT8, AmlAddress);
|
||||
Index: acpica-unix2-20220331/source/components/hardware/hwregs.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/components/hardware/hwregs.c
|
||||
+++ acpica-unix2-20220331/source/components/hardware/hwregs.c
|
||||
@@ -460,7 +460,7 @@ AcpiHwClearAcpiStatus (
|
||||
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_IO, "About to write %04X to %8.8X%8.8X\n",
|
||||
- ACPI_BITMASK_ALL_FIXED_STATUS,
|
||||
+ (UINT32) ACPI_BITMASK_ALL_FIXED_STATUS,
|
||||
ACPI_FORMAT_UINT64 (AcpiGbl_XPm1aStatus.Address)));
|
||||
|
||||
LockFlags = AcpiOsAcquireLock (AcpiGbl_HardwareLock);
|
||||
Index: acpica-unix2-20220331/source/components/tables/tbfadt.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/components/tables/tbfadt.c
|
||||
+++ acpica-unix2-20220331/source/components/tables/tbfadt.c
|
||||
@@ -233,7 +233,7 @@ AcpiTbInitGenericAddress (
|
||||
if (!(Flags & ACPI_FADT_GPE_REGISTER))
|
||||
{
|
||||
ACPI_ERROR ((AE_INFO,
|
||||
- "%s - 32-bit FADT register is too long (%u bytes, %u bits) "
|
||||
+ "%s - 32-bit FADT register is too long (%u bytes, %d bits) "
|
||||
"to convert to GAS struct - 255 bits max, truncating",
|
||||
RegisterName, ByteWidth, (ByteWidth * 8)));
|
||||
}
|
||||
@@ -303,7 +303,7 @@ AcpiTbSelectAddress (
|
||||
|
||||
ACPI_BIOS_WARNING ((AE_INFO,
|
||||
"32/64X %s address mismatch in FADT: "
|
||||
- "0x%8.8X/0x%8.8X%8.8X, using %u-bit address",
|
||||
+ "0x%8.8X/0x%8.8X%8.8X, using %d-bit address",
|
||||
RegisterName, Address32, ACPI_FORMAT_UINT64 (Address64),
|
||||
AcpiGbl_Use32BitFadtAddresses ? 32 : 64));
|
||||
|
||||
@@ -631,7 +631,7 @@ AcpiTbConvertFadt (
|
||||
|
||||
ACPI_BIOS_WARNING ((AE_INFO,
|
||||
"32/64X address mismatch in FADT/%s: "
|
||||
- "0x%8.8X/0x%8.8X%8.8X, using %u-bit address",
|
||||
+ "0x%8.8X/0x%8.8X%8.8X, using %d-bit address",
|
||||
Name, Address32,
|
||||
ACPI_FORMAT_UINT64 (Address64->Address),
|
||||
AcpiGbl_Use32BitFadtAddresses ? 32 : 64));
|
||||
Index: acpica-unix2-20220331/source/components/tables/tbxfroot.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/components/tables/tbxfroot.c
|
||||
+++ acpica-unix2-20220331/source/components/tables/tbxfroot.c
|
||||
@@ -177,7 +177,7 @@ AcpiFindRootPointer (
|
||||
{
|
||||
ACPI_ERROR ((AE_INFO,
|
||||
"Could not map memory at 0x%8.8X for length %u",
|
||||
- ACPI_EBDA_PTR_LOCATION, ACPI_EBDA_PTR_LENGTH));
|
||||
+ (UINT32) ACPI_EBDA_PTR_LOCATION, (UINT32) ACPI_EBDA_PTR_LENGTH));
|
||||
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
}
|
||||
@@ -204,7 +204,7 @@ AcpiFindRootPointer (
|
||||
{
|
||||
ACPI_ERROR ((AE_INFO,
|
||||
"Could not map memory at 0x%8.8X for length %u",
|
||||
- PhysicalAddress, ACPI_EBDA_WINDOW_SIZE));
|
||||
+ PhysicalAddress, (UINT32) ACPI_EBDA_WINDOW_SIZE));
|
||||
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
}
|
||||
@@ -236,7 +236,7 @@ AcpiFindRootPointer (
|
||||
{
|
||||
ACPI_ERROR ((AE_INFO,
|
||||
"Could not map memory at 0x%8.8X for length %u",
|
||||
- ACPI_HI_RSDP_WINDOW_BASE, ACPI_HI_RSDP_WINDOW_SIZE));
|
||||
+ (UINT32) ACPI_HI_RSDP_WINDOW_BASE, (UINT32) ACPI_HI_RSDP_WINDOW_SIZE));
|
||||
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
}
|
||||
Index: acpica-unix2-20220331/source/components/utilities/utownerid.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/components/utilities/utownerid.c
|
||||
+++ acpica-unix2-20220331/source/components/utilities/utownerid.c
|
||||
@@ -237,7 +237,7 @@ AcpiUtReleaseOwnerId (
|
||||
else
|
||||
{
|
||||
ACPI_ERROR ((AE_INFO,
|
||||
- "Attempted release of non-allocated OwnerId: 0x%3.3X", OwnerId + 1));
|
||||
+ "Release of non-allocated OwnerId: 0x%2.2X", (UINT32) OwnerId + 1));
|
||||
}
|
||||
|
||||
(void) AcpiUtReleaseMutex (ACPI_MTX_CACHES);
|
@ -1,22 +0,0 @@
|
||||
Index: acpica-unix2-20220331/source/compiler/aslparseop.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/compiler/aslparseop.c
|
||||
+++ acpica-unix2-20220331/source/compiler/aslparseop.c
|
||||
@@ -285,7 +285,16 @@ TrCreateValuedLeafOp (
|
||||
|
||||
|
||||
Op = TrAllocateOp (ParseOpcode);
|
||||
- Op->Asl.Value.Integer = Value;
|
||||
+ if (ParseOpcode == PARSEOP_NAMESTRING ||
|
||||
+ ParseOpcode == PARSEOP_NAMESEG ||
|
||||
+ ParseOpcode == PARSEOP_STRING_LITERAL)
|
||||
+ {
|
||||
+ Op->Asl.Value.String = (char *) Value;
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ Op->Asl.Value.Integer = Value;
|
||||
+ }
|
||||
|
||||
DbgPrint (ASL_PARSE_OUTPUT,
|
||||
"\nCreateValuedLeafOp Ln/Col %u/%u NewOp %p "
|
@ -1,49 +0,0 @@
|
||||
Index: acpica-unix2-20220331/source/components/tables/tbutils.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/components/tables/tbutils.c
|
||||
+++ acpica-unix2-20220331/source/components/tables/tbutils.c
|
||||
@@ -238,9 +238,11 @@ AcpiTbGetRootTableEntry (
|
||||
* 64-bit platform, XSDT: Move (unaligned) 64-bit to local,
|
||||
* return 64-bit
|
||||
*/
|
||||
- ACPI_MOVE_64_TO_64 (&Address64, TableEntry);
|
||||
|
||||
#if ACPI_MACHINE_WIDTH == 32
|
||||
+ UINT32 Tmp32 = (UINT32) TableEntry;
|
||||
+
|
||||
+ Address64 = (UINT64) Tmp32;
|
||||
if (Address64 > ACPI_UINT32_MAX)
|
||||
{
|
||||
/* Will truncate 64-bit address to 32 bits, issue warning */
|
||||
@@ -250,8 +252,14 @@ AcpiTbGetRootTableEntry (
|
||||
" truncating",
|
||||
ACPI_FORMAT_UINT64 (Address64)));
|
||||
}
|
||||
-#endif
|
||||
+
|
||||
+ return ((ACPI_PHYSICAL_ADDRESS) (*ACPI_CAST_PTR (
|
||||
+ UINT32, TableEntry)));
|
||||
+#else
|
||||
+ Address64 = (UINT64) TableEntry;
|
||||
+
|
||||
return ((ACPI_PHYSICAL_ADDRESS) (Address64));
|
||||
+#endif
|
||||
}
|
||||
}
|
||||
|
||||
Index: acpica-unix2-20220331/source/compiler/aslparseop.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/compiler/aslparseop.c
|
||||
+++ acpica-unix2-20220331/source/compiler/aslparseop.c
|
||||
@@ -289,7 +289,11 @@ TrCreateValuedLeafOp (
|
||||
ParseOpcode == PARSEOP_NAMESEG ||
|
||||
ParseOpcode == PARSEOP_STRING_LITERAL)
|
||||
{
|
||||
+#if ACPI_MACHINE_WIDTH == 32
|
||||
+ Op->Asl.Value.String = (char *) (UINT32) Value;
|
||||
+#else
|
||||
Op->Asl.Value.String = (char *) Value;
|
||||
+#endif
|
||||
}
|
||||
else
|
||||
{
|
@ -16,7 +16,7 @@ BINDIR="$1"
|
||||
VERSION="$2"
|
||||
|
||||
# create files to compare against
|
||||
$BINDIR/iasl -hZZ
|
||||
$BINDIR/iasl -h
|
||||
|
||||
sed -e "s/VVVVVVVV/$VERSION/" \
|
||||
../badcode.asl.result > misc/badcode.asl.expected
|
||||
|
@ -1,21 +0,0 @@
|
||||
Description: Stop listing all 64bit architectures
|
||||
Check __LP64__ instead of maintaining a list of all
|
||||
64bit architectures.
|
||||
Author: Adrian Bunk <bunk@debian.org>
|
||||
|
||||
Index: acpica-unix2-20220331/source/include/platform/aclinux.h
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/include/platform/aclinux.h
|
||||
+++ acpica-unix2-20220331/source/include/platform/aclinux.h
|
||||
@@ -220,10 +220,7 @@
|
||||
#define ACPI_FLUSH_CPU_CACHE()
|
||||
#define ACPI_CAST_PTHREAD_T(Pthread) ((ACPI_THREAD_ID) (Pthread))
|
||||
|
||||
-#if defined(__ia64__) || (defined(__x86_64__) && !defined(__ILP32__)) ||\
|
||||
- defined(__aarch64__) || defined(__PPC64__) ||\
|
||||
- defined(__s390x__) ||\
|
||||
- (defined(__riscv) && (defined(__LP64__) || defined(_LP64)))
|
||||
+#if defined(__LP64__)
|
||||
#define ACPI_MACHINE_WIDTH 64
|
||||
#define COMPILER_DEPENDENT_INT64 long
|
||||
#define COMPILER_DEPENDENT_UINT64 unsigned long
|
4
sources
4
sources
@ -1,2 +1,2 @@
|
||||
SHA512 (acpica-unix2-20220331.tar.gz) = c606396323dc342ae4c7bab9526b04aca09b00a932363146c1791523962ade0bdb4e40b67ff2a0a246df3ce322592879288c3fcc5fb7a450beb87a6d70c5ef40
|
||||
SHA512 (acpitests-unix-20220331.tar.gz) = 28ead3ff06fc7e409e5fd02358048470daac6d3a96f24408068b84199f33513b5fcaa7c00a31972e63fc481d4b5980f8b8f131549d9d1bcd19fa20f3a1c2aaaf
|
||||
SHA512 (acpica-unix2-20240322.tar.gz) = 199a5acb93193f22b9f85690ad87cdf914185fdf52beafaec8c4299c29f4c9d5b618c72a62413b228307f5be3933cf51cdcd91a6728d9caea66408534006e3f8
|
||||
SHA512 (acpitests-unix-20240322.tar.gz) = e09b0b953d53e28b9849b1ed41068c5542f0e36eb47f442bba6238727bfd96ad94584c0aa1e8d92c307c317dbd208388d3d9c83c2d17e146571a7373bff40b98
|
||||
|
@ -1,7 +1,7 @@
|
||||
Index: acpica-unix2-20220331/source/compiler/aslanalyze.c
|
||||
Index: acpica-unix2-20240321/source/compiler/aslanalyze.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/compiler/aslanalyze.c
|
||||
+++ acpica-unix2-20220331/source/compiler/aslanalyze.c
|
||||
--- acpica-unix2-20240321.orig/source/compiler/aslanalyze.c
|
||||
+++ acpica-unix2-20240321/source/compiler/aslanalyze.c
|
||||
@@ -358,11 +358,16 @@ AnCheckMethodReturnValue (
|
||||
*/
|
||||
if (ThisNodeBtype != 0)
|
||||
@ -21,10 +21,10 @@ Index: acpica-unix2-20220331/source/compiler/aslanalyze.c
|
||||
}
|
||||
}
|
||||
|
||||
Index: acpica-unix2-20220331/source/compiler/aslpredef.c
|
||||
Index: acpica-unix2-20240321/source/compiler/aslpredef.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/compiler/aslpredef.c
|
||||
+++ acpica-unix2-20220331/source/compiler/aslpredef.c
|
||||
--- acpica-unix2-20240321.orig/source/compiler/aslpredef.c
|
||||
+++ acpica-unix2-20240321/source/compiler/aslpredef.c
|
||||
@@ -159,14 +159,19 @@ ApCheckForPredefinedMethod (
|
||||
if (MethodInfo->NumReturnNoValue &&
|
||||
ThisName->Info.ExpectedBtypes)
|
||||
@ -84,10 +84,10 @@ Index: acpica-unix2-20220331/source/compiler/aslpredef.c
|
||||
return (AE_TYPE);
|
||||
}
|
||||
|
||||
Index: acpica-unix2-20220331/source/compiler/aslwalks.c
|
||||
Index: acpica-unix2-20240321/source/compiler/aslwalks.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/compiler/aslwalks.c
|
||||
+++ acpica-unix2-20220331/source/compiler/aslwalks.c
|
||||
--- acpica-unix2-20240321.orig/source/compiler/aslwalks.c
|
||||
+++ acpica-unix2-20240321/source/compiler/aslwalks.c
|
||||
@@ -515,15 +515,19 @@ AnOperandTypecheckWalkEnd (
|
||||
else if (!CommonBtypes)
|
||||
{
|
||||
|
@ -7,10 +7,10 @@ From: Al Stone <ahs3@redhat.com>
|
||||
tests/templates/Makefile | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
Index: acpica-unix2-20220331/tests/templates/Makefile
|
||||
Index: acpica-unix2-20240321/tests/templates/Makefile
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/tests/templates/Makefile
|
||||
+++ acpica-unix2-20220331/tests/templates/Makefile
|
||||
--- acpica-unix2-20240321.orig/tests/templates/Makefile
|
||||
+++ acpica-unix2-20240321/tests/templates/Makefile
|
||||
@@ -26,7 +26,7 @@ $(aml_obj): %.aml: %.asl
|
||||
|
||||
|
||||
|
@ -1,16 +0,0 @@
|
||||
Index: acpica-unix2-20220331/source/common/dmtbdump.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/common/dmtbdump.c
|
||||
+++ acpica-unix2-20220331/source/common/dmtbdump.c
|
||||
@@ -392,7 +392,11 @@ AcpiDmDumpXsdt (
|
||||
for (i = 0; i < Entries; i++)
|
||||
{
|
||||
AcpiDmLineHeader2 (Offset, sizeof (UINT64), "ACPI Table Address", i);
|
||||
+#if ACPI_MACHINE_WIDTH == 32
|
||||
+ AcpiOsPrintf ("%16.16llX\n", AcpiUtReadUint64 (&Array[i]));
|
||||
+#else
|
||||
AcpiOsPrintf ("%16.16lX\n", AcpiUtReadUint64 (&Array[i]));
|
||||
+#endif
|
||||
Offset += sizeof (UINT64);
|
||||
}
|
||||
}
|
@ -14,10 +14,10 @@ Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
||||
source/include/actypes.h | 26 +++++++++++++-------------
|
||||
3 files changed, 32 insertions(+), 21 deletions(-)
|
||||
|
||||
Index: acpica-unix2-20220331/source/components/executer/exoparg2.c
|
||||
Index: acpica-unix2-20240321/source/components/executer/exoparg2.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/components/executer/exoparg2.c
|
||||
+++ acpica-unix2-20220331/source/components/executer/exoparg2.c
|
||||
--- acpica-unix2-20240321.orig/source/components/executer/exoparg2.c
|
||||
+++ acpica-unix2-20240321/source/components/executer/exoparg2.c
|
||||
@@ -172,6 +172,8 @@ AcpiExOpcode_2A_2T_1R (
|
||||
ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0];
|
||||
ACPI_OPERAND_OBJECT *ReturnDesc1 = NULL;
|
||||
@ -58,10 +58,10 @@ Index: acpica-unix2-20220331/source/components/executer/exoparg2.c
|
||||
break;
|
||||
|
||||
case AML_CONCATENATE_OP: /* Concatenate (Data1, Data2, Result) */
|
||||
Index: acpica-unix2-20220331/source/include/actypes.h
|
||||
Index: acpica-unix2-20240321/source/include/actypes.h
|
||||
===================================================================
|
||||
--- acpica-unix2-20220331.orig/source/include/actypes.h
|
||||
+++ acpica-unix2-20220331/source/include/actypes.h
|
||||
--- acpica-unix2-20240321.orig/source/include/actypes.h
|
||||
+++ acpica-unix2-20240321/source/include/actypes.h
|
||||
@@ -143,6 +143,19 @@ typedef COMPILER_DEPENDENT_INT64
|
||||
*/
|
||||
#define ACPI_THREAD_ID UINT64
|
||||
|
@ -1,7 +1,8 @@
|
||||
diff -Naur acpica-unix2-20211217.orig/source/tools/acpiexec/aeregion.c acpica-unix2-20211217/source/tools/acpiexec/aeregion.c
|
||||
--- acpica-unix2-20211217.orig/source/tools/acpiexec/aeregion.c 2021-12-17 10:48:17.000000000 -0700
|
||||
+++ acpica-unix2-20211217/source/tools/acpiexec/aeregion.c 2022-03-18 15:53:25.032687782 -0600
|
||||
@@ -97,7 +97,7 @@
|
||||
Index: acpica-unix2-20240321/source/tools/acpiexec/aeregion.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20240321.orig/source/tools/acpiexec/aeregion.c
|
||||
+++ acpica-unix2-20240321/source/tools/acpiexec/aeregion.c
|
||||
@@ -97,7 +97,7 @@ AeRegionHandler (
|
||||
UINT32 Value1;
|
||||
UINT32 Value2;
|
||||
ACPI_RESOURCE *Resource;
|
||||
|
@ -1,196 +0,0 @@
|
||||
Index: acpica-unix2-20210604/source/common/dmtable.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20210604.orig/source/common/dmtable.c
|
||||
+++ acpica-unix2-20210604/source/common/dmtable.c
|
||||
@@ -979,6 +979,12 @@ AcpiDmDumpTable (
|
||||
ByteLength = 128;
|
||||
break;
|
||||
|
||||
+ case ACPI_DMT_WPBT_UNICODE:
|
||||
+
|
||||
+ ByteLength = SubtableLength;
|
||||
+ CurrentOffset = sizeof (ACPI_TABLE_WPBT);
|
||||
+ break;
|
||||
+
|
||||
case ACPI_DMT_UNICODE:
|
||||
case ACPI_DMT_BUFFER:
|
||||
case ACPI_DMT_RAW_BUFFER:
|
||||
@@ -1596,6 +1602,7 @@ AcpiDmDumpTable (
|
||||
break;
|
||||
|
||||
case ACPI_DMT_UNICODE:
|
||||
+ case ACPI_DMT_WPBT_UNICODE:
|
||||
|
||||
if (ByteLength == 0)
|
||||
{
|
||||
Index: acpica-unix2-20210604/source/common/dmtbdump3.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20210604.orig/source/common/dmtbdump3.c
|
||||
+++ acpica-unix2-20210604/source/common/dmtbdump3.c
|
||||
@@ -753,8 +753,11 @@ AcpiDmDumpWpbt (
|
||||
Subtable = ACPI_CAST_PTR (ACPI_TABLE_WPBT, Table);
|
||||
ArgumentsLength = AcpiUtReadUint16 (&Subtable->ArgumentsLength);
|
||||
|
||||
- /* Dump the arguments buffer */
|
||||
+ /* Dump the arguments buffer if present */
|
||||
|
||||
- (void) AcpiDmDumpTable (TableLength, 0, Table, ArgumentsLength,
|
||||
- AcpiDmTableInfoWpbt0);
|
||||
+ if (ArgumentsLength)
|
||||
+ {
|
||||
+ (void) AcpiDmDumpTable (Table->Length, 0, Table, ArgumentsLength,
|
||||
+ AcpiDmTableInfoWpbt0);
|
||||
+ }
|
||||
}
|
||||
Index: acpica-unix2-20210604/source/common/dmtbinfo3.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20210604.orig/source/common/dmtbinfo3.c
|
||||
+++ acpica-unix2-20210604/source/common/dmtbinfo3.c
|
||||
@@ -651,7 +651,7 @@ ACPI_DMTABLE_INFO AcpiDmTableI
|
||||
|
||||
ACPI_DMTABLE_INFO AcpiDmTableInfoWpbt0[] =
|
||||
{
|
||||
- {ACPI_DMT_UNICODE, sizeof (ACPI_TABLE_WPBT), "Command-line Arguments", 0},
|
||||
+ {ACPI_DMT_WPBT_UNICODE, ACPI_WPBT2_OFFSET (UnicodeString), "Command-line Arguments", DT_DESCRIBES_OPTIONAL},
|
||||
ACPI_DMT_TERMINATOR
|
||||
};
|
||||
|
||||
Index: acpica-unix2-20210604/source/compiler/dttable2.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20210604.orig/source/compiler/dttable2.c
|
||||
+++ acpica-unix2-20210604/source/compiler/dttable2.c
|
||||
@@ -2615,13 +2615,11 @@ DtCompileWpbt (
|
||||
DT_SUBTABLE *ParentTable;
|
||||
ACPI_TABLE_WPBT *Table;
|
||||
ACPI_STATUS Status;
|
||||
- UINT16 Length;
|
||||
|
||||
|
||||
/* Compile the main table */
|
||||
|
||||
- Status = DtCompileTable (PFieldList, AcpiDmTableInfoWpbt,
|
||||
- &Subtable);
|
||||
+ Status = DtCompileTable (PFieldList, AcpiDmTableInfoWpbt, &Subtable);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return (Status);
|
||||
@@ -2629,11 +2627,23 @@ DtCompileWpbt (
|
||||
|
||||
ParentTable = DtPeekSubtable ();
|
||||
DtInsertSubtable (ParentTable, Subtable);
|
||||
+ Table = ACPI_CAST_PTR (ACPI_TABLE_WPBT, ParentTable->Buffer);
|
||||
+
|
||||
+ /*
|
||||
+ * Exit now if there are no arguments specified. This is indicated by:
|
||||
+ * The "Command-line Arguments" field has not been specified (if specified,
|
||||
+ * it will be the last field in the field list -- after the main table).
|
||||
+ * Set the Argument Length in the main table to zero.
|
||||
+ */
|
||||
+ if (!*PFieldList)
|
||||
+ {
|
||||
+ Table->ArgumentsLength = 0;
|
||||
+ return (AE_OK);
|
||||
+ }
|
||||
|
||||
/* Compile the argument list subtable */
|
||||
|
||||
- Status = DtCompileTable (PFieldList, AcpiDmTableInfoWpbt0,
|
||||
- &Subtable);
|
||||
+ Status = DtCompileTable (PFieldList, AcpiDmTableInfoWpbt0, &Subtable);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return (Status);
|
||||
@@ -2641,12 +2651,8 @@ DtCompileWpbt (
|
||||
|
||||
/* Extract the length of the Arguments buffer, insert into main table */
|
||||
|
||||
- AcpiUtWriteUint (&Length, sizeof (UINT16),
|
||||
+ AcpiUtWriteUint (&Table->ArgumentsLength, sizeof (UINT16),
|
||||
&Subtable->TotalLength, sizeof (UINT32));
|
||||
- Table = ACPI_CAST_PTR (ACPI_TABLE_WPBT, ParentTable->Buffer);
|
||||
- Table->ArgumentsLength = AcpiUtReadUint16 (&Length);
|
||||
-
|
||||
- ParentTable = DtPeekSubtable ();
|
||||
DtInsertSubtable (ParentTable, Subtable);
|
||||
return (AE_OK);
|
||||
}
|
||||
Index: acpica-unix2-20210604/source/compiler/dtutils.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20210604.orig/source/compiler/dtutils.c
|
||||
+++ acpica-unix2-20210604/source/compiler/dtutils.c
|
||||
@@ -344,6 +344,7 @@ DtGetFieldType (
|
||||
break;
|
||||
|
||||
case ACPI_DMT_UNICODE:
|
||||
+ case ACPI_DMT_WPBT_UNICODE:
|
||||
|
||||
Type = DT_FIELD_TYPE_UNICODE;
|
||||
break;
|
||||
@@ -626,12 +627,13 @@ DtGetFieldLength (
|
||||
break;
|
||||
|
||||
case ACPI_DMT_UNICODE:
|
||||
+ case ACPI_DMT_WPBT_UNICODE:
|
||||
|
||||
Value = DtGetFieldValue (Field);
|
||||
|
||||
/* TBD: error if Value is NULL? (as below?) */
|
||||
|
||||
- ByteLength = (strlen (Value) + 1) * sizeof(UINT16);
|
||||
+ ByteLength = (strlen (Value) + 1) * sizeof (UINT16);
|
||||
break;
|
||||
|
||||
default:
|
||||
Index: acpica-unix2-20210604/source/include/acdisasm.h
|
||||
===================================================================
|
||||
--- acpica-unix2-20210604.orig/source/include/acdisasm.h
|
||||
+++ acpica-unix2-20210604/source/include/acdisasm.h
|
||||
@@ -175,6 +175,7 @@ typedef enum
|
||||
ACPI_DMT_SRAT,
|
||||
ACPI_DMT_TPM2,
|
||||
ACPI_DMT_VIOT,
|
||||
+ ACPI_DMT_WPBT_UNICODE,
|
||||
|
||||
/* Special opcodes */
|
||||
|
||||
Index: acpica-unix2-20210604/source/include/actbinfo.h
|
||||
===================================================================
|
||||
--- acpica-unix2-20210604.orig/source/include/actbinfo.h
|
||||
+++ acpica-unix2-20210604/source/include/actbinfo.h
|
||||
@@ -97,6 +97,7 @@
|
||||
#define ACPI_WDDT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_WDDT,f)
|
||||
#define ACPI_WDRT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_WDRT,f)
|
||||
#define ACPI_WPBT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_WPBT,f)
|
||||
+#define ACPI_WPBT2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_WPBT_UNICODE,f)
|
||||
#define ACPI_WSMT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_WSMT,f)
|
||||
#define ACPI_XENV_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_XENV,f)
|
||||
|
||||
Index: acpica-unix2-20210604/source/include/actbl3.h
|
||||
===================================================================
|
||||
--- acpica-unix2-20210604.orig/source/include/actbl3.h
|
||||
+++ acpica-unix2-20210604/source/include/actbl3.h
|
||||
@@ -847,6 +847,12 @@ typedef struct acpi_table_wpbt
|
||||
|
||||
} ACPI_TABLE_WPBT;
|
||||
|
||||
+typedef struct acpi_wpbt_unicode
|
||||
+{
|
||||
+ UINT16 *UnicodeString;
|
||||
+
|
||||
+} ACPI_WPBT_UNICODE;
|
||||
+
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
Index: acpica-unix2-20210604/source/tools/acpisrc/astable.c
|
||||
===================================================================
|
||||
--- acpica-unix2-20210604.orig/source/tools/acpisrc/astable.c
|
||||
+++ acpica-unix2-20210604/source/tools/acpisrc/astable.c
|
||||
@@ -772,6 +772,7 @@ ACPI_TYPED_IDENTIFIER_TABLE Ac
|
||||
{"ACPI_VIOT_VIRTIO_IOMMU_PCI", SRC_TYPE_STRUCT},
|
||||
{"ACPI_VIOT_VIRTIO_IOMMU_MMIO", SRC_TYPE_STRUCT},
|
||||
{"ACPI_WDAT_ENTRY", SRC_TYPE_STRUCT},
|
||||
+ {"ACPI_WPBT_UNICODE", SRC_TYPE_STRUCT},
|
||||
|
||||
/* Data Table compiler */
|
||||
|
Loading…
Reference in New Issue
Block a user