Module Name: src Committed By: christos Date: Sat Aug 18 14:17:56 UTC 2018
Modified Files: src/sys/external/bsd/acpica/dist/compiler: aslload.c asloptions.c src/sys/external/bsd/acpica/dist/debugger: dbinput.c dbmethod.c dbnames.c src/sys/external/bsd/acpica/dist/executer: exconfig.c src/sys/external/bsd/acpica/dist/hardware: hwregs.c hwsleep.c hwxfsleep.c src/sys/external/bsd/acpica/dist/include: acdisasm.h acexcep.h aclocal.h acnamesp.h acoutput.h acpixf.h acutils.h src/sys/external/bsd/acpica/dist/namespace: nsaccess.c nsdump.c nseval.c nsinit.c src/sys/external/bsd/acpica/dist/tables: tbdata.c src/sys/external/bsd/acpica/dist/utilities: utdelete.c Log Message: merge conflicts To generate a diff of this commit: cvs rdiff -u -r1.11 -r1.12 \ src/sys/external/bsd/acpica/dist/compiler/aslload.c cvs rdiff -u -r1.7 -r1.8 \ src/sys/external/bsd/acpica/dist/compiler/asloptions.c cvs rdiff -u -r1.15 -r1.16 \ src/sys/external/bsd/acpica/dist/debugger/dbinput.c cvs rdiff -u -r1.10 -r1.11 \ src/sys/external/bsd/acpica/dist/debugger/dbmethod.c \ src/sys/external/bsd/acpica/dist/debugger/dbnames.c cvs rdiff -u -r1.12 -r1.13 \ src/sys/external/bsd/acpica/dist/executer/exconfig.c cvs rdiff -u -r1.6 -r1.7 src/sys/external/bsd/acpica/dist/hardware/hwregs.c cvs rdiff -u -r1.7 -r1.8 src/sys/external/bsd/acpica/dist/hardware/hwsleep.c cvs rdiff -u -r1.10 -r1.11 \ src/sys/external/bsd/acpica/dist/hardware/hwxfsleep.c cvs rdiff -u -r1.16 -r1.17 \ src/sys/external/bsd/acpica/dist/include/acdisasm.h \ src/sys/external/bsd/acpica/dist/include/aclocal.h cvs rdiff -u -r1.9 -r1.10 src/sys/external/bsd/acpica/dist/include/acexcep.h cvs rdiff -u -r1.13 -r1.14 \ src/sys/external/bsd/acpica/dist/include/acnamesp.h cvs rdiff -u -r1.8 -r1.9 src/sys/external/bsd/acpica/dist/include/acoutput.h cvs rdiff -u -r1.19 -r1.20 src/sys/external/bsd/acpica/dist/include/acpixf.h cvs rdiff -u -r1.17 -r1.18 src/sys/external/bsd/acpica/dist/include/acutils.h cvs rdiff -u -r1.14 -r1.15 \ src/sys/external/bsd/acpica/dist/namespace/nsaccess.c \ src/sys/external/bsd/acpica/dist/namespace/nsinit.c cvs rdiff -u -r1.12 -r1.13 \ src/sys/external/bsd/acpica/dist/namespace/nsdump.c cvs rdiff -u -r1.11 -r1.12 \ src/sys/external/bsd/acpica/dist/namespace/nseval.c cvs rdiff -u -r1.10 -r1.11 src/sys/external/bsd/acpica/dist/tables/tbdata.c cvs rdiff -u -r1.1.1.10 -r1.2 \ 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/compiler/aslload.c diff -u src/sys/external/bsd/acpica/dist/compiler/aslload.c:1.11 src/sys/external/bsd/acpica/dist/compiler/aslload.c:1.12 --- src/sys/external/bsd/acpica/dist/compiler/aslload.c:1.11 Fri May 4 20:12:15 2018 +++ src/sys/external/bsd/acpica/dist/compiler/aslload.c Sat Aug 18 10:17:55 2018 @@ -125,7 +125,11 @@ LdLoadNamespace ( /* Dump the namespace if debug is enabled */ - AcpiNsDumpTables (ACPI_NS_ALL, ACPI_UINT32_MAX); + if (AcpiDbgLevel & ACPI_LV_TABLES) + { + AcpiNsDumpTables (ACPI_NS_ALL, ACPI_UINT32_MAX); + } + ACPI_FREE (WalkState); return (AE_OK); } @@ -209,8 +213,7 @@ LdLoadFieldElements ( return (Status); } else if (Status == AE_ALREADY_EXISTS && - (Node->Flags & ANOBJ_IS_EXTERNAL) && - Node->OwnerId != WalkState->OwnerId) + (Node->Flags & ANOBJ_IS_EXTERNAL)) { Node->Type = (UINT8) ACPI_TYPE_LOCAL_REGION_FIELD; } @@ -362,7 +365,6 @@ LdNamespace1Begin ( ACPI_PARSE_OBJECT *Arg; UINT32 i; BOOLEAN ForceNewScope = FALSE; - ACPI_OWNER_ID OwnerId = 0; const ACPI_OPCODE_INFO *OpInfo; ACPI_PARSE_OBJECT *ParentOp; @@ -373,23 +375,6 @@ LdNamespace1Begin ( ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Op %p [%s]\n", Op, Op->Asl.ParseOpName)); - if (Op->Asl.ParseOpcode == PARSEOP_DEFINITION_BLOCK) - { - /* - * Allocate an OwnerId for this block. This helps identify the owners - * of each namespace node. This is used in determining whether if - * certain external declarations cause redefinition errors. - */ - Status = AcpiUtAllocateOwnerId (&OwnerId); - WalkState->OwnerId = OwnerId; - if (ACPI_FAILURE (Status)) - { - AslCoreSubsystemError (Op, Status, - "Failure to allocate owner ID to this definition block.", FALSE); - return_ACPI_STATUS (Status); - } - } - /* * We are only interested in opcodes that have an associated name * (or multiple names) @@ -765,9 +750,7 @@ LdNamespace1Begin ( { /* * Allow one create on an object or segment that was - * previously declared External only if WalkState->OwnerId and - * Node->OwnerId are different (meaning that the current WalkState - * and the Node are in different tables). + * previously declared External */ Node->Flags &= ~ANOBJ_IS_EXTERNAL; Node->Type = (UINT8) ObjectType; @@ -784,18 +767,6 @@ LdNamespace1Begin ( } Status = AE_OK; - - if (Node->OwnerId == WalkState->OwnerId && - !(Node->Flags & IMPLICIT_EXTERNAL)) - { - AslDualParseOpError (ASL_WARNING, ASL_MSG_EXTERN_COLLISION, Op, - Op->Asl.ExternalName, ASL_MSG_EXTERN_FOUND_HERE, Node->Op, - Node->Op->Asl.ExternalName); - } - if (Node->Flags & IMPLICIT_EXTERNAL) - { - Node->Flags &= ~IMPLICIT_EXTERNAL; - } } else if (!(Node->Flags & ANOBJ_IS_EXTERNAL) && (Op->Asl.ParseOpcode == PARSEOP_EXTERNAL)) @@ -803,53 +774,15 @@ LdNamespace1Begin ( /* * Allow externals in same scope as the definition of the * actual object. Similar to C. Allows multiple definition - * blocks that refer to each other in the same file. However, - * do not allow name declaration and an external declaration - * within the same table. This is considered a re-declaration. + * blocks that refer to each other in the same file. */ Status = AE_OK; - - if (Node->OwnerId == WalkState->OwnerId) - { - AslDualParseOpError (ASL_WARNING, ASL_MSG_EXTERN_COLLISION, Op, - Op->Asl.ExternalName, ASL_MSG_EXTERN_FOUND_HERE, Node->Op, - Node->Op->Asl.ExternalName); - } } else if ((Node->Flags & ANOBJ_IS_EXTERNAL) && (Op->Asl.ParseOpcode == PARSEOP_EXTERNAL) && (ObjectType == ACPI_TYPE_ANY)) { - /* - * Allow update of externals of unknown type. - * In the case that multiple definition blocks are being - * parsed, updating the OwnerId allows enables subsequent calls - * of this method to understand which table the most recent - * external declaration was seen. Without this OwnerId update, - * code like the following is allowed to compile: - * - * DefinitionBlock("externtest.aml", "DSDT", 0x02, "Intel", "Many", 0x00000001) - * { - * External(ERRS,methodobj) - * Method (MAIN) - * { - * Name(NUM2, 0) - * ERRS(1,2,3) - * } - * } - * - * DefinitionBlock("externtest.aml", "SSDT", 0x02, "Intel", "Many", 0x00000001) - * { - * if (0) - * { - * External(ERRS,methodobj) - * } - * Method (ERRS,3) - * {} - * - * } - */ - Node->OwnerId = WalkState->OwnerId; + /* Allow update of externals of unknown type. */ if (AcpiNsOpensScope (ActualObjectType)) { Index: src/sys/external/bsd/acpica/dist/compiler/asloptions.c diff -u src/sys/external/bsd/acpica/dist/compiler/asloptions.c:1.7 src/sys/external/bsd/acpica/dist/compiler/asloptions.c:1.8 --- src/sys/external/bsd/acpica/dist/compiler/asloptions.c:1.7 Sat Apr 7 11:49:50 2018 +++ src/sys/external/bsd/acpica/dist/compiler/asloptions.c Sat Aug 18 10:17:55 2018 @@ -972,7 +972,7 @@ AslDoResponseFile ( * Process all lines in the response file. There must be one complete * option per line */ - while (fgets (StringBuffer, ASL_MSG_BUFFER_SIZE, ResponseFile)) + while (fgets (StringBuffer, ASL_STRING_BUFFER_SIZE, ResponseFile)) { /* Compress all tokens, allowing us to use a single argv entry */ Index: src/sys/external/bsd/acpica/dist/debugger/dbinput.c diff -u src/sys/external/bsd/acpica/dist/debugger/dbinput.c:1.15 src/sys/external/bsd/acpica/dist/debugger/dbinput.c:1.16 --- src/sys/external/bsd/acpica/dist/debugger/dbinput.c:1.15 Sat Apr 7 11:49:50 2018 +++ src/sys/external/bsd/acpica/dist/debugger/dbinput.c Sat Aug 18 10:17:55 2018 @@ -861,7 +861,11 @@ AcpiDbCommandDispatch ( case CMD_DISASSEMBLE: case CMD_DISASM: +#ifdef ACPI_DISASSEMBLER (void) AcpiDbDisassembleMethod (AcpiGbl_DbArgs[1]); +#else + AcpiOsPrintf ("The AML Disassembler is not configured/present\n"); +#endif break; case CMD_DUMP: @@ -975,7 +979,11 @@ AcpiDbCommandDispatch ( case CMD_LIST: - AcpiDbDisassembleAml (AcpiGbl_DbArgs[1], Op); +#ifdef ACPI_DISASSEMBLER + AcpiDbDisassembleAml (AcpiGbl_DbArgs[1], Op);; +#else + AcpiOsPrintf ("The AML Disassembler is not configured/present\n"); +#endif break; case CMD_LOCKS: Index: src/sys/external/bsd/acpica/dist/debugger/dbmethod.c diff -u src/sys/external/bsd/acpica/dist/debugger/dbmethod.c:1.10 src/sys/external/bsd/acpica/dist/debugger/dbmethod.c:1.11 --- src/sys/external/bsd/acpica/dist/debugger/dbmethod.c:1.10 Sat Apr 7 11:49:50 2018 +++ src/sys/external/bsd/acpica/dist/debugger/dbmethod.c Sat Aug 18 10:17:55 2018 @@ -285,6 +285,7 @@ Cleanup: } +#ifdef ACPI_DISASSEMBLER /******************************************************************************* * * FUNCTION: AcpiDbDisassembleAml @@ -318,9 +319,7 @@ AcpiDbDisassembleAml ( NumStatements = strtoul (Statements, NULL, 0); } -#ifdef ACPI_DISASSEMBLER AcpiDmDisassemble (NULL, Op, NumStatements); -#endif } @@ -403,8 +402,6 @@ AcpiDbDisassembleMethod ( WalkState->ParseFlags |= ACPI_PARSE_DISASSEMBLE; Status = AcpiPsParseAml (WalkState); - -#ifdef ACPI_DISASSEMBLER (void) AcpiDmParseDeferredOps (Op); /* Now we can disassemble the method */ @@ -412,7 +409,6 @@ AcpiDbDisassembleMethod ( AcpiGbl_DmOpt_Verbose = FALSE; AcpiDmDisassemble (NULL, Op, 0); AcpiGbl_DmOpt_Verbose = TRUE; -#endif AcpiPsDeleteParseTree (Op); @@ -423,6 +419,7 @@ AcpiDbDisassembleMethod ( AcpiUtReleaseOwnerId (&ObjDesc->Method.OwnerId); return (AE_OK); } +#endif /******************************************************************************* Index: src/sys/external/bsd/acpica/dist/debugger/dbnames.c diff -u src/sys/external/bsd/acpica/dist/debugger/dbnames.c:1.10 src/sys/external/bsd/acpica/dist/debugger/dbnames.c:1.11 --- src/sys/external/bsd/acpica/dist/debugger/dbnames.c:1.10 Fri May 4 20:12:15 2018 +++ src/sys/external/bsd/acpica/dist/debugger/dbnames.c Sat Aug 18 10:17:55 2018 @@ -414,6 +414,7 @@ AcpiDbWalkAndMatchName ( } else { + Info.Count = 0; Info.OwnerId = ACPI_OWNER_ID_MAX; Info.DebugLevel = ACPI_UINT32_MAX; Info.DisplayType = ACPI_DISPLAY_SUMMARY | ACPI_DISPLAY_SHORT; Index: src/sys/external/bsd/acpica/dist/executer/exconfig.c diff -u src/sys/external/bsd/acpica/dist/executer/exconfig.c:1.12 src/sys/external/bsd/acpica/dist/executer/exconfig.c:1.13 --- src/sys/external/bsd/acpica/dist/executer/exconfig.c:1.12 Sat Apr 7 11:49:50 2018 +++ src/sys/external/bsd/acpica/dist/executer/exconfig.c Sat Aug 18 10:17:55 2018 @@ -233,6 +233,11 @@ AcpiExLoadTableOp ( return_ACPI_STATUS (Status); } + /* Complete the initialization/resolution of package objects */ + + Status = AcpiNsWalkNamespace (ACPI_TYPE_PACKAGE, ACPI_ROOT_OBJECT, + ACPI_UINT32_MAX, 0, AcpiNsInitOnePackage, NULL, NULL, NULL); + /* Parameter Data (optional) */ if (ParameterNode) @@ -506,6 +511,11 @@ AcpiExLoadOp ( return_ACPI_STATUS (Status); } + /* Complete the initialization/resolution of package objects */ + + Status = AcpiNsWalkNamespace (ACPI_TYPE_PACKAGE, ACPI_ROOT_OBJECT, + ACPI_UINT32_MAX, 0, AcpiNsInitOnePackage, NULL, NULL, NULL); + /* Store the DdbHandle into the Target operand */ Status = AcpiExStore (DdbHandle, Target, WalkState); @@ -559,6 +569,17 @@ AcpiExUnloadTable ( "Received request to unload an ACPI table")); /* + * May 2018: Unload is no longer supported for the following reasons: + * 1) A correct implementation on some hosts may not be possible. + * 2) Other ACPI implementations do not correctly/fully support it. + * 3) It requires host device driver support which does not exist. + * (To properly support namespace unload out from underneath.) + * 4) This AML operator has never been seen in the field. + */ + ACPI_EXCEPTION ((AE_INFO, AE_NOT_IMPLEMENTED, + "AML Unload operator is not supported")); + + /* * Validate the handle * Although the handle is partially validated in AcpiExReconfiguration() * when it calls AcpiExResolveOperands(), the handle is more completely Index: src/sys/external/bsd/acpica/dist/hardware/hwregs.c diff -u src/sys/external/bsd/acpica/dist/hardware/hwregs.c:1.6 src/sys/external/bsd/acpica/dist/hardware/hwregs.c:1.7 --- src/sys/external/bsd/acpica/dist/hardware/hwregs.c:1.6 Sat Apr 7 11:49:51 2018 +++ src/sys/external/bsd/acpica/dist/hardware/hwregs.c Sat Aug 18 10:17:55 2018 @@ -616,13 +616,20 @@ AcpiHwRegisterRead ( case ACPI_REGISTER_PM2_CONTROL: /* 8-bit access */ Status = AcpiHwRead (&Value64, &AcpiGbl_FADT.XPm2ControlBlock); - Value = (UINT32) Value64; + if (ACPI_SUCCESS (Status)) + { + Value = (UINT32) Value64; + } break; case ACPI_REGISTER_PM_TIMER: /* 32-bit access */ Status = AcpiHwRead (&Value64, &AcpiGbl_FADT.XPmTimerBlock); - Value = (UINT32) Value64; + if (ACPI_SUCCESS (Status)) + { + Value = (UINT32) Value64; + } + break; case ACPI_REGISTER_SMI_COMMAND_BLOCK: /* 8-bit access */ Index: src/sys/external/bsd/acpica/dist/hardware/hwsleep.c diff -u src/sys/external/bsd/acpica/dist/hardware/hwsleep.c:1.7 src/sys/external/bsd/acpica/dist/hardware/hwsleep.c:1.8 --- src/sys/external/bsd/acpica/dist/hardware/hwsleep.c:1.7 Sat Apr 7 11:49:51 2018 +++ src/sys/external/bsd/acpica/dist/hardware/hwsleep.c Sat Aug 18 10:17:55 2018 @@ -90,17 +90,28 @@ AcpiHwLegacySleep ( return_ACPI_STATUS (Status); } - /* - * 1) Disable all GPEs - * 2) Enable all wakeup GPEs - */ + /* Disable all GPEs */ + Status = AcpiHwDisableAllGpes (); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } + /* + * If the target sleep state is S5, clear all GPEs and fixed events too + */ + if (SleepState == ACPI_STATE_S5) + { + Status = AcpiHwClearAcpiStatus(); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + } AcpiGbl_SystemAwakeAndRunning = FALSE; + /* Enable all wakeup GPEs */ + Status = AcpiHwEnableAllWakeupGpes (); if (ACPI_FAILURE (Status)) { Index: src/sys/external/bsd/acpica/dist/hardware/hwxfsleep.c diff -u src/sys/external/bsd/acpica/dist/hardware/hwxfsleep.c:1.10 src/sys/external/bsd/acpica/dist/hardware/hwxfsleep.c:1.11 --- src/sys/external/bsd/acpica/dist/hardware/hwxfsleep.c:1.10 Sat Apr 7 11:49:51 2018 +++ src/sys/external/bsd/acpica/dist/hardware/hwxfsleep.c Sat Aug 18 10:17:55 2018 @@ -76,17 +76,17 @@ AcpiHwSleepDispatch ( static ACPI_SLEEP_FUNCTIONS AcpiSleepDispatch[] = { - {ACPI_STRUCT_INIT (legacy_function, + {ACPI_STRUCT_INIT (LegacyFunction, ACPI_HW_OPTIONAL_FUNCTION (AcpiHwLegacySleep)), - ACPI_STRUCT_INIT (extended_function, + ACPI_STRUCT_INIT (ExtendedFunction, AcpiHwExtendedSleep) }, - {ACPI_STRUCT_INIT (legacy_function, + {ACPI_STRUCT_INIT (LegacyFunction, ACPI_HW_OPTIONAL_FUNCTION (AcpiHwLegacyWakePrep)), - ACPI_STRUCT_INIT (extended_function, + ACPI_STRUCT_INIT (ExtendedFunction, AcpiHwExtendedWakePrep) }, - {ACPI_STRUCT_INIT (legacy_function, + {ACPI_STRUCT_INIT (Legacy_function, ACPI_HW_OPTIONAL_FUNCTION (AcpiHwLegacyWake)), - ACPI_STRUCT_INIT (extended_function, + ACPI_STRUCT_INIT (ExtendedFunction, AcpiHwExtendedWake) } }; Index: src/sys/external/bsd/acpica/dist/include/acdisasm.h diff -u src/sys/external/bsd/acpica/dist/include/acdisasm.h:1.16 src/sys/external/bsd/acpica/dist/include/acdisasm.h:1.17 --- src/sys/external/bsd/acpica/dist/include/acdisasm.h:1.16 Sat Apr 7 11:49:51 2018 +++ src/sys/external/bsd/acpica/dist/include/acdisasm.h Sat Aug 18 10:17:55 2018 @@ -341,6 +341,7 @@ extern ACPI_DMTABLE_INFO AcpiDmTa extern ACPI_DMTABLE_INFO AcpiDmTableInfoIort3b[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoIort3c[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoIort4[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoIort5[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoIortAcc[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoIortHdr[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoIortMap[]; Index: src/sys/external/bsd/acpica/dist/include/aclocal.h diff -u src/sys/external/bsd/acpica/dist/include/aclocal.h:1.16 src/sys/external/bsd/acpica/dist/include/aclocal.h:1.17 --- src/sys/external/bsd/acpica/dist/include/aclocal.h:1.16 Sat Apr 7 11:49:51 2018 +++ src/sys/external/bsd/acpica/dist/include/aclocal.h Sat Aug 18 10:17:55 2018 @@ -218,8 +218,8 @@ typedef struct acpi_namespace_node #define ANOBJ_SUBTREE_HAS_INI 0x10 /* Used to optimize device initialization */ #define ANOBJ_EVALUATED 0x20 /* Set on first evaluation of node */ #define ANOBJ_ALLOCATED_BUFFER 0x40 /* Method AML buffer is dynamic (InstallMethod) */ +#define ANOBJ_NODE_EARLY_INIT 0x80 /* AcpiExec only: Node was create via init file (-fi) */ -#define IMPLICIT_EXTERNAL 0x02 /* iASL only: This object created implicitly via External */ #define ANOBJ_IS_EXTERNAL 0x08 /* iASL only: This object created via External() */ #define ANOBJ_METHOD_NO_RETVAL 0x10 /* iASL only: Method has no return value */ #define ANOBJ_METHOD_SOME_NO_RETVAL 0x20 /* iASL only: Method has at least one return value */ Index: src/sys/external/bsd/acpica/dist/include/acexcep.h diff -u src/sys/external/bsd/acpica/dist/include/acexcep.h:1.9 src/sys/external/bsd/acpica/dist/include/acexcep.h:1.10 --- src/sys/external/bsd/acpica/dist/include/acexcep.h:1.9 Sat Apr 7 11:49:51 2018 +++ src/sys/external/bsd/acpica/dist/include/acexcep.h Sat Aug 18 10:17:55 2018 @@ -96,6 +96,13 @@ typedef struct acpi_exception_info #define AE_OK (ACPI_STATUS) 0x0000 +#define ACPI_ENV_EXCEPTION(Status) (Status & AE_CODE_ENVIRONMENTAL) +#define ACPI_AML_EXCEPTION(Status) (Status & AE_CODE_AML) +#define ACPI_PROG_EXCEPTION(Status) (Status & AE_CODE_PROGRAMMER) +#define ACPI_TABLE_EXCEPTION(Status) (Status & AE_CODE_ACPI_TABLES) +#define ACPI_CNTL_EXCEPTION(Status) (Status & AE_CODE_CONTROL) + + /* * Environmental exceptions */ Index: src/sys/external/bsd/acpica/dist/include/acnamesp.h diff -u src/sys/external/bsd/acpica/dist/include/acnamesp.h:1.13 src/sys/external/bsd/acpica/dist/include/acnamesp.h:1.14 --- src/sys/external/bsd/acpica/dist/include/acnamesp.h:1.13 Sat Apr 7 11:49:51 2018 +++ src/sys/external/bsd/acpica/dist/include/acnamesp.h Sat Aug 18 10:17:55 2018 @@ -60,14 +60,15 @@ /* Flags for AcpiNsLookup, AcpiNsSearchAndEnter */ #define ACPI_NS_NO_UPSEARCH 0 -#define ACPI_NS_SEARCH_PARENT 0x01 -#define ACPI_NS_DONT_OPEN_SCOPE 0x02 -#define ACPI_NS_NO_PEER_SEARCH 0x04 -#define ACPI_NS_ERROR_IF_FOUND 0x08 -#define ACPI_NS_PREFIX_IS_SCOPE 0x10 -#define ACPI_NS_EXTERNAL 0x20 -#define ACPI_NS_TEMPORARY 0x40 -#define ACPI_NS_OVERRIDE_IF_FOUND 0x80 +#define ACPI_NS_SEARCH_PARENT 0x0001 +#define ACPI_NS_DONT_OPEN_SCOPE 0x0002 +#define ACPI_NS_NO_PEER_SEARCH 0x0004 +#define ACPI_NS_ERROR_IF_FOUND 0x0008 +#define ACPI_NS_PREFIX_IS_SCOPE 0x0010 +#define ACPI_NS_EXTERNAL 0x0020 +#define ACPI_NS_TEMPORARY 0x0040 +#define ACPI_NS_OVERRIDE_IF_FOUND 0x0080 +#define ACPI_NS_EARLY_INIT 0x0100 /* Flags for AcpiNsWalkNamespace */ @@ -96,6 +97,12 @@ ACPI_STATUS AcpiNsInitializeDevices ( UINT32 Flags); +ACPI_STATUS +AcpiNsInitOnePackage ( + ACPI_HANDLE ObjHandle, + UINT32 Level, + void *Context, + void **ReturnValue); /* * nsload - Namespace loading Index: src/sys/external/bsd/acpica/dist/include/acoutput.h diff -u src/sys/external/bsd/acpica/dist/include/acoutput.h:1.8 src/sys/external/bsd/acpica/dist/include/acoutput.h:1.9 --- src/sys/external/bsd/acpica/dist/include/acoutput.h:1.8 Sat Apr 7 11:49:51 2018 +++ src/sys/external/bsd/acpica/dist/include/acoutput.h Sat Aug 18 10:17:55 2018 @@ -115,7 +115,8 @@ #define ACPI_LV_ALLOCATIONS 0x00100000 #define ACPI_LV_FUNCTIONS 0x00200000 #define ACPI_LV_OPTIMIZATIONS 0x00400000 -#define ACPI_LV_VERBOSITY2 0x00700000 | ACPI_LV_VERBOSITY1 +#define ACPI_LV_PARSE_TREES 0x00800000 +#define ACPI_LV_VERBOSITY2 0x00F00000 | ACPI_LV_VERBOSITY1 #define ACPI_LV_ALL ACPI_LV_VERBOSITY2 /* Trace verbosity level 3 [Threading, I/O, and Interrupts] */ @@ -167,6 +168,7 @@ #define ACPI_DB_TABLES ACPI_DEBUG_LEVEL (ACPI_LV_TABLES) #define ACPI_DB_FUNCTIONS ACPI_DEBUG_LEVEL (ACPI_LV_FUNCTIONS) #define ACPI_DB_OPTIMIZATIONS ACPI_DEBUG_LEVEL (ACPI_LV_OPTIMIZATIONS) +#define ACPI_DB_PARSE_TREES ACPI_DEBUG_LEVEL (ACPI_LV_PARSE_TREES) #define ACPI_DB_VALUES ACPI_DEBUG_LEVEL (ACPI_LV_VALUES) #define ACPI_DB_OBJECTS ACPI_DEBUG_LEVEL (ACPI_LV_OBJECTS) #define ACPI_DB_ALLOCATIONS ACPI_DEBUG_LEVEL (ACPI_LV_ALLOCATIONS) Index: src/sys/external/bsd/acpica/dist/include/acpixf.h diff -u src/sys/external/bsd/acpica/dist/include/acpixf.h:1.19 src/sys/external/bsd/acpica/dist/include/acpixf.h:1.20 --- src/sys/external/bsd/acpica/dist/include/acpixf.h:1.19 Fri May 4 20:12:15 2018 +++ src/sys/external/bsd/acpica/dist/include/acpixf.h Sat Aug 18 10:17:55 2018 @@ -46,7 +46,7 @@ /* Current ACPICA subsystem version in YYYYMMDD format */ -#define ACPI_CA_VERSION 0x20180427 +#define ACPI_CA_VERSION 0x20180810 #include "acconfig.h" #include "actypes.h" Index: src/sys/external/bsd/acpica/dist/include/acutils.h diff -u src/sys/external/bsd/acpica/dist/include/acutils.h:1.17 src/sys/external/bsd/acpica/dist/include/acutils.h:1.18 --- src/sys/external/bsd/acpica/dist/include/acutils.h:1.17 Sat Apr 7 11:49:51 2018 +++ src/sys/external/bsd/acpica/dist/include/acutils.h Sat Aug 18 10:17:55 2018 @@ -254,6 +254,10 @@ BOOLEAN AcpiUtDetectHexPrefix ( char **String); +void +AcpiUtRemoveHexPrefix ( + char **String); + BOOLEAN AcpiUtDetectOctalPrefix ( char **String); Index: src/sys/external/bsd/acpica/dist/namespace/nsaccess.c diff -u src/sys/external/bsd/acpica/dist/namespace/nsaccess.c:1.14 src/sys/external/bsd/acpica/dist/namespace/nsaccess.c:1.15 --- src/sys/external/bsd/acpica/dist/namespace/nsaccess.c:1.14 Sat Apr 7 11:49:51 2018 +++ src/sys/external/bsd/acpica/dist/namespace/nsaccess.c Sat Aug 18 10:17:56 2018 @@ -616,6 +616,15 @@ AcpiNsLookup ( CurrentNode)); } +#ifdef ACPI_EXEC_APP + if ((Status == AE_ALREADY_EXISTS) && + (ThisNode->Flags & ANOBJ_NODE_EARLY_INIT)) + { + ThisNode->Flags &= ~ANOBJ_NODE_EARLY_INIT; + Status = AE_OK; + } +#endif + #ifdef ACPI_ASL_COMPILER /* * If this ACPI name already exists within the namespace as an @@ -673,13 +682,6 @@ AcpiNsLookup ( else { -#ifdef ACPI_ASL_COMPILER - if (!AcpiGbl_DisasmFlag && (ThisNode->Flags & ANOBJ_IS_EXTERNAL)) - { - ThisNode->Flags &= ~IMPLICIT_EXTERNAL; - } -#endif - /* * Sanity typecheck of the target object: * @@ -744,6 +746,13 @@ AcpiNsLookup ( } } +#ifdef ACPI_EXEC_APP + if (Flags & ACPI_NS_EARLY_INIT) + { + ThisNode->Flags |= ANOBJ_NODE_EARLY_INIT; + } +#endif + *ReturnNode = ThisNode; return_ACPI_STATUS (AE_OK); } Index: src/sys/external/bsd/acpica/dist/namespace/nsinit.c diff -u src/sys/external/bsd/acpica/dist/namespace/nsinit.c:1.14 src/sys/external/bsd/acpica/dist/namespace/nsinit.c:1.15 --- src/sys/external/bsd/acpica/dist/namespace/nsinit.c:1.14 Sat Apr 7 11:49:51 2018 +++ src/sys/external/bsd/acpica/dist/namespace/nsinit.c Sat Aug 18 10:17:56 2018 @@ -300,6 +300,65 @@ ErrorExit: /******************************************************************************* * + * FUNCTION: AcpiNsInitOnePackage + * + * PARAMETERS: ObjHandle - Node + * Level - Current nesting level + * Context - Not used + * ReturnValue - Not used + * + * RETURN: Status + * + * DESCRIPTION: Callback from AcpiWalkNamespace. Invoked for every package + * within the namespace. Used during dynamic load of an SSDT. + * + ******************************************************************************/ + +ACPI_STATUS +AcpiNsInitOnePackage ( + ACPI_HANDLE ObjHandle, + UINT32 Level, + void *Context, + void **ReturnValue) +{ + ACPI_STATUS Status; + ACPI_OPERAND_OBJECT *ObjDesc; + ACPI_NAMESPACE_NODE *Node = (ACPI_NAMESPACE_NODE *) ObjHandle; + + + ObjDesc = AcpiNsGetAttachedObject (Node); + if (!ObjDesc) + { + return (AE_OK); + } + + /* Exit if package is already initialized */ + + if (ObjDesc->Package.Flags & AOPOBJ_DATA_VALID) + { + return (AE_OK); + } + + Status = AcpiDsGetPackageArguments (ObjDesc); + if (ACPI_FAILURE (Status)) + { + return (AE_OK); + } + + Status = AcpiUtWalkPackageTree (ObjDesc, NULL, AcpiDsInitPackageElement, + NULL); + if (ACPI_FAILURE (Status)) + { + return (AE_OK); + } + + ObjDesc->Package.Flags |= AOPOBJ_DATA_VALID; + return (AE_OK); +} + + +/******************************************************************************* + * * FUNCTION: AcpiNsInitOneObject * * PARAMETERS: ObjHandle - Node @@ -425,27 +484,10 @@ AcpiNsInitOneObject ( case ACPI_TYPE_PACKAGE: - Info->PackageInit++; - Status = AcpiDsGetPackageArguments (ObjDesc); - if (ACPI_FAILURE (Status)) - { - break; - } - - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_PARSE, - "%s: Completing resolution of Package elements\n", - ACPI_GET_FUNCTION_NAME)); - - /* - * Resolve all named references in package objects (and all - * sub-packages). This action has been deferred until the entire - * namespace has been loaded, in order to support external and - * forward references from individual package elements (05/2017). - */ - Status = AcpiUtWalkPackageTree (ObjDesc, NULL, - AcpiDsInitPackageElement, NULL); + /* Complete the initialization/resolution of the package object */ - ObjDesc->Package.Flags |= AOPOBJ_DATA_VALID; + Info->PackageInit++; + Status = AcpiNsInitOnePackage (ObjHandle, Level, NULL, NULL); break; default: Index: src/sys/external/bsd/acpica/dist/namespace/nsdump.c diff -u src/sys/external/bsd/acpica/dist/namespace/nsdump.c:1.12 src/sys/external/bsd/acpica/dist/namespace/nsdump.c:1.13 --- src/sys/external/bsd/acpica/dist/namespace/nsdump.c:1.12 Sat Apr 7 11:49:51 2018 +++ src/sys/external/bsd/acpica/dist/namespace/nsdump.c Sat Aug 18 10:17:56 2018 @@ -184,6 +184,7 @@ AcpiNsDumpPathname ( } #endif + /******************************************************************************* * * FUNCTION: AcpiNsDumpOneObject @@ -242,6 +243,7 @@ AcpiNsDumpOneObject ( } Type = ThisNode->Type; + Info->Count++; /* Check if the owner matches */ @@ -706,6 +708,7 @@ AcpiNsDumpObjects ( return; } + Info.Count = 0; Info.DebugLevel = ACPI_LV_TABLES; Info.OwnerId = OwnerId; Info.DisplayType = DisplayType; @@ -714,6 +717,7 @@ AcpiNsDumpObjects ( ACPI_NS_WALK_NO_UNLOCK | ACPI_NS_WALK_TEMP_NODES, AcpiNsDumpOneObject, NULL, (void *) &Info, NULL); + AcpiOsPrintf ("\nNamespace node count: %u\n\n", Info.Count); (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); } Index: src/sys/external/bsd/acpica/dist/namespace/nseval.c diff -u src/sys/external/bsd/acpica/dist/namespace/nseval.c:1.11 src/sys/external/bsd/acpica/dist/namespace/nseval.c:1.12 --- src/sys/external/bsd/acpica/dist/namespace/nseval.c:1.11 Sat Apr 7 11:49:51 2018 +++ src/sys/external/bsd/acpica/dist/namespace/nseval.c Sat Aug 18 10:17:56 2018 @@ -320,11 +320,11 @@ AcpiNsEvaluate ( Status = AE_OK; } - else if (ACPI_FAILURE(Status)) + else if (ACPI_FAILURE(Status)) { /* If ReturnObject exists, delete it */ - if (Info->ReturnObject) + if (Info->ReturnObject) { AcpiUtRemoveReference (Info->ReturnObject); Info->ReturnObject = NULL; Index: src/sys/external/bsd/acpica/dist/tables/tbdata.c diff -u src/sys/external/bsd/acpica/dist/tables/tbdata.c:1.10 src/sys/external/bsd/acpica/dist/tables/tbdata.c:1.11 --- src/sys/external/bsd/acpica/dist/tables/tbdata.c:1.10 Sat Apr 7 11:49:51 2018 +++ src/sys/external/bsd/acpica/dist/tables/tbdata.c Sat Aug 18 10:17:56 2018 @@ -603,9 +603,9 @@ AcpiTbVerifyTempTable ( { if (Status != AE_CTRL_TERMINATE) { - ACPI_EXCEPTION ((AE_INFO, AE_NO_MEMORY, + ACPI_EXCEPTION ((AE_INFO, Status, "%4.4s 0x%8.8X%8.8X" - " Table is duplicated", + " Table is already loaded", AcpiUtValidNameseg (TableDesc->Signature.Ascii) ? TableDesc->Signature.Ascii : "????", ACPI_FORMAT_UINT64 (TableDesc->Address))); Index: src/sys/external/bsd/acpica/dist/utilities/utdelete.c diff -u src/sys/external/bsd/acpica/dist/utilities/utdelete.c:1.1.1.10 src/sys/external/bsd/acpica/dist/utilities/utdelete.c:1.2 --- src/sys/external/bsd/acpica/dist/utilities/utdelete.c:1.1.1.10 Sat Aug 18 05:10:55 2018 +++ src/sys/external/bsd/acpica/dist/utilities/utdelete.c Sat Aug 18 10:17:56 2018 @@ -412,7 +412,7 @@ AcpiUtUpdateRefCount ( UINT16 OriginalCount; UINT16 NewCount = 0; ACPI_CPU_FLAGS LockFlags; - char *Message; + const char *Message; ACPI_FUNCTION_NAME (UtUpdateRefCount);