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