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 */