diff options
author | Jung-uk Kim <jkim@FreeBSD.org> | 2019-03-29 16:40:11 +0000 |
---|---|---|
committer | Jung-uk Kim <jkim@FreeBSD.org> | 2019-03-29 16:40:11 +0000 |
commit | 222d1f49264d00972299c6ff23de8100be561897 (patch) | |
tree | e2a1cfd1ec138c9cc64abc609558682be382674f | |
parent | 805e3b079cfb4a9e01aa35dc378a35f922979517 (diff) |
Import ACPICA 20190329.vendor/acpica/20190329
Notes
Notes:
svn path=/vendor-sys/acpica/dist/; revision=345699
svn path=/vendor-sys/acpica/20190329/; revision=345700; tag=vendor/acpica/20190329
78 files changed, 422 insertions, 257 deletions
diff --git a/changes.txt b/changes.txt index f2c099e1acda..f8de9aafa208 100644 --- a/changes.txt +++ b/changes.txt @@ -1,7 +1,75 @@ ---------------------------------------- -15 February 2019. Summary of changes for version 20190215: +29 March 2019. Summary of changes for version 20190329: -This release is available at https://acpica.org/downloads + +1) ACPICA kernel-resident subsystem: + +Namespace support: Remove the address nodes from global list after method +termination. The global address list contains pointers to namespace nodes +that represent Operation Regions. This change properly removes Operation +Region namespace nodes that are declared dynamically during method +execution. + +Linux: Use a different debug default than ACPICA. There was a divergence +between Linux and the ACPICA codebases. In order to resolve this +divergence, Linux now declares its own debug default in aclinux.h + +Renamed some internal macros to improve code understanding and +maintenance. The macros below all operate on single 4-character ACPI +NameSegs, not generic strings (old -> new): + ACPI_NAME_SIZE -> ACPI_NAMESEG_SIZE + ACPI_COMPARE_NAME -> ACPI_COMPARE_NAMESEG + ACPI_MOVE_NAME -> ACPI_COPY_NAMESEG + +Fix for missing comma in array declaration for the AcpiGbl_GenericNotify +table. + +Test suite: Update makefiles, add PCC operation region support + + +2) iASL Compiler/Disassembler and Tools: + +iASL: Implemented additional illegal forward reference detection. Now +detect and emit an error upon detection of a forward reference from a +Field to an Operation Region. This will fail at runtime if allowed to +pass the compiler. + +AcpiExec: Add an address list check for dynamic Operation Regions. This +feature performs a sanity test for each node the global address list. +This is done in order to ensure that all dynamic operation regions are +properly removed from the global address list and no dangling pointers +are left behind. + +Disassembler: Improved generation of resource pathnames. This change +improves the code that generates resource descriptor and resource tag +pathnames. The original code used a bunch of str* C library functions +that caused warnings on some compilers. + +iASL: Removed some uses of strncpy and replaced with memmove. The strncpy +function can overwrite buffers if the calling code is not very careful. +In the case of generating a module/table header, use of memmove is a +better implementation. + + +3) Status of new features that have not been completed at this time: + +iASL: Implementing an enhanced multiple file compilation into a single +namespace feature (Status): This feature will be released soon, and +allows multiple ASL files to be compiled into the same single namespace. +By doing so, any unresolved external declarations as well as duplicate +named object declarations can be detected during compilation (rather than +later during runtime). The following commands are examples that utilize +this feature: + iasl dsdt.asl ssdt.asl + iasl dsdt.asl ssdt1.asl ssdt2.asl + iasl dsdt.asl ssdt*.asl + +ASL tutorial status: Feedback is being gathered internally and the +current plan is to publish this tutorial on the ACPICA website after a +final review by a tech writer. + +---------------------------------------- +15 February 2019. Summary of changes for version 20190215: 0) Support for ACPI specification version 6.3: diff --git a/source/common/acfileio.c b/source/common/acfileio.c index 18992b208294..74f285779177 100644 --- a/source/common/acfileio.c +++ b/source/common/acfileio.c @@ -585,7 +585,7 @@ AcValidateTableHeader ( * These fields must be ASCII: OemId, OemTableId, AslCompilerId. * We allow a NULL terminator in OemId and OemTableId. */ - for (i = 0; i < ACPI_NAME_SIZE; i++) + for (i = 0; i < ACPI_NAMESEG_SIZE; i++) { if (!ACPI_IS_ASCII ((UINT8) TableHeader.AslCompilerId[i])) { diff --git a/source/common/adisasm.c b/source/common/adisasm.c index 6fbfaf5da4e1..518468b7feba 100644 --- a/source/common/adisasm.c +++ b/source/common/adisasm.c @@ -459,7 +459,7 @@ AdDisassembleOneTable ( */ if (AcpiGbl_CaptureComments) { - strncpy (Table->Signature, AcpiGbl_TableSig, ACPI_NAME_SIZE); + strncpy (Table->Signature, AcpiGbl_TableSig, ACPI_NAMESEG_SIZE); } #endif diff --git a/source/common/adwalk.c b/source/common/adwalk.c index 9f51b64e2624..d9bd4d9e9a7a 100644 --- a/source/common/adwalk.c +++ b/source/common/adwalk.c @@ -814,7 +814,7 @@ AcpiDmLoadDescendingOp ( while (AcpiGbl_PreDefinedNames[PreDefineIndex].Name) { - if (ACPI_COMPARE_NAME (Node->Name.Ascii, + if (ACPI_COMPARE_NAMESEG (Node->Name.Ascii, AcpiGbl_PreDefinedNames[PreDefineIndex].Name)) { PreDefined = TRUE; diff --git a/source/common/ahpredef.c b/source/common/ahpredef.c index 58b2d6627c8d..a76148dc9e6f 100644 --- a/source/common/ahpredef.c +++ b/source/common/ahpredef.c @@ -490,7 +490,7 @@ AcpiAhMatchPredefinedName ( for (Info = AslPredefinedInfo; Info->Name; Info++) { - if (ACPI_COMPARE_NAME (Nameseg, Info->Name)) + if (ACPI_COMPARE_NAMESEG (Nameseg, Info->Name)) { return (Info); } diff --git a/source/common/ahtable.c b/source/common/ahtable.c index 96b5f9f609e9..599c53a89994 100644 --- a/source/common/ahtable.c +++ b/source/common/ahtable.c @@ -183,7 +183,7 @@ AcpiAhGetTableInfo ( for (Info = AcpiGbl_SupportedTables; Info->Signature; Info++) { - if (ACPI_COMPARE_NAME (Signature, Info->Signature)) + if (ACPI_COMPARE_NAMESEG (Signature, Info->Signature)) { return (Info); } diff --git a/source/common/dmrestag.c b/source/common/dmrestag.c index c33b0497b67e..8ab92d71f162 100644 --- a/source/common/dmrestag.c +++ b/source/common/dmrestag.c @@ -747,6 +747,7 @@ AcpiGetTagPathname ( UINT8 ResourceTableIndex; ACPI_SIZE RequiredSize; char *Pathname; + char *PathnameEnd; AML_RESOURCE *Aml; ACPI_PARSE_OBJECT *Op; char *InternalPath; @@ -809,19 +810,26 @@ AcpiGetTagPathname ( RequiredSize, FALSE); /* - * Create the full path to the resource and tag by: remove the buffer name, - * append the resource descriptor name, append a dot, append the tag name. + * Create the full path to the resource and tag by: + * 1) Remove the buffer nameseg from the end of the pathname + * 2) Append the resource descriptor nameseg + * 3) Append a dot + * 4) Append the field tag nameseg * - * TBD: Always using the full path is a bit brute force, the path can be + * Always using the full path is a bit brute force, the path can be * often be optimized with carats (if the original buffer namepath is a * single nameseg). This doesn't really matter, because these paths do not * end up in the final compiled AML, it's just an appearance issue for the * disassembled code. */ - Pathname[strlen (Pathname) - ACPI_NAME_SIZE] = 0; - strncat (Pathname, ResourceNode->Name.Ascii, ACPI_NAME_SIZE); - strcat (Pathname, "."); - strncat (Pathname, Tag, ACPI_NAME_SIZE); + PathnameEnd = Pathname + (RequiredSize - ACPI_NAMESEG_SIZE - 1); + ACPI_COPY_NAMESEG (PathnameEnd, ResourceNode->Name.Ascii); + + PathnameEnd += ACPI_NAMESEG_SIZE; + *PathnameEnd = '.'; + + PathnameEnd++; + ACPI_COPY_NAMESEG (PathnameEnd, Tag); /* Internalize the namepath to AML format */ @@ -863,7 +871,7 @@ static void AcpiDmUpdateResourceName ( ACPI_NAMESPACE_NODE *ResourceNode) { - char Name[ACPI_NAME_SIZE]; + char Name[ACPI_NAMESEG_SIZE]; /* Ignore if a unique name has already been assigned */ diff --git a/source/common/dmtable.c b/source/common/dmtable.c index e51ff424f1b4..6b67662bf02c 100644 --- a/source/common/dmtable.c +++ b/source/common/dmtable.c @@ -602,7 +602,7 @@ AcpiDmGetTableData ( for (Info = AcpiDmTableData; Info->Signature; Info++) { - if (ACPI_COMPARE_NAME (Signature, Info->Signature)) + if (ACPI_COMPARE_NAMESEG (Signature, Info->Signature)) { return (Info); } @@ -657,7 +657,7 @@ AcpiDmDumpDataTable ( * Handle tables that don't use the common ACPI table header structure. * Currently, these are the FACS, RSDP, and S3PT. */ - if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_FACS)) + if (ACPI_COMPARE_NAMESEG (Table->Signature, ACPI_SIG_FACS)) { Length = Table->Length; Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoFacs); @@ -670,7 +670,7 @@ AcpiDmDumpDataTable ( { Length = AcpiDmDumpRsdp (Table); } - else if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_S3PT)) + else if (ACPI_COMPARE_NAMESEG (Table->Signature, ACPI_SIG_S3PT)) { Length = AcpiDmDumpS3pt (Table); } diff --git a/source/common/dmtables.c b/source/common/dmtables.c index 1a8da3afec8b..f95795096156 100644 --- a/source/common/dmtables.c +++ b/source/common/dmtables.c @@ -281,7 +281,7 @@ AdCreateTableHeader ( /* Revision of DSDT controls the ACPI integer width */ - if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_DSDT)) + if (ACPI_COMPARE_NAMESEG (Table->Signature, ACPI_SIG_DSDT)) { AcpiOsPrintf (" **** 32-bit table (V1), no 64-bit math support"); } diff --git a/source/compiler/aslanalyze.c b/source/compiler/aslanalyze.c index 0ea8dc47ffb8..58da5e2eec7c 100644 --- a/source/compiler/aslanalyze.c +++ b/source/compiler/aslanalyze.c @@ -563,14 +563,14 @@ ApCheckForGpeNameConflict ( { ACPI_PARSE_OBJECT *NextOp; UINT32 GpeNumber; - char Name[ACPI_NAME_SIZE + 1]; - char Target[ACPI_NAME_SIZE]; + char Name[ACPI_NAMESEG_SIZE + 1]; + char Target[ACPI_NAMESEG_SIZE]; /* Need a null-terminated string version of NameSeg */ ACPI_MOVE_32_TO_32 (Name, &Op->Asl.NameSeg); - Name[ACPI_NAME_SIZE] = 0; + Name[ACPI_NAMESEG_SIZE] = 0; /* * For a GPE method: @@ -622,7 +622,7 @@ ApCheckForGpeNameConflict ( if ((NextOp->Asl.ParseOpcode == PARSEOP_METHOD) || (NextOp->Asl.ParseOpcode == PARSEOP_NAME)) { - if (ACPI_COMPARE_NAME (Target, NextOp->Asl.NameSeg)) + if (ACPI_COMPARE_NAMESEG (Target, NextOp->Asl.NameSeg)) { /* Found both _Exy and _Lxy in the same scope, error */ @@ -666,7 +666,7 @@ ApCheckRegMethod ( /* We are only interested in _REG methods */ - if (!ACPI_COMPARE_NAME (METHOD_NAME__REG, &Op->Asl.NameSeg)) + if (!ACPI_COMPARE_NAMESEG (METHOD_NAME__REG, &Op->Asl.NameSeg)) { return; } @@ -772,7 +772,7 @@ ApDeviceSubtreeWalk ( /* These are what we are looking for */ - if (ACPI_COMPARE_NAME (Name, Op->Asl.NameSeg)) + if (ACPI_COMPARE_NAMESEG (Name, Op->Asl.NameSeg)) { return (AE_CTRL_TRUE); } @@ -831,7 +831,7 @@ ApFindNameInScope ( if ((Next->Asl.ParseOpcode == PARSEOP_METHOD) || (Next->Asl.ParseOpcode == PARSEOP_NAME)) { - if (ACPI_COMPARE_NAME (Name, Next->Asl.NameSeg)) + if (ACPI_COMPARE_NAMESEG (Name, Next->Asl.NameSeg)) { return (TRUE); } diff --git a/source/compiler/aslcodegen.c b/source/compiler/aslcodegen.c index 21459178539c..8edcb668af4a 100644 --- a/source/compiler/aslcodegen.c +++ b/source/compiler/aslcodegen.c @@ -523,6 +523,8 @@ CgWriteAmlOpcode ( * * DESCRIPTION: Write a table header corresponding to the DEFINITIONBLOCK * + * NOTE: Input strings should be validated before this function is invoked. + * ******************************************************************************/ static void @@ -534,6 +536,8 @@ CgWriteTableHeader ( ACPI_COMMENT_NODE *Current; + memset (&AslGbl_TableHeader, 0, sizeof (ACPI_TABLE_HEADER)); + /* AML filename */ Child = Op->Asl.Child; @@ -552,11 +556,11 @@ CgWriteTableHeader ( */ if (AcpiGbl_CaptureComments) { - strncpy(AcpiGbl_TableSig, Child->Asl.Value.String, ACPI_NAME_SIZE); + ACPI_COPY_NAMESEG (AcpiGbl_TableSig, Child->Asl.Value.String); Child->Asl.Value.String = ACPI_SIG_XXXX; } - strncpy (AslGbl_TableHeader.Signature, Child->Asl.Value.String, ACPI_NAME_SIZE); + ACPI_COPY_NAMESEG (AslGbl_TableHeader.Signature, Child->Asl.Value.String); /* Revision */ @@ -573,12 +577,14 @@ CgWriteTableHeader ( /* OEMID */ Child = Child->Asl.Next; - strncpy (AslGbl_TableHeader.OemId, Child->Asl.Value.String, ACPI_OEM_ID_SIZE); + memcpy (AslGbl_TableHeader.OemId, Child->Asl.Value.String, + strlen (Child->Asl.Value.String)); /* OEM TableID */ Child = Child->Asl.Next; - strncpy (AslGbl_TableHeader.OemTableId, Child->Asl.Value.String, ACPI_OEM_TABLE_ID_SIZE); + memcpy (AslGbl_TableHeader.OemTableId, Child->Asl.Value.String, + strlen (Child->Asl.Value.String)); /* OEM Revision */ @@ -587,7 +593,7 @@ CgWriteTableHeader ( /* Compiler ID */ - ACPI_MOVE_NAME (AslGbl_TableHeader.AslCompilerId, ASL_CREATOR_ID); + ACPI_COPY_NAMESEG (AslGbl_TableHeader.AslCompilerId, ASL_CREATOR_ID); /* Compiler version */ diff --git a/source/compiler/aslcompiler.l b/source/compiler/aslcompiler.l index 72fbbef380c4..26c221e58875 100644 --- a/source/compiler/aslcompiler.l +++ b/source/compiler/aslcompiler.l @@ -813,7 +813,7 @@ NamePathTail [.]{NameSeg} {NameSeg} { char *s; count (0); - s=UtLocalCacheCalloc (ACPI_NAME_SIZE + 1); + s=UtLocalCacheCalloc (ACPI_NAMESEG_SIZE + 1); if (strcmp (AslCompilertext, "\\")) { /* diff --git a/source/compiler/asldefine.h b/source/compiler/asldefine.h index a13acec0bee6..8089d0b95a0b 100644 --- a/source/compiler/asldefine.h +++ b/source/compiler/asldefine.h @@ -162,7 +162,7 @@ #define ASL_CREATOR_ID "INTL" #define ASL_DEFINE "__IASL__" #define ASL_PREFIX "iASL: " -#define ASL_COMPLIANCE "Supports ACPI Specification Revision 6.2A" +#define ASL_COMPLIANCE "Supports ACPI Specification Revision 6.3" /* Configuration constants */ diff --git a/source/compiler/aslerror.c b/source/compiler/aslerror.c index 5d3a7764d255..a2f9fcef1766 100644 --- a/source/compiler/aslerror.c +++ b/source/compiler/aslerror.c @@ -1239,7 +1239,7 @@ AslElevateException ( return (AE_LIMIT); } - AslGbl_ElevatedMessages[AslGbl_ExpectedMessagesIndex] = MessageId; + AslGbl_ElevatedMessages[AslGbl_ElevatedMessagesIndex] = MessageId; AslGbl_ElevatedMessagesIndex++; return (AE_OK); } diff --git a/source/compiler/aslload.c b/source/compiler/aslload.c index c910358d7efb..dfbdf7cefc4c 100644 --- a/source/compiler/aslload.c +++ b/source/compiler/aslload.c @@ -492,7 +492,7 @@ LdNamespace1Begin ( case AML_FIELD_OP: Status = LdLoadFieldElements (Op, WalkState); - return (Status); + break; case AML_INT_CONNECTION_OP: @@ -556,7 +556,8 @@ LdNamespace1Begin ( * We only want references to named objects: * Store (2, WXYZ) -> Attempt to resolve the name */ - if (OpInfo->Class == AML_CLASS_NAMED_OBJECT) + if ((OpInfo->Class == AML_CLASS_NAMED_OBJECT) && + (OpInfo->Type != AML_TYPE_NAMED_FIELD)) { return (AE_OK); } @@ -702,7 +703,7 @@ LdNamespace1Begin ( /* However, this is an error -- operand to Scope must exist */ - if (strlen (Op->Asl.ExternalName) == ACPI_NAME_SIZE) + if (strlen (Op->Asl.ExternalName) == ACPI_NAMESEG_SIZE) { AslError (ASL_ERROR, ASL_MSG_NOT_FOUND, Op, Op->Asl.ExternalName); @@ -731,7 +732,7 @@ LdNamespace1Begin ( * 10/2015. */ if ((Node->Flags & ANOBJ_IS_EXTERNAL) && - (ACPI_COMPARE_NAME (AslGbl_TableSignature, "DSDT"))) + (ACPI_COMPARE_NAMESEG (AslGbl_TableSignature, "DSDT"))) { /* However, allowed if the reference is within a method */ @@ -1095,7 +1096,7 @@ LdNamespace2Begin ( { /* Standalone NameSeg vs. NamePath */ - if (strlen (Arg->Asl.ExternalName) == ACPI_NAME_SIZE) + if (strlen (Arg->Asl.ExternalName) == ACPI_NAMESEG_SIZE) { AslError (ASL_ERROR, ASL_MSG_NOT_FOUND, Op, Arg->Asl.ExternalName); diff --git a/source/compiler/aslmessages.c b/source/compiler/aslmessages.c index 07e9848233bc..0f31c655af78 100644 --- a/source/compiler/aslmessages.c +++ b/source/compiler/aslmessages.c @@ -342,7 +342,7 @@ const char *AslCompilerMsgs [] = /* ASL_MSG_RANGE */ "Constant out of range", /* ASL_MSG_BUFFER_ALLOCATION */ "Could not allocate line buffer", /* ASL_MSG_MISSING_DEPENDENCY */ "Missing dependency", -/* ASL_MSG_ILLEGAL_FORWARD_REF */ "Illegal forward reference", +/* ASL_MSG_ILLEGAL_FORWARD_REF */ "Forward references are not supported by the ASL language", /* ASL_MSG_ILLEGAL_METHOD_REF */ "Object is declared in a different method", /* ASL_MSG_LOCAL_NOT_USED */ "Method Local is set but never used", /* ASL_MSG_ARG_AS_LOCAL_NOT_USED */ "Method Argument (as a local) is set but never used", diff --git a/source/compiler/aslmethod.c b/source/compiler/aslmethod.c index 4563317dd65c..98884bc37ef8 100644 --- a/source/compiler/aslmethod.c +++ b/source/compiler/aslmethod.c @@ -228,7 +228,7 @@ MtMethodAnalysisWalkBegin ( * 1) _PS0 - One of these must exist: _PS1, _PS2, _PS3 * 2) _PS1/_PS2/_PS3: A _PS0 must exist */ - if (ACPI_COMPARE_NAME (METHOD_NAME__PS0, Op->Asl.NameSeg)) + if (ACPI_COMPARE_NAMESEG (METHOD_NAME__PS0, Op->Asl.NameSeg)) { /* For _PS0, one of _PS1/_PS2/_PS3 must exist */ @@ -241,9 +241,9 @@ MtMethodAnalysisWalkBegin ( } } else if ( - ACPI_COMPARE_NAME (METHOD_NAME__PS1, Op->Asl.NameSeg) || - ACPI_COMPARE_NAME (METHOD_NAME__PS2, Op->Asl.NameSeg) || - ACPI_COMPARE_NAME (METHOD_NAME__PS3, Op->Asl.NameSeg)) + ACPI_COMPARE_NAMESEG (METHOD_NAME__PS1, Op->Asl.NameSeg) || + ACPI_COMPARE_NAMESEG (METHOD_NAME__PS2, Op->Asl.NameSeg) || + ACPI_COMPARE_NAMESEG (METHOD_NAME__PS3, Op->Asl.NameSeg)) { /* For _PS1/_PS2/_PS3, a _PS0 must exist */ diff --git a/source/compiler/asloffset.c b/source/compiler/asloffset.c index 4a99c39a3a7b..dd8e1b079103 100644 --- a/source/compiler/asloffset.c +++ b/source/compiler/asloffset.c @@ -258,7 +258,7 @@ LsAmlOffsetWalk ( /* Get offset of last nameseg and the actual data */ NamepathOffset = AslGbl_CurrentAmlOffset + Length + - (Op->Asl.FinalAmlLength - ACPI_NAME_SIZE); + (Op->Asl.FinalAmlLength - ACPI_NAMESEG_SIZE); DataOffset = AslGbl_CurrentAmlOffset + Length + Op->Asl.FinalAmlLength; @@ -323,7 +323,7 @@ LsAmlOffsetWalk ( /* Get offset of last nameseg and the actual data */ NamepathOffset = AslGbl_CurrentAmlOffset + Length + - (NextOp->Asl.FinalAmlLength - ACPI_NAME_SIZE); + (NextOp->Asl.FinalAmlLength - ACPI_NAMESEG_SIZE); DataOffset = AslGbl_CurrentAmlOffset + Length + (NextOp->Asl.FinalAmlLength + 1); @@ -370,7 +370,7 @@ LsAmlOffsetWalk ( /* Get offset of last nameseg and the actual data (flags byte) */ NamepathOffset = AslGbl_CurrentAmlOffset + Length + - (NextOp->Asl.FinalAmlLength - ACPI_NAME_SIZE); + (NextOp->Asl.FinalAmlLength - ACPI_NAMESEG_SIZE); DataOffset = AslGbl_CurrentAmlOffset + Length + NextOp->Asl.FinalAmlLength; @@ -394,7 +394,7 @@ LsAmlOffsetWalk ( /* Get offset of last nameseg and the actual data (PBlock address) */ NamepathOffset = AslGbl_CurrentAmlOffset + Length + - (NextOp->Asl.FinalAmlLength - ACPI_NAME_SIZE); + (NextOp->Asl.FinalAmlLength - ACPI_NAMESEG_SIZE); DataOffset = AslGbl_CurrentAmlOffset + Length + (NextOp->Asl.FinalAmlLength + 1); @@ -419,7 +419,7 @@ LsAmlOffsetWalk ( /* Get offset of last nameseg */ NamepathOffset = AslGbl_CurrentAmlOffset + Length + - (NextOp->Asl.FinalAmlLength - ACPI_NAME_SIZE); + (NextOp->Asl.FinalAmlLength - ACPI_NAMESEG_SIZE); LsEmitOffsetTableEntry (FileId, Node, NamepathOffset, 0, Op->Asl.ParseOpName, 0, (UINT8) 0, Op->Asl.AmlOpcode); diff --git a/source/compiler/asloperands.c b/source/compiler/asloperands.c index 172f347063bc..67e16fd58b19 100644 --- a/source/compiler/asloperands.c +++ b/source/compiler/asloperands.c @@ -1087,13 +1087,13 @@ OpnDoDefinitionBlock ( if (Child->Asl.Value.String) { AslGbl_TableSignature = Child->Asl.Value.String; - if (strlen (AslGbl_TableSignature) != ACPI_NAME_SIZE) + if (strlen (AslGbl_TableSignature) != ACPI_NAMESEG_SIZE) { AslError (ASL_ERROR, ASL_MSG_TABLE_SIGNATURE, Child, "Length must be exactly 4 characters"); } - for (i = 0; i < ACPI_NAME_SIZE; i++) + for (i = 0; i < ACPI_NAMESEG_SIZE; i++) { if (!isalnum ((int) AslGbl_TableSignature[i])) { diff --git a/source/compiler/aslopt.c b/source/compiler/aslopt.c index 1b0c4d338a6c..6d2045f8229d 100644 --- a/source/compiler/aslopt.c +++ b/source/compiler/aslopt.c @@ -241,7 +241,7 @@ OptSearchToRoot ( * not match, and we cannot use this optimization. */ Path = &(((char *) TargetPath->Pointer)[ - TargetPath->Length - ACPI_NAME_SIZE]); + TargetPath->Length - ACPI_NAMESEG_SIZE]); ScopeInfo.Scope.Node = CurrentNode; /* Lookup the NameSeg using SEARCH_PARENT (search-to-root) */ @@ -275,7 +275,7 @@ OptSearchToRoot ( /* We must allocate a new string for the name (TargetPath gets deleted) */ - *NewPath = UtLocalCacheCalloc (ACPI_NAME_SIZE + 1); + *NewPath = UtLocalCacheCalloc (ACPI_NAMESEG_SIZE + 1); strcpy (*NewPath, Path); if (strncmp (*NewPath, "_T_", 3)) @@ -343,7 +343,7 @@ OptBuildShortestPath ( * can possibly have in common. (To optimize, we have to have at least 1) * * Note: The external NamePath string lengths are always a multiple of 5 - * (ACPI_NAME_SIZE + separator) + * (ACPI_NAMESEG_SIZE + separator) */ MaxCommonSegments = TargetPath->Length / ACPI_PATH_SEGMENT_LENGTH; if (CurrentPath->Length < TargetPath->Length) @@ -363,7 +363,7 @@ OptBuildShortestPath ( Index = (NumCommonSegments * ACPI_PATH_SEGMENT_LENGTH) + 1; - if (!ACPI_COMPARE_NAME ( + if (!ACPI_COMPARE_NAMESEG ( &(ACPI_CAST_PTR (char, TargetPath->Pointer)) [Index], &(ACPI_CAST_PTR (char, CurrentPath->Pointer)) [Index])) { @@ -713,7 +713,7 @@ OptOptimizeNamePath ( * to be any possibility that it can be optimized to a shorter string */ AmlNameStringLength = strlen (AmlNameString); - if (AmlNameStringLength <= ACPI_NAME_SIZE) + if (AmlNameStringLength <= ACPI_NAMESEG_SIZE) { ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS, "NAMESEG %4.4s\n", AmlNameString)); diff --git a/source/compiler/aslpredef.c b/source/compiler/aslpredef.c index ab29105ab6f2..1f850239c08e 100644 --- a/source/compiler/aslpredef.c +++ b/source/compiler/aslpredef.c @@ -578,7 +578,7 @@ ApCheckForPredefinedName ( ThisName = AcpiGbl_PredefinedMethods; for (i = 0; ThisName->Info.Name[0]; i++) { - if (ACPI_COMPARE_NAME (Name, ThisName->Info.Name)) + if (ACPI_COMPARE_NAMESEG (Name, ThisName->Info.Name)) { /* Return index into predefined array */ return (i); @@ -592,7 +592,7 @@ ApCheckForPredefinedName ( ThisName = AcpiGbl_ResourceNames; while (ThisName->Info.Name[0]) { - if (ACPI_COMPARE_NAME (Name, ThisName->Info.Name)) + if (ACPI_COMPARE_NAMESEG (Name, ThisName->Info.Name)) { return (ACPI_PREDEFINED_NAME); } @@ -603,7 +603,7 @@ ApCheckForPredefinedName ( ThisName = AcpiGbl_ScopeNames; while (ThisName->Info.Name[0]) { - if (ACPI_COMPARE_NAME (Name, ThisName->Info.Name)) + if (ACPI_COMPARE_NAMESEG (Name, ThisName->Info.Name)) { return (ACPI_PREDEFINED_NAME); } diff --git a/source/compiler/asltransform.c b/source/compiler/asltransform.c index e9f0d049b939..5237c638d743 100644 --- a/source/compiler/asltransform.c +++ b/source/compiler/asltransform.c @@ -553,7 +553,7 @@ TrDoDefinitionBlock ( * to be at the root of the namespace; Therefore, namepath * optimization can only be performed on the DSDT. */ - if (!ACPI_COMPARE_NAME (Next->Asl.Value.String, ACPI_SIG_DSDT)) + if (!ACPI_COMPARE_NAMESEG (Next->Asl.Value.String, ACPI_SIG_DSDT)) { AslGbl_ReferenceOptimizationFlag = FALSE; } diff --git a/source/compiler/aslutils.c b/source/compiler/aslutils.c index 1fc98bb524b9..6b0d5eff31d7 100644 --- a/source/compiler/aslutils.c +++ b/source/compiler/aslutils.c @@ -752,7 +752,7 @@ UtPadNameWithUnderscores ( UINT32 i; - for (i = 0; (i < ACPI_NAME_SIZE); i++) + for (i = 0; (i < ACPI_NAMESEG_SIZE); i++) { if (*NameSeg) { @@ -823,7 +823,7 @@ UtAttachNameseg ( UtPadNameWithUnderscores (Name, PaddedNameSeg); } - ACPI_MOVE_NAME (Op->Asl.NameSeg, PaddedNameSeg); + ACPI_COPY_NAMESEG (Op->Asl.NameSeg, PaddedNameSeg); } diff --git a/source/compiler/aslxref.c b/source/compiler/aslxref.c index b3067feb7c4e..99f6c4a07c0b 100644 --- a/source/compiler/aslxref.c +++ b/source/compiler/aslxref.c @@ -613,7 +613,8 @@ XfNamespaceLocateBegin ( (Op->Asl.ParseOpcode != PARSEOP_NAMESTRING) && (Op->Asl.ParseOpcode != PARSEOP_NAMESEG) && (Op->Asl.ParseOpcode != PARSEOP_METHODCALL) && - (Op->Asl.ParseOpcode != PARSEOP_EXTERNAL)) + (Op->Asl.ParseOpcode != PARSEOP_EXTERNAL) && + (OpInfo->Type != AML_TYPE_NAMED_FIELD)) { return_ACPI_STATUS (AE_OK); } @@ -637,7 +638,8 @@ XfNamespaceLocateBegin ( if ((Op->Asl.ParseOpcode == PARSEOP_NAMESTRING) || (Op->Asl.ParseOpcode == PARSEOP_NAMESEG) || (Op->Asl.ParseOpcode == PARSEOP_METHODCALL) || - (Op->Asl.ParseOpcode == PARSEOP_EXTERNAL)) + (Op->Asl.ParseOpcode == PARSEOP_EXTERNAL) || + (OpInfo->Type == AML_TYPE_NAMED_FIELD)) { /* * These are name references, do not push the scope stack @@ -674,6 +676,10 @@ XfNamespaceLocateBegin ( Path = NextOp->Asl.Value.String; } + else if (OpInfo->Type == AML_TYPE_NAMED_FIELD) + { + Path = Op->Asl.Child->Asl.Value.String; + } else { Path = Op->Asl.Value.String; @@ -702,7 +708,7 @@ XfNamespaceLocateBegin ( * We didn't find the name reference by path -- we can qualify this * a little better before we print an error message */ - if (strlen (Path) == ACPI_NAME_SIZE) + if (strlen (Path) == ACPI_NAMESEG_SIZE) { /* A simple, one-segment ACPI name */ @@ -764,7 +770,7 @@ XfNamespaceLocateBegin ( * doesn't exist or just can't be reached. However, we * can differentiate between a NameSeg vs. NamePath. */ - if (strlen (Op->Asl.ExternalName) == ACPI_NAME_SIZE) + if (strlen (Op->Asl.ExternalName) == ACPI_NAMESEG_SIZE) { AslError (ASL_ERROR, ASL_MSG_NOT_FOUND, Op, Op->Asl.ExternalName); diff --git a/source/compiler/dtcompile.c b/source/compiler/dtcompile.c index 88a7a8b0550f..95fcb2d460d8 100644 --- a/source/compiler/dtcompile.c +++ b/source/compiler/dtcompile.c @@ -418,7 +418,7 @@ DtCompileDataTable ( * Currently, these are the FACS and RSDP. Also check for an OEMx table, * these tables have user-defined contents. */ - if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_FACS)) + if (ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_FACS)) { Status = DtCompileFacs (FieldList); if (ACPI_FAILURE (Status)) @@ -434,7 +434,7 @@ DtCompileDataTable ( Status = DtCompileRsdp (FieldList); return (Status); } - else if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_S3PT)) + else if (ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_S3PT)) { Status = DtCompileS3pt (FieldList); if (ACPI_FAILURE (Status)) diff --git a/source/compiler/dttemplate.c b/source/compiler/dttemplate.c index 8e3124a36520..4cc6c0403252 100644 --- a/source/compiler/dttemplate.c +++ b/source/compiler/dttemplate.c @@ -204,11 +204,11 @@ AcpiUtIsSpecialTable ( char *Signature) { - if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_DSDT) || - ACPI_COMPARE_NAME (Signature, ACPI_SIG_OSDT) || - ACPI_COMPARE_NAME (Signature, ACPI_SIG_SSDT) || - ACPI_COMPARE_NAME (Signature, ACPI_SIG_FACS) || - ACPI_COMPARE_NAME (Signature, ACPI_RSDP_NAME)) + if (ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_DSDT) || + ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_OSDT) || + ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_SSDT) || + ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_FACS) || + ACPI_COMPARE_NAMESEG (Signature, ACPI_RSDP_NAME)) { return (TRUE); } @@ -346,7 +346,7 @@ DtCreateOneTemplateFile ( * 2) Signature must be a recognized ACPI table * 3) There must be a template associated with the signature */ - if (strlen (Signature) != ACPI_NAME_SIZE) + if (strlen (Signature) != ACPI_NAMESEG_SIZE) { fprintf (stderr, "%s: Invalid ACPI table signature " @@ -567,7 +567,7 @@ DtCreateOneTemplate ( AcpiOsPrintf (" (AML byte code table)\n"); AcpiOsPrintf (" */\n"); - if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_DSDT)) + if (ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_DSDT)) { Actual = DtEmitDefinitionBlock ( File, DisasmFilename, ACPI_SIG_DSDT, 1); @@ -590,7 +590,7 @@ DtCreateOneTemplate ( } } } - else if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_SSDT)) + else if (ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_SSDT)) { Actual = DtEmitDefinitionBlock ( File, DisasmFilename, ACPI_SIG_SSDT, 1); @@ -600,7 +600,7 @@ DtCreateOneTemplate ( goto Cleanup; } } - else if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_OSDT)) + else if (ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_OSDT)) { Actual = DtEmitDefinitionBlock ( File, DisasmFilename, ACPI_SIG_OSDT, 1); @@ -610,12 +610,12 @@ DtCreateOneTemplate ( goto Cleanup; } } - else if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_FACS)) + else if (ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_FACS)) { AcpiDmDumpDataTable (ACPI_CAST_PTR (ACPI_TABLE_HEADER, TemplateFacs)); } - else if (ACPI_COMPARE_NAME (Signature, ACPI_RSDP_NAME)) + else if (ACPI_COMPARE_NAMESEG (Signature, ACPI_RSDP_NAME)) { AcpiDmDumpDataTable (ACPI_CAST_PTR (ACPI_TABLE_HEADER, TemplateRsdp)); diff --git a/source/components/debugger/dbexec.c b/source/components/debugger/dbexec.c index 49d1180fba58..8897fa6dd642 100644 --- a/source/components/debugger/dbexec.c +++ b/source/components/debugger/dbexec.c @@ -658,7 +658,7 @@ AcpiDbExecute ( /* Dump a _PLD buffer if present */ - if (ACPI_COMPARE_NAME ((ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, + if (ACPI_COMPARE_NAMESEG ((ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, AcpiGbl_DbMethodInfo.Method)->Name.Ascii), METHOD_NAME__PLD)) { diff --git a/source/components/debugger/dbnames.c b/source/components/debugger/dbnames.c index 3c01e8088651..2c9af4be741d 100644 --- a/source/components/debugger/dbnames.c +++ b/source/components/debugger/dbnames.c @@ -557,7 +557,7 @@ AcpiDbFindNameInNamespace ( char *AcpiNamePtr = AcpiName; - if (strlen (NameArg) > ACPI_NAME_SIZE) + if (strlen (NameArg) > ACPI_NAMESEG_SIZE) { AcpiOsPrintf ("Name must be no longer than 4 characters\n"); return (AE_OK); diff --git a/source/components/disassembler/dmbuffer.c b/source/components/disassembler/dmbuffer.c index a58ff2f5212a..f61c83781b5d 100644 --- a/source/components/disassembler/dmbuffer.c +++ b/source/components/disassembler/dmbuffer.c @@ -736,7 +736,7 @@ AcpiDmIsPldBuffer ( { Node = ParentOp->Common.Node; - if (ACPI_COMPARE_NAME (Node->Name.Ascii, METHOD_NAME__PLD)) + if (ACPI_COMPARE_NAMESEG (Node->Name.Ascii, METHOD_NAME__PLD)) { /* Ignore the Size argument in the disassembly of this buffer op */ @@ -770,7 +770,7 @@ AcpiDmIsPldBuffer ( { Node = ParentOp->Common.Node; - if (ACPI_COMPARE_NAME (Node->Name.Ascii, METHOD_NAME__PLD)) + if (ACPI_COMPARE_NAMESEG (Node->Name.Ascii, METHOD_NAME__PLD)) { /* Ignore the Size argument in the disassembly of this buffer op */ @@ -1100,7 +1100,7 @@ AcpiDmCheckForHardwareId ( /* Check for _HID - has one argument */ - if (ACPI_COMPARE_NAME (&Name, METHOD_NAME__HID)) + if (ACPI_COMPARE_NAMESEG (&Name, METHOD_NAME__HID)) { AcpiDmGetHardwareIdType (NextOp); return; @@ -1108,7 +1108,7 @@ AcpiDmCheckForHardwareId ( /* Exit if not _CID */ - if (!ACPI_COMPARE_NAME (&Name, METHOD_NAME__CID)) + if (!ACPI_COMPARE_NAMESEG (&Name, METHOD_NAME__CID)) { return; } diff --git a/source/components/disassembler/dmnames.c b/source/components/disassembler/dmnames.c index bbff3e0a6988..d07af72ffe02 100644 --- a/source/components/disassembler/dmnames.c +++ b/source/components/disassembler/dmnames.c @@ -199,8 +199,8 @@ AcpiDmDumpName ( /* Remove all trailing underscores from the name */ - Length = ACPI_NAME_SIZE; - for (i = (ACPI_NAME_SIZE - 1); i != 0; i--) + Length = ACPI_NAMESEG_SIZE; + for (i = (ACPI_NAMESEG_SIZE - 1); i != 0; i--) { if (NewName[i] == '_') { @@ -378,7 +378,7 @@ AcpiDmNamestring ( AcpiOsPrintf ("."); } - Name += ACPI_NAME_SIZE; + Name += ACPI_NAMESEG_SIZE; } } diff --git a/source/components/dispatcher/dsfield.c b/source/components/dispatcher/dsfield.c index cc0a271e41d0..3aff4db10262 100644 --- a/source/components/dispatcher/dsfield.c +++ b/source/components/dispatcher/dsfield.c @@ -685,7 +685,7 @@ AcpiDsCreateField ( Info.RegionNode = RegionNode; Status = AcpiDsGetFieldNames (&Info, WalkState, Arg->Common.Next); - if (Info.RegionNode->Type == ACPI_ADR_SPACE_PLATFORM_COMM && + if (Info.RegionNode->Object->Region.SpaceId == ACPI_ADR_SPACE_PLATFORM_COMM && !(RegionNode->Object->Field.InternalPccBuffer = ACPI_ALLOCATE_ZEROED(Info.RegionNode->Object->Region.Length))) { diff --git a/source/components/dispatcher/dsinit.c b/source/components/dispatcher/dsinit.c index 334187a395bf..e7045f461a8a 100644 --- a/source/components/dispatcher/dsinit.c +++ b/source/components/dispatcher/dsinit.c @@ -359,7 +359,7 @@ AcpiDsInitializeObjects ( /* DSDT is always the first AML table */ - if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_DSDT)) + if (ACPI_COMPARE_NAMESEG (Table->Signature, ACPI_SIG_DSDT)) { ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INIT, "\nInitializing Namespace objects:\n")); diff --git a/source/components/events/evgpeinit.c b/source/components/events/evgpeinit.c index 4aec9b80bac2..b7e02a060bcf 100644 --- a/source/components/events/evgpeinit.c +++ b/source/components/events/evgpeinit.c @@ -447,7 +447,7 @@ AcpiEvMatchGpeMethod ( ACPI_STATUS Status; UINT32 GpeNumber; UINT8 TempGpeNumber; - char Name[ACPI_NAME_SIZE + 1]; + char Name[ACPI_NAMESEG_SIZE + 1]; UINT8 Type; @@ -468,7 +468,7 @@ AcpiEvMatchGpeMethod ( * 1) Extract the method name and null terminate it */ ACPI_MOVE_32_TO_32 (Name, &MethodNode->Name.Integer); - Name[ACPI_NAME_SIZE] = 0; + Name[ACPI_NAMESEG_SIZE] = 0; /* 2) Name must begin with an underscore */ diff --git a/source/components/executer/exnames.c b/source/components/executer/exnames.c index f652dfab68ad..70a01467a969 100644 --- a/source/components/executer/exnames.c +++ b/source/components/executer/exnames.c @@ -207,11 +207,11 @@ AcpiExAllocateNameString ( { /* Special case for root */ - SizeNeeded = 1 + (ACPI_NAME_SIZE * NumNameSegs) + 2 + 1; + SizeNeeded = 1 + (ACPI_NAMESEG_SIZE * NumNameSegs) + 2 + 1; } else { - SizeNeeded = PrefixCount + (ACPI_NAME_SIZE * NumNameSegs) + 2 + 1; + SizeNeeded = PrefixCount + (ACPI_NAMESEG_SIZE * NumNameSegs) + 2 + 1; } /* @@ -310,7 +310,7 @@ AcpiExNameSegment ( } for (Index = 0; - (Index < ACPI_NAME_SIZE) && (AcpiUtValidNameChar (*AmlAddress, 0)); + (Index < ACPI_NAMESEG_SIZE) && (AcpiUtValidNameChar (*AmlAddress, 0)); Index++) { CharBuf[Index] = *AmlAddress++; diff --git a/source/components/namespace/nsaccess.c b/source/components/namespace/nsaccess.c index d8e3b8414618..94dba1307a59 100644 --- a/source/components/namespace/nsaccess.c +++ b/source/components/namespace/nsaccess.c @@ -851,7 +851,7 @@ AcpiNsLookup ( /* Point to next name segment and make this node current */ - Path += ACPI_NAME_SIZE; + Path += ACPI_NAMESEG_SIZE; CurrentNode = ThisNode; } diff --git a/source/components/namespace/nsdump.c b/source/components/namespace/nsdump.c index 11cb03e3bd5c..6ea04525752b 100644 --- a/source/components/namespace/nsdump.c +++ b/source/components/namespace/nsdump.c @@ -236,7 +236,7 @@ AcpiNsPrintPathname ( AcpiOsPrintf ("?"); } - Pathname += ACPI_NAME_SIZE; + Pathname += ACPI_NAMESEG_SIZE; NumSegments--; if (NumSegments) { diff --git a/source/components/namespace/nsinit.c b/source/components/namespace/nsinit.c index ccdef3c955cc..4dd28fd4e69e 100644 --- a/source/components/namespace/nsinit.c +++ b/source/components/namespace/nsinit.c @@ -662,7 +662,7 @@ AcpiNsFindIniMethods ( /* We are only looking for methods named _INI */ - if (!ACPI_COMPARE_NAME (Node->Name.Ascii, METHOD_NAME__INI)) + if (!ACPI_COMPARE_NAMESEG (Node->Name.Ascii, METHOD_NAME__INI)) { return (AE_OK); } @@ -839,7 +839,7 @@ AcpiNsInitOneDevice ( * Note: We know there is an _INI within this subtree, but it may not be * under this particular device, it may be lower in the branch. */ - if (!ACPI_COMPARE_NAME (DeviceNode->Name.Ascii, "_SB_") || + if (!ACPI_COMPARE_NAMESEG (DeviceNode->Name.Ascii, "_SB_") || DeviceNode->Parent != AcpiGbl_RootNode) { ACPI_DEBUG_EXEC (AcpiUtDisplayInitPathname ( diff --git a/source/components/namespace/nsnames.c b/source/components/namespace/nsnames.c index 0bab2f236fe1..7633e2ef2417 100644 --- a/source/components/namespace/nsnames.c +++ b/source/components/namespace/nsnames.c @@ -273,8 +273,8 @@ AcpiNsHandleToName ( /* Just copy the ACPI name from the Node and zero terminate it */ NodeName = AcpiUtGetNodeName (Node); - ACPI_MOVE_NAME (Buffer->Pointer, NodeName); - ((char *) Buffer->Pointer) [ACPI_NAME_SIZE] = 0; + ACPI_COPY_NAMESEG (Buffer->Pointer, NodeName); + ((char *) Buffer->Pointer) [ACPI_NAMESEG_SIZE] = 0; ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%4.4s\n", (char *) Buffer->Pointer)); return_ACPI_STATUS (AE_OK); @@ -374,7 +374,7 @@ AcpiNsBuildNormalizedPath ( BOOLEAN NoTrailing) { UINT32 Length = 0, i; - char Name[ACPI_NAME_SIZE]; + char Name[ACPI_NAMESEG_SIZE]; BOOLEAN DoNoTrailing; char c, *Left, *Right; ACPI_NAMESPACE_NODE *NextNode; @@ -657,7 +657,7 @@ AcpiNsNormalizePathname ( { /* Do one nameseg at a time */ - for (i = 0; (i < ACPI_NAME_SIZE) && *InputPath; i++) + for (i = 0; (i < ACPI_NAMESEG_SIZE) && *InputPath; i++) { if ((i == 0) || (*InputPath != '_')) /* First char is allowed to be underscore */ { diff --git a/source/components/namespace/nsobject.c b/source/components/namespace/nsobject.c index 3655b0652976..9c8865f0ef26 100644 --- a/source/components/namespace/nsobject.c +++ b/source/components/namespace/nsobject.c @@ -352,6 +352,11 @@ AcpiNsDetachObject ( } } + if (ObjDesc->Common.Type == ACPI_TYPE_REGION) + { + AcpiUtRemoveAddressRange(ObjDesc->Region.SpaceId, Node); + } + /* Clear the Node entry in all cases */ Node->Object = NULL; diff --git a/source/components/namespace/nsparse.c b/source/components/namespace/nsparse.c index e559223a1b45..43d261e48711 100644 --- a/source/components/namespace/nsparse.c +++ b/source/components/namespace/nsparse.c @@ -365,7 +365,7 @@ AcpiNsOneCompleteParse ( /* Found OSDT table, enable the namespace override feature */ - if (ACPI_COMPARE_NAME(Table->Signature, ACPI_SIG_OSDT) && + if (ACPI_COMPARE_NAMESEG (Table->Signature, ACPI_SIG_OSDT) && PassNumber == ACPI_IMODE_LOAD_PASS1) { WalkState->NamespaceOverride = TRUE; diff --git a/source/components/namespace/nsrepair.c b/source/components/namespace/nsrepair.c index 6c9e2b2e1eaa..885d50bf1a3f 100644 --- a/source/components/namespace/nsrepair.c +++ b/source/components/namespace/nsrepair.c @@ -470,7 +470,7 @@ AcpiNsMatchSimpleRepair ( ThisName = AcpiObjectRepairInfo; while (ThisName->ObjectConverter) { - if (ACPI_COMPARE_NAME (Node->Name.Ascii, ThisName->Name)) + if (ACPI_COMPARE_NAMESEG (Node->Name.Ascii, ThisName->Name)) { /* Check if we can actually repair this name/type combination */ diff --git a/source/components/namespace/nsrepair2.c b/source/components/namespace/nsrepair2.c index 9c6ee4f75077..a0b10747dc80 100644 --- a/source/components/namespace/nsrepair2.c +++ b/source/components/namespace/nsrepair2.c @@ -169,7 +169,7 @@ ACPI_STATUS (*ACPI_REPAIR_FUNCTION) ( typedef struct acpi_repair_info { - char Name[ACPI_NAME_SIZE]; + char Name[ACPI_NAMESEG_SIZE]; ACPI_REPAIR_FUNCTION RepairFunction; } ACPI_REPAIR_INFO; @@ -358,7 +358,7 @@ AcpiNsMatchComplexRepair ( ThisName = AcpiNsRepairableNames; while (ThisName->RepairFunction) { - if (ACPI_COMPARE_NAME (Node->Name.Ascii, ThisName->Name)) + if (ACPI_COMPARE_NAMESEG (Node->Name.Ascii, ThisName->Name)) { return (ThisName); } diff --git a/source/components/namespace/nsutils.c b/source/components/namespace/nsutils.c index 4a9f0313dda0..85732ff8b7bd 100644 --- a/source/components/namespace/nsutils.c +++ b/source/components/namespace/nsutils.c @@ -351,7 +351,7 @@ AcpiNsGetInternalNameLength ( } } - Info->Length = (ACPI_NAME_SIZE * Info->NumSegments) + + Info->Length = (ACPI_NAMESEG_SIZE * Info->NumSegments) + 4 + Info->NumCarats; Info->NextExternalChar = NextExternalChar; @@ -443,7 +443,7 @@ AcpiNsBuildInternalName ( for (; NumSegments; NumSegments--) { - for (i = 0; i < ACPI_NAME_SIZE; i++) + for (i = 0; i < ACPI_NAMESEG_SIZE; i++) { if (ACPI_IS_PATH_SEPARATOR (*ExternalName) || (*ExternalName == 0)) @@ -472,7 +472,7 @@ AcpiNsBuildInternalName ( /* Move on the next segment */ ExternalName++; - Result += ACPI_NAME_SIZE; + Result += ACPI_NAMESEG_SIZE; } /* Terminate the string */ @@ -721,12 +721,12 @@ AcpiNsExternalizeName ( /* Copy and validate the 4-char name segment */ - ACPI_MOVE_NAME (&(*ConvertedName)[j], + ACPI_COPY_NAMESEG (&(*ConvertedName)[j], &InternalName[NamesIndex]); AcpiUtRepairName (&(*ConvertedName)[j]); - j += ACPI_NAME_SIZE; - NamesIndex += ACPI_NAME_SIZE; + j += ACPI_NAMESEG_SIZE; + NamesIndex += ACPI_NAMESEG_SIZE; } } diff --git a/source/components/namespace/nsxfname.c b/source/components/namespace/nsxfname.c index a946b5410205..7332a92f3e87 100644 --- a/source/components/namespace/nsxfname.c +++ b/source/components/namespace/nsxfname.c @@ -691,8 +691,8 @@ AcpiInstallMethod ( /* Table must be a DSDT or SSDT */ - if (!ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_DSDT) && - !ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_SSDT)) + if (!ACPI_COMPARE_NAMESEG (Table->Signature, ACPI_SIG_DSDT) && + !ACPI_COMPARE_NAMESEG (Table->Signature, ACPI_SIG_SSDT)) { return (AE_BAD_HEADER); } diff --git a/source/components/parser/psargs.c b/source/components/parser/psargs.c index 3f4ffeed6a38..c9faa95bc21d 100644 --- a/source/components/parser/psargs.c +++ b/source/components/parser/psargs.c @@ -314,21 +314,21 @@ AcpiPsGetNextNamestring ( /* Two name segments */ - End += 1 + (2 * ACPI_NAME_SIZE); + End += 1 + (2 * ACPI_NAMESEG_SIZE); break; case AML_MULTI_NAME_PREFIX: /* Multiple name segments, 4 chars each, count in next byte */ - End += 2 + (*(End + 1) * ACPI_NAME_SIZE); + End += 2 + (*(End + 1) * ACPI_NAMESEG_SIZE); break; default: /* Single name segment */ - End += ACPI_NAME_SIZE; + End += ACPI_NAMESEG_SIZE; break; } @@ -708,7 +708,7 @@ AcpiPsGetNextField ( ACPI_MOVE_32_TO_32 (&Name, ParserState->Aml); AcpiPsSetName (Field, Name); - ParserState->Aml += ACPI_NAME_SIZE; + ParserState->Aml += ACPI_NAMESEG_SIZE; ASL_CV_CAPTURE_COMMENTS_ONLY (ParserState); diff --git a/source/components/resources/rsxface.c b/source/components/resources/rsxface.c index 1a624dc2653f..2e8130b3e9f1 100644 --- a/source/components/resources/rsxface.c +++ b/source/components/resources/rsxface.c @@ -825,10 +825,10 @@ AcpiWalkResources ( /* Parameter validation */ if (!DeviceHandle || !UserFunction || !Name || - (!ACPI_COMPARE_NAME (Name, METHOD_NAME__CRS) && - !ACPI_COMPARE_NAME (Name, METHOD_NAME__PRS) && - !ACPI_COMPARE_NAME (Name, METHOD_NAME__AEI) && - !ACPI_COMPARE_NAME (Name, METHOD_NAME__DMA))) + (!ACPI_COMPARE_NAMESEG (Name, METHOD_NAME__CRS) && + !ACPI_COMPARE_NAMESEG (Name, METHOD_NAME__PRS) && + !ACPI_COMPARE_NAMESEG (Name, METHOD_NAME__AEI) && + !ACPI_COMPARE_NAMESEG (Name, METHOD_NAME__DMA))) { return_ACPI_STATUS (AE_BAD_PARAMETER); } diff --git a/source/components/tables/tbdata.c b/source/components/tables/tbdata.c index 1fc20a38b37d..9d86fdbc70ba 100644 --- a/source/components/tables/tbdata.c +++ b/source/components/tables/tbdata.c @@ -676,7 +676,7 @@ AcpiTbVerifyTempTable ( /* If a particular signature is expected (DSDT/FACS), it must match */ if (Signature && - !ACPI_COMPARE_NAME (&TableDesc->Signature, Signature)) + !ACPI_COMPARE_NAMESEG (&TableDesc->Signature, Signature)) { ACPI_BIOS_ERROR ((AE_INFO, "Invalid signature 0x%X for ACPI table, expected [%s]", diff --git a/source/components/tables/tbfind.c b/source/components/tables/tbfind.c index 4ec53043f66d..3119ddb11ecb 100644 --- a/source/components/tables/tbfind.c +++ b/source/components/tables/tbfind.c @@ -207,7 +207,7 @@ AcpiTbFindTable ( /* Normalize the input strings */ memset (&Header, 0, sizeof (ACPI_TABLE_HEADER)); - ACPI_MOVE_NAME (Header.Signature, Signature); + ACPI_COPY_NAMESEG (Header.Signature, Signature); strncpy (Header.OemId, OemId, ACPI_OEM_ID_SIZE); strncpy (Header.OemTableId, OemTableId, ACPI_OEM_TABLE_ID_SIZE); @@ -217,7 +217,7 @@ AcpiTbFindTable ( for (i = 0; i < AcpiGbl_RootTableList.CurrentTableCount; ++i) { if (memcmp (&(AcpiGbl_RootTableList.Tables[i].Signature), - Header.Signature, ACPI_NAME_SIZE)) + Header.Signature, ACPI_NAMESEG_SIZE)) { /* Not the requested table */ @@ -245,7 +245,7 @@ AcpiTbFindTable ( /* Check for table match on all IDs */ if (!memcmp (AcpiGbl_RootTableList.Tables[i].Pointer->Signature, - Header.Signature, ACPI_NAME_SIZE) && + Header.Signature, ACPI_NAMESEG_SIZE) && (!OemId[0] || !memcmp (AcpiGbl_RootTableList.Tables[i].Pointer->OemId, Header.OemId, ACPI_OEM_ID_SIZE)) && diff --git a/source/components/tables/tbinstal.c b/source/components/tables/tbinstal.c index fbb85ce79e8c..c1d470224ddc 100644 --- a/source/components/tables/tbinstal.c +++ b/source/components/tables/tbinstal.c @@ -274,7 +274,7 @@ AcpiTbInstallStandardTable ( */ if (!Reload && AcpiGbl_DisableSsdtTableInstall && - ACPI_COMPARE_NAME (&NewTableDesc.Signature, ACPI_SIG_SSDT)) + ACPI_COMPARE_NAMESEG (&NewTableDesc.Signature, ACPI_SIG_SSDT)) { ACPI_INFO (( "Ignoring installation of %4.4s at %8.8X%8.8X", diff --git a/source/components/tables/tbprint.c b/source/components/tables/tbprint.c index ffa4856b3ea0..0ff6a6ceec5d 100644 --- a/source/components/tables/tbprint.c +++ b/source/components/tables/tbprint.c @@ -225,10 +225,10 @@ AcpiTbCleanupTableHeader ( memcpy (OutHeader, Header, sizeof (ACPI_TABLE_HEADER)); - AcpiTbFixString (OutHeader->Signature, ACPI_NAME_SIZE); + AcpiTbFixString (OutHeader->Signature, ACPI_NAMESEG_SIZE); AcpiTbFixString (OutHeader->OemId, ACPI_OEM_ID_SIZE); AcpiTbFixString (OutHeader->OemTableId, ACPI_OEM_TABLE_ID_SIZE); - AcpiTbFixString (OutHeader->AslCompilerId, ACPI_NAME_SIZE); + AcpiTbFixString (OutHeader->AslCompilerId, ACPI_NAMESEG_SIZE); } @@ -253,7 +253,7 @@ AcpiTbPrintTableHeader ( ACPI_TABLE_HEADER LocalHeader; - if (ACPI_COMPARE_NAME (Header->Signature, ACPI_SIG_FACS)) + if (ACPI_COMPARE_NAMESEG (Header->Signature, ACPI_SIG_FACS)) { /* FACS only has signature and length fields */ @@ -320,8 +320,8 @@ AcpiTbVerifyChecksum ( * They are the odd tables, have no standard ACPI header and no checksum */ - if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_S3PT) || - ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_FACS)) + if (ACPI_COMPARE_NAMESEG (Table->Signature, ACPI_SIG_S3PT) || + ACPI_COMPARE_NAMESEG (Table->Signature, ACPI_SIG_FACS)) { return (AE_OK); } diff --git a/source/components/tables/tbutils.c b/source/components/tables/tbutils.c index 9bb3fe89bbf3..badee3c5c671 100644 --- a/source/components/tables/tbutils.c +++ b/source/components/tables/tbutils.c @@ -503,7 +503,7 @@ AcpiTbParseRootTable ( ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL, FALSE, TRUE, &TableIndex); if (ACPI_SUCCESS (Status) && - ACPI_COMPARE_NAME ( + ACPI_COMPARE_NAMESEG ( &AcpiGbl_RootTableList.Tables[TableIndex].Signature, ACPI_SIG_FADT)) { diff --git a/source/components/tables/tbxface.c b/source/components/tables/tbxface.c index 097e535df8c3..ae5991aa00b5 100644 --- a/source/components/tables/tbxface.c +++ b/source/components/tables/tbxface.c @@ -401,7 +401,7 @@ AcpiGetTableHeader ( for (i = 0, j = 0; i < AcpiGbl_RootTableList.CurrentTableCount; i++) { - if (!ACPI_COMPARE_NAME ( + if (!ACPI_COMPARE_NAMESEG ( &(AcpiGbl_RootTableList.Tables[i].Signature), Signature)) { continue; @@ -504,7 +504,7 @@ AcpiGetTable ( { TableDesc = &AcpiGbl_RootTableList.Tables[i]; - if (!ACPI_COMPARE_NAME (&TableDesc->Signature, Signature)) + if (!ACPI_COMPARE_NAMESEG (&TableDesc->Signature, Signature)) { continue; } diff --git a/source/components/tables/tbxfload.c b/source/components/tables/tbxfload.c index bda55ea2ac74..217d54bf0a60 100644 --- a/source/components/tables/tbxfload.c +++ b/source/components/tables/tbxfload.c @@ -275,7 +275,7 @@ AcpiTbLoadNamespace ( Table = &AcpiGbl_RootTableList.Tables[AcpiGbl_DsdtIndex]; if (!AcpiGbl_RootTableList.CurrentTableCount || - !ACPI_COMPARE_NAME (Table->Signature.Ascii, ACPI_SIG_DSDT) || + !ACPI_COMPARE_NAMESEG (Table->Signature.Ascii, ACPI_SIG_DSDT) || ACPI_FAILURE (AcpiTbValidateTable (Table))) { Status = AE_NO_ACPI_TABLES; @@ -334,9 +334,9 @@ AcpiTbLoadNamespace ( Table = &AcpiGbl_RootTableList.Tables[i]; if (!Table->Address || - (!ACPI_COMPARE_NAME (Table->Signature.Ascii, ACPI_SIG_SSDT) && - !ACPI_COMPARE_NAME (Table->Signature.Ascii, ACPI_SIG_PSDT) && - !ACPI_COMPARE_NAME (Table->Signature.Ascii, ACPI_SIG_OSDT)) || + (!ACPI_COMPARE_NAMESEG (Table->Signature.Ascii, ACPI_SIG_SSDT) && + !ACPI_COMPARE_NAMESEG (Table->Signature.Ascii, ACPI_SIG_PSDT) && + !ACPI_COMPARE_NAMESEG (Table->Signature.Ascii, ACPI_SIG_OSDT)) || ACPI_FAILURE (AcpiTbValidateTable (Table))) { continue; @@ -556,7 +556,7 @@ AcpiUnloadParentTable ( * only these types can contain AML and thus are the only types * that can create namespace objects. */ - if (ACPI_COMPARE_NAME ( + if (ACPI_COMPARE_NAMESEG ( AcpiGbl_RootTableList.Tables[i].Signature.Ascii, ACPI_SIG_DSDT)) { diff --git a/source/components/utilities/utascii.c b/source/components/utilities/utascii.c index 08dcb920cc7c..c7aaff403237 100644 --- a/source/components/utilities/utascii.c +++ b/source/components/utilities/utascii.c @@ -176,7 +176,7 @@ AcpiUtValidNameseg ( /* Validate each character in the signature */ - for (i = 0; i < ACPI_NAME_SIZE; i++) + for (i = 0; i < ACPI_NAMESEG_SIZE; i++) { if (!AcpiUtValidNameChar (Name[i], i)) { diff --git a/source/components/utilities/utdecode.c b/source/components/utilities/utdecode.c index 443a6dd7114c..3daff815ffa7 100644 --- a/source/components/utilities/utdecode.c +++ b/source/components/utilities/utdecode.c @@ -214,17 +214,17 @@ const UINT8 AcpiGbl_NsProperties[ACPI_NUM_NS_TYPES] = const char *AcpiGbl_RegionTypes[ACPI_NUM_PREDEFINED_REGIONS] = { - "SystemMemory", /* 0x00 */ - "SystemIO", /* 0x01 */ - "PCI_Config", /* 0x02 */ - "EmbeddedControl", /* 0x03 */ - "SMBus", /* 0x04 */ - "SystemCMOS", /* 0x05 */ - "PCIBARTarget", /* 0x06 */ - "IPMI", /* 0x07 */ - "GeneralPurposeIo", /* 0x08 */ - "GenericSerialBus", /* 0x09 */ - "PCC" /* 0x0A */ + "SystemMemory", /* 0x00 */ + "SystemIO", /* 0x01 */ + "PCI_Config", /* 0x02 */ + "EmbeddedControl", /* 0x03 */ + "SMBus", /* 0x04 */ + "SystemCMOS", /* 0x05 */ + "PCIBARTarget", /* 0x06 */ + "IPMI", /* 0x07 */ + "GeneralPurposeIo", /* 0x08 */ + "GenericSerialBus", /* 0x09 */ + "PlatformCommChannel"/* 0x0A */ }; @@ -416,7 +416,7 @@ AcpiUtGetNodeName ( ACPI_NAMESPACE_NODE *Node = (ACPI_NAMESPACE_NODE *) Object; - /* Must return a string of exactly 4 characters == ACPI_NAME_SIZE */ + /* Must return a string of exactly 4 characters == ACPI_NAMESEG_SIZE */ if (!Object) { diff --git a/source/components/utilities/utmisc.c b/source/components/utilities/utmisc.c index acc048d665de..466e3fa26c20 100644 --- a/source/components/utilities/utmisc.c +++ b/source/components/utilities/utmisc.c @@ -214,10 +214,10 @@ AcpiUtIsAmlTable ( /* These are the only tables that contain executable AML */ - if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_DSDT) || - ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_PSDT) || - ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_SSDT) || - ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_OSDT) || + if (ACPI_COMPARE_NAMESEG (Table->Signature, ACPI_SIG_DSDT) || + ACPI_COMPARE_NAMESEG (Table->Signature, ACPI_SIG_PSDT) || + ACPI_COMPARE_NAMESEG (Table->Signature, ACPI_SIG_SSDT) || + ACPI_COMPARE_NAMESEG (Table->Signature, ACPI_SIG_OSDT) || ACPI_IS_OEM_SIG (Table->Signature)) { return (TRUE); diff --git a/source/components/utilities/utpredef.c b/source/components/utilities/utpredef.c index e1cdd704e69d..8d9c5b0b2fff 100644 --- a/source/components/utilities/utpredef.c +++ b/source/components/utilities/utpredef.c @@ -237,7 +237,7 @@ AcpiUtMatchPredefinedMethod ( ThisName = AcpiGbl_PredefinedMethods; while (ThisName->Info.Name[0]) { - if (ACPI_COMPARE_NAME (Name, ThisName->Info.Name)) + if (ACPI_COMPARE_NAMESEG (Name, ThisName->Info.Name)) { return (ThisName); } @@ -374,7 +374,7 @@ AcpiUtMatchResourceName ( ThisName = AcpiGbl_ResourceNames; while (ThisName->Info.Name[0]) { - if (ACPI_COMPARE_NAME (Name, ThisName->Info.Name)) + if (ACPI_COMPARE_NAMESEG (Name, ThisName->Info.Name)) { return (ThisName); } diff --git a/source/components/utilities/utstring.c b/source/components/utilities/utstring.c index 893a957451d0..f0ee49a0ec4f 100644 --- a/source/components/utilities/utstring.c +++ b/source/components/utilities/utstring.c @@ -303,16 +303,16 @@ AcpiUtRepairName ( * Special case for the root node. This can happen if we get an * error during the execution of module-level code. */ - if (ACPI_COMPARE_NAME (Name, ACPI_ROOT_PATHNAME)) + if (ACPI_COMPARE_NAMESEG (Name, ACPI_ROOT_PATHNAME)) { return; } - ACPI_MOVE_NAME (&OriginalName, Name); + ACPI_COPY_NAMESEG (&OriginalName, Name); /* Check each character in the name */ - for (i = 0; i < ACPI_NAME_SIZE; i++) + for (i = 0; i < ACPI_NAMESEG_SIZE; i++) { if (AcpiUtValidNameChar (Name[i], i)) { diff --git a/source/include/aclocal.h b/source/include/aclocal.h index b5c4aa029c1a..e1ed00531356 100644 --- a/source/include/aclocal.h +++ b/source/include/aclocal.h @@ -480,7 +480,7 @@ ACPI_STATUS (*ACPI_INTERNAL_METHOD) ( */ typedef struct acpi_name_info { - char Name[ACPI_NAME_SIZE]; + char Name[ACPI_NAMESEG_SIZE]; UINT16 ArgumentList; UINT8 ExpectedBtypes; @@ -568,7 +568,7 @@ typedef ACPI_STATUS (*ACPI_OBJECT_CONVERTER) ( typedef struct acpi_simple_repair_info { - char Name[ACPI_NAME_SIZE]; + char Name[ACPI_NAMESEG_SIZE]; UINT32 UnexpectedBtypes; UINT32 PackageIndex; ACPI_OBJECT_CONVERTER ObjectConverter; diff --git a/source/include/acpixf.h b/source/include/acpixf.h index ad653f0ef24b..d3e4e7b54757 100644 --- a/source/include/acpixf.h +++ b/source/include/acpixf.h @@ -154,7 +154,7 @@ /* Current ACPICA subsystem version in YYYYMMDD format */ -#define ACPI_CA_VERSION 0x20190215 +#define ACPI_CA_VERSION 0x20190329 #include "acconfig.h" #include "actypes.h" diff --git a/source/include/actbl.h b/source/include/actbl.h index 97134e5e7605..d6b9e8ff2196 100644 --- a/source/include/actbl.h +++ b/source/include/actbl.h @@ -213,14 +213,14 @@ typedef struct acpi_table_header { - char Signature[ACPI_NAME_SIZE]; /* ASCII table signature */ + char Signature[ACPI_NAMESEG_SIZE]; /* ASCII table signature */ 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 */ char OemId[ACPI_OEM_ID_SIZE]; /* ASCII OEM identification */ char OemTableId[ACPI_OEM_TABLE_ID_SIZE]; /* ASCII OEM table identification */ UINT32 OemRevision; /* OEM revision number */ - char AslCompilerId[ACPI_NAME_SIZE]; /* ASCII ASL compiler vendor ID */ + char AslCompilerId[ACPI_NAMESEG_SIZE]; /* ASCII ASL compiler vendor ID */ UINT32 AslCompilerRevision; /* ASL compiler version */ } ACPI_TABLE_HEADER; diff --git a/source/include/actypes.h b/source/include/actypes.h index 2a65ee8f570d..e7a2d57804e2 100644 --- a/source/include/actypes.h +++ b/source/include/actypes.h @@ -520,7 +520,7 @@ typedef UINT64 ACPI_PHYSICAL_ADDRESS; /* Names within the namespace are 4 bytes long */ -#define ACPI_NAME_SIZE 4 +#define ACPI_NAMESEG_SIZE 4 /* Fixed by ACPI spec */ #define ACPI_PATH_SEGMENT_LENGTH 5 /* 4 chars for name + 1 char for separator */ #define ACPI_PATH_SEPARATOR '.' @@ -666,11 +666,11 @@ typedef UINT64 ACPI_INTEGER; /* Optimizations for 4-character (32-bit) ACPI_NAME manipulation */ #ifndef ACPI_MISALIGNMENT_NOT_SUPPORTED -#define ACPI_COMPARE_NAME(a,b) (*ACPI_CAST_PTR (UINT32, (a)) == *ACPI_CAST_PTR (UINT32, (b))) -#define ACPI_MOVE_NAME(dest,src) (*ACPI_CAST_PTR (UINT32, (dest)) = *ACPI_CAST_PTR (UINT32, (src))) +#define ACPI_COMPARE_NAMESEG(a,b) (*ACPI_CAST_PTR (UINT32, (a)) == *ACPI_CAST_PTR (UINT32, (b))) +#define ACPI_COPY_NAMESEG(dest,src) (*ACPI_CAST_PTR (UINT32, (dest)) = *ACPI_CAST_PTR (UINT32, (src))) #else -#define ACPI_COMPARE_NAME(a,b) (!strncmp (ACPI_CAST_PTR (char, (a)), ACPI_CAST_PTR (char, (b)), ACPI_NAME_SIZE)) -#define ACPI_MOVE_NAME(dest,src) (strncpy (ACPI_CAST_PTR (char, (dest)), ACPI_CAST_PTR (char, (src)), ACPI_NAME_SIZE)) +#define ACPI_COMPARE_NAMESEG(a,b) (!strncmp (ACPI_CAST_PTR (char, (a)), ACPI_CAST_PTR (char, (b)), ACPI_NAMESEG_SIZE)) +#define ACPI_COPY_NAMESEG(dest,src) (strncpy (ACPI_CAST_PTR (char, (dest)), ACPI_CAST_PTR (char, (src)), ACPI_NAMESEG_SIZE)) #endif /* Support for the special RSDP signature (8 characters) */ @@ -680,7 +680,7 @@ typedef UINT64 ACPI_INTEGER; /* Support for OEMx signature (x can be any character) */ #define ACPI_IS_OEM_SIG(a) (!strncmp (ACPI_CAST_PTR (char, (a)), ACPI_OEM_NAME, 3) &&\ - strnlen (a, ACPI_NAME_SIZE) == ACPI_NAME_SIZE) + strnlen (a, ACPI_NAMESEG_SIZE) == ACPI_NAMESEG_SIZE) /* * Algorithm to obtain access bit width. diff --git a/source/include/platform/aclinux.h b/source/include/platform/aclinux.h index 990d17c7a749..f6522e326275 100644 --- a/source/include/platform/aclinux.h +++ b/source/include/platform/aclinux.h @@ -221,6 +221,11 @@ #define ACPI_NO_ERROR_MESSAGES #undef ACPI_DEBUG_OUTPUT +/* Use a specific bugging default separate from ACPICA */ + +#undef ACPI_DEBUG_DEFAULT +#define ACPI_DEBUG_DEFAULT (ACPI_LV_INFO | ACPI_LV_REPAIR) + /* External interface for __KERNEL__, stub is needed */ #define ACPI_EXTERNAL_RETURN_STATUS(Prototype) \ diff --git a/source/os_specific/service_layers/osbsdtbl.c b/source/os_specific/service_layers/osbsdtbl.c index 0f112781e025..0e00621624c2 100644 --- a/source/os_specific/service_layers/osbsdtbl.c +++ b/source/os_specific/service_layers/osbsdtbl.c @@ -319,8 +319,8 @@ AcpiOsGetTableByName ( /* Instance is only valid for SSDT/UEFI tables */ if (Instance && - !ACPI_COMPARE_NAME (Signature, ACPI_SIG_SSDT) && - !ACPI_COMPARE_NAME (Signature, ACPI_SIG_UEFI)) + !ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_SSDT) && + !ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_UEFI)) { return (AE_LIMIT); } @@ -337,7 +337,7 @@ AcpiOsGetTableByName ( * If one of the main ACPI tables was requested (RSDT/XSDT/FADT), * simply return it immediately. */ - if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_XSDT)) + if (ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_XSDT)) { if (!Gbl_Revision) { @@ -349,7 +349,7 @@ AcpiOsGetTableByName ( return (AE_OK); } - if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_RSDT)) + if (ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_RSDT)) { if (!Gbl_Rsdp.RsdtPhysicalAddress) { @@ -361,7 +361,7 @@ AcpiOsGetTableByName ( return (AE_OK); } - if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_FADT)) + if (ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_FADT)) { *Address = Gbl_FadtAddress; *Table = (ACPI_TABLE_HEADER *) Gbl_Fadt; @@ -688,15 +688,15 @@ OslGetTableViaRoot ( /* DSDT and FACS address must be extracted from the FADT */ - if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_DSDT) || - ACPI_COMPARE_NAME (Signature, ACPI_SIG_FACS)) + if (ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_DSDT) || + ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_FACS)) { /* * Get the appropriate address, either 32-bit or 64-bit. Be very * careful about the FADT length and validate table addresses. * Note: The 64-bit addresses have priority. */ - if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_DSDT)) + if (ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_DSDT)) { if ((Gbl_Fadt->Header.Length >= MIN_FADT_FOR_XDSDT) && Gbl_Fadt->XDsdt) @@ -759,7 +759,7 @@ OslGetTableViaRoot ( /* Does this table match the requested signature? */ - if (ACPI_COMPARE_NAME (MappedTable->Signature, Signature)) + if (ACPI_COMPARE_NAMESEG (MappedTable->Signature, Signature)) { /* Match table instance (for SSDT/UEFI tables) */ @@ -862,18 +862,18 @@ OslAddTablesToList( case 1: - ACPI_MOVE_NAME (NewInfo->Signature, + ACPI_COPY_NAMESEG (NewInfo->Signature, Gbl_Revision ? ACPI_SIG_XSDT : ACPI_SIG_RSDT); break; case 2: - ACPI_MOVE_NAME (NewInfo->Signature, ACPI_SIG_FACS); + ACPI_COPY_NAMESEG (NewInfo->Signature, ACPI_SIG_FACS); break; default: - ACPI_MOVE_NAME (NewInfo->Signature, ACPI_SIG_DSDT); + ACPI_COPY_NAMESEG (NewInfo->Signature, ACPI_SIG_DSDT); } @@ -919,7 +919,7 @@ OslAddTablesToList( while (NewInfo->Next != NULL) { NewInfo = NewInfo->Next; - if (ACPI_COMPARE_NAME (Table->Signature, NewInfo->Signature)) + if (ACPI_COMPARE_NAMESEG (Table->Signature, NewInfo->Signature)) { Instance++; } @@ -932,7 +932,7 @@ OslAddTablesToList( return (AE_NO_MEMORY); } - ACPI_MOVE_NAME (NewInfo->Signature, Table->Signature); + ACPI_COPY_NAMESEG (NewInfo->Signature, Table->Signature); AcpiOsUnmapMemory (Table, sizeof (*Table)); @@ -994,7 +994,7 @@ OslMapTable ( /* If specified, signature must match */ if (Signature && - !ACPI_COMPARE_NAME (Signature, MappedTable->Signature)) + !ACPI_COMPARE_NAMESEG (Signature, MappedTable->Signature)) { AcpiOsUnmapMemory (MappedTable, sizeof (*MappedTable)); return (AE_NOT_EXIST); diff --git a/source/os_specific/service_layers/oslinuxtbl.c b/source/os_specific/service_layers/oslinuxtbl.c index 254a7746d957..d60866dd426c 100644 --- a/source/os_specific/service_layers/oslinuxtbl.c +++ b/source/os_specific/service_layers/oslinuxtbl.c @@ -167,7 +167,7 @@ typedef struct osl_table_info { struct osl_table_info *Next; UINT32 Instance; - char Signature[ACPI_NAME_SIZE]; + char Signature[ACPI_NAMESEG_SIZE]; } OSL_TABLE_INFO; @@ -484,7 +484,7 @@ OslAddTableToList ( return (AE_NO_MEMORY); } - ACPI_MOVE_NAME (NewInfo->Signature, Signature); + ACPI_COPY_NAMESEG (NewInfo->Signature, Signature); if (!Gbl_TableListHead) { @@ -495,7 +495,7 @@ OslAddTableToList ( Next = Gbl_TableListHead; while (1) { - if (ACPI_COMPARE_NAME (Next->Signature, Signature)) + if (ACPI_COMPARE_NAMESEG (Next->Signature, Signature)) { if (Next->Instance == Instance) { @@ -1050,11 +1050,11 @@ OslGetBiosTable ( /* Handle special tables whose addresses are not in RSDT/XSDT */ - if (ACPI_COMPARE_NAME (Signature, ACPI_RSDP_NAME) || - ACPI_COMPARE_NAME (Signature, ACPI_SIG_RSDT) || - ACPI_COMPARE_NAME (Signature, ACPI_SIG_XSDT) || - ACPI_COMPARE_NAME (Signature, ACPI_SIG_DSDT) || - ACPI_COMPARE_NAME (Signature, ACPI_SIG_FACS)) + if (ACPI_COMPARE_NAMESEG (Signature, ACPI_RSDP_NAME) || + ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_RSDT) || + ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_XSDT) || + ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_DSDT) || + ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_FACS)) { FindNextInstance: @@ -1066,7 +1066,7 @@ FindNextInstance: * careful about the FADT length and validate table addresses. * Note: The 64-bit addresses have priority. */ - if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_DSDT)) + if (ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_DSDT)) { if (CurrentInstance < 2) { @@ -1082,7 +1082,7 @@ FindNextInstance: } } } - else if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_FACS)) + else if (ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_FACS)) { if (CurrentInstance < 2) { @@ -1098,7 +1098,7 @@ FindNextInstance: } } } - else if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_XSDT)) + else if (ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_XSDT)) { if (!Gbl_Revision) { @@ -1110,7 +1110,7 @@ FindNextInstance: (ACPI_PHYSICAL_ADDRESS) Gbl_Rsdp.XsdtPhysicalAddress; } } - else if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_RSDT)) + else if (ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_RSDT)) { if (CurrentInstance == 0) { @@ -1206,7 +1206,7 @@ FindNextInstance: /* Does this table match the requested signature? */ - if (!ACPI_COMPARE_NAME (MappedTable->Signature, Signature)) + if (!ACPI_COMPARE_NAMESEG (MappedTable->Signature, Signature)) { OslUnmapTable (MappedTable); MappedTable = NULL; @@ -1277,7 +1277,7 @@ OslListCustomizedTables ( { void *TableDir; UINT32 Instance; - char TempName[ACPI_NAME_SIZE]; + char TempName[ACPI_NAMESEG_SIZE]; char *Filename; ACPI_STATUS Status = AE_OK; @@ -1377,7 +1377,7 @@ OslMapTable ( return (AE_BAD_SIGNATURE); } } - else if (!ACPI_COMPARE_NAME (Signature, MappedTable->Signature)) + else if (!ACPI_COMPARE_NAMESEG (Signature, MappedTable->Signature)) { AcpiOsUnmapMemory (MappedTable, sizeof (ACPI_TABLE_HEADER)); return (AE_BAD_SIGNATURE); @@ -1457,18 +1457,18 @@ OslTableNameFromFile ( /* Ignore meaningless files */ - if (strlen (Filename) < ACPI_NAME_SIZE) + if (strlen (Filename) < ACPI_NAMESEG_SIZE) { return (AE_BAD_SIGNATURE); } /* Extract instance number */ - if (isdigit ((int) Filename[ACPI_NAME_SIZE])) + if (isdigit ((int) Filename[ACPI_NAMESEG_SIZE])) { - sscanf (&Filename[ACPI_NAME_SIZE], "%u", Instance); + sscanf (&Filename[ACPI_NAMESEG_SIZE], "%u", Instance); } - else if (strlen (Filename) != ACPI_NAME_SIZE) + else if (strlen (Filename) != ACPI_NAMESEG_SIZE) { return (AE_BAD_SIGNATURE); } @@ -1479,7 +1479,7 @@ OslTableNameFromFile ( /* Extract signature */ - ACPI_MOVE_NAME (Signature, Filename); + ACPI_COPY_NAMESEG (Signature, Filename); return (AE_OK); } @@ -1549,7 +1549,7 @@ OslReadTableFromFile ( goto Exit; } } - else if (!ACPI_COMPARE_NAME (Signature, Header.Signature)) + else if (!ACPI_COMPARE_NAMESEG (Signature, Header.Signature)) { fprintf (stderr, "Incorrect signature: Expecting %4.4s, found %4.4s\n", Signature, Header.Signature); @@ -1629,7 +1629,7 @@ OslGetCustomizedTable ( { void *TableDir; UINT32 CurrentInstance = 0; - char TempName[ACPI_NAME_SIZE]; + char TempName[ACPI_NAMESEG_SIZE]; char TableFilename[PATH_MAX]; char *Filename; ACPI_STATUS Status; @@ -1649,7 +1649,7 @@ OslGetCustomizedTable ( { /* Ignore meaningless files */ - if (!ACPI_COMPARE_NAME (Filename, Signature)) + if (!ACPI_COMPARE_NAMESEG (Filename, Signature)) { continue; } diff --git a/source/os_specific/service_layers/oswintbl.c b/source/os_specific/service_layers/oswintbl.c index a14f719e0fe0..413c7af3823d 100644 --- a/source/os_specific/service_layers/oswintbl.c +++ b/source/os_specific/service_layers/oswintbl.c @@ -299,7 +299,8 @@ AcpiOsGetTableByIndex ( { *Instance = Index; } - else if (Status == AE_NOT_FOUND && ACPI_COMPARE_NAME (Signature, ACPI_SIG_SSDT)) + else if (Status == AE_NOT_FOUND && + ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_SSDT)) { /* Treat SSDTs that are not found as invalid index. */ Status = (AE_LIMIT); @@ -353,7 +354,7 @@ AcpiOsGetTableByName ( /* Multiple instances are only supported for SSDT tables. */ - if (Instance > 0 && !ACPI_COMPARE_NAME (Signature, ACPI_SIG_SSDT)) + if (Instance > 0 && !ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_SSDT)) { return (AE_LIMIT); } @@ -374,7 +375,7 @@ AcpiOsGetTableByName ( * OEM ID, Table ID and Revision, then the 29th entry will overwrite the * first entry... Let's hope that we do not have that many entries. */ - if (Instance > 0 && ACPI_COMPARE_NAME (Signature, ACPI_SIG_SSDT)) + if (Instance > 0 && ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_SSDT)) { if (Instance < 10) { @@ -403,15 +404,15 @@ AcpiOsGetTableByName ( * * This code allows for both. */ - if (ACPI_COMPARE_NAME (Signature, "FACP")) + if (ACPI_COMPARE_NAMESEG (Signature, "FACP")) { Signature = "FADT"; } - else if (ACPI_COMPARE_NAME (Signature, "XSDT")) + else if (ACPI_COMPARE_NAMESEG (Signature, "XSDT")) { Signature = "RSDT"; } - else if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_SSDT)) + else if (ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_SSDT)) { /* SSDT may not be present on older Windows versions, but it is * also possible that the index is not found. */ diff --git a/source/os_specific/service_layers/oswinxf.c b/source/os_specific/service_layers/oswinxf.c index 13849edb9fe6..138004e36d37 100644 --- a/source/os_specific/service_layers/oswinxf.c +++ b/source/os_specific/service_layers/oswinxf.c @@ -173,7 +173,7 @@ UINT64 TimerFrequency; -char TableName[ACPI_NAME_SIZE + 1]; +char TableName[ACPI_NAMESEG_SIZE + 1]; #define ACPI_OS_DEBUG_TIMEOUT 30000 /* 30 seconds */ diff --git a/source/tools/acpidump/apdump.c b/source/tools/acpidump/apdump.c index 2d4177442fee..9a2f717668b2 100644 --- a/source/tools/acpidump/apdump.c +++ b/source/tools/acpidump/apdump.c @@ -475,7 +475,7 @@ int ApDumpTableByName ( char *Signature) { - char LocalSignature [ACPI_NAME_SIZE + 1]; + char LocalSignature [ACPI_NAMESEG_SIZE + 1]; UINT32 Instance; ACPI_TABLE_HEADER *Table; ACPI_PHYSICAL_ADDRESS Address; @@ -483,7 +483,7 @@ ApDumpTableByName ( int TableStatus; - if (strlen (Signature) != ACPI_NAME_SIZE) + if (strlen (Signature) != ACPI_NAMESEG_SIZE) { fprintf (stderr, "Invalid table signature [%s]: must be exactly 4 characters\n", @@ -498,11 +498,11 @@ ApDumpTableByName ( /* To be friendly, handle tables whose signatures do not match the name */ - if (ACPI_COMPARE_NAME (LocalSignature, "FADT")) + if (ACPI_COMPARE_NAMESEG (LocalSignature, "FADT")) { strcpy (LocalSignature, ACPI_SIG_FADT); } - else if (ACPI_COMPARE_NAME (LocalSignature, "MADT")) + else if (ACPI_COMPARE_NAMESEG (LocalSignature, "MADT")) { strcpy (LocalSignature, ACPI_SIG_MADT); } diff --git a/source/tools/acpidump/apfiles.c b/source/tools/acpidump/apfiles.c index 0010ca6fbb1f..784a9315ead3 100644 --- a/source/tools/acpidump/apfiles.c +++ b/source/tools/acpidump/apfiles.c @@ -257,7 +257,7 @@ ApWriteToBinaryFile ( ACPI_TABLE_HEADER *Table, UINT32 Instance) { - char Filename[ACPI_NAME_SIZE + 16]; + char Filename[ACPI_NAMESEG_SIZE + 16]; char InstanceStr [16]; ACPI_FILE File; ACPI_SIZE Actual; @@ -272,18 +272,18 @@ ApWriteToBinaryFile ( if (ACPI_VALIDATE_RSDP_SIG (Table->Signature)) { - ACPI_MOVE_NAME (Filename, ACPI_RSDP_NAME); + ACPI_COPY_NAMESEG (Filename, ACPI_RSDP_NAME); } else { - ACPI_MOVE_NAME (Filename, Table->Signature); + ACPI_COPY_NAMESEG (Filename, Table->Signature); } Filename[0] = (char) tolower ((int) Filename[0]); Filename[1] = (char) tolower ((int) Filename[1]); Filename[2] = (char) tolower ((int) Filename[2]); Filename[3] = (char) tolower ((int) Filename[3]); - Filename[ACPI_NAME_SIZE] = 0; + Filename[ACPI_NAMESEG_SIZE] = 0; /* Handle multiple SSDTs - create different filenames for each */ diff --git a/source/tools/acpiexec/aecommon.h b/source/tools/acpiexec/aecommon.h index eb244841983d..602356de9dcc 100644 --- a/source/tools/acpiexec/aecommon.h +++ b/source/tools/acpiexec/aecommon.h @@ -287,6 +287,10 @@ void AeMiscellaneousTests ( void); +void +AeLateTest ( + void); + /* aeregion */ ACPI_STATUS diff --git a/source/tools/acpiexec/aeexception.c b/source/tools/acpiexec/aeexception.c index 2a25d1813096..77ba166bbeed 100644 --- a/source/tools/acpiexec/aeexception.c +++ b/source/tools/acpiexec/aeexception.c @@ -206,7 +206,7 @@ AeExceptionHandler ( if (Name) { - if (ACPI_COMPARE_NAME (&Name, ACPI_ROOT_PATHNAME)) + if (ACPI_COMPARE_NAMESEG (&Name, ACPI_ROOT_PATHNAME)) { AcpiOsPrintf (AE_PREFIX "Evaluating executable code at [%s]\n", ACPI_NAMESPACE_ROOT); diff --git a/source/tools/acpiexec/aemain.c b/source/tools/acpiexec/aemain.c index 9ee25805b932..65664b236021 100644 --- a/source/tools/acpiexec/aemain.c +++ b/source/tools/acpiexec/aemain.c @@ -840,6 +840,7 @@ NormalExit: ExitCode = 0; ErrorExit: + AeLateTest (); (void) AcpiTerminate (); AcDeleteTableList (ListHead); AcpiOsFree (AcpiGbl_InitEntries); diff --git a/source/tools/acpiexec/aetables.c b/source/tools/acpiexec/aetables.c index de51b210df9f..c16033554f63 100644 --- a/source/tools/acpiexec/aetables.c +++ b/source/tools/acpiexec/aetables.c @@ -220,14 +220,14 @@ AeTableOverride ( /* This code exercises the table override mechanism in the core */ - if (ACPI_COMPARE_NAME (ExistingTable->Signature, ACPI_SIG_DSDT)) + if (ACPI_COMPARE_NAMESEG (ExistingTable->Signature, ACPI_SIG_DSDT)) { *NewTable = DsdtToInstallOverride; } /* This code tests override of dynamically loaded tables */ - else if (ACPI_COMPARE_NAME (ExistingTable->Signature, "OEM9")) + else if (ACPI_COMPARE_NAMESEG (ExistingTable->Signature, "OEM9")) { *NewTable = ACPI_CAST_PTR (ACPI_TABLE_HEADER, Ssdt3Code); } @@ -255,13 +255,13 @@ AeInitializeTableHeader ( UINT32 Length) { - ACPI_MOVE_NAME (Header->Signature, Signature); + ACPI_COPY_NAMESEG (Header->Signature, Signature); Header->Length = Length; Header->OemRevision = 0x1001; memcpy (Header->OemId, "Intel ", ACPI_OEM_ID_SIZE); memcpy (Header->OemTableId, "AcpiExec", ACPI_OEM_TABLE_ID_SIZE); - ACPI_MOVE_NAME (Header->AslCompilerId, "INTL"); + ACPI_COPY_NAMESEG (Header->AslCompilerId, "INTL"); Header->AslCompilerRevision = ACPI_CA_VERSION; /* Set the checksum, must set to zero first */ @@ -306,8 +306,8 @@ AeBuildLocalTables ( NextTable = ListHead; while (NextTable) { - if (!ACPI_COMPARE_NAME (NextTable->Table->Signature, ACPI_SIG_DSDT) && - !ACPI_COMPARE_NAME (NextTable->Table->Signature, ACPI_SIG_FADT)) + if (!ACPI_COMPARE_NAMESEG (NextTable->Table->Signature, ACPI_SIG_DSDT) && + !ACPI_COMPARE_NAMESEG (NextTable->Table->Signature, ACPI_SIG_FADT)) { TableCount++; } @@ -345,7 +345,7 @@ AeBuildLocalTables ( * Incoming DSDT or FADT are special cases. All other tables are * just immediately installed into the XSDT. */ - if (ACPI_COMPARE_NAME (NextTable->Table->Signature, ACPI_SIG_DSDT)) + if (ACPI_COMPARE_NAMESEG (NextTable->Table->Signature, ACPI_SIG_DSDT)) { if (DsdtAddress) { @@ -358,7 +358,7 @@ AeBuildLocalTables ( DsdtAddress = ACPI_PTR_TO_PHYSADDR (NextTable->Table); DsdtToInstallOverride = NextTable->Table; } - else if (ACPI_COMPARE_NAME (NextTable->Table->Signature, ACPI_SIG_FADT)) + else if (ACPI_COMPARE_NAMESEG (NextTable->Table->Signature, ACPI_SIG_FADT)) { ExternalFadt = ACPI_CAST_PTR (ACPI_TABLE_FADT, NextTable->Table); LocalXSDT->TableOffsetEntry[0] = ACPI_PTR_TO_PHYSADDR (NextTable->Table); @@ -531,7 +531,7 @@ AeBuildLocalTables ( /* Build a FACS */ memset (&LocalFACS, 0, sizeof (ACPI_TABLE_FACS)); - ACPI_MOVE_NAME (LocalFACS.Signature, ACPI_SIG_FACS); + ACPI_COPY_NAMESEG (LocalFACS.Signature, ACPI_SIG_FACS); LocalFACS.Length = sizeof (ACPI_TABLE_FACS); LocalFACS.GlobalLock = 0x11AA0011; @@ -545,7 +545,7 @@ AeBuildLocalTables ( * ACPICA core ignores it */ memset (&LocalTEST, 0, sizeof (ACPI_TABLE_HEADER)); - ACPI_MOVE_NAME (LocalTEST.Signature, "TEST"); + ACPI_COPY_NAMESEG (LocalTEST.Signature, "TEST"); LocalTEST.Revision = 1; LocalTEST.Length = sizeof (ACPI_TABLE_HEADER); @@ -559,7 +559,7 @@ AeBuildLocalTables ( * sure that the ACPICA core ignores it */ memset (&LocalBADTABLE, 0, sizeof (ACPI_TABLE_HEADER)); - ACPI_MOVE_NAME (LocalBADTABLE.Signature, "BAD!"); + ACPI_COPY_NAMESEG (LocalBADTABLE.Signature, "BAD!"); LocalBADTABLE.Revision = 1; LocalBADTABLE.Length = sizeof (ACPI_TABLE_HEADER); diff --git a/source/tools/acpiexec/aetests.c b/source/tools/acpiexec/aetests.c index 9f66fcea4ecd..9f35e8f5acaa 100644 --- a/source/tools/acpiexec/aetests.c +++ b/source/tools/acpiexec/aetests.c @@ -168,6 +168,10 @@ static void AeTestSleepData ( void); +static void +AeGlobalAddressRangeCheck( + void); + /****************************************************************************** * @@ -594,3 +598,59 @@ AeTestSleepData ( } } } + + +/****************************************************************************** + * + * FUNCTION: AeLateTest + * + * DESCRIPTION: Exercise tests that should be performed before shutdown. + * + *****************************************************************************/ + +void +AeLateTest ( + void) +{ + AeGlobalAddressRangeCheck(); +} + + +/****************************************************************************** + * + * FUNCTION: AeGlobalAddressRangeCheck + * + * DESCRIPTION: There have been some issues in the past with adding and + * removing items to the global address list from + * OperationRegions declared in control methods. This test loops + * over the list to ensure that dangling pointers do not exist in + * the global address list. + * + *****************************************************************************/ + +static void +AeGlobalAddressRangeCheck( + void) +{ + ACPI_STATUS Status; + ACPI_ADDRESS_RANGE *Current; + ACPI_BUFFER ReturnBuffer; + UINT32 i; + + + ReturnBuffer.Length = ACPI_ALLOCATE_BUFFER; + AcpiUtInitializeBuffer (&ReturnBuffer, ACPI_ALLOCATE_BUFFER); + + for (i = 0; i < ACPI_ADDRESS_RANGE_MAX; i++) + { + Current = AcpiGbl_AddressRangeList[i]; + + while (Current) + { + Status = AcpiGetName (Current->RegionNode, ACPI_SINGLE_NAME, &ReturnBuffer); + ACPI_CHECK_OK (AcpiGetname, Status); + + Current = Current->Next; + } + } +} diff --git a/source/tools/acpihelp/ahdecode.c b/source/tools/acpihelp/ahdecode.c index 025246b72241..13b72d6bb149 100644 --- a/source/tools/acpihelp/ahdecode.c +++ b/source/tools/acpihelp/ahdecode.c @@ -297,7 +297,7 @@ AhFindPredefinedNames ( { UINT32 Length; BOOLEAN Found; - char Name[ACPI_NAME_SIZE + 1]; + char Name[ACPI_NAMESEG_SIZE + 1]; if (!NamePrefix || (*NamePrefix == '*')) @@ -307,7 +307,7 @@ AhFindPredefinedNames ( } Length = strlen (NamePrefix); - if (Length > ACPI_NAME_SIZE) + if (Length > ACPI_NAMESEG_SIZE) { printf ("%.8s: Predefined name must be 4 characters maximum\n", NamePrefix); diff --git a/source/tools/acpinames/antables.c b/source/tools/acpinames/antables.c index 911a2cc5c267..289948f68a07 100644 --- a/source/tools/acpinames/antables.c +++ b/source/tools/acpinames/antables.c @@ -206,13 +206,13 @@ AnInitializeTableHeader ( UINT32 Length) { - ACPI_MOVE_NAME (Header->Signature, Signature); + ACPI_COPY_NAMESEG (Header->Signature, Signature); Header->Length = Length; Header->OemRevision = 0x1001; memcpy (Header->OemId, "Intel ", ACPI_OEM_ID_SIZE); memcpy (Header->OemTableId, "AcpiExec", ACPI_OEM_TABLE_ID_SIZE); - ACPI_MOVE_NAME (Header->AslCompilerId, "INTL"); + ACPI_COPY_NAMESEG (Header->AslCompilerId, "INTL"); Header->AslCompilerRevision = ACPI_CA_VERSION; /* Set the checksum, must set to zero first */ @@ -257,8 +257,8 @@ AnBuildLocalTables ( NextTable = TableList; while (NextTable) { - if (!ACPI_COMPARE_NAME (NextTable->Table->Signature, ACPI_SIG_DSDT) && - !ACPI_COMPARE_NAME (NextTable->Table->Signature, ACPI_SIG_FADT)) + if (!ACPI_COMPARE_NAMESEG (NextTable->Table->Signature, ACPI_SIG_DSDT) && + !ACPI_COMPARE_NAMESEG (NextTable->Table->Signature, ACPI_SIG_FADT)) { TableCount++; } @@ -294,7 +294,7 @@ AnBuildLocalTables ( * Incoming DSDT or FADT are special cases. All other tables are * just immediately installed into the XSDT. */ - if (ACPI_COMPARE_NAME (NextTable->Table->Signature, ACPI_SIG_DSDT)) + if (ACPI_COMPARE_NAMESEG (NextTable->Table->Signature, ACPI_SIG_DSDT)) { if (DsdtAddress) { @@ -306,7 +306,7 @@ AnBuildLocalTables ( DsdtAddress = ACPI_PTR_TO_PHYSADDR (NextTable->Table); } - else if (ACPI_COMPARE_NAME (NextTable->Table->Signature, ACPI_SIG_FADT)) + else if (ACPI_COMPARE_NAMESEG (NextTable->Table->Signature, ACPI_SIG_FADT)) { ExternalFadt = ACPI_CAST_PTR (ACPI_TABLE_FADT, NextTable->Table); @@ -434,7 +434,7 @@ AnBuildLocalTables ( /* Build a FACS */ memset (&LocalFACS, 0, sizeof (ACPI_TABLE_FACS)); - ACPI_MOVE_NAME (LocalFACS.Signature, ACPI_SIG_FACS); + ACPI_COPY_NAMESEG (LocalFACS.Signature, ACPI_SIG_FACS); LocalFACS.Length = sizeof (ACPI_TABLE_FACS); LocalFACS.GlobalLock = 0x11AA0011; diff --git a/source/tools/acpixtract/acpixtract.c b/source/tools/acpixtract/acpixtract.c index 75e3382aee14..64264bcf3106 100644 --- a/source/tools/acpixtract/acpixtract.c +++ b/source/tools/acpixtract/acpixtract.c @@ -204,7 +204,7 @@ AxExtractTables ( if (Signature) { - strncpy (UpperSignature, Signature, ACPI_NAME_SIZE); + strncpy (UpperSignature, Signature, ACPI_NAMESEG_SIZE); AcpiUtStrupr (UpperSignature); /* Are there enough instances of the table to continue? */ @@ -262,12 +262,12 @@ AxExtractTables ( continue; } - ACPI_MOVE_NAME (ThisSignature, Gbl_LineBuffer); + ACPI_COPY_NAMESEG (ThisSignature, Gbl_LineBuffer); if (Signature) { /* Ignore signatures that don't match */ - if (!ACPI_COMPARE_NAME (ThisSignature, UpperSignature)) + if (!ACPI_COMPARE_NAMESEG (ThisSignature, UpperSignature)) { continue; } @@ -466,12 +466,12 @@ AxExtractToMultiAmlFile ( continue; } - ACPI_MOVE_NAME (ThisSignature, Gbl_LineBuffer); + ACPI_COPY_NAMESEG (ThisSignature, Gbl_LineBuffer); /* Only want DSDT and SSDTs */ - if (!ACPI_COMPARE_NAME (ThisSignature, ACPI_SIG_DSDT) && - !ACPI_COMPARE_NAME (ThisSignature, ACPI_SIG_SSDT)) + if (!ACPI_COMPARE_NAMESEG (ThisSignature, ACPI_SIG_DSDT) && + !ACPI_COMPARE_NAMESEG (ThisSignature, ACPI_SIG_SSDT)) { continue; } diff --git a/source/tools/acpixtract/axutils.c b/source/tools/acpixtract/axutils.c index 07d48b67cf61..480bd0f3289f 100644 --- a/source/tools/acpixtract/axutils.c +++ b/source/tools/acpixtract/axutils.c @@ -530,7 +530,7 @@ AxCountTableInstances ( } AxNormalizeSignature (Gbl_InstanceBuffer); - if (ACPI_COMPARE_NAME (Gbl_InstanceBuffer, Signature)) + if (ACPI_COMPARE_NAMESEG (Gbl_InstanceBuffer, Signature)) { Instances++; } @@ -703,7 +703,7 @@ AxDumpTableHeader ( /* FACS has only signature and length */ - if (ACPI_COMPARE_NAME (TableHeader->Signature, "FACS")) + if (ACPI_COMPARE_NAMESEG (TableHeader->Signature, "FACS")) { printf (" 0x%2.2X\n", Facs->Version); return; @@ -745,7 +745,7 @@ AxCheckTableLengths ( } if ((ByteCount < sizeof (ACPI_TABLE_HEADER)) && - (ByteCount >= ACPI_NAME_SIZE)) + (ByteCount >= ACPI_NAMESEG_SIZE)) { printf (" : (Table too short for an ACPI table)"); } |