Module Name:    src
Committed By:   christos
Date:           Sat Dec 10 17:40:50 UTC 2022

Modified Files:
        src/sys/external/bsd/acpica/conf: files.acpica
        src/sys/external/bsd/acpica/dist/common: dmtables.c dmtbdump.c
        src/sys/external/bsd/acpica/dist/compiler: aslcompile.c aslerror.c
            asloptions.c aslpredef.c dtcompile.c dtutils.c
        src/sys/external/bsd/acpica/dist/events: evregion.c
        src/sys/external/bsd/acpica/dist/executer: exconfig.c
        src/sys/external/bsd/acpica/dist/hardware: hwsleep.c
        src/sys/external/bsd/acpica/dist/include: acdisasm.h acglobal.h
            acpixf.h actables.h actbl1.h actypes.h acutils.h
        src/sys/external/bsd/acpica/dist/tables: tbdata.c tbfadt.c tbutils.c
            tbxfroot.c
        src/sys/external/bsd/acpica/dist/tools/acpixtract: acpixtract.c
        src/sys/external/bsd/acpica/dist/utilities: utglobal.c

Log Message:
merge acpica 20220331 to 20221020


To generate a diff of this commit:
cvs rdiff -u -r1.17 -r1.18 src/sys/external/bsd/acpica/conf/files.acpica
cvs rdiff -u -r1.6 -r1.7 src/sys/external/bsd/acpica/dist/common/dmtables.c
cvs rdiff -u -r1.14 -r1.15 src/sys/external/bsd/acpica/dist/common/dmtbdump.c
cvs rdiff -u -r1.21 -r1.22 \
    src/sys/external/bsd/acpica/dist/compiler/aslcompile.c
cvs rdiff -u -r1.18 -r1.19 \
    src/sys/external/bsd/acpica/dist/compiler/aslerror.c \
    src/sys/external/bsd/acpica/dist/compiler/dtcompile.c
cvs rdiff -u -r1.15 -r1.16 \
    src/sys/external/bsd/acpica/dist/compiler/asloptions.c \
    src/sys/external/bsd/acpica/dist/compiler/aslpredef.c
cvs rdiff -u -r1.20 -r1.21 \
    src/sys/external/bsd/acpica/dist/compiler/dtutils.c
cvs rdiff -u -r1.15 -r1.16 src/sys/external/bsd/acpica/dist/events/evregion.c
cvs rdiff -u -r1.19 -r1.20 \
    src/sys/external/bsd/acpica/dist/executer/exconfig.c
cvs rdiff -u -r1.14 -r1.15 \
    src/sys/external/bsd/acpica/dist/hardware/hwsleep.c
cvs rdiff -u -r1.25 -r1.26 \
    src/sys/external/bsd/acpica/dist/include/acdisasm.h \
    src/sys/external/bsd/acpica/dist/include/acglobal.h \
    src/sys/external/bsd/acpica/dist/include/acutils.h
cvs rdiff -u -r1.33 -r1.34 src/sys/external/bsd/acpica/dist/include/acpixf.h
cvs rdiff -u -r1.17 -r1.18 \
    src/sys/external/bsd/acpica/dist/include/actables.h
cvs rdiff -u -r1.20 -r1.21 src/sys/external/bsd/acpica/dist/include/actbl1.h
cvs rdiff -u -r1.27 -r1.28 src/sys/external/bsd/acpica/dist/include/actypes.h
cvs rdiff -u -r1.18 -r1.19 src/sys/external/bsd/acpica/dist/tables/tbdata.c \
    src/sys/external/bsd/acpica/dist/tables/tbfadt.c
cvs rdiff -u -r1.20 -r1.21 src/sys/external/bsd/acpica/dist/tables/tbutils.c
cvs rdiff -u -r1.14 -r1.15 src/sys/external/bsd/acpica/dist/tables/tbxfroot.c
cvs rdiff -u -r1.15 -r1.16 \
    src/sys/external/bsd/acpica/dist/tools/acpixtract/acpixtract.c
cvs rdiff -u -r1.15 -r1.16 \
    src/sys/external/bsd/acpica/dist/utilities/utglobal.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/external/bsd/acpica/conf/files.acpica
diff -u src/sys/external/bsd/acpica/conf/files.acpica:1.17 src/sys/external/bsd/acpica/conf/files.acpica:1.18
--- src/sys/external/bsd/acpica/conf/files.acpica:1.17	Sat Jan  5 15:40:05 2019
+++ src/sys/external/bsd/acpica/conf/files.acpica	Sat Dec 10 12:40:49 2022
@@ -1,4 +1,4 @@
-# $NetBSD: files.acpica,v 1.17 2019/01/05 20:40:05 christos Exp $
+# $NetBSD: files.acpica,v 1.18 2022/12/10 17:40:49 christos Exp $
 
 define		acpica
 makeoptions	acpi	CPPFLAGS+="-I$S/external/bsd/acpica/dist/include"
@@ -183,6 +183,7 @@ file	utilities/utalloc.c		acpica
 file	utilities/utascii.c		acpica
 file	utilities/utbuffer.c		acpica
 file	utilities/utcache.c		acpica
+file	utilities/utcksum.c		acpica
 file	utilities/utcopy.c		acpica
 file	utilities/utdebug.c		acpica
 file	utilities/utdecode.c		acpica

