Module Name: src Committed By: christos Date: Sat Dec 18 17:58:49 UTC 2021
Modified Files: src/sys/external/bsd/acpica/dist/common: dmtbinfo.c src/sys/external/bsd/acpica/dist/compiler: aslfiles.c aslutils.c dttable.c dtutils.c src/sys/external/bsd/acpica/dist/dispatcher: dsopcode.c src/sys/external/bsd/acpica/dist/events: evregion.c evrgnini.c src/sys/external/bsd/acpica/dist/executer: exconfig.c exdebug.c src/sys/external/bsd/acpica/dist/include: acapps.h acdisasm.h acpixf.h actables.h actypes.h src/sys/external/bsd/acpica/dist/resources: rsdumpinfo.c src/sys/external/bsd/acpica/dist/tables: tbdata.c tbfadt.c tbinstal.c tbutils.c tbxfload.c src/sys/external/bsd/acpica/dist/utilities: utdelete.c Log Message: merge changes from acpica-20210930 to acpica-20211217 To generate a diff of this commit: cvs rdiff -u -r1.19 -r1.20 src/sys/external/bsd/acpica/dist/common/dmtbinfo.c cvs rdiff -u -r1.17 -r1.18 \ src/sys/external/bsd/acpica/dist/compiler/aslfiles.c cvs rdiff -u -r1.30 -r1.31 \ src/sys/external/bsd/acpica/dist/compiler/aslutils.c cvs rdiff -u -r1.15 -r1.16 \ src/sys/external/bsd/acpica/dist/compiler/dttable.c cvs rdiff -u -r1.18 -r1.19 \ src/sys/external/bsd/acpica/dist/compiler/dtutils.c cvs rdiff -u -r1.16 -r1.17 \ src/sys/external/bsd/acpica/dist/dispatcher/dsopcode.c cvs rdiff -u -r1.13 -r1.14 src/sys/external/bsd/acpica/dist/events/evregion.c cvs rdiff -u -r1.18 -r1.19 src/sys/external/bsd/acpica/dist/events/evrgnini.c cvs rdiff -u -r1.17 -r1.18 \ src/sys/external/bsd/acpica/dist/executer/exconfig.c cvs rdiff -u -r1.14 -r1.15 \ src/sys/external/bsd/acpica/dist/executer/exdebug.c cvs rdiff -u -r1.17 -r1.18 src/sys/external/bsd/acpica/dist/include/acapps.h cvs rdiff -u -r1.23 -r1.24 \ src/sys/external/bsd/acpica/dist/include/acdisasm.h cvs rdiff -u -r1.31 -r1.32 src/sys/external/bsd/acpica/dist/include/acpixf.h cvs rdiff -u -r1.15 -r1.16 \ src/sys/external/bsd/acpica/dist/include/actables.h cvs rdiff -u -r1.25 -r1.26 src/sys/external/bsd/acpica/dist/include/actypes.h cvs rdiff -u -r1.12 -r1.13 \ src/sys/external/bsd/acpica/dist/resources/rsdumpinfo.c cvs rdiff -u -r1.16 -r1.17 src/sys/external/bsd/acpica/dist/tables/tbdata.c \ src/sys/external/bsd/acpica/dist/tables/tbfadt.c \ src/sys/external/bsd/acpica/dist/tables/tbinstal.c cvs rdiff -u -r1.18 -r1.19 src/sys/external/bsd/acpica/dist/tables/tbutils.c cvs rdiff -u -r1.14 -r1.15 src/sys/external/bsd/acpica/dist/tables/tbxfload.c cvs rdiff -u -r1.7 -r1.8 \ src/sys/external/bsd/acpica/dist/utilities/utdelete.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/dist/common/dmtbinfo.c diff -u src/sys/external/bsd/acpica/dist/common/dmtbinfo.c:1.19 src/sys/external/bsd/acpica/dist/common/dmtbinfo.c:1.20 --- src/sys/external/bsd/acpica/dist/common/dmtbinfo.c:1.19 Sat Apr 3 13:45:02 2021 +++ src/sys/external/bsd/acpica/dist/common/dmtbinfo.c Sat Dec 18 12:58:48 2021 @@ -184,7 +184,7 @@ ACPI_DMTABLE_INFO AcpiDmTableI ACPI_DMTABLE_INFO AcpiDmTableInfoFadt1[] = { {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Facs), "FACS Address", 0}, - {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Dsdt), "DSDT Address", DT_NON_ZERO}, + {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Dsdt), "DSDT Address", 0}, {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (Model), "Model", 0}, {ACPI_DMT_FADTPM, ACPI_FADT_OFFSET (PreferredProfile), "PM Profile", 0}, {ACPI_DMT_UINT16, ACPI_FADT_OFFSET (SciInterrupt), "SCI Interrupt", 0}, @@ -300,7 +300,7 @@ ACPI_DMTABLE_INFO AcpiDmTableI ACPI_DMT_TERMINATOR }; -/* ACPI 5.0 Extensions (FADT version 5) */ +/* Extensions for FADT version 5 */ ACPI_DMTABLE_INFO AcpiDmTableInfoFadt5[] = { @@ -309,7 +309,7 @@ ACPI_DMTABLE_INFO AcpiDmTableI ACPI_DMT_TERMINATOR }; -/* ACPI 6.0 Extensions (FADT version 6) */ +/* Extensions for FADT version 6 */ ACPI_DMTABLE_INFO AcpiDmTableInfoFadt6[] = { Index: src/sys/external/bsd/acpica/dist/compiler/aslfiles.c diff -u src/sys/external/bsd/acpica/dist/compiler/aslfiles.c:1.17 src/sys/external/bsd/acpica/dist/compiler/aslfiles.c:1.18 --- src/sys/external/bsd/acpica/dist/compiler/aslfiles.c:1.17 Sat Apr 3 13:45:02 2021 +++ src/sys/external/bsd/acpica/dist/compiler/aslfiles.c Sat Dec 18 12:58:48 2021 @@ -727,8 +727,8 @@ ErrorExit: * RETURN: Status * * DESCRIPTION: Open the specified input file, and save the directory path to - * the file so that include files can be opened in - * the same directory. + * the file so that include files can be opened in the same + * directory. NOTE: File is opened in text mode. * ******************************************************************************/ Index: src/sys/external/bsd/acpica/dist/compiler/aslutils.c diff -u src/sys/external/bsd/acpica/dist/compiler/aslutils.c:1.30 src/sys/external/bsd/acpica/dist/compiler/aslutils.c:1.31 --- src/sys/external/bsd/acpica/dist/compiler/aslutils.c:1.30 Thu Oct 28 10:53:08 2021 +++ src/sys/external/bsd/acpica/dist/compiler/aslutils.c Sat Dec 18 12:58:48 2021 @@ -530,7 +530,7 @@ UtDisplayOneSummary ( /* Compiler name and version number */ FlPrintFile (FileId, "%s version %X [%s]\n\n", - ASL_COMPILER_NAME, (UINT32) ACPI_CA_VERSION, "2017-01-19"); + ASL_COMPILER_NAME, (UINT32) ACPI_CA_VERSION, ACPI_DATE); } /* Summary of main input and output files */ Index: src/sys/external/bsd/acpica/dist/compiler/dttable.c diff -u src/sys/external/bsd/acpica/dist/compiler/dttable.c:1.15 src/sys/external/bsd/acpica/dist/compiler/dttable.c:1.16 --- src/sys/external/bsd/acpica/dist/compiler/dttable.c:1.15 Sat Apr 3 13:45:02 2021 +++ src/sys/external/bsd/acpica/dist/compiler/dttable.c Sat Dec 18 12:58:48 2021 @@ -115,10 +115,12 @@ DtCompileRsdp ( * * RETURN: Status * - * DESCRIPTION: Compile FADT. + * DESCRIPTION: Compile FADT (signature FACP). * *****************************************************************************/ +#define ACPI_XDSDT_LOCATION_IN_LIST 11 + ACPI_STATUS DtCompileFadt ( void **List) @@ -127,10 +129,17 @@ DtCompileFadt ( DT_SUBTABLE *Subtable; DT_SUBTABLE *ParentTable; DT_FIELD **PFieldList = (DT_FIELD **) List; - ACPI_TABLE_HEADER *Table; + DT_FIELD *DsdtFieldList; + ACPI_TABLE_FADT *Table; UINT8 Revision; + UINT32 DsdtAddress; + UINT64 X_DsdtAddress; + UINT32 i; + + /* Get the table revision and 32-bit DSDT Address definition */ + DsdtFieldList = (*PFieldList)->Next; Status = DtCompileTable (PFieldList, AcpiDmTableInfoFadt1, &Subtable); if (ACPI_FAILURE (Status)) @@ -141,8 +150,16 @@ DtCompileFadt ( ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); - Table = ACPI_CAST_PTR (ACPI_TABLE_HEADER, ParentTable->Buffer); - Revision = Table->Revision; + Table = ACPI_CAST_PTR (ACPI_TABLE_FADT, ParentTable->Buffer); + Revision = Table->Header.Revision; + DsdtAddress = Table->Dsdt; + + /* FADT version 1 has only 32-bit addresses - error if DSDT address is NULL */ + + if ((Revision == 1) && (!DsdtAddress)) + { + DtError (ASL_ERROR, ASL_MSG_ZERO_VALUE, DsdtFieldList, NULL); + } if (Revision == 2) { @@ -155,8 +172,24 @@ DtCompileFadt ( DtInsertSubtable (ParentTable, Subtable); } - else if (Revision >= 2) + + else if (Revision > 2) { + /* + * Rev 3 and greater have 64-bit addresses (as well as 32-bit). + * Get the 64-bit DSDT (X_DSDT) Address definition. Note: This + * appears at field list offset 11 within AcpiDmTableInfoFadt3. + */ + DsdtFieldList = *PFieldList; + for (i = 0; i < ACPI_XDSDT_LOCATION_IN_LIST; i++) + { + DsdtFieldList = DsdtFieldList->Next; + if (!DsdtFieldList) + { + return (ASL_MSG_BAD_PARSE_TREE); + } + } + Status = DtCompileTable (PFieldList, AcpiDmTableInfoFadt3, &Subtable); if (ACPI_FAILURE (Status)) @@ -166,6 +199,20 @@ DtCompileFadt ( DtInsertSubtable (ParentTable, Subtable); + Table = ACPI_CAST_PTR (ACPI_TABLE_FADT, ParentTable->Buffer); + X_DsdtAddress = Table->XDsdt; + + /* + * Error if both the 32-bit DSDT address and the + * 64-bit X_DSDT address are zero. + */ + if ((!X_DsdtAddress) && (!DsdtAddress)) + { + DtError (ASL_ERROR, ASL_MSG_TWO_ZERO_VALUES, DsdtFieldList, NULL); + } + + /* Fields specific to FADT Revision 5 (appended to previous) */ + if (Revision >= 5) { Status = DtCompileTable (PFieldList, AcpiDmTableInfoFadt5, @@ -178,6 +225,8 @@ DtCompileFadt ( DtInsertSubtable (ParentTable, Subtable); } + /* Fields specific to FADT Revision 6 (appended to previous) */ + if (Revision >= 6) { Status = DtCompileTable (PFieldList, AcpiDmTableInfoFadt6, Index: src/sys/external/bsd/acpica/dist/compiler/dtutils.c diff -u src/sys/external/bsd/acpica/dist/compiler/dtutils.c:1.18 src/sys/external/bsd/acpica/dist/compiler/dtutils.c:1.19 --- src/sys/external/bsd/acpica/dist/compiler/dtutils.c:1.18 Thu Oct 28 10:53:08 2021 +++ src/sys/external/bsd/acpica/dist/compiler/dtutils.c Sat Dec 18 12:58:48 2021 @@ -329,6 +329,7 @@ DtGetFieldType ( case ACPI_DMT_BUF10: case ACPI_DMT_BUF12: case ACPI_DMT_BUF16: + case ACPI_DMT_BUF18: case ACPI_DMT_BUF128: case ACPI_DMT_PCI_PATH: case ACPI_DMT_PMTT_VENDOR: @@ -475,6 +476,10 @@ DtGetFieldLength ( case ACPI_DMT_MADT: case ACPI_DMT_NHLT1: case ACPI_DMT_NHLT1a: + case ACPI_DMT_NHLT1b: + case ACPI_DMT_NHLT1c: + case ACPI_DMT_NHLT1d: + case ACPI_DMT_NHLT1f: case ACPI_DMT_PCCT: case ACPI_DMT_PMTT: case ACPI_DMT_PPTT: @@ -503,6 +508,7 @@ DtGetFieldLength ( case ACPI_DMT_HEST: case ACPI_DMT_HMAT: case ACPI_DMT_NFIT: + case ACPI_DMT_NHLT1e: case ACPI_DMT_PCI_PATH: case ACPI_DMT_PHAT: @@ -574,7 +580,7 @@ DtGetFieldLength ( else { /* At this point, this is a fatal error */ - sprintf (AslGbl_MsgBuffer, "Expected \"%s\"", Info->Name); + snprintf (AslGbl_MsgBuffer, sizeof(AslGbl_MsgBuffer), "Expected \"%s\"", Info->Name); DtFatal (ASL_MSG_COMPILER_INTERNAL, NULL, AslGbl_MsgBuffer); return (0); } @@ -629,6 +635,11 @@ DtGetFieldLength ( ByteLength = 16; break; + case ACPI_DMT_BUF18: + + ByteLength = 18; + break; + case ACPI_DMT_BUF128: ByteLength = 128; Index: src/sys/external/bsd/acpica/dist/dispatcher/dsopcode.c diff -u src/sys/external/bsd/acpica/dist/dispatcher/dsopcode.c:1.16 src/sys/external/bsd/acpica/dist/dispatcher/dsopcode.c:1.17 --- src/sys/external/bsd/acpica/dist/dispatcher/dsopcode.c:1.16 Sat Apr 3 13:45:02 2021 +++ src/sys/external/bsd/acpica/dist/dispatcher/dsopcode.c Sat Dec 18 12:58:48 2021 @@ -599,6 +599,7 @@ AcpiDsEvalTableRegionOperands ( ObjDesc->Region.Address = ACPI_PTR_TO_PHYSADDR (Table); ObjDesc->Region.Length = Table->Length; + ObjDesc->Region.Pointer = Table; ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "RgnObj %p Addr %8.8X%8.8X Len %X\n", ObjDesc, ACPI_FORMAT_UINT64 (ObjDesc->Region.Address), Index: src/sys/external/bsd/acpica/dist/events/evregion.c diff -u src/sys/external/bsd/acpica/dist/events/evregion.c:1.13 src/sys/external/bsd/acpica/dist/events/evregion.c:1.14 --- src/sys/external/bsd/acpica/dist/events/evregion.c:1.13 Sat Apr 3 13:45:02 2021 +++ src/sys/external/bsd/acpica/dist/events/evregion.c Sat Dec 18 12:58:49 2021 @@ -212,6 +212,15 @@ AcpiEvAddressSpaceDispatch ( return_ACPI_STATUS (AE_NOT_EXIST); } + if (RegionObj->Region.SpaceId == ACPI_ADR_SPACE_PLATFORM_COMM) + { + ACPI_PCC_INFO *Ctx = HandlerDesc->AddressSpace.Context; + + Ctx->InternalBuffer = FieldObj->Field.InternalPccBuffer; + Ctx->Length = (UINT16) RegionObj->Region.Length; + Ctx->SubspaceId = (UINT8) 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/events/evrgnini.c diff -u src/sys/external/bsd/acpica/dist/events/evrgnini.c:1.18 src/sys/external/bsd/acpica/dist/events/evrgnini.c:1.19 --- src/sys/external/bsd/acpica/dist/events/evrgnini.c:1.18 Sat Apr 3 13:45:02 2021 +++ src/sys/external/bsd/acpica/dist/events/evrgnini.c Sat Dec 18 12:58:49 2021 @@ -493,6 +493,64 @@ AcpiEvCmosRegionSetup ( /******************************************************************************* * + * FUNCTION: AcpiEvDataTableRegionSetup + * + * PARAMETERS: Handle - Region we are interested in + * Function - Start or stop + * HandlerContext - Address space handler context + * RegionContext - Region specific context + * + * RETURN: Status + * + * DESCRIPTION: Setup a DataTableRegion + * + * MUTEX: Assumes namespace is not locked + * + ******************************************************************************/ + +ACPI_STATUS +AcpiEvDataTableRegionSetup ( + ACPI_HANDLE Handle, + UINT32 Function, + void *HandlerContext, + void **RegionContext) +{ + ACPI_OPERAND_OBJECT *RegionDesc = (ACPI_OPERAND_OBJECT *) Handle; + ACPI_DATA_TABLE_MAPPING *LocalRegionContext; + + + ACPI_FUNCTION_TRACE (EvDataTableRegionSetup); + + + if (Function == ACPI_REGION_DEACTIVATE) + { + if (*RegionContext) + { + ACPI_FREE (*RegionContext); + *RegionContext = NULL; + } + return_ACPI_STATUS (AE_OK); + } + + /* Create a new context */ + + LocalRegionContext = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_DATA_TABLE_MAPPING)); + if (!(LocalRegionContext)) + { + return_ACPI_STATUS (AE_NO_MEMORY); + } + + /* Save the data table pointer for use in the handler */ + + LocalRegionContext->Pointer = RegionDesc->Region.Pointer; + + *RegionContext = LocalRegionContext; + return_ACPI_STATUS (AE_OK); +} + + +/******************************************************************************* + * * FUNCTION: AcpiEvDefaultRegionSetup * * PARAMETERS: Handle - Region we are interested in Index: src/sys/external/bsd/acpica/dist/executer/exconfig.c diff -u src/sys/external/bsd/acpica/dist/executer/exconfig.c:1.17 src/sys/external/bsd/acpica/dist/executer/exconfig.c:1.18 --- src/sys/external/bsd/acpica/dist/executer/exconfig.c:1.17 Sat Apr 3 13:45:03 2021 +++ src/sys/external/bsd/acpica/dist/executer/exconfig.c Sat Dec 18 12:58:49 2021 @@ -487,7 +487,7 @@ AcpiExLoadOp ( ACPI_INFO (("Dynamic OEM Table Load:")); AcpiExExitInterpreter (); Status = AcpiTbInstallAndLoadTable (ACPI_PTR_TO_PHYSADDR (Table), - ACPI_TABLE_ORIGIN_INTERNAL_VIRTUAL, TRUE, &TableIndex); + ACPI_TABLE_ORIGIN_INTERNAL_VIRTUAL, Table, TRUE, &TableIndex); AcpiExEnterInterpreter (); if (ACPI_FAILURE (Status)) { Index: src/sys/external/bsd/acpica/dist/executer/exdebug.c diff -u src/sys/external/bsd/acpica/dist/executer/exdebug.c:1.14 src/sys/external/bsd/acpica/dist/executer/exdebug.c:1.15 --- src/sys/external/bsd/acpica/dist/executer/exdebug.c:1.14 Sat Apr 3 13:45:03 2021 +++ src/sys/external/bsd/acpica/dist/executer/exdebug.c Sat Dec 18 12:58:49 2021 @@ -66,9 +66,10 @@ * * This function is not compiled if ACPI_NO_ERROR_MESSAGES is set. * - * This function is only enabled if AcpiGbl_EnableAmlDebugObject is set. - * Thus, in the normal operational case, stores to the debug object are - * ignored but can be easily enabled if necessary. + * This function is only enabled if AcpiGbl_EnableAmlDebugObject is set, or + * if ACPI_LV_DEBUG_OBJECT is set in the AcpiDbgLevel. Thus, in the normal + * operational case, stores to the debug object are ignored but can be easily + * enabled if necessary. * ******************************************************************************/ @@ -87,9 +88,10 @@ AcpiExDoDebugObject ( ACPI_FUNCTION_TRACE_PTR (ExDoDebugObject, SourceDesc); - /* Output must be enabled via the DebugObject global */ + /* Output must be enabled via the DebugObject global or the DbgLevel */ - if (!AcpiGbl_EnableAmlDebugObject) + if (!AcpiGbl_EnableAmlDebugObject && + !(AcpiDbgLevel & ACPI_LV_DEBUG_OBJECT)) { return_VOID; } Index: src/sys/external/bsd/acpica/dist/include/acapps.h diff -u src/sys/external/bsd/acpica/dist/include/acapps.h:1.17 src/sys/external/bsd/acpica/dist/include/acapps.h:1.18 --- src/sys/external/bsd/acpica/dist/include/acapps.h:1.17 Sat Apr 3 13:45:03 2021 +++ src/sys/external/bsd/acpica/dist/include/acapps.h Sat Dec 18 12:58:49 2021 @@ -67,7 +67,7 @@ /* Macros for signons and file headers */ #ifdef ACPI_REPRO -#define ACPI_DATE "18 Dec 2013" +#define ACPI_DATE "18 Dec 2021" #define ACPI_TIME "00:00:00" #else #define ACPI_DATE __DATE__ Index: src/sys/external/bsd/acpica/dist/include/acdisasm.h diff -u src/sys/external/bsd/acpica/dist/include/acdisasm.h:1.23 src/sys/external/bsd/acpica/dist/include/acdisasm.h:1.24 --- src/sys/external/bsd/acpica/dist/include/acdisasm.h:1.23 Thu Oct 28 10:53:09 2021 +++ src/sys/external/bsd/acpica/dist/include/acdisasm.h Sat Dec 18 12:58:49 2021 @@ -149,6 +149,7 @@ typedef enum ACPI_DMT_AEST_RES, ACPI_DMT_AEST_XFACE, ACPI_DMT_AEST_XRUPT, + ACPI_DMT_AGDI, ACPI_DMT_ASF, ACPI_DMT_CEDT, ACPI_DMT_DMAR, @@ -172,6 +173,11 @@ typedef enum ACPI_DMT_NFIT, ACPI_DMT_NHLT1, ACPI_DMT_NHLT1a, + ACPI_DMT_NHLT1b, + ACPI_DMT_NHLT1c, + ACPI_DMT_NHLT1d, + ACPI_DMT_NHLT1e, + ACPI_DMT_NHLT1f, ACPI_DMT_PCCT, ACPI_DMT_PHAT, ACPI_DMT_PMTT, @@ -273,6 +279,7 @@ extern ACPI_DMTABLE_INFO AcpiDmTa extern ACPI_DMTABLE_INFO AcpiDmTableInfoAestGicError[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoAestXface[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoAestXrupt[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoAgdi[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoAsf0[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoAsf1[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoAsf1a[]; @@ -451,9 +458,13 @@ extern ACPI_DMTABLE_INFO AcpiDmTa extern ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt5b[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt5c[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt6[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt6a[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt6b[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt7[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt7a[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt7b[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt8[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt9[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoPhatHdr[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoPhat0[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoPhat0a[]; @@ -527,6 +538,7 @@ extern ACPI_DMTABLE_INFO AcpiDmTa extern ACPI_DMTABLE_INFO AcpiDmTableInfoTcpaHdr[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoTcpaClient[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoTcpaServer[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoTdel[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoTpm2[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoTpm2a[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoTpm211[]; @@ -775,6 +787,10 @@ AcpiDmDumpTcpa ( ACPI_TABLE_HEADER *Table); void +AcpiDmDumpTdel ( + ACPI_TABLE_HEADER *Table); + +void AcpiDmDumpTpm2 ( ACPI_TABLE_HEADER *Table); Index: src/sys/external/bsd/acpica/dist/include/acpixf.h diff -u src/sys/external/bsd/acpica/dist/include/acpixf.h:1.31 src/sys/external/bsd/acpica/dist/include/acpixf.h:1.32 --- src/sys/external/bsd/acpica/dist/include/acpixf.h:1.31 Thu Oct 28 10:53:09 2021 +++ src/sys/external/bsd/acpica/dist/include/acpixf.h Sat Dec 18 12:58:49 2021 @@ -46,7 +46,7 @@ /* Current ACPICA subsystem version in YYYYMMDD format */ -#define ACPI_CA_VERSION 0x20210930 +#define ACPI_CA_VERSION 0x20211217 #include "acconfig.h" #include "actypes.h" @@ -550,8 +550,12 @@ AcpiDecodePldBuffer ( ACPI_EXTERNAL_RETURN_STATUS ( ACPI_STATUS ACPI_INIT_FUNCTION AcpiInstallTable ( - ACPI_PHYSICAL_ADDRESS Address, - BOOLEAN Physical)) + ACPI_TABLE_HEADER *Table)) + +ACPI_EXTERNAL_RETURN_STATUS ( +ACPI_STATUS ACPI_INIT_FUNCTION +AcpiInstallPhysicalTable ( + ACPI_PHYSICAL_ADDRESS Address)) ACPI_EXTERNAL_RETURN_STATUS ( ACPI_STATUS Index: src/sys/external/bsd/acpica/dist/include/actables.h diff -u src/sys/external/bsd/acpica/dist/include/actables.h:1.15 src/sys/external/bsd/acpica/dist/include/actables.h:1.16 --- src/sys/external/bsd/acpica/dist/include/actables.h:1.15 Sat Apr 3 13:45:03 2021 +++ src/sys/external/bsd/acpica/dist/include/actables.h Sat Dec 18 12:58:49 2021 @@ -85,7 +85,8 @@ ACPI_STATUS AcpiTbAcquireTempTable ( ACPI_TABLE_DESC *TableDesc, ACPI_PHYSICAL_ADDRESS Address, - UINT8 Flags); + UINT8 Flags, + ACPI_TABLE_HEADER *Table); void AcpiTbReleaseTempTable ( @@ -171,6 +172,7 @@ ACPI_STATUS AcpiTbInstallStandardTable ( ACPI_PHYSICAL_ADDRESS Address, UINT8 Flags, + ACPI_TABLE_HEADER *Table, BOOLEAN Reload, BOOLEAN Override, UINT32 *TableIndex); @@ -188,6 +190,7 @@ ACPI_STATUS AcpiTbInstallAndLoadTable ( ACPI_PHYSICAL_ADDRESS Address, UINT8 Flags, + ACPI_TABLE_HEADER *Table, BOOLEAN Override, UINT32 *TableIndex); Index: src/sys/external/bsd/acpica/dist/include/actypes.h diff -u src/sys/external/bsd/acpica/dist/include/actypes.h:1.25 src/sys/external/bsd/acpica/dist/include/actypes.h:1.26 --- src/sys/external/bsd/acpica/dist/include/actypes.h:1.25 Thu Oct 28 10:53:09 2021 +++ src/sys/external/bsd/acpica/dist/include/actypes.h Sat Dec 18 12:58:49 2021 @@ -1216,6 +1216,13 @@ typedef struct acpi_connection_info } ACPI_CONNECTION_INFO; +/* Special Context data for PCC Opregion (ACPI 6.3) */ + +typedef struct acpi_pcc_info { + UINT8 SubspaceId; + UINT16 Length; + UINT8 *InternalBuffer; +} ACPI_PCC_INFO; typedef ACPI_STATUS (*ACPI_ADR_SPACE_SETUP) ( @@ -1355,6 +1362,11 @@ typedef struct acpi_mem_space_context } ACPI_MEM_SPACE_CONTEXT; +typedef struct acpi_data_table_space_context +{ + void *Pointer; + +} ACPI_DATA_TABLE_MAPPING; /* * ACPI_MEMORY_LIST is used only if the ACPICA local cache is enabled Index: src/sys/external/bsd/acpica/dist/resources/rsdumpinfo.c diff -u src/sys/external/bsd/acpica/dist/resources/rsdumpinfo.c:1.12 src/sys/external/bsd/acpica/dist/resources/rsdumpinfo.c:1.13 --- src/sys/external/bsd/acpica/dist/resources/rsdumpinfo.c:1.12 Sat Apr 3 13:45:04 2021 +++ src/sys/external/bsd/acpica/dist/resources/rsdumpinfo.c Sat Dec 18 12:58:49 2021 @@ -410,20 +410,18 @@ ACPI_RSDUMP_INFO AcpiRsDumpGenera {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Address.MaxAddressFixed), "Max Relocatability", AcpiGbl_MaxDecode} }; -static const char *AcpiGbl_MemoryRange[] = { "Memory Range" }; ACPI_RSDUMP_INFO AcpiRsDumpMemoryFlags[5] = { - {ACPI_RSD_LITERAL, ACPI_RSD_TABLE_SIZE (AcpiRsDumpMemoryFlags), "Resource Type", AcpiGbl_MemoryRange}, + {ACPI_RSD_LITERAL, ACPI_RSD_TABLE_SIZE (AcpiRsDumpMemoryFlags), "Resource Type", __UNCONST("Memory Range")}, {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Address.Info.Mem.WriteProtect), "Write Protect", AcpiGbl_RwDecode}, {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Address.Info.Mem.Caching), "Caching", AcpiGbl_MemDecode}, {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Address.Info.Mem.RangeType), "Range Type", AcpiGbl_MtpDecode}, {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Address.Info.Mem.Translation), "Translation", AcpiGbl_TtpDecode} }; -static const char *AcpiGbl_IORange[] = { "I/O Range" }; ACPI_RSDUMP_INFO AcpiRsDumpIoFlags[4] = { - {ACPI_RSD_LITERAL, ACPI_RSD_TABLE_SIZE (AcpiRsDumpIoFlags), "Resource Type", AcpiGbl_IORange }, + {ACPI_RSD_LITERAL, ACPI_RSD_TABLE_SIZE (AcpiRsDumpIoFlags), "Resource Type", __UNCONST("I/O Range")}, {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Address.Info.Io.RangeType), "Range Type", AcpiGbl_RngDecode}, {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Address.Info.Io.Translation), "Translation", AcpiGbl_TtpDecode}, {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Address.Info.Io.TranslationType), "Translation Type", AcpiGbl_TrsDecode} Index: src/sys/external/bsd/acpica/dist/tables/tbdata.c diff -u src/sys/external/bsd/acpica/dist/tables/tbdata.c:1.16 src/sys/external/bsd/acpica/dist/tables/tbdata.c:1.17 --- src/sys/external/bsd/acpica/dist/tables/tbdata.c:1.16 Sat Apr 3 13:45:04 2021 +++ src/sys/external/bsd/acpica/dist/tables/tbdata.c Sat Dec 18 12:58:49 2021 @@ -135,14 +135,28 @@ AcpiTbInitTableDescriptor ( { /* - * Initialize the table descriptor. Set the pointer to NULL, since the - * table is not fully mapped at this time. + * Initialize the table descriptor. Set the pointer to NULL for external + * tables, since the table is not fully mapped at this time. */ memset (TableDesc, 0, sizeof (ACPI_TABLE_DESC)); TableDesc->Address = Address; TableDesc->Length = Table->Length; TableDesc->Flags = Flags; ACPI_MOVE_32_TO_32 (TableDesc->Signature.Ascii, Table->Signature); + + switch (TableDesc->Flags & ACPI_TABLE_ORIGIN_MASK) + { + case ACPI_TABLE_ORIGIN_INTERNAL_VIRTUAL: + case ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL: + + TableDesc->Pointer = Table; + break; + + case ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL: + default: + + break; + } } @@ -182,8 +196,7 @@ AcpiTbAcquireTable ( case ACPI_TABLE_ORIGIN_INTERNAL_VIRTUAL: case ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL: - Table = ACPI_CAST_PTR (ACPI_TABLE_HEADER, - ACPI_PHYSADDR_TO_PTR (TableDesc->Address)); + Table = TableDesc->Pointer; break; default: @@ -251,6 +264,8 @@ AcpiTbReleaseTable ( * PARAMETERS: TableDesc - Table descriptor to be acquired * Address - Address of the table * Flags - Allocation flags of the table + * Table - Pointer to the table (required for virtual + * origins, optional for physical) * * RETURN: Status * @@ -265,9 +280,10 @@ ACPI_STATUS AcpiTbAcquireTempTable ( ACPI_TABLE_DESC *TableDesc, ACPI_PHYSICAL_ADDRESS Address, - UINT8 Flags) + UINT8 Flags, + ACPI_TABLE_HEADER *Table) { - ACPI_TABLE_HEADER *TableHeader; + BOOLEAN MappedTable = FALSE; switch (Flags & ACPI_TABLE_ORIGIN_MASK) @@ -276,37 +292,43 @@ AcpiTbAcquireTempTable ( /* Get the length of the full table from the header */ - TableHeader = AcpiOsMapMemory (Address, sizeof (ACPI_TABLE_HEADER)); - if (!TableHeader) + if (!Table) { - return (AE_NO_MEMORY); + Table = AcpiOsMapMemory (Address, sizeof (ACPI_TABLE_HEADER)); + if (!Table) + { + return (AE_NO_MEMORY); + } + + MappedTable = TRUE; } - AcpiTbInitTableDescriptor (TableDesc, Address, Flags, TableHeader); - AcpiOsUnmapMemory (TableHeader, sizeof (ACPI_TABLE_HEADER)); - return (AE_OK); + break; case ACPI_TABLE_ORIGIN_INTERNAL_VIRTUAL: case ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL: - TableHeader = ACPI_CAST_PTR (ACPI_TABLE_HEADER, - ACPI_PHYSADDR_TO_PTR (Address)); - if (!TableHeader) + if (!Table) { - return (AE_NO_MEMORY); + return (AE_BAD_PARAMETER); } - AcpiTbInitTableDescriptor (TableDesc, Address, Flags, TableHeader); - return (AE_OK); + break; default: - break; + /* Table is not valid yet */ + + return (AE_NO_MEMORY); } - /* Table is not valid yet */ + AcpiTbInitTableDescriptor (TableDesc, Address, Flags, Table); + if (MappedTable) + { + AcpiOsUnmapMemory (Table, sizeof (ACPI_TABLE_HEADER)); + } - return (AE_NO_MEMORY); + return (AE_OK); } @@ -405,7 +427,20 @@ AcpiTbInvalidateTable ( AcpiTbReleaseTable (TableDesc->Pointer, TableDesc->Length, TableDesc->Flags); - TableDesc->Pointer = NULL; + + switch (TableDesc->Flags & ACPI_TABLE_ORIGIN_MASK) + { + case ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL: + + TableDesc->Pointer = NULL; + break; + + case ACPI_TABLE_ORIGIN_INTERNAL_VIRTUAL: + case ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL: + default: + + break; + } return_VOID; } @@ -1111,6 +1146,9 @@ AcpiTbLoadTable ( * * PARAMETERS: Address - Physical address of the table * Flags - Allocation flags of the table + * Table - Pointer to the table (required for + * virtual origins, optional for + * physical) * Override - Whether override should be performed * TableIndex - Where table index is returned * @@ -1124,6 +1162,7 @@ ACPI_STATUS AcpiTbInstallAndLoadTable ( ACPI_PHYSICAL_ADDRESS Address, UINT8 Flags, + ACPI_TABLE_HEADER *Table, BOOLEAN Override, UINT32 *TableIndex) { @@ -1136,7 +1175,7 @@ AcpiTbInstallAndLoadTable ( /* Install the table and load it into the namespace */ - Status = AcpiTbInstallStandardTable (Address, Flags, TRUE, + Status = AcpiTbInstallStandardTable (Address, Flags, Table, TRUE, Override, &i); if (ACPI_FAILURE (Status)) { Index: src/sys/external/bsd/acpica/dist/tables/tbfadt.c diff -u src/sys/external/bsd/acpica/dist/tables/tbfadt.c:1.16 src/sys/external/bsd/acpica/dist/tables/tbfadt.c:1.17 --- src/sys/external/bsd/acpica/dist/tables/tbfadt.c:1.16 Sat Apr 3 13:45:04 2021 +++ src/sys/external/bsd/acpica/dist/tables/tbfadt.c Sat Dec 18 12:58:49 2021 @@ -378,7 +378,7 @@ AcpiTbParseFadt ( AcpiTbInstallStandardTable ( (ACPI_PHYSICAL_ADDRESS) AcpiGbl_FADT.XDsdt, - ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL, FALSE, TRUE, + ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL, NULL, FALSE, TRUE, &AcpiGbl_DsdtIndex); /* If Hardware Reduced flag is set, there is no FACS */ @@ -389,14 +389,14 @@ AcpiTbParseFadt ( { AcpiTbInstallStandardTable ( (ACPI_PHYSICAL_ADDRESS) AcpiGbl_FADT.Facs, - ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL, FALSE, TRUE, + ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL, NULL, FALSE, TRUE, &AcpiGbl_FacsIndex); } if (AcpiGbl_FADT.XFacs) { AcpiTbInstallStandardTable ( (ACPI_PHYSICAL_ADDRESS) AcpiGbl_FADT.XFacs, - ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL, FALSE, TRUE, + ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL, NULL, FALSE, TRUE, &AcpiGbl_XFacsIndex); } } Index: src/sys/external/bsd/acpica/dist/tables/tbinstal.c diff -u src/sys/external/bsd/acpica/dist/tables/tbinstal.c:1.16 src/sys/external/bsd/acpica/dist/tables/tbinstal.c:1.17 --- src/sys/external/bsd/acpica/dist/tables/tbinstal.c:1.16 Sat Apr 3 13:45:04 2021 +++ src/sys/external/bsd/acpica/dist/tables/tbinstal.c Sat Dec 18 12:58:49 2021 @@ -119,6 +119,8 @@ AcpiTbInstallTableWithOverride ( * PARAMETERS: Address - Address of the table (might be a virtual * address depending on the TableFlags) * Flags - Flags for the table + * Table - Pointer to the table (required for virtual + * origins, optional for physical) * Reload - Whether reload should be performed * Override - Whether override should be performed * TableIndex - Where the table index is returned @@ -137,6 +139,7 @@ ACPI_STATUS AcpiTbInstallStandardTable ( ACPI_PHYSICAL_ADDRESS Address, UINT8 Flags, + ACPI_TABLE_HEADER *Table, BOOLEAN Reload, BOOLEAN Override, UINT32 *TableIndex) @@ -151,7 +154,7 @@ AcpiTbInstallStandardTable ( /* Acquire a temporary table descriptor for validation */ - Status = AcpiTbAcquireTempTable (&NewTableDesc, Address, Flags); + Status = AcpiTbAcquireTempTable (&NewTableDesc, Address, Flags, Table); if (ACPI_FAILURE (Status)) { ACPI_ERROR ((AE_INFO, @@ -261,7 +264,7 @@ AcpiTbOverrideTable ( if (ACPI_SUCCESS (Status) && Table) { AcpiTbAcquireTempTable (&NewTableDesc, ACPI_PTR_TO_PHYSADDR (Table), - ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL); + ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL, Table); ACPI_ERROR_ONLY (OverrideType = "Logical"); goto FinishOverride; } @@ -273,7 +276,7 @@ AcpiTbOverrideTable ( if (ACPI_SUCCESS (Status) && Address && Length) { AcpiTbAcquireTempTable (&NewTableDesc, Address, - ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL); + ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL, NULL); ACPI_ERROR_ONLY (OverrideType = "Physical"); goto FinishOverride; } @@ -349,11 +352,8 @@ AcpiTbUninstallTable ( if ((TableDesc->Flags & ACPI_TABLE_ORIGIN_MASK) == ACPI_TABLE_ORIGIN_INTERNAL_VIRTUAL) { - void *ptr = ACPI_PHYSADDR_TO_PTR (TableDesc->Address); - if (ptr) - { - ACPI_FREE (ptr); - } + ACPI_FREE (TableDesc->Pointer); + TableDesc->Pointer = NULL; } TableDesc->Address = ACPI_PTR_TO_PHYSADDR (NULL); Index: src/sys/external/bsd/acpica/dist/tables/tbutils.c diff -u src/sys/external/bsd/acpica/dist/tables/tbutils.c:1.18 src/sys/external/bsd/acpica/dist/tables/tbutils.c:1.19 --- src/sys/external/bsd/acpica/dist/tables/tbutils.c:1.18 Sat Apr 3 13:45:04 2021 +++ src/sys/external/bsd/acpica/dist/tables/tbutils.c Sat Dec 18 12:58:49 2021 @@ -228,9 +228,8 @@ AcpiTbGetRootTableEntry ( * 32-bit platform, RSDT: Return 32-bit table entry * 64-bit platform, RSDT: Expand 32-bit to 64-bit and return */ - UINT32 addr; - memcpy(&addr, ACPI_CAST_PTR (UINT32, TableEntry), sizeof(addr)); - return (ACPI_PHYSICAL_ADDRESS) addr; + return ((ACPI_PHYSICAL_ADDRESS) (*ACPI_CAST_PTR ( + UINT32, TableEntry))); } else { @@ -393,7 +392,8 @@ AcpiTbParseRootTable ( } Status = AcpiTbInstallStandardTable (Address, - ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL, FALSE, TRUE, &TableIndex); + ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL, NULL, FALSE, TRUE, + &TableIndex); if (ACPI_SUCCESS (Status) && ACPI_COMPARE_NAMESEG ( Index: src/sys/external/bsd/acpica/dist/tables/tbxfload.c diff -u src/sys/external/bsd/acpica/dist/tables/tbxfload.c:1.14 src/sys/external/bsd/acpica/dist/tables/tbxfload.c:1.15 --- src/sys/external/bsd/acpica/dist/tables/tbxfload.c:1.14 Sat Apr 3 13:45:04 2021 +++ src/sys/external/bsd/acpica/dist/tables/tbxfload.c Sat Dec 18 12:58:49 2021 @@ -157,7 +157,6 @@ AcpiTbLoadNamespace ( ACPI_FUNCTION_TRACE (TbLoadNamespace); - (void) AcpiUtAcquireMutex (ACPI_MTX_TABLES); #ifdef __ia64__ @@ -170,7 +169,7 @@ AcpiTbLoadNamespace ( goto UnlockAndExit; } #endif - + /* * Load the namespace. The DSDT is required, but any SSDT and * PSDT tables are optional. Verify the DSDT. @@ -299,9 +298,7 @@ UnlockAndExit: * * FUNCTION: AcpiInstallTable * - * PARAMETERS: Address - Address of the ACPI table to be installed. - * Physical - Whether the address is a physical table - * address or not + * PARAMETERS: Table - Pointer to the ACPI table to be installed. * * RETURN: Status * @@ -313,28 +310,17 @@ UnlockAndExit: ACPI_STATUS ACPI_INIT_FUNCTION AcpiInstallTable ( - ACPI_PHYSICAL_ADDRESS Address, - BOOLEAN Physical) + ACPI_TABLE_HEADER *Table) { ACPI_STATUS Status; - UINT8 Flags; UINT32 TableIndex; ACPI_FUNCTION_TRACE (AcpiInstallTable); - if (Physical) - { - Flags = ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL; - } - else - { - Flags = ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL; - } - - Status = AcpiTbInstallStandardTable (Address, Flags, - FALSE, FALSE, &TableIndex); + Status = AcpiTbInstallStandardTable (ACPI_PTR_TO_PHYSADDR (Table), + ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL, Table, FALSE, FALSE, &TableIndex); return_ACPI_STATUS (Status); } @@ -344,6 +330,40 @@ ACPI_EXPORT_SYMBOL_INIT (AcpiInstallTabl /******************************************************************************* * + * FUNCTION: AcpiInstallPhysicalTable + * + * PARAMETERS: Address - Address of the ACPI table to be installed. + * + * RETURN: Status + * + * DESCRIPTION: Dynamically install an ACPI table. + * Note: This function should only be invoked after + * AcpiInitializeTables() and before AcpiLoadTables(). + * + ******************************************************************************/ + +ACPI_STATUS ACPI_INIT_FUNCTION +AcpiInstallPhysicalTable ( + ACPI_PHYSICAL_ADDRESS Address) +{ + ACPI_STATUS Status; + UINT32 TableIndex; + + + ACPI_FUNCTION_TRACE (AcpiInstallPhysicalTable); + + + Status = AcpiTbInstallStandardTable (Address, + ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL, NULL, FALSE, FALSE, &TableIndex); + + return_ACPI_STATUS (Status); +} + +ACPI_EXPORT_SYMBOL_INIT (AcpiInstallPhysicalTable) + + +/******************************************************************************* + * * FUNCTION: AcpiLoadTable * * PARAMETERS: Table - Pointer to a buffer containing the ACPI @@ -384,7 +404,7 @@ AcpiLoadTable ( ACPI_INFO (("Host-directed Dynamic ACPI Table Load:")); Status = AcpiTbInstallAndLoadTable (ACPI_PTR_TO_PHYSADDR (Table), - ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL, FALSE, &TableIndex); + ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL, Table, FALSE, &TableIndex); if (TableIdx) { *TableIdx = TableIndex; Index: src/sys/external/bsd/acpica/dist/utilities/utdelete.c diff -u src/sys/external/bsd/acpica/dist/utilities/utdelete.c:1.7 src/sys/external/bsd/acpica/dist/utilities/utdelete.c:1.8 --- src/sys/external/bsd/acpica/dist/utilities/utdelete.c:1.7 Tue Jul 6 08:23:46 2021 +++ src/sys/external/bsd/acpica/dist/utilities/utdelete.c Sat Dec 18 12:58:49 2021 @@ -486,6 +486,7 @@ AcpiUtUpdateRefCount ( ACPI_WARNING ((AE_INFO, "Obj %p, Reference Count is already zero, cannot decrement\n", Object)); + return; } ACPI_DEBUG_PRINT_RAW ((ACPI_DB_ALLOCATIONS,