Index: src/sys/external/bsd/acpica/dist/common/dmtables.c
diff -u src/sys/external/bsd/acpica/dist/common/dmtables.c:1.6 src/sys/external/bsd/acpica/dist/common/dmtables.c:1.7
--- src/sys/external/bsd/acpica/dist/common/dmtables.c:1.6	Sat Aug 27 10:04:56 2022
+++ src/sys/external/bsd/acpica/dist/common/dmtables.c	Sat Dec 10 12:40:49 2022
@@ -188,7 +188,7 @@ AdCreateTableHeader (
 
     AcpiOsPrintf ("\n *     Checksum         0x%2.2X",        Table->Checksum);
 
-    Checksum = AcpiTbChecksum (ACPI_CAST_PTR (UINT8, Table), Table->Length);
+    Checksum = AcpiUtChecksum (ACPI_CAST_PTR (UINT8, Table), Table->Length);
     if (Checksum)
     {
         AcpiOsPrintf (" **** Incorrect checksum, should be 0x%2.2X",

Index: src/sys/external/bsd/acpica/dist/common/dmtbdump.c
diff -u src/sys/external/bsd/acpica/dist/common/dmtbdump.c:1.14 src/sys/external/bsd/acpica/dist/common/dmtbdump.c:1.15
--- src/sys/external/bsd/acpica/dist/common/dmtbdump.c:1.14	Sat Aug 27 10:04:56 2022
+++ src/sys/external/bsd/acpica/dist/common/dmtbdump.c	Sat Dec 10 12:40:49 2022
@@ -222,7 +222,7 @@ AcpiDmDumpRsdp (
 
     /* Validate the first checksum */
 
-    Checksum = AcpiDmGenerateChecksum (Rsdp, sizeof (ACPI_RSDP_COMMON),
+    Checksum = AcpiUtGenerateChecksum (Rsdp, sizeof (ACPI_RSDP_COMMON),
         Rsdp->Checksum);
     if (Checksum != Rsdp->Checksum)
     {
@@ -243,7 +243,7 @@ AcpiDmDumpRsdp (
 
         /* Validate the extended checksum over entire RSDP */
 
-        Checksum = AcpiDmGenerateChecksum (Rsdp, sizeof (ACPI_TABLE_RSDP),
+        Checksum = AcpiUtGenerateChecksum (Rsdp, sizeof (ACPI_TABLE_RSDP),
             Rsdp->ExtendedChecksum);
         if (Checksum != Rsdp->ExtendedChecksum)
         {

Index: src/sys/external/bsd/acpica/dist/compiler/aslcompile.c
diff -u src/sys/external/bsd/acpica/dist/compiler/aslcompile.c:1.21 src/sys/external/bsd/acpica/dist/compiler/aslcompile.c:1.22
--- src/sys/external/bsd/acpica/dist/compiler/aslcompile.c:1.21	Sat Aug 27 10:04:56 2022
+++ src/sys/external/bsd/acpica/dist/compiler/aslcompile.c	Sat Dec 10 12:40:49 2022
@@ -133,7 +133,7 @@ CmDoCompile (
 
     if (AslGbl_SyntaxError)
     {
-        fprintf (stderr,
+        AslError (ASL_ERROR, ASL_MSG_SYNTAX, NULL,
             "Compiler aborting due to parser-detected syntax error(s)\n");
 
         /* Flag this error in the FileNode for compilation summary */
@@ -142,6 +142,8 @@ CmDoCompile (
         FileNode->ParserErrorDetected = TRUE;
         AslGbl_ParserErrorDetected = TRUE;
         LsDumpParseTree ();
+        AePrintErrorLog(ASL_FILE_STDERR);
+
         goto ErrorExit;
     }
 
@@ -159,6 +161,8 @@ CmDoCompile (
         goto ErrorExit;
     }
 
+    AePrintErrorLog(ASL_FILE_STDERR);
+
     /* Flush out any remaining source after parse tree is complete */
 
     Event = UtBeginEvent ("Flush source input");
@@ -175,10 +179,13 @@ CmDoCompile (
 
     LsDumpParseTree ();
 
+    AslGbl_ParserErrorDetected = FALSE;
+    AslGbl_SyntaxError = FALSE;
     UtEndEvent (Event);
     UtEndEvent (FullCompile);
-    return (AE_OK);
 
+    AslGbl_ParserErrorDetected = FALSE;
+    AslGbl_SyntaxError = FALSE;
 ErrorExit:
     UtEndEvent (FullCompile);
     return (AE_ERROR);
@@ -811,7 +818,6 @@ CmCleanupAndExit (
             ASL_MAX_ERROR_COUNT);
     }
 
-    AslGbl_ExceptionCount[ASL_ERROR] = 0;
     UtDisplaySummary (ASL_FILE_STDOUT);
 
     /*

Index: src/sys/external/bsd/acpica/dist/compiler/aslerror.c
diff -u src/sys/external/bsd/acpica/dist/compiler/aslerror.c:1.18 src/sys/external/bsd/acpica/dist/compiler/aslerror.c:1.19
--- src/sys/external/bsd/acpica/dist/compiler/aslerror.c:1.18	Sat Aug 27 10:04:56 2022
+++ src/sys/external/bsd/acpica/dist/compiler/aslerror.c	Sat Dec 10 12:40:49 2022
@@ -925,7 +925,6 @@ AslLogNewError (
         exit(1);
     }
 
-    AslGbl_ExceptionCount[ASL_ERROR] = 0;
     return;
 }
 
Index: src/sys/external/bsd/acpica/dist/compiler/dtcompile.c
diff -u src/sys/external/bsd/acpica/dist/compiler/dtcompile.c:1.18 src/sys/external/bsd/acpica/dist/compiler/dtcompile.c:1.19
--- src/sys/external/bsd/acpica/dist/compiler/dtcompile.c:1.18	Sat Aug 27 10:04:57 2022
+++ src/sys/external/bsd/acpica/dist/compiler/dtcompile.c	Sat Dec 10 12:40:49 2022
@@ -345,6 +345,48 @@ DtCompileDataTable (
     }
 
     /*
+     * If the first field is named "CDAT Table Length" (not "Signature"),
+     * assume that we have a CDAT table (whose table header does not have
+     * a signature). Instead, the TableLength field is where the
+     * signature would (normally) be.
+     */
+    else if (!strcmp ((*FieldList)->Name, "CDAT Table Length"))
+    {
+        /* No longer true: (However, use this technique in the disassembler)
+         * We are assuming that there
+         * should be at least one non-ASCII byte in the 4-character
+         * Signature field, (At least the high-order byte should be zero).
+         */
+        Status = DtCompileTable (FieldList, AcpiDmTableInfoCdatTableHdr,
+            &AslGbl_RootTable);
+        if (ACPI_FAILURE (Status))
+        {
+            return (Status);
+        }
+
+        /* Compile the CDAT */
+
+        DtPushSubtable (AslGbl_RootTable);
+        Status = DtCompileCdat ((void **) FieldList);
+        if (ACPI_FAILURE (Status))
+        {
+            return (Status);
+        }
+
+        /*
+         * Set the overall table length and the table checksum.
+         * The entire compiled table (including the CDAT table header with
+         * the table length and checksum) is in AslGbl_RootTable->Buffer.
+         */
+        DtSetTableLength ();
+        DtSetTableChecksum (&ACPI_CAST_PTR (ACPI_TABLE_CDAT, AslGbl_RootTable->Buffer)->Checksum);
+
+        DtDumpFieldList (RootField);
+        DtDumpSubtableList ();
+        return (AE_OK);
+    }
+
+    /*
      * All other tables must use the common ACPI table header. Insert the
      * current iASL IDs (name, version), and compile the header now.
      */

Index: src/sys/external/bsd/acpica/dist/compiler/asloptions.c
diff -u src/sys/external/bsd/acpica/dist/compiler/asloptions.c:1.15 src/sys/external/bsd/acpica/dist/compiler/asloptions.c:1.16
--- src/sys/external/bsd/acpica/dist/compiler/asloptions.c:1.15	Sat Aug 27 10:04:57 2022
+++ src/sys/external/bsd/acpica/dist/compiler/asloptions.c	Sat Dec 10 12:40:49 2022
@@ -44,6 +44,7 @@
 #include "aslcompiler.h"
 #include "acapps.h"
 #include "acdisasm.h"
+#include "acglobal.h"
 
 #define _COMPONENT          ACPI_COMPILER
         ACPI_MODULE_NAME    ("asloption")
@@ -68,7 +69,7 @@ AslDoResponseFile (
 
 
 #define ASL_TOKEN_SEPARATORS    " \t\n"
-#define ASL_SUPPORTED_OPTIONS   "@:a:b|c|d^D:e:f^gh^i|I:l^m:no|p:P^q^r:s|t|T+G^v^w|x:z"
+#define ASL_SUPPORTED_OPTIONS   "@:a:b|c|d^D:e:f^gh^i|I:l^m:no|p:P^q^r:s|:t|T+G^v^w|x:z"
 
 
 /*******************************************************************************
@@ -162,7 +163,7 @@ AslDoOptions (
     BOOLEAN                 IsResponseFile)
 {
     ACPI_STATUS             Status;
-    UINT32                  j;
+    INT32                  j;
 
 
     /* Get the command line options */
@@ -258,7 +259,6 @@ AslDoOptions (
             {
                 return (-1);
             }
-
             AslGbl_PruneType = (UINT8) strtoul (AcpiGbl_Optarg, NULL, 0);
             break;
 
@@ -337,6 +337,28 @@ AslDoOptions (
             AcpiGbl_CstyleDisassembly = FALSE;
             break;
 
+        case 's':   /* Specify table signature (Only supported for CDAT table) */
+
+            /* Get the required argument */
+
+            if (AcpiGetoptArgument (argc, argv))
+            {
+                return (-1);
+            }
+
+            /* Check for exact string "CDAT" (upper or lower case) */
+
+            AcpiGbl_CDAT = ACPI_CAST_PTR (char, &AcpiGbl_Optarg);
+            if (AcpiUtStricmp (AcpiGbl_Optarg, ACPI_SIG_CDAT))
+            {
+                printf ("\nUnknown table signature: %s\n", AcpiGbl_Optarg);
+                return (-1);
+            }
+
+            AcpiGbl_CDAT = malloc (5);
+            AcpiUtSafeStrncpy ((char *) AcpiGbl_CDAT, ACPI_SIG_CDAT, 5);
+            break;
+
         default:
 
             printf ("Unknown option: -d%s\n", AcpiGbl_Optarg);
@@ -729,7 +751,7 @@ AslDoOptions (
             AslGbl_HexOutputFlag = HEX_OUTPUT_C;
             break;
 
-    case 'p': /* data table flex/bison prototype */
+        case 'p': /* data table flex/bison prototype */
 
             AslGbl_DtLexBisonPrototype = TRUE;
             break;
Index: src/sys/external/bsd/acpica/dist/compiler/aslpredef.c
diff -u src/sys/external/bsd/acpica/dist/compiler/aslpredef.c:1.15 src/sys/external/bsd/acpica/dist/compiler/aslpredef.c:1.16
--- src/sys/external/bsd/acpica/dist/compiler/aslpredef.c:1.15	Sat Aug 27 10:04:57 2022
+++ src/sys/external/bsd/acpica/dist/compiler/aslpredef.c	Sat Dec 10 12:40:49 2022
@@ -455,7 +455,7 @@ ApCheckForPredefinedName (
     if (Name[0] == 0)
     {
         AslError (ASL_ERROR, ASL_MSG_COMPILER_INTERNAL, Op,
-            "zero length name found");
+            "Zero length name found");
     }
 
     /* All reserved names are prefixed with a single underscore */

Index: src/sys/external/bsd/acpica/dist/compiler/dtutils.c
diff -u src/sys/external/bsd/acpica/dist/compiler/dtutils.c:1.20 src/sys/external/bsd/acpica/dist/compiler/dtutils.c:1.21
--- src/sys/external/bsd/acpica/dist/compiler/dtutils.c:1.20	Sat Aug 27 10:04:57 2022
+++ src/sys/external/bsd/acpica/dist/compiler/dtutils.c	Sat Dec 10 12:40:49 2022
@@ -493,6 +493,7 @@ DtGetFieldLength (
     case ACPI_DMT_AEST_XFACE:
     case ACPI_DMT_AEST_XRUPT:
     case ACPI_DMT_ASF:
+    case ACPI_DMT_CDAT:
     case ACPI_DMT_HESTNTYP:
     case ACPI_DMT_FADTPM:
     case ACPI_DMT_EINJACT:
@@ -692,7 +693,7 @@ DtSum (
     UINT8                   *Sum = ReturnValue;
 
 
-    Checksum = AcpiTbChecksum (Subtable->Buffer, Subtable->Length);
+    Checksum = AcpiUtChecksum (Subtable->Buffer, Subtable->Length);
     *Sum = (UINT8) (*Sum + Checksum);
 }
 

Index: src/sys/external/bsd/acpica/dist/events/evregion.c
diff -u src/sys/external/bsd/acpica/dist/events/evregion.c:1.15 src/sys/external/bsd/acpica/dist/events/evregion.c:1.16
--- src/sys/external/bsd/acpica/dist/events/evregion.c:1.15	Sat Aug 27 10:04:57 2022
+++ src/sys/external/bsd/acpica/dist/events/evregion.c	Sat Dec 10 12:40:50 2022
@@ -221,6 +221,14 @@ AcpiEvAddressSpaceDispatch (
             Ctx->SubspaceId = (UINT8) RegionObj->Region.Address;
         }
 
+        if (RegionObj->Region.SpaceId == ACPI_ADR_SPACE_FIXED_HARDWARE)
+        {
+            ACPI_FFH_INFO *Ctx = HandlerDesc->AddressSpace.Context;
+
+            Ctx->Length = RegionObj->Region.Length;
+            Ctx->Offset = RegionObj->Region.Address;
+        }
+
         /*
          * We must exit the interpreter because the region setup will
          * potentially execute control methods (for example, the _REG method

Index: src/sys/external/bsd/acpica/dist/executer/exconfig.c
diff -u src/sys/external/bsd/acpica/dist/executer/exconfig.c:1.19 src/sys/external/bsd/acpica/dist/executer/exconfig.c:1.20
--- src/sys/external/bsd/acpica/dist/executer/exconfig.c:1.19	Sat Aug 27 10:04:57 2022
+++ src/sys/external/bsd/acpica/dist/executer/exconfig.c	Sat Dec 10 12:40:50 2022
@@ -362,8 +362,7 @@ AcpiExLoadOp (
     }
     if (Target->Common.Type != ACPI_TYPE_INTEGER)
     {
-        ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
-	    "Type not integer: %X\n", Target->Common.Type));
+        ACPI_ERROR ((AE_INFO, "Type not integer: %X", Target->Common.Type));
         return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
     }
 

Index: src/sys/external/bsd/acpica/dist/hardware/hwsleep.c
diff -u src/sys/external/bsd/acpica/dist/hardware/hwsleep.c:1.14 src/sys/external/bsd/acpica/dist/hardware/hwsleep.c:1.15
--- src/sys/external/bsd/acpica/dist/hardware/hwsleep.c:1.14	Sat Aug 27 10:04:57 2022
+++ src/sys/external/bsd/acpica/dist/hardware/hwsleep.c	Sat Dec 10 12:40:50 2022
@@ -364,6 +364,16 @@ AcpiHwLegacyWake (
             AcpiGbl_FixedEventInfo[ACPI_EVENT_SLEEP_BUTTON].StatusRegisterId,
             ACPI_CLEAR_STATUS);
 
+    /* Enable pcie wake event if support */
+    if ((AcpiGbl_FADT.Flags & ACPI_FADT_PCI_EXPRESS_WAKE)) {
+        (void) AcpiWriteBitRegister (
+		AcpiGbl_FixedEventInfo[ACPI_EVENT_PCIE_WAKE].EnableRegisterId,
+		ACPI_DISABLE_EVENT);
+        (void) AcpiWriteBitRegister (
+		AcpiGbl_FixedEventInfo[ACPI_EVENT_PCIE_WAKE].StatusRegisterId,
+		ACPI_CLEAR_STATUS);
+    }
+
     AcpiHwExecuteSleepMethod (__UNCONST(METHOD_PATHNAME__SST), ACPI_SST_WORKING);
     return_ACPI_STATUS (Status);
 }

Index: src/sys/external/bsd/acpica/dist/include/acdisasm.h
diff -u src/sys/external/bsd/acpica/dist/include/acdisasm.h:1.25 src/sys/external/bsd/acpica/dist/include/acdisasm.h:1.26
--- src/sys/external/bsd/acpica/dist/include/acdisasm.h:1.25	Sat Aug 27 10:04:58 2022
+++ src/sys/external/bsd/acpica/dist/include/acdisasm.h	Sat Dec 10 12:40:50 2022
@@ -152,6 +152,7 @@ typedef enum
     ACPI_DMT_AEST_XRUPT,
     ACPI_DMT_AGDI,
     ACPI_DMT_ASF,
+    ACPI_DMT_CDAT,
     ACPI_DMT_CEDT,
     ACPI_DMT_DMAR,
     ACPI_DMT_DMAR_SCOPE,
@@ -294,6 +295,16 @@ extern ACPI_DMTABLE_INFO        AcpiDmTa
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoBoot[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoBert[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoBgrt[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCcel[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCdatTableHdr[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCdatHeader[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCdat0[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCdat1[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCdat2[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCdat3[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCdat4[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCdat5[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCdatEntries[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCedtHdr[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCedt0[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCedt1[];
@@ -640,6 +651,14 @@ AcpiDmDumpAsf (
     ACPI_TABLE_HEADER       *Table);
 
 void
+AcpiDmDumpCcel (
+    ACPI_TABLE_HEADER       *Table);
+
+void
+AcpiDmDumpCdat (
+    ACPI_TABLE_HEADER       *Table);
+
+void
 AcpiDmDumpCedt (
     ACPI_TABLE_HEADER       *Table);
 
Index: src/sys/external/bsd/acpica/dist/include/acglobal.h
diff -u src/sys/external/bsd/acpica/dist/include/acglobal.h:1.25 src/sys/external/bsd/acpica/dist/include/acglobal.h:1.26
--- src/sys/external/bsd/acpica/dist/include/acglobal.h:1.25	Sat Aug 27 10:04:58 2022
+++ src/sys/external/bsd/acpica/dist/include/acglobal.h	Sat Dec 10 12:40:50 2022
@@ -59,6 +59,7 @@ ACPI_GLOBAL (ACPI_TABLE_LIST,           
 
 ACPI_GLOBAL (ACPI_TABLE_HEADER *,       AcpiGbl_DSDT);
 ACPI_GLOBAL (ACPI_TABLE_HEADER,         AcpiGbl_OriginalDsdtHeader);
+ACPI_INIT_GLOBAL (char *,               AcpiGbl_CDAT, NULL);
 ACPI_INIT_GLOBAL (UINT32,               AcpiGbl_DsdtIndex, ACPI_INVALID_TABLE_INDEX);
 ACPI_INIT_GLOBAL (UINT32,               AcpiGbl_FacsIndex, ACPI_INVALID_TABLE_INDEX);
 ACPI_INIT_GLOBAL (UINT32,               AcpiGbl_XFacsIndex, ACPI_INVALID_TABLE_INDEX);
Index: src/sys/external/bsd/acpica/dist/include/acutils.h
diff -u src/sys/external/bsd/acpica/dist/include/acutils.h:1.25 src/sys/external/bsd/acpica/dist/include/acutils.h:1.26
--- src/sys/external/bsd/acpica/dist/include/acutils.h:1.25	Sat Aug 27 10:04:58 2022
+++ src/sys/external/bsd/acpica/dist/include/acutils.h	Sat Dec 10 12:40:50 2022
@@ -210,6 +210,31 @@ AcpiUtCheckAndRepairAscii (
 
 
 /*
+ * utcksum - Checksum utilities
+ */
+UINT8
+AcpiUtGenerateChecksum (
+    void                    *Table,
+    UINT32                  Length,
+    UINT8                   OriginalChecksum);
+
+UINT8
+AcpiUtChecksum (
+    UINT8                   *Buffer,
+    UINT32                  Length);
+
+ACPI_STATUS
+AcpiUtVerifyCdatChecksum (
+    ACPI_TABLE_CDAT         *CdatTable,
+    UINT32                  Length);
+
+ACPI_STATUS
+AcpiUtVerifyChecksum (
+    ACPI_TABLE_HEADER       *Table,
+    UINT32                  Length);
+
+
+/*
  * utnonansi - Non-ANSI C library functions
  */
 void

Index: src/sys/external/bsd/acpica/dist/include/acpixf.h
diff -u src/sys/external/bsd/acpica/dist/include/acpixf.h:1.33 src/sys/external/bsd/acpica/dist/include/acpixf.h:1.34
--- src/sys/external/bsd/acpica/dist/include/acpixf.h:1.33	Sat Aug 27 10:04:58 2022
+++ src/sys/external/bsd/acpica/dist/include/acpixf.h	Sat Dec 10 12:40:50 2022
@@ -46,7 +46,7 @@
 
 /* Current ACPICA subsystem version in YYYYMMDD format */
 
-#define ACPI_CA_VERSION                 0x20220331
+#define ACPI_CA_VERSION                 0x20221020
 
 #include "acconfig.h"
 #include "actypes.h"

Index: src/sys/external/bsd/acpica/dist/include/actables.h
diff -u src/sys/external/bsd/acpica/dist/include/actables.h:1.17 src/sys/external/bsd/acpica/dist/include/actables.h:1.18
--- src/sys/external/bsd/acpica/dist/include/actables.h:1.17	Sat Aug 27 10:04:58 2022
+++ src/sys/external/bsd/acpica/dist/include/actables.h	Sat Dec 10 12:40:50 2022
@@ -237,16 +237,6 @@ AcpiTbPrintTableHeader(
     ACPI_PHYSICAL_ADDRESS   Address,
     ACPI_TABLE_HEADER       *Header);
 
-UINT8
-AcpiTbChecksum (
-    UINT8                   *Buffer,
-    UINT32                  Length);
-
-ACPI_STATUS
-AcpiTbVerifyChecksum (
-    ACPI_TABLE_HEADER       *Table,
-    UINT32                  Length);
-
 void
 AcpiTbCheckDsdtHeader (
     void);

Index: src/sys/external/bsd/acpica/dist/include/actbl1.h
diff -u src/sys/external/bsd/acpica/dist/include/actbl1.h:1.20 src/sys/external/bsd/acpica/dist/include/actbl1.h:1.21
--- src/sys/external/bsd/acpica/dist/include/actbl1.h:1.20	Sat Aug 27 10:04:58 2022
+++ src/sys/external/bsd/acpica/dist/include/actbl1.h	Sat Dec 10 12:40:50 2022
@@ -81,6 +81,7 @@
 #define ACPI_SIG_HMAT           "HMAT"      /* Heterogeneous Memory Attributes Table */
 #define ACPI_SIG_HPET           "HPET"      /* High Precision Event Timer table */
 #define ACPI_SIG_IBFT           "IBFT"      /* iSCSI Boot Firmware Table */
+#define ACPI_SIG_MSCT           "MSCT"      /* Maximum System Characteristics Table*/
 
 #define ACPI_SIG_S3PT           "S3PT"      /* S3 Performance (sub)Table */
 #define ACPI_SIG_PCCS           "PCC"       /* PCC Shared Memory Region */
@@ -386,12 +387,154 @@ typedef struct acpi_table_boot
 } ACPI_TABLE_BOOT;
 
 
+
+/*******************************************************************************
+ *
+ * CDAT - Coherent Device Attribute Table
+ *        Version 1
+ *
+ * Conforms to the "Coherent Device Attribute Table (CDAT) Specification
+ " (Revision 1.01, October 2020.)
+ *
+ ******************************************************************************/
+
+typedef struct acpi_table_cdat
+{
+    UINT32                  Length;                             /* Length of table in bytes, including this header */
+    UINT8                   Revision;                           /* ACPI Specification minor version number */
+    UINT8                   Checksum;                           /* To make sum of entire table == 0 */
+    UINT8                   Reserved[6];
+    UINT32                  Sequence;                           /* Used to detect runtime CDAT table changes */
+
+} ACPI_TABLE_CDAT;
+
+
+/* CDAT common subtable header */
+
+typedef struct acpi_cdat_header
+{
+    UINT8                   Type;
+    UINT8                   Reserved;
+    UINT16                  Length;
+
+} ACPI_CDAT_HEADER;
+
+/* Values for Type field above */
+
+enum AcpiCdatType
+{
+    ACPI_CDAT_TYPE_DSMAS                = 0,
+    ACPI_CDAT_TYPE_DSLBIS               = 1,
+    ACPI_CDAT_TYPE_DSMSCIS              = 2,
+    ACPI_CDAT_TYPE_DSIS                 = 3,
+    ACPI_CDAT_TYPE_DSEMTS               = 4,
+    ACPI_CDAT_TYPE_SSLBIS               = 5,
+    ACPI_CDAT_TYPE_RESERVED             = 6   /* 6 through 0xFF are reserved */
+};
+
+
+/* Subtable 0: Device Scoped Memory Affinity Structure (DSMAS) */
+
+typedef struct acpi_cadt_dsmas
+{
+    UINT8                   DsmadHandle;
+    UINT8                   Flags;
+    UINT16                  Reserved;
+    UINT64                  DpaBaseAddress;
+    UINT64                  DpaLength;
+
+} ACPI_CDAT_DSMAS;
+
+/* Flags for subtable above */
+
+#define ACPI_CEDT_DSMAS_NON_VOLATILE        (1 << 2)
+
+
+/* Subtable 1: Device scoped Latency and Bandwidth Information Structure (DSLBIS) */
+
+typedef struct acpi_cdat_dslbis
+{
+    UINT8                   Handle;
+    UINT8                   Flags; /* If Handle matches a DSMAS handle, the definition of this field matches
+                                    * Flags field in HMAT System Locality Latency */
+    UINT8                   DataType;
+    UINT8                   Reserved;
+    UINT64                  EntryBaseUnit;
+    UINT16                  Entry[3];
+    UINT16                  Reserved2;
+
+} ACPI_CDAT_DSLBIS;
+
+
+/* Subtable 2: Device Scoped Memory Side Cache Information Structure (DSMSCIS) */
+
+typedef struct acpi_cdat_dsmscis
+{
+    UINT8                   DsmasHandle;
+    UINT8                   Reserved[3];
+    UINT64                  SideCacheSize;
+    UINT32                  CacheAttributes;
+
+} ACPI_CDAT_DSMSCIS;
+
+
+/* Subtable 3: Device Scoped Initiator Structure (DSIS) */
+
+typedef struct acpi_cdat_dsis
+{
+    UINT8                   Flags;
+    UINT8                   Handle;
+    UINT16                  Reserved;
+
+} ACPI_CDAT_DSIS;
+
+/* Flags for above subtable */
+
+#define ACPI_CDAT_DSIS_MEM_ATTACHED         (1 << 0)
+
+
+/* Subtable 4: Device Scoped EFI Memory Type Structure (DSEMTS) */
+
+typedef struct acpi_cdat_dsemts
+{
+    UINT8                   DsmasHandle;
+    UINT8                   MemoryType;
+    UINT16                  Reserved;
+    UINT64                  DpaOffset;
+    UINT64                  RangeLength;
+
+} ACPI_CDAT_DSEMTS;
+
+
+/* Subtable 5: Switch Scoped Latency and Bandwidth Information Structure (SSLBIS) */
+
+typedef struct acpi_cdat_sslbis
+{
+    UINT8                   DataType;
+    UINT8                   Reserved[3];
+    UINT64                  EntryBaseUnit;
+
+} ACPI_CDAT_SSLBIS;
+
+
+/* Sub-subtable for above, SslbeEntries field */
+
+typedef struct acpi_cdat_sslbe
+{
+    UINT16                  PortxId;
+    UINT16                  PortyId;
+    UINT16                  LatencyOrBandwidth;
+    UINT16                  Reserved;
+
+} ACPI_CDAT_SSLBE;
+
+
 /*******************************************************************************
  *
  * CEDT - CXL Early Discovery Table
  *        Version 1
  *
- * Conforms to the "CXL Early Discovery Table" (CXL 2.0)
+ * Conforms to the "CXL Early Discovery Table" (CXL 2.0, October 2020)
  *
  ******************************************************************************/
 
@@ -417,7 +560,9 @@ enum AcpiCedtType
 {
     ACPI_CEDT_TYPE_CHBS                 = 0,
     ACPI_CEDT_TYPE_CFMWS                = 1,
-    ACPI_CEDT_TYPE_RESERVED             = 2,
+    ACPI_CEDT_TYPE_CXIMS                = 2,
+    ACPI_CEDT_TYPE_RDPAS                = 3,
+    ACPI_CEDT_TYPE_RESERVED             = 4,
 };
 
 /* Values for version field above */
@@ -475,6 +620,7 @@ typedef struct acpi_cedt_cfmws_target_el
 /* Values for Interleave Arithmetic field above */
 
 #define ACPI_CEDT_CFMWS_ARITHMETIC_MODULO   (0)
+#define ACPI_CEDT_CFMWS_ARITHMETIC_XOR      (1)
 
 /* Values for Restrictions field above */
 
@@ -484,6 +630,35 @@ typedef struct acpi_cedt_cfmws_target_el
 #define ACPI_CEDT_CFMWS_RESTRICT_PMEM       (1<<3)
 #define ACPI_CEDT_CFMWS_RESTRICT_FIXED      (1<<4)
 
+/* 2: CXL XOR Interleave Math Structure */
+
+struct acpi_cedt_cxims {
+    ACPI_CEDT_HEADER        Header;
+    UINT16                  Reserved1;
+    UINT8                   Hbig;
+    UINT8                   NrXormaps;
+    UINT64                  XormapList[];
+};
+
+/* 3: CXL RCEC Downstream Port Association Structure */
+
+struct acpi_cedt_rdpas {
+    ACPI_CEDT_HEADER        Header;
+    UINT8                   Reserved1;
+    UINT16                  Length;
+    UINT16                  Segment;
+    UINT16                  Bdf;
+    UINT8                   Protocol;
+    UINT64                  Address;
+};
+
+/* Masks for bdf field above */
+#define ACPI_CEDT_RDPAS_BUS_MASK            0xff00
+#define ACPI_CEDT_RDPAS_DEVICE_MASK         0x00f8
+#define ACPI_CEDT_RDPAS_FUNCTION_MASK       0x0007
+
+#define ACPI_CEDT_RDPAS_PROTOCOL_IO        (0)
+#define ACPI_CEDT_RDPAS_PROTOCOL_CACHEMEM  (1)
 
 /*******************************************************************************
  *

Index: src/sys/external/bsd/acpica/dist/include/actypes.h
diff -u src/sys/external/bsd/acpica/dist/include/actypes.h:1.27 src/sys/external/bsd/acpica/dist/include/actypes.h:1.28
--- src/sys/external/bsd/acpica/dist/include/actypes.h:1.27	Sat Aug 27 10:04:58 2022
+++ src/sys/external/bsd/acpica/dist/include/actypes.h	Sat Dec 10 12:40:50 2022
@@ -770,7 +770,8 @@ typedef UINT32                          
 #define ACPI_EVENT_POWER_BUTTON         2
 #define ACPI_EVENT_SLEEP_BUTTON         3
 #define ACPI_EVENT_RTC                  4
-#define ACPI_EVENT_MAX                  4
+#define ACPI_EVENT_PCIE_WAKE            5
+#define ACPI_EVENT_MAX                  5
 #define ACPI_NUM_FIXED_EVENTS           ACPI_EVENT_MAX + 1
 
 /*
@@ -1232,6 +1233,13 @@ typedef struct acpi_pcc_info {
     UINT8                           *InternalBuffer;
 } ACPI_PCC_INFO;
 
+/* Special Context data for FFH Opregion (ACPI 6.5) */
+
+typedef struct acpi_ffh_info {
+    UINT64                          Offset;
+    UINT64                          Length;
+} ACPI_FFH_INFO;
+
 typedef
 ACPI_STATUS (*ACPI_ADR_SPACE_SETUP) (
     ACPI_HANDLE                     RegionHandle,

Index: src/sys/external/bsd/acpica/dist/tables/tbdata.c
diff -u src/sys/external/bsd/acpica/dist/tables/tbdata.c:1.18 src/sys/external/bsd/acpica/dist/tables/tbdata.c:1.19
--- src/sys/external/bsd/acpica/dist/tables/tbdata.c:1.18	Sat Aug 27 10:04:58 2022
+++ src/sys/external/bsd/acpica/dist/tables/tbdata.c	Sat Dec 10 12:40:50 2022
@@ -616,7 +616,7 @@ AcpiTbVerifyTempTable (
     {
         /* Verify the checksum */
 
-        Status = AcpiTbVerifyChecksum (TableDesc->Pointer, TableDesc->Length);
+        Status = AcpiUtVerifyChecksum (TableDesc->Pointer, TableDesc->Length);
         if (ACPI_FAILURE (Status))
         {
             ACPI_EXCEPTION ((AE_INFO, AE_NO_MEMORY,
Index: src/sys/external/bsd/acpica/dist/tables/tbfadt.c
diff -u src/sys/external/bsd/acpica/dist/tables/tbfadt.c:1.18 src/sys/external/bsd/acpica/dist/tables/tbfadt.c:1.19
--- src/sys/external/bsd/acpica/dist/tables/tbfadt.c:1.18	Sat Aug 27 10:04:58 2022
+++ src/sys/external/bsd/acpica/dist/tables/tbfadt.c	Sat Dec 10 12:40:50 2022
@@ -364,7 +364,7 @@ AcpiTbParseFadt (
      * Validate the FADT checksum before we copy the table. Ignore
      * checksum error as we want to try to get the DSDT and FACS.
      */
-    (void) AcpiTbVerifyChecksum (Table, Length);
+    (void) AcpiUtVerifyChecksum (Table, Length);
 
     /* Create a local copy of the FADT in common ACPI 2.0+ format */
 

Index: src/sys/external/bsd/acpica/dist/tables/tbutils.c
diff -u src/sys/external/bsd/acpica/dist/tables/tbutils.c:1.20 src/sys/external/bsd/acpica/dist/tables/tbutils.c:1.21
--- src/sys/external/bsd/acpica/dist/tables/tbutils.c:1.20	Sat Aug 27 10:04:58 2022
+++ src/sys/external/bsd/acpica/dist/tables/tbutils.c	Sat Dec 10 12:40:50 2022
@@ -363,7 +363,7 @@ AcpiTbParseRootTable (
 
     /* Validate the root table checksum */
 
-    Status = AcpiTbVerifyChecksum (Table, Length);
+    Status = AcpiUtVerifyChecksum (Table, Length);
     if (ACPI_FAILURE (Status))
     {
         AcpiOsUnmapMemory (Table, Length);

Index: src/sys/external/bsd/acpica/dist/tables/tbxfroot.c
diff -u src/sys/external/bsd/acpica/dist/tables/tbxfroot.c:1.14 src/sys/external/bsd/acpica/dist/tables/tbxfroot.c:1.15
--- src/sys/external/bsd/acpica/dist/tables/tbxfroot.c:1.14	Sat Aug 27 10:04:58 2022
+++ src/sys/external/bsd/acpica/dist/tables/tbxfroot.c	Sat Dec 10 12:40:50 2022
@@ -119,7 +119,7 @@ AcpiTbValidateRsdp (
 
     /* Check the standard checksum */
 
-    if (AcpiTbChecksum ((UINT8 *) Rsdp, ACPI_RSDP_CHECKSUM_LENGTH) != 0)
+    if (AcpiUtChecksum ((UINT8 *) Rsdp, ACPI_RSDP_CHECKSUM_LENGTH) != 0)
     {
         return (AE_BAD_CHECKSUM);
     }
@@ -127,7 +127,7 @@ AcpiTbValidateRsdp (
     /* Check extended checksum if table version >= 2 */
 
     if ((Rsdp->Revision >= 2) &&
-        (AcpiTbChecksum ((UINT8 *) Rsdp, ACPI_RSDP_XCHECKSUM_LENGTH) != 0))
+        (AcpiUtChecksum ((UINT8 *) Rsdp, ACPI_RSDP_XCHECKSUM_LENGTH) != 0))
     {
         return (AE_BAD_CHECKSUM);
     }
@@ -163,6 +163,7 @@ AcpiFindRootPointer (
     UINT8                   *TablePtr;
     UINT8                   *MemRover;
     UINT32                  PhysicalAddress;
+    UINT32                  EbdaWindowSize;
 
 
     ACPI_FUNCTION_TRACE (AcpiFindRootPointer);
@@ -191,27 +192,40 @@ AcpiFindRootPointer (
 
     /* EBDA present? */
 
-    if (PhysicalAddress > 0x400)
+    /*
+     * Check that the EBDA pointer from memory is sane and does not point
+     * above valid low memory
+     */
+    if (PhysicalAddress > 0x400 &&
+        PhysicalAddress < 0xA0000)
     {
         /*
-         * 1b) Search EBDA paragraphs (EBDA is required to be a
-         *     minimum of 1K length)
+         * Calculate the scan window size
+         * The EBDA is not guaranteed to be larger than a KiB and in case
+         * that it is smaller, the scanning function would leave the low
+         * memory and continue to the VGA range.
+         */
+        EbdaWindowSize = ACPI_MIN(ACPI_EBDA_WINDOW_SIZE,
+            0xA0000 - PhysicalAddress);
+
+        /*
+         * 1b) Search EBDA paragraphs
          */
         TablePtr = AcpiOsMapMemory (
             (ACPI_PHYSICAL_ADDRESS) PhysicalAddress,
-            ACPI_EBDA_WINDOW_SIZE);
+            EbdaWindowSize);
         if (!TablePtr)
         {
             ACPI_ERROR ((AE_INFO,
                 "Could not map memory at 0x%8.8X for length %u",
-                PhysicalAddress, ACPI_EBDA_WINDOW_SIZE));
+                PhysicalAddress, EbdaWindowSize));
 
             return_ACPI_STATUS (AE_NO_MEMORY);
         }
 
         MemRover = AcpiTbScanMemoryForRsdp (
-            TablePtr, ACPI_EBDA_WINDOW_SIZE);
-        AcpiOsUnmapMemory (TablePtr, ACPI_EBDA_WINDOW_SIZE);
+            TablePtr, EbdaWindowSize);
+        AcpiOsUnmapMemory (TablePtr, EbdaWindowSize);
 
         if (MemRover)
         {

Index: src/sys/external/bsd/acpica/dist/tools/acpixtract/acpixtract.c
diff -u src/sys/external/bsd/acpica/dist/tools/acpixtract/acpixtract.c:1.15 src/sys/external/bsd/acpica/dist/tools/acpixtract/acpixtract.c:1.16
--- src/sys/external/bsd/acpica/dist/tools/acpixtract/acpixtract.c:1.15	Sat Aug 27 10:04:59 2022
+++ src/sys/external/bsd/acpica/dist/tools/acpixtract/acpixtract.c	Sat Dec 10 12:40:50 2022
@@ -453,7 +453,7 @@ AxListAllTables (
     FILE                    *InputFile;
     unsigned char           Header[48];
     UINT32                  ByteCount = 0;
-    UINT32                  ThisLineByteCount;
+    INT32                   ThisLineByteCount;
     unsigned int            State = AX_STATE_FIND_HEADER;
 
 

Index: src/sys/external/bsd/acpica/dist/utilities/utglobal.c
diff -u src/sys/external/bsd/acpica/dist/utilities/utglobal.c:1.15 src/sys/external/bsd/acpica/dist/utilities/utglobal.c:1.16
--- src/sys/external/bsd/acpica/dist/utilities/utglobal.c:1.15	Sat Aug 27 10:04:59 2022
+++ src/sys/external/bsd/acpica/dist/utilities/utglobal.c	Sat Dec 10 12:40:50 2022
@@ -179,6 +179,7 @@ ACPI_FIXED_EVENT_INFO       AcpiGbl_Fixe
     /* ACPI_EVENT_POWER_BUTTON  */  {ACPI_BITREG_POWER_BUTTON_STATUS,   ACPI_BITREG_POWER_BUTTON_ENABLE, ACPI_BITMASK_POWER_BUTTON_STATUS,   ACPI_BITMASK_POWER_BUTTON_ENABLE},
     /* ACPI_EVENT_SLEEP_BUTTON  */  {ACPI_BITREG_SLEEP_BUTTON_STATUS,   ACPI_BITREG_SLEEP_BUTTON_ENABLE, ACPI_BITMASK_SLEEP_BUTTON_STATUS,   ACPI_BITMASK_SLEEP_BUTTON_ENABLE},
     /* ACPI_EVENT_RTC           */  {ACPI_BITREG_RT_CLOCK_STATUS,       ACPI_BITREG_RT_CLOCK_ENABLE,     ACPI_BITMASK_RT_CLOCK_STATUS,       ACPI_BITMASK_RT_CLOCK_ENABLE},
+    /* ACPI_EVENT_PCIE_WAKE     */  {ACPI_BITREG_PCIEXP_WAKE_STATUS,    ACPI_BITREG_PCIEXP_WAKE_DISABLE, ACPI_BITMASK_PCIEXP_WAKE_STATUS,    ACPI_BITMASK_PCIEXP_WAKE_DISABLE},
 };
 #endif /* !ACPI_REDUCED_HARDWARE */
 

Reply via email to