ACK: [PATCH] ACPICA: update to version 20140214. (LP: #1281096)
Alex Hung
alex.hung at canonical.com
Tue Feb 18 07:28:53 UTC 2014
On 02/17/2014 09:13 PM, Colin King wrote:
> From: Colin Ian King <colin.king at canonical.com>
>
> Update to ACPICA 20140214, see the release note
> https://lists.acpica.org/pipermail/devel/2014-February/000622.html
> for more information.
>
> Exhaustively tested against a wide collection of ACPI tables,
> with method and syntaxcheck. Syntaxcheck now picks up more issues
> such as detecting method names that are not part of the defined
> list of accepted names that start with a prefix '_'.
>
> This release of ACPICA also clears up 7 outstanding issues found
> in Coverity Scan.
>
> Signed-off-by: Colin Ian King <colin.king at canonical.com>
> ---
> src/acpica/fwts_acpica.c | 2 +-
> src/acpica/source/common/adisasm.c | 102 +-----
> src/acpica/source/common/dmextern.c | 44 ++-
> src/acpica/source/common/dmtbinfo.c | 2 +-
> src/acpica/source/compiler/aslcompiler.h | 8 +-
> src/acpica/source/compiler/aslerror.c | 33 +-
> src/acpica/source/compiler/aslfileio.c | 113 ++++---
> src/acpica/source/compiler/aslglobal.h | 2 +-
> src/acpica/source/compiler/aslmain.c | 11 -
> src/acpica/source/compiler/aslmessages.h | 2 +-
> src/acpica/source/compiler/aslpredef.c | 10 +-
> src/acpica/source/compiler/aslprepkg.c | 24 +-
> src/acpica/source/compiler/aslstartup.c | 4 +-
> src/acpica/source/compiler/asltransform.c | 9 -
> src/acpica/source/compiler/dtfield.c | 34 +-
> src/acpica/source/compiler/dttemplate.h | 4 +-
> src/acpica/source/compiler/prmacros.c | 13 +-
> src/acpica/source/components/debugger/dbdisply.c | 4 +
> src/acpica/source/components/dispatcher/dsinit.c | 61 +++-
> src/acpica/source/components/dispatcher/dsmethod.c | 139 ++++++++
> src/acpica/source/components/dispatcher/dswload.c | 17 +
> src/acpica/source/components/events/evregion.c | 12 +
> src/acpica/source/components/executer/exdump.c | 222 +++++++++++--
> src/acpica/source/components/executer/exsystem.c | 12 +-
> src/acpica/source/components/executer/exutils.c | 90 +----
> src/acpica/source/components/namespace/nsinit.c | 5 +-
> src/acpica/source/components/namespace/nsload.c | 4 +-
> src/acpica/source/components/namespace/nsobject.c | 9 +-
> src/acpica/source/components/namespace/nsprepkg.c | 40 +--
> src/acpica/source/components/namespace/nsrepair.c | 25 +-
> src/acpica/source/components/namespace/nsrepair2.c | 38 ++-
> src/acpica/source/components/parser/psloop.c | 5 +
> src/acpica/source/components/parser/psobject.c | 7 +-
> src/acpica/source/components/resources/rscalc.c | 2 +-
> src/acpica/source/components/resources/rscreate.c | 10 +-
> src/acpica/source/components/resources/rsdump.c | 2 +-
> .../source/components/resources/rsdumpinfo.c | 2 +-
> src/acpica/source/components/resources/rsinfo.c | 2 +-
> src/acpica/source/components/utilities/utdelete.c | 16 +-
> src/acpica/source/components/utilities/utglobal.c | 38 +--
> src/acpica/source/components/utilities/utosi.c | 29 ++
> src/acpica/source/include/acapps.h | 10 +-
> src/acpica/source/include/acbuffer.h | 5 +
> src/acpica/source/include/acconfig.h | 4 +
> src/acpica/source/include/acdebug.h | 4 +
> src/acpica/source/include/acdisasm.h | 4 +
> src/acpica/source/include/acdispat.h | 18 +-
> src/acpica/source/include/acevents.h | 4 +
> src/acpica/source/include/acexcep.h | 4 +
> src/acpica/source/include/acglobal.h | 364 ++++++++++-----------
> src/acpica/source/include/achware.h | 4 +
> src/acpica/source/include/acinterp.h | 16 +-
> src/acpica/source/include/aclocal.h | 4 +
> src/acpica/source/include/acmacros.h | 4 +
> src/acpica/source/include/acnamesp.h | 4 +
> src/acpica/source/include/acobject.h | 4 +-
> src/acpica/source/include/acoutput.h | 4 +
> src/acpica/source/include/acparser.h | 4 +
> src/acpica/source/include/acpiosxf.h | 4 +
> src/acpica/source/include/acpixf.h | 8 +-
> src/acpica/source/include/acpredef.h | 18 +-
> src/acpica/source/include/acresrc.h | 4 +
> src/acpica/source/include/acrestyp.h | 4 +
> src/acpica/source/include/acstruct.h | 8 +
> src/acpica/source/include/actables.h | 4 +
> src/acpica/source/include/actbl.h | 4 +
> src/acpica/source/include/actbl1.h | 6 +-
> src/acpica/source/include/actbl2.h | 6 +-
> src/acpica/source/include/actbl3.h | 6 +-
> src/acpica/source/include/actypes.h | 4 +
> src/acpica/source/include/acutils.h | 5 +
> src/acpica/source/include/amlcode.h | 5 +
> src/acpica/source/include/amlresrc.h | 5 +
> src/acpica/source/tools/acpiexec/aecommon.h | 5 +
> 74 files changed, 1139 insertions(+), 626 deletions(-)
>
> diff --git a/src/acpica/fwts_acpica.c b/src/acpica/fwts_acpica.c
> index 06aa0b7..9d92470 100644
> --- a/src/acpica/fwts_acpica.c
> +++ b/src/acpica/fwts_acpica.c
> @@ -908,7 +908,7 @@ int fwts_acpica_init(fwts_framework *fw)
> if (fwts_acpica_init_called)
> return FWTS_ERROR;
>
> - AcpiGbl_AllMethodsSerialized =
> + AcpiGbl_AutoSerializeMethods =
> FWTS_ACPICA_MODE(fw, FWTS_ACPICA_MODE_SERIALIZED);
> AcpiGbl_EnableInterpreterSlack =
> FWTS_ACPICA_MODE(fw, FWTS_ACPICA_MODE_SLACK);
> diff --git a/src/acpica/source/common/adisasm.c b/src/acpica/source/common/adisasm.c
> index 75b1f3e..12805ee 100644
> --- a/src/acpica/source/common/adisasm.c
> +++ b/src/acpica/source/common/adisasm.c
> @@ -322,7 +322,6 @@ AdInitialize (
> * OutToFile - TRUE if output should go to a file
> * Prefix - Path prefix for output
> * OutFilename - where the filename is returned
> - * GetAllTables - TRUE if all tables are desired
> *
> * RETURN: Status
> *
> @@ -335,8 +334,7 @@ AdAmlDisassemble (
> BOOLEAN OutToFile,
> char *Filename,
> char *Prefix,
> - char **OutFilename,
> - BOOLEAN GetAllTables)
> + char **OutFilename)
> {
> ACPI_STATUS Status;
> char *DisasmFilename = NULL;
> @@ -420,7 +418,7 @@ AdAmlDisassemble (
> }
> else
> {
> - Status = AdGetLocalTables (Filename, GetAllTables);
> + Status = AdGetLocalTables ();
> if (ACPI_FAILURE (Status))
> {
> AcpiOsPrintf ("Could not get ACPI tables, %s\n",
> @@ -818,8 +816,7 @@ AdDisplayTables (
> *
> * FUNCTION: AdGetLocalTables
> *
> - * PARAMETERS: Filename - Not used
> - * GetAllTables - TRUE if all tables are desired
> + * PARAMETERS: None
> *
> * RETURN: Status
> *
> @@ -829,105 +826,36 @@ AdDisplayTables (
>
> ACPI_STATUS
> AdGetLocalTables (
> - char *Filename,
> - BOOLEAN GetAllTables)
> + void)
> {
> ACPI_STATUS Status;
> ACPI_TABLE_HEADER TableHeader;
> ACPI_TABLE_HEADER *NewTable;
> - UINT32 NumTables;
> - UINT32 PointerSize;
> UINT32 TableIndex;
>
>
> - if (GetAllTables)
> - {
> - ACPI_MOVE_32_TO_32 (TableHeader.Signature, ACPI_SIG_RSDT);
> - AcpiOsTableOverride (&TableHeader, &NewTable);
> - if (!NewTable)
> - {
> - fprintf (stderr, "Could not obtain RSDT\n");
> - return (AE_NO_ACPI_TABLES);
> - }
> - else
> - {
> - AdWriteTable (NewTable, NewTable->Length,
> - ACPI_SIG_RSDT, NewTable->OemTableId);
> - }
> -
> - if (ACPI_COMPARE_NAME (NewTable->Signature, ACPI_SIG_RSDT))
> - {
> - PointerSize = sizeof (UINT32);
> - }
> - else
> - {
> - PointerSize = sizeof (UINT64);
> - }
> -
> - /*
> - * Determine the number of tables pointed to by the RSDT/XSDT.
> - * This is defined by the ACPI Specification to be the number of
> - * pointers contained within the RSDT/XSDT. The size of the pointers
> - * is architecture-dependent.
> - */
> - NumTables = (NewTable->Length - sizeof (ACPI_TABLE_HEADER)) / PointerSize;
> - AcpiOsPrintf ("There are %u tables defined in the %4.4s\n\n",
> - NumTables, NewTable->Signature);
> -
> - /* Get the FADT */
> -
> - ACPI_MOVE_32_TO_32 (TableHeader.Signature, ACPI_SIG_FADT);
> - AcpiOsTableOverride (&TableHeader, &NewTable);
> - if (NewTable)
> - {
> - AdWriteTable (NewTable, NewTable->Length,
> - ACPI_SIG_FADT, NewTable->OemTableId);
> - }
> - AcpiOsPrintf ("\n");
> -
> - /* Don't bother with FACS, it is usually all zeros */
> - }
> -
> - /* Always get the DSDT */
> + /* Get the DSDT via table override */
>
> ACPI_MOVE_32_TO_32 (TableHeader.Signature, ACPI_SIG_DSDT);
> AcpiOsTableOverride (&TableHeader, &NewTable);
> - if (NewTable)
> - {
> - AdWriteTable (NewTable, NewTable->Length,
> - ACPI_SIG_DSDT, NewTable->OemTableId);
> -
> - /* Store DSDT in the Table Manager */
> -
> - Status = AcpiTbStoreTable (0, NewTable, NewTable->Length,
> - 0, &TableIndex);
> - if (ACPI_FAILURE (Status))
> - {
> - fprintf (stderr, "Could not store DSDT\n");
> - return (AE_NO_ACPI_TABLES);
> - }
> - }
> - else
> + if (!NewTable)
> {
> fprintf (stderr, "Could not obtain DSDT\n");
> return (AE_NO_ACPI_TABLES);
> }
>
> -#if 0
> - /* TBD: Future implementation */
> + AdWriteTable (NewTable, NewTable->Length,
> + ACPI_SIG_DSDT, NewTable->OemTableId);
>
> - AcpiOsPrintf ("\n");
> + /* Store DSDT in the Table Manager */
>
> - /* Get all SSDTs */
> -
> - ACPI_MOVE_32_TO_32 (TableHeader.Signature, ACPI_SIG_SSDT);
> - do
> + Status = AcpiTbStoreTable (0, NewTable, NewTable->Length,
> + 0, &TableIndex);
> + if (ACPI_FAILURE (Status))
> {
> - NewTable = NULL;
> - Status = AcpiOsTableOverride (&TableHeader, &NewTable);
> -
> - } while (NewTable);
> -#endif
> + fprintf (stderr, "Could not store DSDT\n");
> + return (AE_NO_ACPI_TABLES);
> + }
>
> return (AE_OK);
> }
> diff --git a/src/acpica/source/common/dmextern.c b/src/acpica/source/common/dmextern.c
> index 4c7e3d0..e54dee7 100644
> --- a/src/acpica/source/common/dmextern.c
> +++ b/src/acpica/source/common/dmextern.c
> @@ -1337,10 +1337,16 @@ AcpiDmUnresolvedWarning (
> " * were not specified. This resulting disassembler output file may not\n"
> " * compile because the disassembler did not know how many arguments\n"
> " * to assign to these methods. To specify the tables needed to resolve\n"
> - " * external control method references, use the one of the following\n"
> - " * example iASL invocations:\n"
> - " * iasl -e <ssdt1.aml,ssdt2.aml...> -d <dsdt.aml>\n"
> - " * iasl -e <dsdt.aml,ssdt2.aml...> -d <ssdt1.aml>\n"
> + " * external control method references, the -e option can be used to\n"
> + " * specify the filenames. Example iASL invocations:\n"
> + " * iasl -e ssdt1.aml ssdt2.aml ssdt3.aml -d dsdt.aml\n"
> + " * iasl -e dsdt.aml ssdt2.aml -d ssdt1.aml\n"
> + " * iasl -e ssdt*.aml -d dsdt.aml\n"
> + " *\n"
> + " * In addition, the -fe option can be used to specify a file containing\n"
> + " * control method external declarations with the associated method\n"
> + " * argument counts. Each line of the file must be of the form:\n"
> + " * External (<method pathname>, MethodObj, <argument count>)\n"
> " */\n",
> AcpiGbl_NumExternalMethods);
> }
> @@ -1351,10 +1357,15 @@ AcpiDmUnresolvedWarning (
> AcpiOsPrintf (" /*\n"
> " * iASL Warning: There were %u external control methods found during\n"
> " * disassembly, but only %u %s resolved (%u unresolved). Additional\n"
> - " * ACPI tables are required to properly disassemble the code. This\n"
> + " * ACPI tables may be required to properly disassemble the code. This\n"
> " * resulting disassembler output file may not compile because the\n"
> " * disassembler did not know how many arguments to assign to the\n"
> " * unresolved methods.\n"
> + " *\n"
> + " * If necessary, the -fe option can be used to specify a file containing\n"
> + " * control method external declarations with the associated method\n"
> + " * argument counts. Each line of the file must be of the form:\n"
> + " * External (<method pathname>, MethodObj, <argument count>)\n"
> " */\n",
> AcpiGbl_NumExternalMethods, AcpiGbl_ResolvedExternalMethods,
> (AcpiGbl_ResolvedExternalMethods > 1 ? "were" : "was"),
> @@ -1373,10 +1384,16 @@ AcpiDmUnresolvedWarning (
> "were not specified. The resulting disassembler output file may not\n"
> "compile because the disassembler did not know how many arguments\n"
> "to assign to these methods. To specify the tables needed to resolve\n"
> - "external control method references, use the one of the following\n"
> - "example iASL invocations:\n"
> - " iasl -e <ssdt1.aml,ssdt2.aml...> -d <dsdt.aml>\n"
> - " iasl -e <dsdt.aml,ssdt2.aml...> -d <ssdt1.aml>\n",
> + "external control method references, the -e option can be used to\n"
> + "specify the filenames. Example iASL invocations:\n"
> + " iasl -e ssdt1.aml ssdt2.aml ssdt3.aml -d dsdt.aml\n"
> + " iasl -e dsdt.aml ssdt2.aml -d ssdt1.aml\n"
> + " iasl -e ssdt*.aml -d dsdt.aml\n"
> + "\n"
> + "In addition, the -fe option can be used to specify a file containing\n"
> + "control method external declarations with the associated method\n"
> + "argument counts. Each line of the file must be of the form:\n"
> + " External (<method pathname>, MethodObj, <argument count>)\n",
> AcpiGbl_NumExternalMethods);
> }
> else if (AcpiGbl_NumExternalMethods != AcpiGbl_ResolvedExternalMethods)
> @@ -1386,10 +1403,15 @@ AcpiDmUnresolvedWarning (
> fprintf (stderr, "\n"
> "iASL Warning: There were %u external control methods found during\n"
> "disassembly, but only %u %s resolved (%u unresolved). Additional\n"
> - "ACPI tables are required to properly disassemble the code. The\n"
> + "ACPI tables may be required to properly disassemble the code. The\n"
> "resulting disassembler output file may not compile because the\n"
> "disassembler did not know how many arguments to assign to the\n"
> - "unresolved methods.\n",
> + "unresolved methods.\n"
> + "\n"
> + "If necessary, the -fe option can be used to specify a file containing\n"
> + "control method external declarations with the associated method\n"
> + "argument counts. Each line of the file must be of the form:\n"
> + " External (<method pathname>, MethodObj, <argument count>)\n",
> AcpiGbl_NumExternalMethods, AcpiGbl_ResolvedExternalMethods,
> (AcpiGbl_ResolvedExternalMethods > 1 ? "were" : "was"),
> (AcpiGbl_NumExternalMethods - AcpiGbl_ResolvedExternalMethods));
> diff --git a/src/acpica/source/common/dmtbinfo.c b/src/acpica/source/common/dmtbinfo.c
> index 858c0f3..cd565a4 100644
> --- a/src/acpica/source/common/dmtbinfo.c
> +++ b/src/acpica/source/common/dmtbinfo.c
> @@ -2012,7 +2012,7 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoSpcr[] =
> ACPI_DMTABLE_INFO AcpiDmTableInfoSpmi[] =
> {
> {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (InterfaceType), "Interface Type", 0},
> - {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (Reserved), "Reserved", DT_NON_ZERO}, /* Value must be 1 */
> {ACPI_DMT_UINT16, ACPI_SPMI_OFFSET (SpecRevision), "IPMI Spec Version", 0},
> {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (InterruptType), "Interrupt Type", 0},
> {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (GpeNumber), "GPE Number", 0},
> diff --git a/src/acpica/source/compiler/aslcompiler.h b/src/acpica/source/compiler/aslcompiler.h
> index 7960ef0..49dc7fb 100644
> --- a/src/acpica/source/compiler/aslcompiler.h
> +++ b/src/acpica/source/compiler/aslcompiler.h
> @@ -352,6 +352,10 @@ ApCheckRegMethod (
> * aslerror - error handling/reporting
> */
> void
> +AslAbort (
> + void);
> +
> +void
> AslError (
> UINT8 Level,
> UINT8 MessageId,
> @@ -775,10 +779,6 @@ TrLinkPeerNodes (
> * aslfiles - File I/O support
> */
> void
> -AslAbort (
> - void);
> -
> -void
> FlAddIncludeDirectory (
> char *Dir);
>
> diff --git a/src/acpica/source/compiler/aslerror.c b/src/acpica/source/compiler/aslerror.c
> index 8e506f0..21ca7d5 100644
> --- a/src/acpica/source/compiler/aslerror.c
> +++ b/src/acpica/source/compiler/aslerror.c
> @@ -128,6 +128,36 @@ AeAddToErrorLog (
>
> /*******************************************************************************
> *
> + * FUNCTION: AslAbort
> + *
> + * PARAMETERS: None
> + *
> + * RETURN: None
> + *
> + * DESCRIPTION: Dump the error log and abort the compiler. Used for serious
> + * I/O errors.
> + *
> + ******************************************************************************/
> +
> +void
> +AslAbort (
> + void)
> +{
> +
> + AePrintErrorLog (ASL_FILE_STDERR);
> + if (Gbl_DebugFlag)
> + {
> + /* Print error summary to stdout also */
> +
> + AePrintErrorLog (ASL_FILE_STDOUT);
> + }
> +
> + exit (1);
> +}
> +
> +
> +/*******************************************************************************
> + *
> * FUNCTION: AeClearErrorLog
> *
> * PARAMETERS: None
> @@ -889,7 +919,8 @@ AslError (
>
> /* Check if user wants to ignore this exception */
>
> - if (AslIsExceptionDisabled (Level, MessageId))
> + if (Gbl_AllExceptionsDisabled ||
> + AslIsExceptionDisabled (Level, MessageId))
> {
> return;
> }
> diff --git a/src/acpica/source/compiler/aslfileio.c b/src/acpica/source/compiler/aslfileio.c
> index b125c61..50f1534 100644
> --- a/src/acpica/source/compiler/aslfileio.c
> +++ b/src/acpica/source/compiler/aslfileio.c
> @@ -118,35 +118,9 @@
> #define _COMPONENT ACPI_COMPILER
> ACPI_MODULE_NAME ("aslfileio")
>
> -
> -/*******************************************************************************
> - *
> - * FUNCTION: AslAbort
> - *
> - * PARAMETERS: None
> - *
> - * RETURN: None
> - *
> - * DESCRIPTION: Dump the error log and abort the compiler. Used for serious
> - * I/O errors.
> - *
> - ******************************************************************************/
> -
> -void
> -AslAbort (
> - void)
> -{
> -
> - AePrintErrorLog (ASL_FILE_STDERR);
> - if (Gbl_DebugFlag)
> - {
> - /* Print error summary to stdout also */
> -
> - AePrintErrorLog (ASL_FILE_STDOUT);
> - }
> -
> - exit (1);
> -}
> +long
> +UtGetFileSize (
> + FILE *fp);
>
>
> /*******************************************************************************
> @@ -213,13 +187,73 @@ FlOpenFile (
>
> /*******************************************************************************
> *
> + * FUNCTION: UtGetFileSize
> + *
> + * PARAMETERS: fp - Open file handle
> + *
> + * RETURN: File Size. -1 on error.
> + *
> + * DESCRIPTION: Get current file size. Uses seek-to-EOF. File must be open.
> + * TBD: This function should be used to replace other similar
> + * functions in ACPICA.
> + *
> + ******************************************************************************/
> +
> +long
> +UtGetFileSize (
> + FILE *fp)
> +{
> + long FileSize;
> + long CurrentOffset;
> +
> +
> + CurrentOffset = ftell (fp);
> + if (CurrentOffset < 0)
> + {
> + goto OffsetError;
> + }
> +
> + if (fseek (fp, 0, SEEK_END))
> + {
> + goto SeekError;
> + }
> +
> + FileSize = ftell (fp);
> + if (FileSize < 0)
> + {
> + goto OffsetError;
> + }
> +
> + /* Restore file pointer */
> +
> + if (fseek (fp, CurrentOffset, SEEK_SET))
> + {
> + goto SeekError;
> + }
> +
> + return (FileSize);
> +
> +
> +OffsetError:
> + perror ("Could not get file offset");
> + return (-1);
> +
> +SeekError:
> + perror ("Could not seek file");
> + return (-1);
> +}
> +
> +
> +/*******************************************************************************
> + *
> * FUNCTION: FlGetFileSize
> *
> * PARAMETERS: FileId - Index into file info array
> *
> * RETURN: File Size
> *
> - * DESCRIPTION: Get current file size. Uses seek-to-EOF. File must be open.
> + * DESCRIPTION: Get current file size. Uses common seek-to-EOF function.
> + * File must be open. Aborts compiler on error.
> *
> ******************************************************************************/
>
> @@ -227,21 +261,16 @@ UINT32
> FlGetFileSize (
> UINT32 FileId)
> {
> - FILE *fp;
> - UINT32 FileSize;
> - long Offset;
> -
> + long FileSize;
>
> - fp = Gbl_Files[FileId].Handle;
> - Offset = ftell (fp);
>
> - fseek (fp, 0, SEEK_END);
> - FileSize = (UINT32) ftell (fp);
> -
> - /* Restore file pointer */
> + FileSize = UtGetFileSize (Gbl_Files[FileId].Handle);
> + if (FileSize == -1)
> + {
> + AslAbort();
> + }
>
> - fseek (fp, Offset, SEEK_SET);
> - return (FileSize);
> + return ((UINT32) FileSize);
> }
>
>
> diff --git a/src/acpica/source/compiler/aslglobal.h b/src/acpica/source/compiler/aslglobal.h
> index f6dc41d..4d56c05 100644
> --- a/src/acpica/source/compiler/aslglobal.h
> +++ b/src/acpica/source/compiler/aslglobal.h
> @@ -231,7 +231,6 @@ ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_NoErrors, FALSE);
> ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_WarningsAsErrors, FALSE);
> ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_NoResourceChecking, FALSE);
> ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_DisasmFlag, FALSE);
> -ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_GetAllTables, FALSE);
> ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_IntegerOptimizationFlag, TRUE);
> ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_ReferenceOptimizationFlag, TRUE);
> ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_DisplayRemarks, TRUE);
> @@ -242,6 +241,7 @@ ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_UseOriginalCompilerId,
> ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_VerboseTemplates, FALSE);
> ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_DoTemplates, FALSE);
> ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_CompileGeneric, FALSE);
> +ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_AllExceptionsDisabled, FALSE);
>
>
> #define HEX_OUTPUT_NONE 0
> diff --git a/src/acpica/source/compiler/aslmain.c b/src/acpica/source/compiler/aslmain.c
> index 3469032..72a6c06 100644
> --- a/src/acpica/source/compiler/aslmain.c
> +++ b/src/acpica/source/compiler/aslmain.c
> @@ -230,7 +230,6 @@ Usage (
> ACPI_OPTION ("", " (Obtain DSDT from current system if no input file)");
> ACPI_OPTION ("-e <f1 f2 ...>", "Include ACPI table(s) for external symbol resolution");
> ACPI_OPTION ("-fe <file>", "Specify external symbol declaration file");
> - ACPI_OPTION ("-g", "Get ACPI tables and write to files (*.dat)");
> ACPI_OPTION ("-in", "Ignore NoOp opcodes");
> ACPI_OPTION ("-vt", "Dump binary table data in hex format within output file");
>
> @@ -391,16 +390,6 @@ main (
>
> /* Perform global actions first/only */
>
> - if (Gbl_GetAllTables)
> - {
> - Status = AslDoOneFile (NULL);
> - if (ACPI_FAILURE (Status))
> - {
> - return (-1);
> - }
> - return (0);
> - }
> -
> if (Gbl_DisassembleAll)
> {
> while (argv[Index1])
> diff --git a/src/acpica/source/compiler/aslmessages.h b/src/acpica/source/compiler/aslmessages.h
> index f7e9b00..0e29ec2 100644
> --- a/src/acpica/source/compiler/aslmessages.h
> +++ b/src/acpica/source/compiler/aslmessages.h
> @@ -517,7 +517,7 @@ char *AslMessages [] =
> /* ASL_MSG_INVALID_FIELD_NAME */ "Invalid Field Name",
> /* ASL_MSG_INVALID_HEX_INTEGER */ "Invalid hex integer constant",
> /* ASL_MSG_OEM_TABLE */ "OEM table - unknown contents",
> -/* ASL_MSG_RESERVED_VALUE */ "Reserved field must be zero",
> +/* ASL_MSG_RESERVED_VALUE */ "Reserved field",
> /* ASL_MSG_UNKNOWN_LABEL */ "Label is undefined",
> /* ASL_MSG_UNKNOWN_SUBTABLE */ "Unknown subtable type",
> /* ASL_MSG_UNKNOWN_TABLE */ "Unknown ACPI table signature",
> diff --git a/src/acpica/source/compiler/aslpredef.c b/src/acpica/source/compiler/aslpredef.c
> index c94c3e2..9305ac7 100644
> --- a/src/acpica/source/compiler/aslpredef.c
> +++ b/src/acpica/source/compiler/aslpredef.c
> @@ -323,10 +323,16 @@ ApCheckPredefinedReturnValue (
> const ACPI_PREDEFINED_INFO *ThisName;
>
>
> - /* Check parent method for a match against the predefined name list */
> -
> + /*
> + * Check parent method for a match against the predefined name list.
> + *
> + * Note: Disable compiler errors/warnings because any errors will be
> + * caught when analyzing the parent method. Eliminates duplicate errors.
> + */
> + Gbl_AllExceptionsDisabled = TRUE;
> Index = ApCheckForPredefinedName (MethodInfo->Op,
> MethodInfo->Op->Asl.NameSeg);
> + Gbl_AllExceptionsDisabled = FALSE;
>
> switch (Index)
> {
> diff --git a/src/acpica/source/compiler/aslprepkg.c b/src/acpica/source/compiler/aslprepkg.c
> index e403ef4..afcbd48 100644
> --- a/src/acpica/source/compiler/aslprepkg.c
> +++ b/src/acpica/source/compiler/aslprepkg.c
> @@ -241,7 +241,7 @@ ApCheckPackage (
> {
> case ACPI_PTYPE1_FIXED:
> /*
> - * The package count is fixed and there are no sub-packages
> + * The package count is fixed and there are no subpackages
> *
> * If package is too small, exit.
> * If package is larger than expected, issue warning but continue
> @@ -266,7 +266,7 @@ ApCheckPackage (
>
> case ACPI_PTYPE1_VAR:
> /*
> - * The package count is variable, there are no sub-packages,
> + * The package count is variable, there are no subpackages,
> * and all elements must be of the same type
> */
> for (i = 0; i < Count; i++)
> @@ -279,7 +279,7 @@ ApCheckPackage (
>
> case ACPI_PTYPE1_OPTION:
> /*
> - * The package count is variable, there are no sub-packages.
> + * The package count is variable, there are no subpackages.
> * There are a fixed number of required elements, and a variable
> * number of optional elements.
> *
> @@ -323,7 +323,7 @@ ApCheckPackage (
> Op = Op->Asl.Next;
> Count--;
>
> - /* Examine the sub-packages */
> + /* Examine the subpackages */
>
> ApCheckPackageList (Predefined->Info.Name, Op,
> Package, 1, Count);
> @@ -331,7 +331,7 @@ ApCheckPackage (
>
> case ACPI_PTYPE2_PKG_COUNT:
>
> - /* First element is the (Integer) count of sub-packages to follow */
> + /* First element is the (Integer) count of subpackages to follow */
>
> Status = ApCheckObjectType (Predefined->Info.Name, Op,
> ACPI_RTYPE_INTEGER, 0);
> @@ -355,7 +355,7 @@ ApCheckPackage (
>
> Op = Op->Asl.Next;
>
> - /* Examine the sub-packages */
> + /* Examine the subpackages */
>
> ApCheckPackageList (Predefined->Info.Name, Op,
> Package, 1, Count);
> @@ -368,10 +368,10 @@ ApCheckPackage (
> case ACPI_PTYPE2_FIX_VAR:
> /*
> * These types all return a single Package that consists of a
> - * variable number of sub-Packages.
> + * variable number of subpackages.
> */
>
> - /* Examine the sub-packages */
> + /* Examine the subpackages */
>
> ApCheckPackageList (Predefined->Info.Name, Op,
> Package, 0, Count);
> @@ -566,7 +566,7 @@ ApCheckPackageList (
>
> case ACPI_PTYPE2_FIXED:
>
> - /* Each sub-package has a fixed length */
> + /* Each subpackage has a fixed length */
>
> ExpectedCount = Package->RetInfo2.Count;
> if (Count < ExpectedCount)
> @@ -589,7 +589,7 @@ ApCheckPackageList (
>
> case ACPI_PTYPE2_MIN:
>
> - /* Each sub-package has a variable but minimum length */
> + /* Each subpackage has a variable but minimum length */
>
> ExpectedCount = Package->RetInfo.Count1;
> if (Count < ExpectedCount)
> @@ -599,7 +599,7 @@ ApCheckPackageList (
> break;
> }
>
> - /* Check the type of each sub-package element */
> + /* Check the type of each subpackage element */
>
> ApCheckPackageElements (PredefinedName, Op,
> Package->RetInfo.ObjectType1, Count, 0, 0);
> @@ -648,7 +648,7 @@ ApCheckPackageList (
> Count = ExpectedCount;
> }
>
> - /* Check the type of each sub-package element */
> + /* Check the type of each subpackage element */
>
> Op = Op->Asl.Next;
> ApCheckPackageElements (PredefinedName, Op,
> diff --git a/src/acpica/source/compiler/aslstartup.c b/src/acpica/source/compiler/aslstartup.c
> index cba3b82..fb38e7c 100644
> --- a/src/acpica/source/compiler/aslstartup.c
> +++ b/src/acpica/source/compiler/aslstartup.c
> @@ -323,7 +323,7 @@ AslDoDisassembly (
> AcpiGbl_DbOpt_disasm = TRUE;
> Status = AdAmlDisassemble (AslToFile,
> Gbl_Files[ASL_FILE_INPUT].Filename, Gbl_OutputFilenamePrefix,
> - &Gbl_Files[ASL_FILE_INPUT].Filename, Gbl_GetAllTables);
> + &Gbl_Files[ASL_FILE_INPUT].Filename);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -403,7 +403,7 @@ AslDoOneFile (
> /*
> * AML Disassembly (Optional)
> */
> - if (Gbl_DisasmFlag || Gbl_GetAllTables)
> + if (Gbl_DisasmFlag)
> {
> Status = AslDoDisassembly ();
> if (Status != AE_CTRL_CONTINUE)
> diff --git a/src/acpica/source/compiler/asltransform.c b/src/acpica/source/compiler/asltransform.c
> index 6cc2559..de34e6e 100644
> --- a/src/acpica/source/compiler/asltransform.c
> +++ b/src/acpica/source/compiler/asltransform.c
> @@ -522,10 +522,6 @@ TrDoSwitch (
> {
> /* Add an ELSE to complete the previous CASE */
>
> - if (!Conditional)
> - {
> - return;
> - }
> NewOp = TrCreateLeafNode (PARSEOP_ELSE);
> NewOp->Asl.Parent = Conditional->Asl.Parent;
> TrAmlInitLineNumbers (NewOp, NewOp->Asl.Parent);
> @@ -692,11 +688,6 @@ TrDoSwitch (
> {
> /* Convert the DEFAULT node to an ELSE */
>
> - if (!Conditional)
> - {
> - return;
> - }
> -
> TrAmlInitNode (DefaultOp, PARSEOP_ELSE);
> DefaultOp->Asl.Parent = Conditional->Asl.Parent;
>
> diff --git a/src/acpica/source/compiler/dtfield.c b/src/acpica/source/compiler/dtfield.c
> index 919ee9d..46d56f8 100644
> --- a/src/acpica/source/compiler/dtfield.c
> +++ b/src/acpica/source/compiler/dtfield.c
> @@ -383,21 +383,37 @@ DtCompileInteger (
> return;
> }
>
> - /* Ensure that reserved fields are set to zero */
> - /* TBD: should we set to zero, or just make this an ERROR? */
> - /* TBD: Probably better to use a flag */
> + /*
> + * Ensure that reserved fields are set properly. Note: uses
> + * the DT_NON_ZERO flag to indicate that the reserved value
> + * must be exactly one. Otherwise, the value must be zero.
> + * This is sufficient for now.
> + */
> +
> + /* TBD: Should use a flag rather than compare "Reserved" */
>
> - if (!ACPI_STRCMP (Field->Name, "Reserved") &&
> - (Value != 0))
> + if (!ACPI_STRCMP (Field->Name, "Reserved"))
> {
> - DtError (ASL_WARNING, ASL_MSG_RESERVED_VALUE, Field,
> - "Setting to zero");
> - Value = 0;
> + if (Flags & DT_NON_ZERO)
> + {
> + if (Value != 1)
> + {
> + DtError (ASL_WARNING, ASL_MSG_RESERVED_VALUE, Field,
> + "Must be one, setting to one");
> + Value = 1;
> + }
> + }
> + else if (Value != 0)
> + {
> + DtError (ASL_WARNING, ASL_MSG_RESERVED_VALUE, Field,
> + "Must be zero, setting to zero");
> + Value = 0;
> + }
> }
>
> /* Check if the value must be non-zero */
>
> - if ((Value == 0) && (Flags & DT_NON_ZERO))
> + else if ((Flags & DT_NON_ZERO) && (Value == 0))
> {
> DtError (ASL_ERROR, ASL_MSG_ZERO_VALUE, Field, NULL);
> }
> diff --git a/src/acpica/source/compiler/dttemplate.h b/src/acpica/source/compiler/dttemplate.h
> index b6303dd..a1fe9ca 100644
> --- a/src/acpica/source/compiler/dttemplate.h
> +++ b/src/acpica/source/compiler/dttemplate.h
> @@ -969,10 +969,10 @@ const unsigned char TemplateSpcr[] =
> const unsigned char TemplateSpmi[] =
> {
> 0x53,0x50,0x4D,0x49,0x41,0x00,0x00,0x00, /* 00000000 "SPMIA..." */
> - 0x04,0xED,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */
> + 0x04,0x00,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */
> 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */
> 0x00,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */
> - 0x28,0x05,0x10,0x20,0x00,0x00,0x00,0x00, /* 00000020 "(.. ...." */
> + 0x14,0x01,0x14,0x20,0x00,0x01,0x00,0x00, /* 00000020 "... ...." */
> 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000028 "........" */
> 0x00,0x08,0x00,0x01,0x00,0x00,0x00,0x00, /* 00000030 "........" */
> 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000038 "........" */
> diff --git a/src/acpica/source/compiler/prmacros.c b/src/acpica/source/compiler/prmacros.c
> index 65282b3..6bd6727 100644
> --- a/src/acpica/source/compiler/prmacros.c
> +++ b/src/acpica/source/compiler/prmacros.c
> @@ -432,7 +432,7 @@ PrAddMacro (
> if (ArgCount >= PR_MAX_MACRO_ARGS)
> {
> PrError (ASL_ERROR, ASL_MSG_TOO_MANY_ARGUMENTS, TokenOffset);
> - return;
> + goto ErrorExit;
> }
> }
>
> @@ -472,7 +472,7 @@ PrAddMacro (
> PrError (ASL_ERROR, ASL_MSG_TOO_MANY_ARGUMENTS,
> THIS_TOKEN_OFFSET (Token));
>
> - return;
> + goto ErrorExit;
> }
> break;
> }
> @@ -504,7 +504,7 @@ AddMacroToList:
> THIS_TOKEN_OFFSET (Name));
> }
>
> - return;
> + goto ErrorExit;
> }
>
> DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID
> @@ -523,6 +523,13 @@ AddMacroToList:
> DefineInfo->Args = Args;
> DefineInfo->ArgCount = ArgCount;
> }
> +
> + return;
> +
> +
> +ErrorExit:
> + ACPI_FREE (Args);
> + return;
> }
>
>
> diff --git a/src/acpica/source/components/debugger/dbdisply.c b/src/acpica/source/components/debugger/dbdisply.c
> index 525e73f..77c5409 100644
> --- a/src/acpica/source/components/debugger/dbdisply.c
> +++ b/src/acpica/source/components/debugger/dbdisply.c
> @@ -375,6 +375,10 @@ AcpiDbDecodeAndDisplayObject (
>
> /* Is not a recognizeable object */
>
> + AcpiOsPrintf (
> + "Not a known ACPI internal object, descriptor type %2.2X\n",
> + ACPI_GET_DESCRIPTOR_TYPE (ObjPtr));
> +
> Size = 16;
> if (AcpiOsReadable (ObjPtr, 64))
> {
> diff --git a/src/acpica/source/components/dispatcher/dsinit.c b/src/acpica/source/components/dispatcher/dsinit.c
> index 94b6d6d..22ed601 100644
> --- a/src/acpica/source/components/dispatcher/dsinit.c
> +++ b/src/acpica/source/components/dispatcher/dsinit.c
> @@ -124,6 +124,7 @@
> #define _COMPONENT ACPI_DISPATCHER
> ACPI_MODULE_NAME ("dsinit")
>
> +
> /* Local prototypes */
>
> static ACPI_STATUS
> @@ -163,8 +164,8 @@ AcpiDsInitOneObject (
> {
> ACPI_INIT_WALK_INFO *Info = (ACPI_INIT_WALK_INFO *) Context;
> ACPI_NAMESPACE_NODE *Node = (ACPI_NAMESPACE_NODE *) ObjHandle;
> - ACPI_OBJECT_TYPE Type;
> ACPI_STATUS Status;
> + ACPI_OPERAND_OBJECT *ObjDesc;
>
>
> ACPI_FUNCTION_ENTRY ();
> @@ -183,9 +184,7 @@ AcpiDsInitOneObject (
>
> /* And even then, we are only interested in a few object types */
>
> - Type = AcpiNsGetType (ObjHandle);
> -
> - switch (Type)
> + switch (AcpiNsGetType (ObjHandle))
> {
> case ACPI_TYPE_REGION:
>
> @@ -201,8 +200,45 @@ AcpiDsInitOneObject (
> break;
>
> case ACPI_TYPE_METHOD:
> -
> + /*
> + * Auto-serialization support. We will examine each method that is
> + * NotSerialized to determine if it creates any Named objects. If
> + * it does, it will be marked serialized to prevent problems if
> + * the method is entered by two or more threads and an attempt is
> + * made to create the same named object twice -- which results in
> + * an AE_ALREADY_EXISTS exception and method abort.
> + */
> Info->MethodCount++;
> + ObjDesc = AcpiNsGetAttachedObject (Node);
> + if (!ObjDesc)
> + {
> + break;
> + }
> +
> + /* Ignore if already serialized */
> +
> + if (ObjDesc->Method.InfoFlags & ACPI_METHOD_SERIALIZED)
> + {
> + Info->SerialMethodCount++;
> + break;
> + }
> +
> + if (AcpiGbl_AutoSerializeMethods)
> + {
> + /* Parse/scan method and serialize it if necessary */
> +
> + AcpiDsAutoSerializeMethod (Node, ObjDesc);
> + if (ObjDesc->Method.InfoFlags & ACPI_METHOD_SERIALIZED)
> + {
> + /* Method was just converted to Serialized */
> +
> + Info->SerialMethodCount++;
> + Info->SerializedMethodCount++;
> + break;
> + }
> + }
> +
> + Info->NonSerialMethodCount++;
> break;
>
> case ACPI_TYPE_DEVICE:
> @@ -259,7 +295,6 @@ AcpiDsInitializeObjects (
>
> ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
> "**** Starting initialization of namespace objects ****\n"));
> - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INIT, "Parsing all Control Methods:"));
>
> /* Set all init info to zero */
>
> @@ -295,12 +330,14 @@ AcpiDsInitializeObjects (
> }
>
> ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INIT,
> - "\nTable [%4.4s](id %4.4X) - %u Objects with %u Devices %u Methods %u Regions\n",
> - Table->Signature, OwnerId, Info.ObjectCount,
> - Info.DeviceCount, Info.MethodCount, Info.OpRegionCount));
> -
> - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
> - "%u Methods, %u Regions\n", Info.MethodCount, Info.OpRegionCount));
> + "Table [%4.4s] (id %4.4X) - %4u Objects with %3u Devices, "
> + "%3u Regions, %3u Methods (%u/%u/%u Serial/Non/Cvt)\n",
> + Table->Signature, OwnerId, Info.ObjectCount, Info.DeviceCount,
> + Info.OpRegionCount, Info.MethodCount, Info.SerialMethodCount,
> + Info.NonSerialMethodCount, Info.SerializedMethodCount));
> +
> + ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "%u Methods, %u Regions\n",
> + Info.MethodCount, Info.OpRegionCount));
>
> return_ACPI_STATUS (AE_OK);
> }
> diff --git a/src/acpica/source/components/dispatcher/dsmethod.c b/src/acpica/source/components/dispatcher/dsmethod.c
> index a4ed4cd..b2dc658 100644
> --- a/src/acpica/source/components/dispatcher/dsmethod.c
> +++ b/src/acpica/source/components/dispatcher/dsmethod.c
> @@ -121,6 +121,8 @@
> #include "acinterp.h"
> #include "acnamesp.h"
> #include "acdisasm.h"
> +#include "acparser.h"
> +#include "amlcode.h"
>
>
> #define _COMPONENT ACPI_DISPATCHER
> @@ -129,12 +131,149 @@
> /* Local prototypes */
>
> static ACPI_STATUS
> +AcpiDsDetectNamedOpcodes (
> + ACPI_WALK_STATE *WalkState,
> + ACPI_PARSE_OBJECT **OutOp);
> +
> +static ACPI_STATUS
> AcpiDsCreateMethodMutex (
> ACPI_OPERAND_OBJECT *MethodDesc);
>
>
> /*******************************************************************************
> *
> + * FUNCTION: AcpiDsAutoSerializeMethod
> + *
> + * PARAMETERS: Node - Namespace Node of the method
> + * ObjDesc - Method object attached to node
> + *
> + * RETURN: Status
> + *
> + * DESCRIPTION: Parse a control method AML to scan for control methods that
> + * need serialization due to the creation of named objects.
> + *
> + * NOTE: It is a bit of overkill to mark all such methods serialized, since
> + * there is only a problem if the method actually blocks during execution.
> + * A blocking operation is, for example, a Sleep() operation, or any access
> + * to an operation region. However, it is probably not possible to easily
> + * detect whether a method will block or not, so we simply mark all suspicious
> + * methods as serialized.
> + *
> + * NOTE2: This code is essentially a generic routine for parsing a single
> + * control method.
> + *
> + ******************************************************************************/
> +
> +ACPI_STATUS
> +AcpiDsAutoSerializeMethod (
> + ACPI_NAMESPACE_NODE *Node,
> + ACPI_OPERAND_OBJECT *ObjDesc)
> +{
> + ACPI_STATUS Status;
> + ACPI_PARSE_OBJECT *Op = NULL;
> + ACPI_WALK_STATE *WalkState;
> +
> +
> + ACPI_FUNCTION_TRACE_PTR (DsAutoSerializeMethod, Node);
> +
> +
> + ACPI_DEBUG_PRINT ((ACPI_DB_PARSE,
> + "Method auto-serialization parse [%4.4s] %p\n",
> + AcpiUtGetNodeName (Node), Node));
> +
> + /* Create/Init a root op for the method parse tree */
> +
> + Op = AcpiPsAllocOp (AML_METHOD_OP);
> + if (!Op)
> + {
> + return_ACPI_STATUS (AE_NO_MEMORY);
> + }
> +
> + AcpiPsSetName (Op, Node->Name.Integer);
> + Op->Common.Node = Node;
> +
> + /* Create and initialize a new walk state */
> +
> + WalkState = AcpiDsCreateWalkState (Node->OwnerId, NULL, NULL, NULL);
> + if (!WalkState)
> + {
> + return_ACPI_STATUS (AE_NO_MEMORY);
> + }
> +
> + Status = AcpiDsInitAmlWalk (WalkState, Op, Node, ObjDesc->Method.AmlStart,
> + ObjDesc->Method.AmlLength, NULL, 0);
> + if (ACPI_FAILURE (Status))
> + {
> + AcpiDsDeleteWalkState (WalkState);
> + return_ACPI_STATUS (Status);
> + }
> +
> + WalkState->DescendingCallback = AcpiDsDetectNamedOpcodes;
> +
> + /* Parse the method, scan for creation of named objects */
> +
> + Status = AcpiPsParseAml (WalkState);
> + if (ACPI_FAILURE (Status))
> + {
> + return_ACPI_STATUS (Status);
> + }
> +
> + AcpiPsDeleteParseTree (Op);
> + return_ACPI_STATUS (Status);
> +}
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION: AcpiDsDetectNamedOpcodes
> + *
> + * PARAMETERS: WalkState - Current state of the parse tree walk
> + * OutOp - Unused, required for parser interface
> + *
> + * RETURN: Status
> + *
> + * DESCRIPTION: Descending callback used during the loading of ACPI tables.
> + * Currently used to detect methods that must be marked serialized
> + * in order to avoid problems with the creation of named objects.
> + *
> + ******************************************************************************/
> +
> +static ACPI_STATUS
> +AcpiDsDetectNamedOpcodes (
> + ACPI_WALK_STATE *WalkState,
> + ACPI_PARSE_OBJECT **OutOp)
> +{
> +
> + ACPI_FUNCTION_NAME (AcpiDsDetectNamedOpcodes);
> +
> +
> + /* We are only interested in opcodes that create a new name */
> +
> + if (!(WalkState->OpInfo->Flags & (AML_NAMED | AML_CREATE | AML_FIELD)))
> + {
> + return (AE_OK);
> + }
> +
> + /*
> + * At this point, we know we have a Named object opcode.
> + * Mark the method as serialized. Later code will create a mutex for
> + * this method to enforce serialization.
> + */
> + WalkState->MethodDesc->Method.InfoFlags |= ACPI_METHOD_SERIALIZED;
> +
> + ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
> + "Method serialized [%4.4s] %p - [%s] (%4.4X)\n",
> + WalkState->MethodNode->Name.Ascii, WalkState->MethodNode,
> + WalkState->OpInfo->Name, WalkState->Opcode));
> +
> + /* Abort the parse, no need to examine this method any further */
> +
> + return (AE_CTRL_TERMINATE);
> +}
> +
> +
> +/*******************************************************************************
> + *
> * FUNCTION: AcpiDsMethodError
> *
> * PARAMETERS: Status - Execution status
> diff --git a/src/acpica/source/components/dispatcher/dswload.c b/src/acpica/source/components/dispatcher/dswload.c
> index f97f821..7f811dd 100644
> --- a/src/acpica/source/components/dispatcher/dswload.c
> +++ b/src/acpica/source/components/dispatcher/dswload.c
> @@ -152,8 +152,21 @@ AcpiDsInitCallbacks (
>
> switch (PassNumber)
> {
> + case 0:
> +
> + /* Parse only - caller will setup callbacks */
> +
> + WalkState->ParseFlags = ACPI_PARSE_LOAD_PASS1 |
> + ACPI_PARSE_DELETE_TREE |
> + ACPI_PARSE_DISASSEMBLE;
> + WalkState->DescendingCallback = NULL;
> + WalkState->AscendingCallback = NULL;
> + break;
> +
> case 1:
>
> + /* Load pass 1 */
> +
> WalkState->ParseFlags = ACPI_PARSE_LOAD_PASS1 |
> ACPI_PARSE_DELETE_TREE;
> WalkState->DescendingCallback = AcpiDsLoad1BeginOp;
> @@ -162,6 +175,8 @@ AcpiDsInitCallbacks (
>
> case 2:
>
> + /* Load pass 2 */
> +
> WalkState->ParseFlags = ACPI_PARSE_LOAD_PASS1 |
> ACPI_PARSE_DELETE_TREE;
> WalkState->DescendingCallback = AcpiDsLoad2BeginOp;
> @@ -170,6 +185,8 @@ AcpiDsInitCallbacks (
>
> case 3:
>
> + /* Execution pass */
> +
> #ifndef ACPI_NO_METHOD_EXECUTION
> WalkState->ParseFlags |= ACPI_PARSE_EXECUTE |
> ACPI_PARSE_DELETE_TREE;
> diff --git a/src/acpica/source/components/events/evregion.c b/src/acpica/source/components/events/evregion.c
> index c03ae6c..8f1b24b 100644
> --- a/src/acpica/source/components/events/evregion.c
> +++ b/src/acpica/source/components/events/evregion.c
> @@ -405,6 +405,7 @@ AcpiEvDetachRegion(
> {
> ACPI_OPERAND_OBJECT *HandlerObj;
> ACPI_OPERAND_OBJECT *ObjDesc;
> + ACPI_OPERAND_OBJECT *StartDesc;
> ACPI_OPERAND_OBJECT **LastObjPtr;
> ACPI_ADR_SPACE_SETUP RegionSetup;
> void **RegionContext;
> @@ -435,6 +436,7 @@ AcpiEvDetachRegion(
> /* Find this region in the handler's list */
>
> ObjDesc = HandlerObj->AddressSpace.RegionList;
> + StartDesc = ObjDesc;
> LastObjPtr = &HandlerObj->AddressSpace.RegionList;
>
> while (ObjDesc)
> @@ -529,6 +531,16 @@ AcpiEvDetachRegion(
>
> LastObjPtr = &ObjDesc->Region.Next;
> ObjDesc = ObjDesc->Region.Next;
> +
> + /* Prevent infinite loop if list is corrupted */
> +
> + if (ObjDesc == StartDesc)
> + {
> + ACPI_ERROR ((AE_INFO,
> + "Circular handler list in region object %p",
> + RegionObj));
> + return_VOID;
> + }
> }
>
> /* If we get here, the region was not in the handler's region list */
> diff --git a/src/acpica/source/components/executer/exdump.c b/src/acpica/source/components/executer/exdump.c
> index d020a71..ec9f85d 100644
> --- a/src/acpica/source/components/executer/exdump.c
> +++ b/src/acpica/source/components/executer/exdump.c
> @@ -186,13 +186,14 @@ static ACPI_EXDUMP_INFO AcpiExDumpBuffer[5] =
> {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpBuffer), NULL},
> {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (Buffer.Length), "Length"},
> {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Buffer.Pointer), "Pointer"},
> - {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Buffer.Node), "Parent Node"},
> + {ACPI_EXD_NODE, ACPI_EXD_OFFSET (Buffer.Node), "Parent Node"},
> {ACPI_EXD_BUFFER, 0, NULL}
> };
>
> -static ACPI_EXDUMP_INFO AcpiExDumpPackage[5] =
> +static ACPI_EXDUMP_INFO AcpiExDumpPackage[6] =
> {
> {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpPackage), NULL},
> + {ACPI_EXD_NODE, ACPI_EXD_OFFSET (Package.Node), "Parent Node"},
> {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Package.Flags), "Flags"},
> {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (Package.Count), "Elements"},
> {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Package.Elements), "Element List"},
> @@ -202,9 +203,9 @@ static ACPI_EXDUMP_INFO AcpiExDumpPackage[5] =
> static ACPI_EXDUMP_INFO AcpiExDumpDevice[4] =
> {
> {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpDevice), NULL},
> - {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Device.Handler), "Handler"},
> {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Device.NotifyList[0]), "System Notify"},
> - {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Device.NotifyList[1]), "Device Notify"}
> + {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Device.NotifyList[1]), "Device Notify"},
> + {ACPI_EXD_HDLR_LIST,ACPI_EXD_OFFSET (Device.Handler), "Handler"}
> };
>
> static ACPI_EXDUMP_INFO AcpiExDumpEvent[2] =
> @@ -235,24 +236,26 @@ static ACPI_EXDUMP_INFO AcpiExDumpMutex[5] =
> {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Mutex.OsMutex), "OsMutex"}
> };
>
> -static ACPI_EXDUMP_INFO AcpiExDumpRegion[7] =
> +static ACPI_EXDUMP_INFO AcpiExDumpRegion[8] =
> {
> {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpRegion), NULL},
> {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Region.SpaceId), "Space Id"},
> {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Region.Flags), "Flags"},
> + {ACPI_EXD_NODE, ACPI_EXD_OFFSET (Region.Node), "Parent Node"},
> {ACPI_EXD_ADDRESS, ACPI_EXD_OFFSET (Region.Address), "Address"},
> {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (Region.Length), "Length"},
> - {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Region.Handler), "Handler"},
> + {ACPI_EXD_HDLR_LIST,ACPI_EXD_OFFSET (Region.Handler), "Handler"},
> {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Region.Next), "Next"}
> };
>
> -static ACPI_EXDUMP_INFO AcpiExDumpPower[5] =
> +static ACPI_EXDUMP_INFO AcpiExDumpPower[6] =
> {
> {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpPower), NULL},
> {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (PowerResource.SystemLevel), "System Level"},
> {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (PowerResource.ResourceOrder), "Resource Order"},
> {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (PowerResource.NotifyList[0]), "System Notify"},
> - {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (PowerResource.NotifyList[1]), "Device Notify"}
> + {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (PowerResource.NotifyList[1]), "Device Notify"},
> + {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (PowerResource.Handler), "Handler"}
> };
>
> static ACPI_EXDUMP_INFO AcpiExDumpProcessor[7] =
> @@ -315,7 +318,7 @@ static ACPI_EXDUMP_INFO AcpiExDumpReference[8] =
> {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Reference.TargetType), "Target Type"},
> {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (Reference.Value), "Value"},
> {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Reference.Object), "Object Desc"},
> - {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Reference.Node), "Node"},
> + {ACPI_EXD_NODE, ACPI_EXD_OFFSET (Reference.Node), "Node"},
> {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Reference.Where), "Where"},
> {ACPI_EXD_REFERENCE,0, NULL}
> };
> @@ -324,16 +327,16 @@ static ACPI_EXDUMP_INFO AcpiExDumpAddressHandler[6] =
> {
> {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpAddressHandler), NULL},
> {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (AddressSpace.SpaceId), "Space Id"},
> - {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (AddressSpace.Next), "Next"},
> - {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (AddressSpace.RegionList), "Region List"},
> - {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (AddressSpace.Node), "Node"},
> + {ACPI_EXD_HDLR_LIST,ACPI_EXD_OFFSET (AddressSpace.Next), "Next"},
> + {ACPI_EXD_RGN_LIST, ACPI_EXD_OFFSET (AddressSpace.RegionList), "Region List"},
> + {ACPI_EXD_NODE, ACPI_EXD_OFFSET (AddressSpace.Node), "Node"},
> {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (AddressSpace.Context), "Context"}
> };
>
> static ACPI_EXDUMP_INFO AcpiExDumpNotify[7] =
> {
> {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpNotify), NULL},
> - {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Notify.Node), "Node"},
> + {ACPI_EXD_NODE, ACPI_EXD_OFFSET (Notify.Node), "Node"},
> {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (Notify.HandlerType), "Handler Type"},
> {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Notify.Handler), "Handler"},
> {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Notify.Context), "Context"},
> @@ -341,15 +344,32 @@ static ACPI_EXDUMP_INFO AcpiExDumpNotify[7] =
> {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Notify.Next[1]), "Next Device Notify"}
> };
>
> +static ACPI_EXDUMP_INFO AcpiExDumpExtra[6] =
> +{
> + {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpExtra), NULL},
> + {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Extra.Method_REG), "_REG Method"},
> + {ACPI_EXD_NODE, ACPI_EXD_OFFSET (Extra.ScopeNode), "Scope Node"},
> + {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Extra.RegionContext), "Region Context"},
> + {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Extra.AmlStart), "Aml Start"},
> + {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (Extra.AmlLength), "Aml Length"}
> +};
> +
> +static ACPI_EXDUMP_INFO AcpiExDumpData[3] =
> +{
> + {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpData), NULL},
> + {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Data.Handler), "Handler"},
> + {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Data.Pointer), "Raw Data"}
> +};
>
> /* Miscellaneous tables */
>
> -static ACPI_EXDUMP_INFO AcpiExDumpCommon[4] =
> +static ACPI_EXDUMP_INFO AcpiExDumpCommon[5] =
> {
> {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpCommon), NULL},
> {ACPI_EXD_TYPE , 0, NULL},
> {ACPI_EXD_UINT16, ACPI_EXD_OFFSET (Common.ReferenceCount), "Reference Count"},
> - {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Common.Flags), "Flags"}
> + {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Common.Flags), "Flags"},
> + {ACPI_EXD_LIST, ACPI_EXD_OFFSET (Common.NextObject), "Object List"}
> };
>
> static ACPI_EXDUMP_INFO AcpiExDumpFieldCommon[7] =
> @@ -360,16 +380,18 @@ static ACPI_EXDUMP_INFO AcpiExDumpFieldCommon[7] =
> {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (CommonField.BitLength), "Bit Length"},
> {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (CommonField.StartFieldBitOffset),"Field Bit Offset"},
> {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (CommonField.BaseByteOffset), "Base Byte Offset"},
> - {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (CommonField.Node), "Parent Node"}
> + {ACPI_EXD_NODE, ACPI_EXD_OFFSET (CommonField.Node), "Parent Node"}
> };
>
> -static ACPI_EXDUMP_INFO AcpiExDumpNode[5] =
> +static ACPI_EXDUMP_INFO AcpiExDumpNode[7] =
> {
> {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpNode), NULL},
> {ACPI_EXD_UINT8, ACPI_EXD_NSOFFSET (Flags), "Flags"},
> {ACPI_EXD_UINT8, ACPI_EXD_NSOFFSET (OwnerId), "Owner Id"},
> - {ACPI_EXD_POINTER, ACPI_EXD_NSOFFSET (Child), "Child List"},
> - {ACPI_EXD_POINTER, ACPI_EXD_NSOFFSET (Peer), "Next Peer"}
> + {ACPI_EXD_LIST, ACPI_EXD_NSOFFSET (Object), "Object List"},
> + {ACPI_EXD_NODE, ACPI_EXD_NSOFFSET (Parent), "Parent"},
> + {ACPI_EXD_NODE, ACPI_EXD_NSOFFSET (Child), "Child"},
> + {ACPI_EXD_NODE, ACPI_EXD_NSOFFSET (Peer), "Peer"}
> };
>
>
> @@ -404,7 +426,9 @@ static ACPI_EXDUMP_INFO *AcpiExDumpInfo[] =
> AcpiExDumpAddressHandler,
> NULL,
> NULL,
> - NULL
> + NULL,
> + AcpiExDumpExtra,
> + AcpiExDumpData
> };
>
>
> @@ -431,6 +455,10 @@ AcpiExDumpObject (
> char *Name;
> const char *ReferenceName;
> UINT8 Count;
> + ACPI_OPERAND_OBJECT *Start;
> + ACPI_OPERAND_OBJECT *Data = NULL;
> + ACPI_OPERAND_OBJECT *Next;
> + ACPI_NAMESPACE_NODE *Node;
>
>
> if (!Info)
> @@ -458,7 +486,8 @@ AcpiExDumpObject (
>
> case ACPI_EXD_TYPE:
>
> - AcpiExOutString ("Type", AcpiUtGetObjectTypeName (ObjDesc));
> + AcpiOsPrintf ("%20s : %2.2X [%s]\n", "Type",
> + ObjDesc->Common.Type, AcpiUtGetObjectTypeName (ObjDesc));
> break;
>
> case ACPI_EXD_UINT8:
> @@ -519,6 +548,120 @@ AcpiExDumpObject (
> AcpiExDumpReferenceObj (ObjDesc);
> break;
>
> + case ACPI_EXD_LIST:
> +
> + Start = *ACPI_CAST_PTR (void *, Target);
> + Next = Start;
> +
> + AcpiOsPrintf ("%20s : %p", Name, Next);
> + if (Next)
> + {
> + AcpiOsPrintf ("(%s %2.2X)",
> + AcpiUtGetObjectTypeName (Next), Next->Common.Type);
> +
> + while (Next->Common.NextObject)
> + {
> + if ((Next->Common.Type == ACPI_TYPE_LOCAL_DATA) &&
> + !Data)
> + {
> + Data = Next;
> + }
> +
> + Next = Next->Common.NextObject;
> + AcpiOsPrintf ("->%p(%s %2.2X)", Next,
> + AcpiUtGetObjectTypeName (Next), Next->Common.Type);
> +
> + if ((Next == Start) || (Next == Data))
> + {
> + AcpiOsPrintf ("\n**** Error: Object list appears to be circular linked");
> + break;
> + }
> + }
> + }
> +
> + AcpiOsPrintf ("\n", Next);
> + break;
> +
> + case ACPI_EXD_HDLR_LIST:
> +
> + Start = *ACPI_CAST_PTR (void *, Target);
> + Next = Start;
> +
> + AcpiOsPrintf ("%20s : %p", Name, Next);
> + if (Next)
> + {
> + AcpiOsPrintf ("(%s %2.2X)",
> + AcpiUtGetObjectTypeName (Next), Next->Common.Type);
> +
> + while (Next->AddressSpace.Next)
> + {
> + if ((Next->Common.Type == ACPI_TYPE_LOCAL_DATA) &&
> + !Data)
> + {
> + Data = Next;
> + }
> +
> + Next = Next->AddressSpace.Next;
> + AcpiOsPrintf ("->%p(%s %2.2X)", Next,
> + AcpiUtGetObjectTypeName (Next), Next->Common.Type);
> +
> + if ((Next == Start) || (Next == Data))
> + {
> + AcpiOsPrintf ("\n**** Error: Handler list appears to be circular linked");
> + break;
> + }
> + }
> + }
> +
> + AcpiOsPrintf ("\n", Next);
> + break;
> +
> + case ACPI_EXD_RGN_LIST:
> +
> + Start = *ACPI_CAST_PTR (void *, Target);
> + Next = Start;
> +
> + AcpiOsPrintf ("%20s : %p", Name, Next);
> + if (Next)
> + {
> + AcpiOsPrintf ("(%s %2.2X)",
> + AcpiUtGetObjectTypeName (Next), Next->Common.Type);
> +
> + while (Next->Region.Next)
> + {
> + if ((Next->Common.Type == ACPI_TYPE_LOCAL_DATA) &&
> + !Data)
> + {
> + Data = Next;
> + }
> +
> + Next = Next->Region.Next;
> + AcpiOsPrintf ("->%p(%s %2.2X)", Next,
> + AcpiUtGetObjectTypeName (Next), Next->Common.Type);
> +
> + if ((Next == Start) || (Next == Data))
> + {
> + AcpiOsPrintf ("\n**** Error: Region list appears to be circular linked");
> + break;
> + }
> + }
> + }
> +
> + AcpiOsPrintf ("\n", Next);
> + break;
> +
> + case ACPI_EXD_NODE:
> +
> + Node = *ACPI_CAST_PTR (ACPI_NAMESPACE_NODE *, Target);
> +
> + AcpiOsPrintf ("%20s : %p", Name, Node);
> + if (Node)
> + {
> + AcpiOsPrintf (" [%4.4s]", Node->Name.Ascii);
> + }
> + AcpiOsPrintf ("\n");
> + break;
> +
> default:
>
> AcpiOsPrintf ("**** Invalid table opcode [%X] ****\n",
> @@ -936,9 +1079,8 @@ AcpiExDumpNamespaceNode (
> }
>
> AcpiOsPrintf ("%20s : %4.4s\n", "Name", AcpiUtGetNodeName (Node));
> - AcpiExOutString ("Type", AcpiUtGetTypeName (Node->Type));
> - AcpiExOutPointer ("Attached Object", AcpiNsGetAttachedObject (Node));
> - AcpiExOutPointer ("Parent", Node->Parent);
> + AcpiOsPrintf ("%20s : %2.2X [%s]\n", "Type",
> + Node->Type, AcpiUtGetTypeName (Node->Type));
>
> AcpiExDumpObject (ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, Node),
> AcpiExDumpNode);
> @@ -1146,24 +1288,30 @@ AcpiExDumpObjectDescriptor (
> AcpiOsPrintf ("\nAttached Object (%p):\n",
> ((ACPI_NAMESPACE_NODE *) ObjDesc)->Object);
>
> - AcpiExDumpObjectDescriptor (
> - ((ACPI_NAMESPACE_NODE *) ObjDesc)->Object, Flags);
> - return_VOID;
> + ObjDesc = ((ACPI_NAMESPACE_NODE *) ObjDesc)->Object;
> + goto DumpObject;
> }
>
> if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) != ACPI_DESC_TYPE_OPERAND)
> {
> AcpiOsPrintf (
> - "ExDumpObjectDescriptor: %p is not an ACPI operand object: [%s]\n",
> + "%p is not an ACPI operand object: [%s]\n",
> ObjDesc, AcpiUtGetDescriptorName (ObjDesc));
> return_VOID;
> }
>
> - if (ObjDesc->Common.Type > ACPI_TYPE_NS_NODE_MAX)
> + /* Validate the object type */
> +
> + if (ObjDesc->Common.Type > ACPI_TYPE_LOCAL_MAX)
> {
> + AcpiOsPrintf ("Not a known object type: %2.2X\n",
> + ObjDesc->Common.Type);
> return_VOID;
> }
>
> +
> +DumpObject:
> +
> /* Common Fields */
>
> AcpiExDumpObject (ObjDesc, AcpiExDumpCommon);
> @@ -1171,6 +1319,22 @@ AcpiExDumpObjectDescriptor (
> /* Object-specific fields */
>
> AcpiExDumpObject (ObjDesc, AcpiExDumpInfo[ObjDesc->Common.Type]);
> +
> + if (ObjDesc->Common.Type == ACPI_TYPE_REGION)
> + {
> + ObjDesc = ObjDesc->Common.NextObject;
> + if (ObjDesc->Common.Type > ACPI_TYPE_LOCAL_MAX)
> + {
> + AcpiOsPrintf ("Secondary object is not a known object type: %2.2X\n",
> + ObjDesc->Common.Type);
> +
> + return_VOID;
> + }
> +
> + AcpiOsPrintf ("\nExtra attached Object (%p):\n", ObjDesc);
> + AcpiExDumpObject (ObjDesc, AcpiExDumpInfo[ObjDesc->Common.Type]);
> + }
> +
> return_VOID;
> }
>
> diff --git a/src/acpica/source/components/executer/exsystem.c b/src/acpica/source/components/executer/exsystem.c
> index 91a8a00..fcf3a7f 100644
> --- a/src/acpica/source/components/executer/exsystem.c
> +++ b/src/acpica/source/components/executer/exsystem.c
> @@ -159,7 +159,7 @@ AcpiExSystemWaitSemaphore (
> {
> /* We must wait, so unlock the interpreter */
>
> - AcpiExRelinquishInterpreter ();
> + AcpiExExitInterpreter ();
>
> Status = AcpiOsWaitSemaphore (Semaphore, 1, Timeout);
>
> @@ -169,7 +169,7 @@ AcpiExSystemWaitSemaphore (
>
> /* Reacquire the interpreter */
>
> - AcpiExReacquireInterpreter ();
> + AcpiExEnterInterpreter ();
> }
>
> return_ACPI_STATUS (Status);
> @@ -212,7 +212,7 @@ AcpiExSystemWaitMutex (
> {
> /* We must wait, so unlock the interpreter */
>
> - AcpiExRelinquishInterpreter ();
> + AcpiExExitInterpreter ();
>
> Status = AcpiOsAcquireMutex (Mutex, Timeout);
>
> @@ -222,7 +222,7 @@ AcpiExSystemWaitMutex (
>
> /* Reacquire the interpreter */
>
> - AcpiExReacquireInterpreter ();
> + AcpiExEnterInterpreter ();
> }
>
> return_ACPI_STATUS (Status);
> @@ -299,7 +299,7 @@ AcpiExSystemDoSleep (
>
> /* Since this thread will sleep, we must release the interpreter */
>
> - AcpiExRelinquishInterpreter ();
> + AcpiExExitInterpreter ();
>
> /*
> * For compatibility with other ACPI implementations and to prevent
> @@ -314,7 +314,7 @@ AcpiExSystemDoSleep (
>
> /* And now we must get the interpreter again */
>
> - AcpiExReacquireInterpreter ();
> + AcpiExEnterInterpreter ();
> return (AE_OK);
> }
>
> diff --git a/src/acpica/source/components/executer/exutils.c b/src/acpica/source/components/executer/exutils.c
> index 0c94337..1a4a943 100644
> --- a/src/acpica/source/components/executer/exutils.c
> +++ b/src/acpica/source/components/executer/exutils.c
> @@ -184,42 +184,6 @@ AcpiExEnterInterpreter (
>
> /*******************************************************************************
> *
> - * FUNCTION: AcpiExReacquireInterpreter
> - *
> - * PARAMETERS: None
> - *
> - * RETURN: None
> - *
> - * DESCRIPTION: Reacquire the interpreter execution region from within the
> - * interpreter code. Failure to enter the interpreter region is a
> - * fatal system error. Used in conjunction with
> - * RelinquishInterpreter
> - *
> - ******************************************************************************/
> -
> -void
> -AcpiExReacquireInterpreter (
> - void)
> -{
> - ACPI_FUNCTION_TRACE (ExReacquireInterpreter);
> -
> -
> - /*
> - * If the global serialized flag is set, do not release the interpreter,
> - * since it was not actually released by AcpiExRelinquishInterpreter.
> - * This forces the interpreter to be single threaded.
> - */
> - if (!AcpiGbl_AllMethodsSerialized)
> - {
> - AcpiExEnterInterpreter ();
> - }
> -
> - return_VOID;
> -}
> -
> -
> -/*******************************************************************************
> - *
> * FUNCTION: AcpiExExitInterpreter
> *
> * PARAMETERS: None
> @@ -228,7 +192,16 @@ AcpiExReacquireInterpreter (
> *
> * DESCRIPTION: Exit the interpreter execution region. This is the top level
> * routine used to exit the interpreter when all processing has
> - * been completed.
> + * been completed, or when the method blocks.
> + *
> + * Cases where the interpreter is unlocked internally:
> + * 1) Method will be blocked on a Sleep() AML opcode
> + * 2) Method will be blocked on an Acquire() AML opcode
> + * 3) Method will be blocked on a Wait() AML opcode
> + * 4) Method will be blocked to acquire the global lock
> + * 5) Method will be blocked waiting to execute a serialized control
> + * method that is currently executing
> + * 6) About to invoke a user-installed opregion handler
> *
> ******************************************************************************/
>
> @@ -254,49 +227,6 @@ AcpiExExitInterpreter (
>
> /*******************************************************************************
> *
> - * FUNCTION: AcpiExRelinquishInterpreter
> - *
> - * PARAMETERS: None
> - *
> - * RETURN: None
> - *
> - * DESCRIPTION: Exit the interpreter execution region, from within the
> - * interpreter - before attempting an operation that will possibly
> - * block the running thread.
> - *
> - * Cases where the interpreter is unlocked internally
> - * 1) Method to be blocked on a Sleep() AML opcode
> - * 2) Method to be blocked on an Acquire() AML opcode
> - * 3) Method to be blocked on a Wait() AML opcode
> - * 4) Method to be blocked to acquire the global lock
> - * 5) Method to be blocked waiting to execute a serialized control method
> - * that is currently executing
> - * 6) About to invoke a user-installed opregion handler
> - *
> - ******************************************************************************/
> -
> -void
> -AcpiExRelinquishInterpreter (
> - void)
> -{
> - ACPI_FUNCTION_TRACE (ExRelinquishInterpreter);
> -
> -
> - /*
> - * If the global serialized flag is set, do not release the interpreter.
> - * This forces the interpreter to be single threaded.
> - */
> - if (!AcpiGbl_AllMethodsSerialized)
> - {
> - AcpiExExitInterpreter ();
> - }
> -
> - return_VOID;
> -}
> -
> -
> -/*******************************************************************************
> - *
> * FUNCTION: AcpiExTruncateFor32bitTable
> *
> * PARAMETERS: ObjDesc - Object to be truncated
> diff --git a/src/acpica/source/components/namespace/nsinit.c b/src/acpica/source/components/namespace/nsinit.c
> index 055d66c..2e35355 100644
> --- a/src/acpica/source/components/namespace/nsinit.c
> +++ b/src/acpica/source/components/namespace/nsinit.c
> @@ -201,9 +201,8 @@ AcpiNsInitializeObjects (
> Info.PackageInit, Info.PackageCount, Info.ObjectCount));
>
> ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
> - "%u Control Methods found\n", Info.MethodCount));
> - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
> - "%u Op Regions found\n", Info.OpRegionCount));
> + "%u Control Methods found\n%u Op Regions found\n",
> + Info.MethodCount, Info.OpRegionCount));
>
> return_ACPI_STATUS (AE_OK);
> }
> diff --git a/src/acpica/source/components/namespace/nsload.c b/src/acpica/source/components/namespace/nsload.c
> index e156b0d..7d68af7 100644
> --- a/src/acpica/source/components/namespace/nsload.c
> +++ b/src/acpica/source/components/namespace/nsload.c
> @@ -220,12 +220,12 @@ Unlock:
> * parse trees.
> */
> ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
> - "**** Begin Table Method Parsing and Object Initialization\n"));
> + "**** Begin Table Object Initialization\n"));
>
> Status = AcpiDsInitializeObjects (TableIndex, Node);
>
> ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
> - "**** Completed Table Method Parsing and Object Initialization\n"));
> + "**** Completed Table Object Initialization\n"));
>
> return_ACPI_STATUS (Status);
> }
> diff --git a/src/acpica/source/components/namespace/nsobject.c b/src/acpica/source/components/namespace/nsobject.c
> index 922c5ca..7981e62 100644
> --- a/src/acpica/source/components/namespace/nsobject.c
> +++ b/src/acpica/source/components/namespace/nsobject.c
> @@ -319,14 +319,19 @@ AcpiNsDetachObject (
> }
> }
>
> - /* Clear the entry in all cases */
> + /* Clear the Node entry in all cases */
>
> Node->Object = NULL;
> if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == ACPI_DESC_TYPE_OPERAND)
> {
> + /* Unlink object from front of possible object list */
> +
> Node->Object = ObjDesc->Common.NextObject;
> +
> + /* Handle possible 2-descriptor object */
> +
> if (Node->Object &&
> - ((Node->Object)->Common.Type != ACPI_TYPE_LOCAL_DATA))
> + (Node->Object->Common.Type != ACPI_TYPE_LOCAL_DATA))
> {
> Node->Object = Node->Object->Common.NextObject;
> }
> diff --git a/src/acpica/source/components/namespace/nsprepkg.c b/src/acpica/source/components/namespace/nsprepkg.c
> index 7c58355..41dc5a7 100644
> --- a/src/acpica/source/components/namespace/nsprepkg.c
> +++ b/src/acpica/source/components/namespace/nsprepkg.c
> @@ -216,13 +216,13 @@ AcpiNsCheckPackage (
> * Decode the type of the expected package contents
> *
> * PTYPE1 packages contain no subpackages
> - * PTYPE2 packages contain sub-packages
> + * PTYPE2 packages contain subpackages
> */
> switch (Package->RetInfo.Type)
> {
> case ACPI_PTYPE1_FIXED:
> /*
> - * The package count is fixed and there are no sub-packages
> + * The package count is fixed and there are no subpackages
> *
> * If package is too small, exit.
> * If package is larger than expected, issue warning but continue
> @@ -249,7 +249,7 @@ AcpiNsCheckPackage (
>
> case ACPI_PTYPE1_VAR:
> /*
> - * The package count is variable, there are no sub-packages, and all
> + * The package count is variable, there are no subpackages, and all
> * elements must be of the same type
> */
> for (i = 0; i < Count; i++)
> @@ -266,7 +266,7 @@ AcpiNsCheckPackage (
>
> case ACPI_PTYPE1_OPTION:
> /*
> - * The package count is variable, there are no sub-packages. There are
> + * The package count is variable, there are no subpackages. There are
> * a fixed number of required elements, and a variable number of
> * optional elements.
> *
> @@ -322,14 +322,14 @@ AcpiNsCheckPackage (
> Elements++;
> Count--;
>
> - /* Examine the sub-packages */
> + /* Examine the subpackages */
>
> Status = AcpiNsCheckPackageList (Info, Package, Elements, Count);
> break;
>
> case ACPI_PTYPE2_PKG_COUNT:
>
> - /* First element is the (Integer) count of sub-packages to follow */
> + /* First element is the (Integer) count of subpackages to follow */
>
> Status = AcpiNsCheckObjectType (Info, Elements,
> ACPI_RTYPE_INTEGER, 0);
> @@ -351,7 +351,7 @@ AcpiNsCheckPackage (
> Count = ExpectedCount;
> Elements++;
>
> - /* Examine the sub-packages */
> + /* Examine the subpackages */
>
> Status = AcpiNsCheckPackageList (Info, Package, Elements, Count);
> break;
> @@ -363,9 +363,9 @@ AcpiNsCheckPackage (
> case ACPI_PTYPE2_FIX_VAR:
> /*
> * These types all return a single Package that consists of a
> - * variable number of sub-Packages.
> + * variable number of subpackages.
> *
> - * First, ensure that the first element is a sub-Package. If not,
> + * First, ensure that the first element is a subpackage. If not,
> * the BIOS may have incorrectly returned the object as a single
> * package instead of a Package of Packages (a common error if
> * there is only one entry). We may be able to repair this by
> @@ -388,7 +388,7 @@ AcpiNsCheckPackage (
> Count = 1;
> }
>
> - /* Examine the sub-packages */
> + /* Examine the subpackages */
>
> Status = AcpiNsCheckPackageList (Info, Package, Elements, Count);
> break;
> @@ -451,9 +451,9 @@ AcpiNsCheckPackageList (
>
>
> /*
> - * Validate each sub-Package in the parent Package
> + * Validate each subpackage in the parent Package
> *
> - * NOTE: assumes list of sub-packages contains no NULL elements.
> + * NOTE: assumes list of subpackages contains no NULL elements.
> * Any NULL elements should have been removed by earlier call
> * to AcpiNsRemoveNullElements.
> */
> @@ -472,7 +472,7 @@ AcpiNsCheckPackageList (
> return (Status);
> }
>
> - /* Examine the different types of expected sub-packages */
> + /* Examine the different types of expected subpackages */
>
> Info->ParentPackage = SubPackage;
> switch (Package->RetInfo.Type)
> @@ -524,7 +524,7 @@ AcpiNsCheckPackageList (
>
> case ACPI_PTYPE2_FIXED:
>
> - /* Each sub-package has a fixed length */
> + /* Each subpackage has a fixed length */
>
> ExpectedCount = Package->RetInfo2.Count;
> if (SubPackage->Package.Count < ExpectedCount)
> @@ -532,7 +532,7 @@ AcpiNsCheckPackageList (
> goto PackageTooSmall;
> }
>
> - /* Check the type of each sub-package element */
> + /* Check the type of each subpackage element */
>
> for (j = 0; j < ExpectedCount; j++)
> {
> @@ -547,7 +547,7 @@ AcpiNsCheckPackageList (
>
> case ACPI_PTYPE2_MIN:
>
> - /* Each sub-package has a variable but minimum length */
> + /* Each subpackage has a variable but minimum length */
>
> ExpectedCount = Package->RetInfo.Count1;
> if (SubPackage->Package.Count < ExpectedCount)
> @@ -555,7 +555,7 @@ AcpiNsCheckPackageList (
> goto PackageTooSmall;
> }
>
> - /* Check the type of each sub-package element */
> + /* Check the type of each subpackage element */
>
> Status = AcpiNsCheckPackageElements (Info, SubElements,
> Package->RetInfo.ObjectType1,
> @@ -604,7 +604,7 @@ AcpiNsCheckPackageList (
> (*SubElements)->Integer.Value = ExpectedCount;
> }
>
> - /* Check the type of each sub-package element */
> + /* Check the type of each subpackage element */
>
> Status = AcpiNsCheckPackageElements (Info, (SubElements + 1),
> Package->RetInfo.ObjectType1,
> @@ -628,10 +628,10 @@ AcpiNsCheckPackageList (
>
> PackageTooSmall:
>
> - /* The sub-package count was smaller than required */
> + /* The subpackage count was smaller than required */
>
> ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, Info->NodeFlags,
> - "Return Sub-Package[%u] is too small - found %u elements, expected %u",
> + "Return SubPackage[%u] is too small - found %u elements, expected %u",
> i, SubPackage->Package.Count, ExpectedCount));
>
> return (AE_AML_OPERAND_VALUE);
> diff --git a/src/acpica/source/components/namespace/nsrepair.c b/src/acpica/source/components/namespace/nsrepair.c
> index 6cf826e..11a43b1 100644
> --- a/src/acpica/source/components/namespace/nsrepair.c
> +++ b/src/acpica/source/components/namespace/nsrepair.c
> @@ -284,14 +284,29 @@ AcpiNsSimpleRepair (
> * this predefined name. Either one return value is expected, or none,
> * for both methods and other objects.
> *
> - * Exit now if there is no return object. Warning if one was expected.
> + * Try to fix if there was no return object. Warning if failed to fix.
> */
> if (!ReturnObject)
> {
> if (ExpectedBtypes && (!(ExpectedBtypes & ACPI_RTYPE_NONE)))
> {
> - ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname,
> - ACPI_WARN_ALWAYS, "Missing expected return value"));
> + if (PackageIndex != ACPI_NOT_PACKAGE_ELEMENT)
> + {
> + ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname,
> + ACPI_WARN_ALWAYS, "Found unexpected NULL package element"));
> +
> + Status = AcpiNsRepairNullElement (Info, ExpectedBtypes,
> + PackageIndex, ReturnObjectPtr);
> + if (ACPI_SUCCESS (Status))
> + {
> + return (AE_OK); /* Repair was successful */
> + }
> + }
> + else
> + {
> + ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname,
> + ACPI_WARN_ALWAYS, "Missing expected return value"));
> + }
>
> return (AE_AML_NO_RETURN_VALUE);
> }
> @@ -546,7 +561,7 @@ AcpiNsRepairNullElement (
> * RETURN: None.
> *
> * DESCRIPTION: Remove all NULL package elements from packages that contain
> - * a variable number of sub-packages. For these types of
> + * a variable number of subpackages. For these types of
> * packages, NULL elements can be safely removed.
> *
> *****************************************************************************/
> @@ -570,7 +585,7 @@ AcpiNsRemoveNullElements (
> /*
> * We can safely remove all NULL elements from these package types:
> * PTYPE1_VAR packages contain a variable number of simple data types.
> - * PTYPE2 packages contain a variable number of sub-packages.
> + * PTYPE2 packages contain a variable number of subpackages.
> */
> switch (PackageType)
> {
> diff --git a/src/acpica/source/components/namespace/nsrepair2.c b/src/acpica/source/components/namespace/nsrepair2.c
> index 5fee88a..ea7c0be 100644
> --- a/src/acpica/source/components/namespace/nsrepair2.c
> +++ b/src/acpica/source/components/namespace/nsrepair2.c
> @@ -550,8 +550,8 @@ AcpiNsRepair_CID (
> * DESCRIPTION: Repair for the _CST object:
> * 1. Sort the list ascending by C state type
> * 2. Ensure type cannot be zero
> - * 3. A sub-package count of zero means _CST is meaningless
> - * 4. Count must match the number of C state sub-packages
> + * 3. A subpackage count of zero means _CST is meaningless
> + * 4. Count must match the number of C state subpackages
> *
> *****************************************************************************/
>
> @@ -744,6 +744,7 @@ AcpiNsRepair_PRT (
> ACPI_OPERAND_OBJECT **TopObjectList;
> ACPI_OPERAND_OBJECT **SubObjectList;
> ACPI_OPERAND_OBJECT *ObjDesc;
> + ACPI_OPERAND_OBJECT *SubPackage;
> UINT32 ElementCount;
> UINT32 Index;
>
> @@ -753,9 +754,19 @@ AcpiNsRepair_PRT (
> TopObjectList = PackageObject->Package.Elements;
> ElementCount = PackageObject->Package.Count;
>
> - for (Index = 0; Index < ElementCount; Index++)
> + /* Examine each subpackage */
> +
> + for (Index = 0; Index < ElementCount; Index++, TopObjectList++)
> {
> - SubObjectList = (*TopObjectList)->Package.Elements;
> + SubPackage = *TopObjectList;
> + SubObjectList = SubPackage->Package.Elements;
> +
> + /* Check for minimum required element count */
> +
> + if (SubPackage->Package.Count < 4)
> + {
> + continue;
> + }
>
> /*
> * If the BIOS has erroneously reversed the _PRT SourceName (index 2)
> @@ -770,14 +781,11 @@ AcpiNsRepair_PRT (
> SubObjectList[2] = ObjDesc;
> Info->ReturnFlags |= ACPI_OBJECT_REPAIRED;
>
> - ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, Info->NodeFlags,
> + ACPI_WARN_PREDEFINED ((AE_INFO,
> + Info->FullPathname, Info->NodeFlags,
> "PRT[%X]: Fixed reversed SourceName and SourceIndex",
> Index));
> }
> -
> - /* Point to the next ACPI_OPERAND_OBJECT in the top level package */
> -
> - TopObjectList++;
> }
>
> return (AE_OK);
> @@ -817,7 +825,7 @@ AcpiNsRepair_PSS (
>
>
> /*
> - * Entries (sub-packages) in the _PSS Package must be sorted by power
> + * Entries (subpackages) in the _PSS Package must be sorted by power
> * dissipation, in descending order. If it appears that the list is
> * incorrectly sorted, sort it. We sort by CpuFrequency, since this
> * should be proportional to the power.
> @@ -910,9 +918,9 @@ AcpiNsRepair_TSS (
> *
> * PARAMETERS: Info - Method execution information block
> * ReturnObject - Pointer to the top-level returned object
> - * StartIndex - Index of the first sub-package
> - * ExpectedCount - Minimum length of each sub-package
> - * SortIndex - Sub-package entry to sort on
> + * StartIndex - Index of the first subpackage
> + * ExpectedCount - Minimum length of each subpackage
> + * SortIndex - Subpackage entry to sort on
> * SortDirection - Ascending or descending
> * SortKeyName - Name of the SortIndex field
> *
> @@ -953,7 +961,7 @@ AcpiNsCheckSortedList (
> }
>
> /*
> - * NOTE: assumes list of sub-packages contains no NULL elements.
> + * NOTE: assumes list of subpackages contains no NULL elements.
> * Any NULL elements should have been removed by earlier call
> * to AcpiNsRemoveNullElements.
> */
> @@ -983,7 +991,7 @@ AcpiNsCheckSortedList (
> return (AE_AML_OPERAND_TYPE);
> }
>
> - /* Each sub-package must have the minimum length */
> + /* Each subpackage must have the minimum length */
>
> if ((*OuterElements)->Package.Count < ExpectedCount)
> {
> diff --git a/src/acpica/source/components/parser/psloop.c b/src/acpica/source/components/parser/psloop.c
> index 83b4b65..ec7db25 100644
> --- a/src/acpica/source/components/parser/psloop.c
> +++ b/src/acpica/source/components/parser/psloop.c
> @@ -561,6 +561,11 @@ AcpiPsParseLoop (
> Status = AE_OK;
> }
>
> + if (Status == AE_CTRL_TERMINATE)
> + {
> + return_ACPI_STATUS (Status);
> + }
> +
> Status = AcpiPsCompleteOp (WalkState, &Op, Status);
> if (ACPI_FAILURE (Status))
> {
> diff --git a/src/acpica/source/components/parser/psobject.c b/src/acpica/source/components/parser/psobject.c
> index 39d0ed3..f4ecc33 100644
> --- a/src/acpica/source/components/parser/psobject.c
> +++ b/src/acpica/source/components/parser/psobject.c
> @@ -301,7 +301,10 @@ AcpiPsBuildNamedOp (
> Status = WalkState->DescendingCallback (WalkState, Op);
> if (ACPI_FAILURE (Status))
> {
> - ACPI_EXCEPTION ((AE_INFO, Status, "During name lookup/catalog"));
> + if (Status != AE_CTRL_TERMINATE)
> + {
> + ACPI_EXCEPTION ((AE_INFO, Status, "During name lookup/catalog"));
> + }
> return_ACPI_STATUS (Status);
> }
>
> @@ -315,7 +318,7 @@ AcpiPsBuildNamedOp (
> {
> if (Status == AE_CTRL_PENDING)
> {
> - return_ACPI_STATUS (AE_CTRL_PARSE_PENDING);
> + Status = AE_CTRL_PARSE_PENDING;
> }
> return_ACPI_STATUS (Status);
> }
> diff --git a/src/acpica/source/components/resources/rscalc.c b/src/acpica/source/components/resources/rscalc.c
> index 0e2434b..b2742ae 100644
> --- a/src/acpica/source/components/resources/rscalc.c
> +++ b/src/acpica/source/components/resources/rscalc.c
> @@ -731,7 +731,7 @@ AcpiRsGetPciRoutingTableLength (
>
> for (Index = 0; Index < NumberOfElements; Index++)
> {
> - /* Dereference the sub-package */
> + /* Dereference the subpackage */
>
> PackageElement = *TopObjectList;
>
> diff --git a/src/acpica/source/components/resources/rscreate.c b/src/acpica/source/components/resources/rscreate.c
> index c86a5d0..7c23893 100644
> --- a/src/acpica/source/components/resources/rscreate.c
> +++ b/src/acpica/source/components/resources/rscreate.c
> @@ -369,7 +369,7 @@ AcpiRsCreatePciRoutingTable (
> */
> UserPrt->Length = (sizeof (ACPI_PCI_ROUTING_TABLE) - 4);
>
> - /* Each sub-package must be of length 4 */
> + /* Each subpackage must be of length 4 */
>
> if ((*TopObjectList)->Package.Count != 4)
> {
> @@ -380,7 +380,7 @@ AcpiRsCreatePciRoutingTable (
> }
>
> /*
> - * Dereference the sub-package.
> + * Dereference the subpackage.
> * The SubObjectList will now point to an array of the four IRQ
> * elements: [Address, Pin, Source, SourceIndex]
> */
> @@ -389,7 +389,7 @@ AcpiRsCreatePciRoutingTable (
> /* 1) First subobject: Dereference the PRT.Address */
>
> ObjDesc = SubObjectList[0];
> - if (ObjDesc->Common.Type != ACPI_TYPE_INTEGER)
> + if (!ObjDesc || ObjDesc->Common.Type != ACPI_TYPE_INTEGER)
> {
> ACPI_ERROR ((AE_INFO, "(PRT[%u].Address) Need Integer, found %s",
> Index, AcpiUtGetObjectTypeName (ObjDesc)));
> @@ -401,7 +401,7 @@ AcpiRsCreatePciRoutingTable (
> /* 2) Second subobject: Dereference the PRT.Pin */
>
> ObjDesc = SubObjectList[1];
> - if (ObjDesc->Common.Type != ACPI_TYPE_INTEGER)
> + if (!ObjDesc || ObjDesc->Common.Type != ACPI_TYPE_INTEGER)
> {
> ACPI_ERROR ((AE_INFO, "(PRT[%u].Pin) Need Integer, found %s",
> Index, AcpiUtGetObjectTypeName (ObjDesc)));
> @@ -482,7 +482,7 @@ AcpiRsCreatePciRoutingTable (
> /* 4) Fourth subobject: Dereference the PRT.SourceIndex */
>
> ObjDesc = SubObjectList[3];
> - if (ObjDesc->Common.Type != ACPI_TYPE_INTEGER)
> + if (!ObjDesc || ObjDesc->Common.Type != ACPI_TYPE_INTEGER)
> {
> ACPI_ERROR ((AE_INFO,
> "(PRT[%u].SourceIndex) Need Integer, found %s",
> diff --git a/src/acpica/source/components/resources/rsdump.c b/src/acpica/source/components/resources/rsdump.c
> index e1ae1d6..ae295fa 100644
> --- a/src/acpica/source/components/resources/rsdump.c
> +++ b/src/acpica/source/components/resources/rsdump.c
> @@ -124,7 +124,7 @@
> ACPI_MODULE_NAME ("rsdump")
>
>
> -#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
> +#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DISASSEMBLER) || defined(ACPI_DEBUGGER)
>
> /* Local prototypes */
>
> diff --git a/src/acpica/source/components/resources/rsdumpinfo.c b/src/acpica/source/components/resources/rsdumpinfo.c
> index 34f83f5..2aef0e5 100644
> --- a/src/acpica/source/components/resources/rsdumpinfo.c
> +++ b/src/acpica/source/components/resources/rsdumpinfo.c
> @@ -124,7 +124,7 @@
> ACPI_MODULE_NAME ("rsdumpinfo")
>
>
> -#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
> +#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DISASSEMBLER) || defined(ACPI_DEBUGGER)
>
>
> #define ACPI_RSD_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_RESOURCE_DATA,f)
> diff --git a/src/acpica/source/components/resources/rsinfo.c b/src/acpica/source/components/resources/rsinfo.c
> index 3e2fa5b..05f02a8 100644
> --- a/src/acpica/source/components/resources/rsinfo.c
> +++ b/src/acpica/source/components/resources/rsinfo.c
> @@ -213,7 +213,7 @@ ACPI_RSCONVERT_INFO *AcpiGbl_ConvertResourceSerialBusDispatch[] =
> };
>
>
> -#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
> +#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DISASSEMBLER) || defined(ACPI_DEBUGGER)
>
> /* Dispatch table for resource dump functions */
>
> diff --git a/src/acpica/source/components/utilities/utdelete.c b/src/acpica/source/components/utilities/utdelete.c
> index 47c97a7..d42d8a7 100644
> --- a/src/acpica/source/components/utilities/utdelete.c
> +++ b/src/acpica/source/components/utilities/utdelete.c
> @@ -158,6 +158,7 @@ AcpiUtDeleteInternalObj (
> ACPI_OPERAND_OBJECT *HandlerDesc;
> ACPI_OPERAND_OBJECT *SecondDesc;
> ACPI_OPERAND_OBJECT *NextDesc;
> + ACPI_OPERAND_OBJECT *StartDesc;
> ACPI_OPERAND_OBJECT **LastObjPtr;
>
>
> @@ -322,9 +323,10 @@ AcpiUtDeleteInternalObj (
> if (HandlerDesc)
> {
> NextDesc = HandlerDesc->AddressSpace.RegionList;
> + StartDesc = NextDesc;
> LastObjPtr = &HandlerDesc->AddressSpace.RegionList;
>
> - /* Remove the region object from the handler's list */
> + /* Remove the region object from the handler list */
>
> while (NextDesc)
> {
> @@ -334,10 +336,20 @@ AcpiUtDeleteInternalObj (
> break;
> }
>
> - /* Walk the linked list of handler */
> + /* Walk the linked list of handlers */
>
> LastObjPtr = &NextDesc->Region.Next;
> NextDesc = NextDesc->Region.Next;
> +
> + /* Prevent infinite loop if list is corrupted */
> +
> + if (NextDesc == StartDesc)
> + {
> + ACPI_ERROR ((AE_INFO,
> + "Circular region list in address handler object %p",
> + HandlerDesc));
> + return_VOID;
> + }
> }
>
> if (HandlerDesc->AddressSpace.HandlerFlags &
> diff --git a/src/acpica/source/components/utilities/utglobal.c b/src/acpica/source/components/utilities/utglobal.c
> index c9575cf..77294c4 100644
> --- a/src/acpica/source/components/utilities/utglobal.c
> +++ b/src/acpica/source/components/utilities/utglobal.c
> @@ -130,12 +130,7 @@
> *
> ******************************************************************************/
>
> -/*
> - * We want the debug switches statically initialized so they
> - * are already set when the debugger is entered.
> - */
> -
> -/* Debug switch - level and trace mask */
> +/* Debug output control masks */
>
> #ifdef ACPI_DEBUG_OUTPUT
> UINT32 AcpiDbgLevel = ACPI_DEBUG_DEFAULT;
> @@ -143,24 +138,24 @@ UINT32 AcpiDbgLevel = ACPI_DEBUG_DEFAULT;
> UINT32 AcpiDbgLevel = ACPI_NORMAL_DEFAULT;
> #endif
>
> -/* Debug switch - layer (component) mask */
> -
> UINT32 AcpiDbgLayer = ACPI_COMPONENT_DEFAULT;
> -UINT32 AcpiGbl_NestingLevel = 0;
> -
> -/* Debugger globals */
> -
> -BOOLEAN AcpiGbl_DbTerminateThreads = FALSE;
> -BOOLEAN AcpiGbl_AbortMethod = FALSE;
> -BOOLEAN AcpiGbl_MethodExecuting = FALSE;
>
> -/* System flags */
> +/* AcpiGbl_FADT is a local copy of the FADT, converted to a common format. */
>
> -UINT32 AcpiGbl_StartupFlags = 0;
> +ACPI_TABLE_FADT AcpiGbl_FADT;
> +UINT32 AcpiGbl_TraceFlags;
> +ACPI_NAME AcpiGbl_TraceMethodName;
> +BOOLEAN AcpiGbl_SystemAwakeAndRunning;
> +UINT32 AcpiCurrentGpeCount;
>
> -/* System starts uninitialized */
> +/*
> + * ACPI 5.0 introduces the concept of a "reduced hardware platform", meaning
> + * that the ACPI hardware is no longer required. A flag in the FADT indicates
> + * a reduced HW machine, and that flag is duplicated here for convenience.
> + */
> +BOOLEAN AcpiGbl_ReducedHardware;
>
> -BOOLEAN AcpiGbl_Shutdown = TRUE;
> +/* Various state name strings */
>
> const char *AcpiGbl_SleepStateNames[ACPI_S_STATE_COUNT] =
> {
> @@ -381,7 +376,6 @@ AcpiUtInitGlobals (
>
> AcpiGbl_DSDT = NULL;
> AcpiGbl_CmSingleStep = FALSE;
> - AcpiGbl_DbTerminateThreads = FALSE;
> AcpiGbl_Shutdown = FALSE;
> AcpiGbl_NsLookupCount = 0;
> AcpiGbl_PsFindCount = 0;
> @@ -429,6 +423,10 @@ AcpiUtInitGlobals (
> AcpiGbl_DisableMemTracking = FALSE;
> #endif
>
> +#ifdef ACPI_DEBUGGER
> + AcpiGbl_DbTerminateThreads = FALSE;
> +#endif
> +
> return_ACPI_STATUS (AE_OK);
> }
>
> diff --git a/src/acpica/source/components/utilities/utosi.c b/src/acpica/source/components/utilities/utosi.c
> index adcda25..a001d06 100644
> --- a/src/acpica/source/components/utilities/utosi.c
> +++ b/src/acpica/source/components/utilities/utosi.c
> @@ -122,6 +122,34 @@
> #define _COMPONENT ACPI_UTILITIES
> ACPI_MODULE_NAME ("utosi")
>
> +
> +/******************************************************************************
> + *
> + * ACPICA policy for new _OSI strings:
> + *
> + * It is the stated policy of ACPICA that new _OSI strings will be integrated
> + * into this module as soon as possible after they are defined. It is strongly
> + * recommended that all ACPICA hosts mirror this policy and integrate any
> + * changes to this module as soon as possible. There are several historical
> + * reasons behind this policy:
> + *
> + * 1) New BIOSs tend to test only the case where the host responds TRUE to
> + * the latest version of Windows, which would respond to the latest/newest
> + * _OSI string. Not responding TRUE to the latest version of Windows will
> + * risk executing untested code paths throughout the DSDT and SSDTs.
> + *
> + * 2) If a new _OSI string is recognized only after a significant delay, this
> + * has the potential to cause problems on existing working machines because
> + * of the possibility that a new and different path through the ASL code
> + * will be executed.
> + *
> + * 3) New _OSI strings are tending to come out about once per year. A delay
> + * in recognizing a new string for a significant amount of time risks the
> + * release of another string which only compounds the initial problem.
> + *
> + *****************************************************************************/
> +
> +
> /*
> * Strings supported by the _OSI predefined control method (which is
> * implemented internally within this module.)
> @@ -150,6 +178,7 @@ static ACPI_INTERFACE_INFO AcpiDefaultSupportedInterfaces[] =
> {"Windows 2006 SP2", NULL, 0, ACPI_OSI_WIN_VISTA_SP2}, /* Windows Vista SP2 - Added 09/2010 */
> {"Windows 2009", NULL, 0, ACPI_OSI_WIN_7}, /* Windows 7 and Server 2008 R2 - Added 09/2009 */
> {"Windows 2012", NULL, 0, ACPI_OSI_WIN_8}, /* Windows 8 and Server 2012 - Added 08/2012 */
> + {"Windows 2013", NULL, 0, ACPI_OSI_WIN_8}, /* Windows 8.1 and Server 2012 R2 - Added 01/2014 */
>
> /* Feature Group Strings */
>
> diff --git a/src/acpica/source/include/acapps.h b/src/acpica/source/include/acapps.h
> index 3608d69..cd36274 100644
> --- a/src/acpica/source/include/acapps.h
> +++ b/src/acpica/source/include/acapps.h
> @@ -117,6 +117,8 @@
> #define _ACAPPS
>
>
> +#pragma pack(push) /* Set default struct packing */
> +
> #ifdef _MSC_VER /* disable some level-4 warnings */
> #pragma warning(disable:4100) /* warning C4100: unreferenced formal parameter */
> #endif
> @@ -195,8 +197,7 @@ AdAmlDisassemble (
> BOOLEAN OutToFile,
> char *Filename,
> char *Prefix,
> - char **OutFilename,
> - BOOLEAN GetAllTables);
> + char **OutFilename);
>
> void
> AdPrintStatistics (
> @@ -213,8 +214,7 @@ AdDumpTables (
>
> ACPI_STATUS
> AdGetLocalTables (
> - char *Filename,
> - BOOLEAN GetAllTables);
> + void);
>
> ACPI_STATUS
> AdParseTable (
> @@ -293,4 +293,6 @@ AdWriteTable (
> char *OemTableId);
> #endif
>
> +#pragma pack(pop) /* Restore original struct packing */
> +
> #endif /* _ACAPPS */
> diff --git a/src/acpica/source/include/acbuffer.h b/src/acpica/source/include/acbuffer.h
> index 3228bca..d6163f3 100644
> --- a/src/acpica/source/include/acbuffer.h
> +++ b/src/acpica/source/include/acbuffer.h
> @@ -116,6 +116,9 @@
> #ifndef __ACBUFFER_H__
> #define __ACBUFFER_H__
>
> +
> +#pragma pack(push) /* Set default struct packing */
> +
> /*
> * Contains buffer structures for these predefined names:
> * _FDE, _GRT, _GTM, _PLD, _SRT
> @@ -315,4 +318,6 @@ typedef struct acpi_pld_info
> #define ACPI_PLD_SET_HORIZ_OFFSET(dword,value) ACPI_SET_BITS (dword, 16, ACPI_16BIT_MASK, value) /* Offset 128+16=144, Len 16 */
>
>
> +#pragma pack(pop) /* Restore original struct packing */
> +
> #endif /* ACBUFFER_H */
> diff --git a/src/acpica/source/include/acconfig.h b/src/acpica/source/include/acconfig.h
> index 6b34484..b57526a 100644
> --- a/src/acpica/source/include/acconfig.h
> +++ b/src/acpica/source/include/acconfig.h
> @@ -117,6 +117,8 @@
> #define _ACCONFIG_H
>
>
> +#pragma pack(push) /* Set default struct packing */
> +
> /******************************************************************************
> *
> * Configuration options
> @@ -306,4 +308,6 @@
> #define ACPI_DEBUGGER_EXECUTE_PROMPT '%'
>
>
> +#pragma pack(pop) /* Restore original struct packing */
> +
> #endif /* _ACCONFIG_H */
> diff --git a/src/acpica/source/include/acdebug.h b/src/acpica/source/include/acdebug.h
> index 1807c31..824bf2a 100644
> --- a/src/acpica/source/include/acdebug.h
> +++ b/src/acpica/source/include/acdebug.h
> @@ -117,6 +117,8 @@
> #define __ACDEBUG_H__
>
>
> +#pragma pack(push) /* Set default struct packing */
> +
> #define ACPI_DEBUG_BUFFER_SIZE 0x4000 /* 16K buffer for return objects */
>
> typedef struct acpi_db_command_info
> @@ -538,4 +540,6 @@ AcpiDbUint32ToHexString (
> UINT32 Value,
> char *Buffer);
>
> +#pragma pack(pop) /* Restore original struct packing */
> +
> #endif /* __ACDEBUG_H__ */
> diff --git a/src/acpica/source/include/acdisasm.h b/src/acpica/source/include/acdisasm.h
> index 3a38dad..9814e21 100644
> --- a/src/acpica/source/include/acdisasm.h
> +++ b/src/acpica/source/include/acdisasm.h
> @@ -119,6 +119,8 @@
> #include "amlresrc.h"
>
>
> +#pragma pack(push) /* Set default struct packing */
> +
> #define BLOCK_NONE 0
> #define BLOCK_PAREN 1
> #define BLOCK_BRACE 2
> @@ -1001,4 +1003,6 @@ AdDisassemblerHeader (
> char *Filename);
>
>
> +#pragma pack(pop) /* Restore original struct packing */
> +
> #endif /* __ACDISASM_H__ */
> diff --git a/src/acpica/source/include/acdispat.h b/src/acpica/source/include/acdispat.h
> index ed7d22c..f3fac95 100644
> --- a/src/acpica/source/include/acdispat.h
> +++ b/src/acpica/source/include/acdispat.h
> @@ -118,6 +118,8 @@
> #define _ACDISPAT_H_
>
>
> +#pragma pack(push) /* Set default struct packing */
> +
> #define NAMEOF_LOCAL_NTE "__L0"
> #define NAMEOF_ARG_NTE "__A0"
>
> @@ -245,13 +247,15 @@ AcpiDsInitFieldObjects (
>
>
> /*
> - * dsload - Parser/Interpreter interface, pass 1 namespace load callbacks
> + * dsload - Parser/Interpreter interface
> */
> ACPI_STATUS
> AcpiDsInitCallbacks (
> ACPI_WALK_STATE *WalkState,
> UINT32 PassNumber);
>
> +/* dsload - pass 1 namespace load callbacks */
> +
> ACPI_STATUS
> AcpiDsLoad1BeginOp (
> ACPI_WALK_STATE *WalkState,
> @@ -262,9 +266,8 @@ AcpiDsLoad1EndOp (
> ACPI_WALK_STATE *WalkState);
>
>
> -/*
> - * dsload - Parser/Interpreter interface, pass 2 namespace load callbacks
> - */
> +/* dsload - pass 2 namespace load callbacks */
> +
> ACPI_STATUS
> AcpiDsLoad2BeginOp (
> ACPI_WALK_STATE *WalkState,
> @@ -329,8 +332,9 @@ AcpiDsMethodDataInit (
> * dsmethod - Parser/Interpreter interface - control method parsing
> */
> ACPI_STATUS
> -AcpiDsParseMethod (
> - ACPI_NAMESPACE_NODE *Node);
> +AcpiDsAutoSerializeMethod (
> + ACPI_NAMESPACE_NODE *Node,
> + ACPI_OPERAND_OBJECT *ObjDesc);
>
> ACPI_STATUS
> AcpiDsCallControlMethod (
> @@ -532,4 +536,6 @@ AcpiDsResultPush (
> ACPI_OPERAND_OBJECT *Object,
> ACPI_WALK_STATE *WalkState);
>
> +#pragma pack(pop) /* Restore original struct packing */
> +
> #endif /* _ACDISPAT_H_ */
> diff --git a/src/acpica/source/include/acevents.h b/src/acpica/source/include/acevents.h
> index 731defb..f895ccb 100644
> --- a/src/acpica/source/include/acevents.h
> +++ b/src/acpica/source/include/acevents.h
> @@ -117,6 +117,8 @@
> #define __ACEVENTS_H__
>
>
> +#pragma pack(push) /* Set default struct packing */
> +
> /*
> * evevent
> */
> @@ -428,4 +430,6 @@ void
> AcpiEvTerminate (
> void))
>
> +#pragma pack(pop) /* Restore original struct packing */
> +
> #endif /* __ACEVENTS_H__ */
> diff --git a/src/acpica/source/include/acexcep.h b/src/acpica/source/include/acexcep.h
> index 89d9852..807f4e3 100644
> --- a/src/acpica/source/include/acexcep.h
> +++ b/src/acpica/source/include/acexcep.h
> @@ -117,6 +117,8 @@
> #define __ACEXCEP_H__
>
>
> +#pragma pack(push) /* Set default struct packing */
> +
> /* This module contains all possible exception codes for ACPI_STATUS */
>
> /*
> @@ -417,4 +419,6 @@ static const ACPI_EXCEPTION_INFO AcpiGbl_ExceptionNames_Ctrl[] =
>
> #endif /* EXCEPTION_TABLE */
>
> +#pragma pack(pop) /* Restore original struct packing */
> +
> #endif /* __ACEXCEP_H__ */
> diff --git a/src/acpica/source/include/acglobal.h b/src/acpica/source/include/acglobal.h
> index 747fe59..8ecdf04 100644
> --- a/src/acpica/source/include/acglobal.h
> +++ b/src/acpica/source/include/acglobal.h
> @@ -117,6 +117,8 @@
> #define __ACGLOBAL_H__
>
>
> +#pragma pack(push) /* Set default struct packing */
> +
> /*
> * Ensure that the globals are actually defined and initialized only once.
> *
> @@ -124,11 +126,19 @@
> * to simplify maintenance of the code.
> */
> #ifdef DEFINE_ACPI_GLOBALS
> -#define ACPI_EXTERN
> -#define ACPI_INIT_GLOBAL(a,b) a=b
> +#define ACPI_GLOBAL(type,name) \
> + extern type name; \
> + type name
> +
> +#define ACPI_INIT_GLOBAL(type,name,value) \
> + type name=value
> +
> #else
> -#define ACPI_EXTERN extern
> -#define ACPI_INIT_GLOBAL(a,b) a
> +#define ACPI_GLOBAL(type,name) \
> + extern type name
> +
> +#define ACPI_INIT_GLOBAL(type,name,value) \
> + extern type name
> #endif
>
>
> @@ -156,33 +166,34 @@
> * 5) Allow unresolved references (invalid target name) in package objects
> * 6) Enable warning messages for behavior that is not ACPI spec compliant
> */
> -UINT8 ACPI_INIT_GLOBAL (AcpiGbl_EnableInterpreterSlack, FALSE);
> +ACPI_INIT_GLOBAL (UINT8, AcpiGbl_EnableInterpreterSlack, FALSE);
>
> /*
> - * Automatically serialize ALL control methods? Default is FALSE, meaning
> - * to use the Serialized/NotSerialized method flags on a per method basis.
> - * Only change this if the ASL code is poorly written and cannot handle
> - * reentrancy even though methods are marked "NotSerialized".
> + * Automatically serialize all methods that create named objects? Default
> + * is TRUE, meaning that all NonSerialized methods are scanned once at
> + * table load time to determine those that create named objects. Methods
> + * that create named objects are marked Serialized in order to prevent
> + * possible run-time problems if they are entered by more than one thread.
> */
> -UINT8 ACPI_INIT_GLOBAL (AcpiGbl_AllMethodsSerialized, FALSE);
> +ACPI_INIT_GLOBAL (UINT8, AcpiGbl_AutoSerializeMethods, TRUE);
>
> /*
> * Create the predefined _OSI method in the namespace? Default is TRUE
> * because ACPI CA is fully compatible with other ACPI implementations.
> * Changing this will revert ACPI CA (and machine ASL) to pre-OSI behavior.
> */
> -UINT8 ACPI_INIT_GLOBAL (AcpiGbl_CreateOsiMethod, TRUE);
> +ACPI_INIT_GLOBAL (UINT8, AcpiGbl_CreateOsiMethod, TRUE);
>
> /*
> * Optionally use default values for the ACPI register widths. Set this to
> * TRUE to use the defaults, if an FADT contains incorrect widths/lengths.
> */
> -UINT8 ACPI_INIT_GLOBAL (AcpiGbl_UseDefaultRegisterWidths, TRUE);
> +ACPI_INIT_GLOBAL (UINT8, AcpiGbl_UseDefaultRegisterWidths, TRUE);
>
> /*
> * Optionally enable output from the AML Debug Object.
> */
> -UINT8 ACPI_INIT_GLOBAL (AcpiGbl_EnableAmlDebugObject, FALSE);
> +ACPI_INIT_GLOBAL (UINT8, AcpiGbl_EnableAmlDebugObject, FALSE);
>
> /*
> * Optionally copy the entire DSDT to local memory (instead of simply
> @@ -190,7 +201,7 @@ UINT8 ACPI_INIT_GLOBAL (AcpiGbl_EnableAmlDebugObject, FALSE);
> * DSDT, creating the need for this option. Default is FALSE, do not copy
> * the DSDT.
> */
> -UINT8 ACPI_INIT_GLOBAL (AcpiGbl_CopyDsdtLocally, FALSE);
> +ACPI_INIT_GLOBAL (UINT8, AcpiGbl_CopyDsdtLocally, FALSE);
>
> /*
> * Optionally ignore an XSDT if present and use the RSDT instead.
> @@ -198,8 +209,7 @@ UINT8 ACPI_INIT_GLOBAL (AcpiGbl_CopyDsdtLocally, FALSE);
> * of the RSDT, the XSDT has been found to be corrupt or ill-formed on
> * some machines. Default behavior is to use the XSDT if present.
> */
> -UINT8 ACPI_INIT_GLOBAL (AcpiGbl_DoNotUseXsdt, FALSE);
> -
> +ACPI_INIT_GLOBAL (UINT8, AcpiGbl_DoNotUseXsdt, FALSE);
>
> /*
> * Optionally use 32-bit FADT addresses if and when there is a conflict
> @@ -209,7 +219,7 @@ UINT8 ACPI_INIT_GLOBAL (AcpiGbl_DoNotUseXsdt, FALSE);
> * some machines have been found to have a corrupted non-zero 64-bit
> * address. Default is FALSE, do not favor the 32-bit addresses.
> */
> -UINT8 ACPI_INIT_GLOBAL (AcpiGbl_Use32BitFadtAddresses, FALSE);
> +ACPI_INIT_GLOBAL (UINT8, AcpiGbl_Use32BitFadtAddresses, FALSE);
>
> /*
> * Optionally truncate I/O addresses to 16 bits. Provides compatibility
> @@ -217,47 +227,28 @@ UINT8 ACPI_INIT_GLOBAL (AcpiGbl_Use32BitFadtAddresses, FALSE);
> * this value is set to TRUE if any Windows OSI strings have been
> * requested by the BIOS.
> */
> -UINT8 ACPI_INIT_GLOBAL (AcpiGbl_TruncateIoAddresses, FALSE);
> +ACPI_INIT_GLOBAL (UINT8, AcpiGbl_TruncateIoAddresses, FALSE);
>
> /*
> * Disable runtime checking and repair of values returned by control methods.
> * Use only if the repair is causing a problem on a particular machine.
> */
> -UINT8 ACPI_INIT_GLOBAL (AcpiGbl_DisableAutoRepair, FALSE);
> +ACPI_INIT_GLOBAL (UINT8, AcpiGbl_DisableAutoRepair, FALSE);
>
> /*
> * Optionally do not load any SSDTs from the RSDT/XSDT during initialization.
> * This can be useful for debugging ACPI problems on some machines.
> */
> -UINT8 ACPI_INIT_GLOBAL (AcpiGbl_DisableSsdtTableLoad, FALSE);
> +ACPI_INIT_GLOBAL (UINT8, AcpiGbl_DisableSsdtTableLoad, FALSE);
>
> /*
> * We keep track of the latest version of Windows that has been requested by
> * the BIOS.
> */
> -UINT8 ACPI_INIT_GLOBAL (AcpiGbl_OsiData, 0);
> -
> -
> -/* AcpiGbl_FADT is a local copy of the FADT, converted to a common format. */
> -
> -ACPI_TABLE_FADT AcpiGbl_FADT;
> -UINT32 AcpiCurrentGpeCount;
> -UINT32 AcpiGbl_TraceFlags;
> -ACPI_NAME AcpiGbl_TraceMethodName;
> -BOOLEAN AcpiGbl_SystemAwakeAndRunning;
> -
> -/*
> - * ACPI 5.0 introduces the concept of a "reduced hardware platform", meaning
> - * that the ACPI hardware is no longer required. A flag in the FADT indicates
> - * a reduced HW machine, and that flag is duplicated here for convenience.
> - */
> -BOOLEAN AcpiGbl_ReducedHardware;
> +ACPI_INIT_GLOBAL (UINT8, AcpiGbl_OsiData, 0);
>
> #endif /* DEFINE_ACPI_GLOBALS */
>
> -/* Do not disassemble buffers to resource descriptors */
> -
> -ACPI_EXTERN UINT8 ACPI_INIT_GLOBAL (AcpiGbl_NoResourceDisassembly, FALSE);
>
> /*****************************************************************************
> *
> @@ -266,37 +257,36 @@ ACPI_EXTERN UINT8 ACPI_INIT_GLOBAL (AcpiGbl_NoResourceDisassembly, FALSE);
> ****************************************************************************/
>
> /*
> - * AcpiGbl_RootTableList is the master list of ACPI tables that were
> - * found in the RSDT/XSDT.
> + * Master list of all ACPI tables that were found in the RSDT/XSDT.
> */
> -ACPI_EXTERN ACPI_TABLE_LIST AcpiGbl_RootTableList;
> +ACPI_GLOBAL (ACPI_TABLE_LIST, AcpiGbl_RootTableList);
> +
> +/* DSDT information. Used to check for DSDT corruption */
> +
> +ACPI_GLOBAL (ACPI_TABLE_HEADER *, AcpiGbl_DSDT);
> +ACPI_GLOBAL (ACPI_TABLE_HEADER, AcpiGbl_OriginalDsdtHeader);
>
> #if (!ACPI_REDUCED_HARDWARE)
> -ACPI_EXTERN ACPI_TABLE_FACS *AcpiGbl_FACS;
> +ACPI_GLOBAL (ACPI_TABLE_FACS *, AcpiGbl_FACS);
>
> #endif /* !ACPI_REDUCED_HARDWARE */
>
> /* These addresses are calculated from the FADT Event Block addresses */
>
> -ACPI_EXTERN ACPI_GENERIC_ADDRESS AcpiGbl_XPm1aStatus;
> -ACPI_EXTERN ACPI_GENERIC_ADDRESS AcpiGbl_XPm1aEnable;
> +ACPI_GLOBAL (ACPI_GENERIC_ADDRESS, AcpiGbl_XPm1aStatus);
> +ACPI_GLOBAL (ACPI_GENERIC_ADDRESS, AcpiGbl_XPm1aEnable);
>
> -ACPI_EXTERN ACPI_GENERIC_ADDRESS AcpiGbl_XPm1bStatus;
> -ACPI_EXTERN ACPI_GENERIC_ADDRESS AcpiGbl_XPm1bEnable;
> -
> -/* DSDT information. Used to check for DSDT corruption */
> -
> -ACPI_EXTERN ACPI_TABLE_HEADER *AcpiGbl_DSDT;
> -ACPI_EXTERN ACPI_TABLE_HEADER AcpiGbl_OriginalDsdtHeader;
> +ACPI_GLOBAL (ACPI_GENERIC_ADDRESS, AcpiGbl_XPm1bStatus);
> +ACPI_GLOBAL (ACPI_GENERIC_ADDRESS, AcpiGbl_XPm1bEnable);
>
> /*
> - * Handle both ACPI 1.0 and ACPI 2.0 Integer widths. The integer width is
> + * Handle both ACPI 1.0 and ACPI 2.0+ Integer widths. The integer width is
> * determined by the revision of the DSDT: If the DSDT revision is less than
> * 2, use only the lower 32 bits of the internal 64-bit Integer.
> */
> -ACPI_EXTERN UINT8 AcpiGbl_IntegerBitWidth;
> -ACPI_EXTERN UINT8 AcpiGbl_IntegerByteWidth;
> -ACPI_EXTERN UINT8 AcpiGbl_IntegerNybbleWidth;
> +ACPI_GLOBAL (UINT8, AcpiGbl_IntegerBitWidth);
> +ACPI_GLOBAL (UINT8, AcpiGbl_IntegerByteWidth);
> +ACPI_GLOBAL (UINT8, AcpiGbl_IntegerNybbleWidth);
>
>
> /*****************************************************************************
> @@ -310,36 +300,36 @@ ACPI_EXTERN UINT8 AcpiGbl_IntegerNybbleWidth;
> * actual OS mutex handles, indexed by the local ACPI_MUTEX_HANDLEs.
> * (The table maps local handles to the real OS handles)
> */
> -ACPI_EXTERN ACPI_MUTEX_INFO AcpiGbl_MutexInfo[ACPI_NUM_MUTEX];
> +ACPI_GLOBAL (ACPI_MUTEX_INFO, AcpiGbl_MutexInfo[ACPI_NUM_MUTEX]);
>
> /*
> * Global lock mutex is an actual AML mutex object
> * Global lock semaphore works in conjunction with the actual global lock
> * Global lock spinlock is used for "pending" handshake
> */
> -ACPI_EXTERN ACPI_OPERAND_OBJECT *AcpiGbl_GlobalLockMutex;
> -ACPI_EXTERN ACPI_SEMAPHORE AcpiGbl_GlobalLockSemaphore;
> -ACPI_EXTERN ACPI_SPINLOCK AcpiGbl_GlobalLockPendingLock;
> -ACPI_EXTERN UINT16 AcpiGbl_GlobalLockHandle;
> -ACPI_EXTERN BOOLEAN AcpiGbl_GlobalLockAcquired;
> -ACPI_EXTERN BOOLEAN AcpiGbl_GlobalLockPresent;
> -ACPI_EXTERN BOOLEAN AcpiGbl_GlobalLockPending;
> +ACPI_GLOBAL (ACPI_OPERAND_OBJECT *, AcpiGbl_GlobalLockMutex);
> +ACPI_GLOBAL (ACPI_SEMAPHORE, AcpiGbl_GlobalLockSemaphore);
> +ACPI_GLOBAL (ACPI_SPINLOCK, AcpiGbl_GlobalLockPendingLock);
> +ACPI_GLOBAL (UINT16, AcpiGbl_GlobalLockHandle);
> +ACPI_GLOBAL (BOOLEAN, AcpiGbl_GlobalLockAcquired);
> +ACPI_GLOBAL (BOOLEAN, AcpiGbl_GlobalLockPresent);
> +ACPI_GLOBAL (BOOLEAN, AcpiGbl_GlobalLockPending);
>
> /*
> * Spinlocks are used for interfaces that can be possibly called at
> * interrupt level
> */
> -ACPI_EXTERN ACPI_SPINLOCK AcpiGbl_GpeLock; /* For GPE data structs and registers */
> -ACPI_EXTERN ACPI_SPINLOCK AcpiGbl_HardwareLock; /* For ACPI H/W except GPE registers */
> -ACPI_EXTERN ACPI_SPINLOCK AcpiGbl_ReferenceCountLock;
> +ACPI_GLOBAL (ACPI_SPINLOCK, AcpiGbl_GpeLock); /* For GPE data structs and registers */
> +ACPI_GLOBAL (ACPI_SPINLOCK, AcpiGbl_HardwareLock); /* For ACPI H/W except GPE registers */
> +ACPI_GLOBAL (ACPI_SPINLOCK, AcpiGbl_ReferenceCountLock);
>
> /* Mutex for _OSI support */
>
> -ACPI_EXTERN ACPI_MUTEX AcpiGbl_OsiMutex;
> +ACPI_GLOBAL (ACPI_MUTEX, AcpiGbl_OsiMutex);
>
> /* Reader/Writer lock is used for namespace walk and dynamic table unload */
>
> -ACPI_EXTERN ACPI_RW_LOCK AcpiGbl_NamespaceRwLock;
> +ACPI_GLOBAL (ACPI_RW_LOCK, AcpiGbl_NamespaceRwLock);
>
>
> /*****************************************************************************
> @@ -350,69 +340,69 @@ ACPI_EXTERN ACPI_RW_LOCK AcpiGbl_NamespaceRwLock;
>
> /* Object caches */
>
> -ACPI_EXTERN ACPI_CACHE_T *AcpiGbl_NamespaceCache;
> -ACPI_EXTERN ACPI_CACHE_T *AcpiGbl_StateCache;
> -ACPI_EXTERN ACPI_CACHE_T *AcpiGbl_PsNodeCache;
> -ACPI_EXTERN ACPI_CACHE_T *AcpiGbl_PsNodeExtCache;
> -ACPI_EXTERN ACPI_CACHE_T *AcpiGbl_OperandCache;
> +ACPI_GLOBAL (ACPI_CACHE_T *, AcpiGbl_NamespaceCache);
> +ACPI_GLOBAL (ACPI_CACHE_T *, AcpiGbl_StateCache);
> +ACPI_GLOBAL (ACPI_CACHE_T *, AcpiGbl_PsNodeCache);
> +ACPI_GLOBAL (ACPI_CACHE_T *, AcpiGbl_PsNodeExtCache);
> +ACPI_GLOBAL (ACPI_CACHE_T *, AcpiGbl_OperandCache);
> +
> +/* System */
> +
> +ACPI_INIT_GLOBAL (UINT32, AcpiGbl_StartupFlags, 0);
> +ACPI_INIT_GLOBAL (BOOLEAN, AcpiGbl_Shutdown, TRUE);
>
> /* Global handlers */
>
> -ACPI_EXTERN ACPI_GLOBAL_NOTIFY_HANDLER AcpiGbl_GlobalNotify[2];
> -ACPI_EXTERN ACPI_EXCEPTION_HANDLER AcpiGbl_ExceptionHandler;
> -ACPI_EXTERN ACPI_INIT_HANDLER AcpiGbl_InitHandler;
> -ACPI_EXTERN ACPI_TABLE_HANDLER AcpiGbl_TableHandler;
> -ACPI_EXTERN void *AcpiGbl_TableHandlerContext;
> -ACPI_EXTERN ACPI_WALK_STATE *AcpiGbl_BreakpointWalk;
> -ACPI_EXTERN ACPI_INTERFACE_HANDLER AcpiGbl_InterfaceHandler;
> -ACPI_EXTERN ACPI_SCI_HANDLER_INFO *AcpiGbl_SciHandlerList;
> +ACPI_GLOBAL (ACPI_GLOBAL_NOTIFY_HANDLER,AcpiGbl_GlobalNotify[2]);
> +ACPI_GLOBAL (ACPI_EXCEPTION_HANDLER, AcpiGbl_ExceptionHandler);
> +ACPI_GLOBAL (ACPI_INIT_HANDLER, AcpiGbl_InitHandler);
> +ACPI_GLOBAL (ACPI_TABLE_HANDLER, AcpiGbl_TableHandler);
> +ACPI_GLOBAL (void *, AcpiGbl_TableHandlerContext);
> +ACPI_GLOBAL (ACPI_WALK_STATE *, AcpiGbl_BreakpointWalk);
> +ACPI_GLOBAL (ACPI_INTERFACE_HANDLER, AcpiGbl_InterfaceHandler);
> +ACPI_GLOBAL (ACPI_SCI_HANDLER_INFO *, AcpiGbl_SciHandlerList);
>
> /* Owner ID support */
>
> -ACPI_EXTERN UINT32 AcpiGbl_OwnerIdMask[ACPI_NUM_OWNERID_MASKS];
> -ACPI_EXTERN UINT8 AcpiGbl_LastOwnerIdIndex;
> -ACPI_EXTERN UINT8 AcpiGbl_NextOwnerIdOffset;
> +ACPI_GLOBAL (UINT32, AcpiGbl_OwnerIdMask[ACPI_NUM_OWNERID_MASKS]);
> +ACPI_GLOBAL (UINT8, AcpiGbl_LastOwnerIdIndex);
> +ACPI_GLOBAL (UINT8, AcpiGbl_NextOwnerIdOffset);
>
> /* Initialization sequencing */
>
> -ACPI_EXTERN BOOLEAN AcpiGbl_RegMethodsExecuted;
> +ACPI_GLOBAL (BOOLEAN, AcpiGbl_RegMethodsExecuted);
>
> /* Misc */
>
> -ACPI_EXTERN UINT32 AcpiGbl_OriginalMode;
> -ACPI_EXTERN UINT32 AcpiGbl_RsdpOriginalLocation;
> -ACPI_EXTERN UINT32 AcpiGbl_NsLookupCount;
> -ACPI_EXTERN UINT32 AcpiGbl_PsFindCount;
> -ACPI_EXTERN UINT16 AcpiGbl_Pm1EnableRegisterSave;
> -ACPI_EXTERN UINT8 AcpiGbl_DebuggerConfiguration;
> -ACPI_EXTERN BOOLEAN AcpiGbl_StepToNextCall;
> -ACPI_EXTERN BOOLEAN AcpiGbl_AcpiHardwarePresent;
> -ACPI_EXTERN BOOLEAN AcpiGbl_EventsInitialized;
> -ACPI_EXTERN ACPI_INTERFACE_INFO *AcpiGbl_SupportedInterfaces;
> -ACPI_EXTERN ACPI_ADDRESS_RANGE *AcpiGbl_AddressRangeList[ACPI_ADDRESS_RANGE_MAX];
> +ACPI_GLOBAL (UINT32, AcpiGbl_OriginalMode);
> +ACPI_GLOBAL (UINT32, AcpiGbl_RsdpOriginalLocation);
> +ACPI_GLOBAL (UINT32, AcpiGbl_NsLookupCount);
> +ACPI_GLOBAL (UINT32, AcpiGbl_PsFindCount);
> +ACPI_GLOBAL (UINT16, AcpiGbl_Pm1EnableRegisterSave);
> +ACPI_GLOBAL (UINT8, AcpiGbl_DebuggerConfiguration);
> +ACPI_GLOBAL (BOOLEAN, AcpiGbl_StepToNextCall);
> +ACPI_GLOBAL (BOOLEAN, AcpiGbl_AcpiHardwarePresent);
> +ACPI_GLOBAL (BOOLEAN, AcpiGbl_EventsInitialized);
> +ACPI_GLOBAL (ACPI_INTERFACE_INFO *, AcpiGbl_SupportedInterfaces);
> +ACPI_GLOBAL (ACPI_ADDRESS_RANGE *, AcpiGbl_AddressRangeList[ACPI_ADDRESS_RANGE_MAX]);
>
> -#ifndef DEFINE_ACPI_GLOBALS
> +/* Other miscellaneous, declared and initialized in utglobal */
>
> -/* Other miscellaneous */
> -
> -extern BOOLEAN AcpiGbl_Shutdown;
> -extern UINT32 AcpiGbl_StartupFlags;
> extern const char *AcpiGbl_SleepStateNames[ACPI_S_STATE_COUNT];
> extern const char *AcpiGbl_LowestDstateNames[ACPI_NUM_SxW_METHODS];
> extern const char *AcpiGbl_HighestDstateNames[ACPI_NUM_SxD_METHODS];
> -extern const ACPI_OPCODE_INFO AcpiGbl_AmlOpInfo[AML_NUM_OPCODES];
> extern const char *AcpiGbl_RegionTypes[ACPI_NUM_PREDEFINED_REGIONS];
> -#endif
> +extern const ACPI_OPCODE_INFO AcpiGbl_AmlOpInfo[AML_NUM_OPCODES];
>
>
> #ifdef ACPI_DBG_TRACK_ALLOCATIONS
>
> -/* Lists for tracking memory allocations */
> +/* Lists for tracking memory allocations (debug only) */
>
> -ACPI_EXTERN ACPI_MEMORY_LIST *AcpiGbl_GlobalList;
> -ACPI_EXTERN ACPI_MEMORY_LIST *AcpiGbl_NsNodeList;
> -ACPI_EXTERN BOOLEAN AcpiGbl_DisplayFinalMemStats;
> -ACPI_EXTERN BOOLEAN AcpiGbl_DisableMemTracking;
> +ACPI_GLOBAL (ACPI_MEMORY_LIST *, AcpiGbl_GlobalList);
> +ACPI_GLOBAL (ACPI_MEMORY_LIST *, AcpiGbl_NsNodeList);
> +ACPI_GLOBAL (BOOLEAN, AcpiGbl_DisplayFinalMemStats);
> +ACPI_GLOBAL (BOOLEAN, AcpiGbl_DisableMemTracking);
> #endif
>
>
> @@ -428,22 +418,23 @@ ACPI_EXTERN BOOLEAN AcpiGbl_DisableMemTracking;
> #define NUM_PREDEFINED_NAMES 9
> #endif
>
> -ACPI_EXTERN ACPI_NAMESPACE_NODE AcpiGbl_RootNodeStruct;
> -ACPI_EXTERN ACPI_NAMESPACE_NODE *AcpiGbl_RootNode;
> -ACPI_EXTERN ACPI_NAMESPACE_NODE *AcpiGbl_FadtGpeDevice;
> -ACPI_EXTERN ACPI_OPERAND_OBJECT *AcpiGbl_ModuleCodeList;
> +ACPI_GLOBAL (ACPI_NAMESPACE_NODE, AcpiGbl_RootNodeStruct);
> +ACPI_GLOBAL (ACPI_NAMESPACE_NODE *, AcpiGbl_RootNode);
> +ACPI_GLOBAL (ACPI_NAMESPACE_NODE *, AcpiGbl_FadtGpeDevice);
> +ACPI_GLOBAL (ACPI_OPERAND_OBJECT *, AcpiGbl_ModuleCodeList);
>
>
> extern const UINT8 AcpiGbl_NsProperties [ACPI_NUM_NS_TYPES];
> extern const ACPI_PREDEFINED_NAMES AcpiGbl_PreDefinedNames [NUM_PREDEFINED_NAMES];
>
> #ifdef ACPI_DEBUG_OUTPUT
> -ACPI_EXTERN UINT32 AcpiGbl_CurrentNodeCount;
> -ACPI_EXTERN UINT32 AcpiGbl_CurrentNodeSize;
> -ACPI_EXTERN UINT32 AcpiGbl_MaxConcurrentNodeCount;
> -ACPI_EXTERN ACPI_SIZE *AcpiGbl_EntryStackPointer;
> -ACPI_EXTERN ACPI_SIZE *AcpiGbl_LowestStackPointer;
> -ACPI_EXTERN UINT32 AcpiGbl_DeepestNesting;
> +ACPI_GLOBAL (UINT32, AcpiGbl_CurrentNodeCount);
> +ACPI_GLOBAL (UINT32, AcpiGbl_CurrentNodeSize);
> +ACPI_GLOBAL (UINT32, AcpiGbl_MaxConcurrentNodeCount);
> +ACPI_GLOBAL (ACPI_SIZE *, AcpiGbl_EntryStackPointer);
> +ACPI_GLOBAL (ACPI_SIZE *, AcpiGbl_LowestStackPointer);
> +ACPI_GLOBAL (UINT32, AcpiGbl_DeepestNesting);
> +ACPI_INIT_GLOBAL (UINT32, AcpiGbl_NestingLevel, 0);
> #endif
>
>
> @@ -453,11 +444,11 @@ ACPI_EXTERN UINT32 AcpiGbl_DeepestNesting;
> *
> ****************************************************************************/
>
> -ACPI_EXTERN ACPI_THREAD_STATE *AcpiGbl_CurrentWalkList;
> +ACPI_GLOBAL (ACPI_THREAD_STATE *, AcpiGbl_CurrentWalkList);
>
> /* Control method single step flag */
>
> -ACPI_EXTERN UINT8 AcpiGbl_CmSingleStep;
> +ACPI_GLOBAL (UINT8, AcpiGbl_CmSingleStep);
>
>
> /*****************************************************************************
> @@ -466,9 +457,10 @@ ACPI_EXTERN UINT8 AcpiGbl_CmSingleStep;
> *
> ****************************************************************************/
>
> -extern ACPI_BIT_REGISTER_INFO AcpiGbl_BitRegisterInfo[ACPI_NUM_BITREG];
> -ACPI_EXTERN UINT8 AcpiGbl_SleepTypeA;
> -ACPI_EXTERN UINT8 AcpiGbl_SleepTypeB;
> +extern ACPI_BIT_REGISTER_INFO AcpiGbl_BitRegisterInfo[ACPI_NUM_BITREG];
> +
> +ACPI_GLOBAL (UINT8, AcpiGbl_SleepTypeA);
> +ACPI_GLOBAL (UINT8, AcpiGbl_SleepTypeB);
>
>
> /*****************************************************************************
> @@ -479,13 +471,14 @@ ACPI_EXTERN UINT8 AcpiGbl_SleepTypeB;
>
> #if (!ACPI_REDUCED_HARDWARE)
>
> -ACPI_EXTERN UINT8 AcpiGbl_AllGpesInitialized;
> -ACPI_EXTERN ACPI_GPE_XRUPT_INFO *AcpiGbl_GpeXruptListHead;
> -ACPI_EXTERN ACPI_GPE_BLOCK_INFO *AcpiGbl_GpeFadtBlocks[ACPI_MAX_GPE_BLOCKS];
> -ACPI_EXTERN ACPI_GBL_EVENT_HANDLER AcpiGbl_GlobalEventHandler;
> -ACPI_EXTERN void *AcpiGbl_GlobalEventHandlerContext;
> -ACPI_EXTERN ACPI_FIXED_EVENT_HANDLER AcpiGbl_FixedEventHandlers[ACPI_NUM_FIXED_EVENTS];
> -extern ACPI_FIXED_EVENT_INFO AcpiGbl_FixedEventInfo[ACPI_NUM_FIXED_EVENTS];
> +ACPI_GLOBAL (UINT8, AcpiGbl_AllGpesInitialized);
> +ACPI_GLOBAL (ACPI_GPE_XRUPT_INFO *, AcpiGbl_GpeXruptListHead);
> +ACPI_GLOBAL (ACPI_GPE_BLOCK_INFO *, AcpiGbl_GpeFadtBlocks[ACPI_MAX_GPE_BLOCKS]);
> +ACPI_GLOBAL (ACPI_GBL_EVENT_HANDLER, AcpiGbl_GlobalEventHandler);
> +ACPI_GLOBAL (void *, AcpiGbl_GlobalEventHandlerContext);
> +ACPI_GLOBAL (ACPI_FIXED_EVENT_HANDLER, AcpiGbl_FixedEventHandlers[ACPI_NUM_FIXED_EVENTS]);
> +
> +extern ACPI_FIXED_EVENT_INFO AcpiGbl_FixedEventInfo[ACPI_NUM_FIXED_EVENTS];
>
> #endif /* !ACPI_REDUCED_HARDWARE */
>
> @@ -495,23 +488,19 @@ extern ACPI_FIXED_EVENT_INFO AcpiGbl_FixedEventInfo[ACPI_NUM_FIXED_EV
> *
> ****************************************************************************/
>
> -/* Procedure nesting level for debug output */
> -
> -extern UINT32 AcpiGbl_NestingLevel;
> -
> /* Event counters */
>
> -ACPI_EXTERN UINT32 AcpiMethodCount;
> -ACPI_EXTERN UINT32 AcpiGpeCount;
> -ACPI_EXTERN UINT32 AcpiSciCount;
> -ACPI_EXTERN UINT32 AcpiFixedEventCount[ACPI_NUM_FIXED_EVENTS];
> +ACPI_GLOBAL (UINT32, AcpiMethodCount);
> +ACPI_GLOBAL (UINT32, AcpiGpeCount);
> +ACPI_GLOBAL (UINT32, AcpiSciCount);
> +ACPI_GLOBAL (UINT32, AcpiFixedEventCount[ACPI_NUM_FIXED_EVENTS]);
>
> /* Support for dynamic control method tracing mechanism */
>
> -ACPI_EXTERN UINT32 AcpiGbl_OriginalDbgLevel;
> -ACPI_EXTERN UINT32 AcpiGbl_OriginalDbgLayer;
> -ACPI_EXTERN UINT32 AcpiGbl_TraceDbgLevel;
> -ACPI_EXTERN UINT32 AcpiGbl_TraceDbgLayer;
> +ACPI_GLOBAL (UINT32, AcpiGbl_OriginalDbgLevel);
> +ACPI_GLOBAL (UINT32, AcpiGbl_OriginalDbgLayer);
> +ACPI_GLOBAL (UINT32, AcpiGbl_TraceDbgLevel);
> +ACPI_GLOBAL (UINT32, AcpiGbl_TraceDbgLayer);
>
>
> /*****************************************************************************
> @@ -520,63 +509,64 @@ ACPI_EXTERN UINT32 AcpiGbl_TraceDbgLayer;
> *
> ****************************************************************************/
>
> -ACPI_EXTERN UINT8 AcpiGbl_DbOutputFlags;
> +ACPI_GLOBAL (UINT8, AcpiGbl_DbOutputFlags);
>
> #ifdef ACPI_DISASSEMBLER
>
> -ACPI_EXTERN BOOLEAN ACPI_INIT_GLOBAL (AcpiGbl_IgnoreNoopOperator, FALSE);
> +/* Do not disassemble buffers to resource descriptors */
>
> -ACPI_EXTERN BOOLEAN AcpiGbl_DbOpt_disasm;
> -ACPI_EXTERN BOOLEAN AcpiGbl_DbOpt_verbose;
> -ACPI_EXTERN BOOLEAN AcpiGbl_NumExternalMethods;
> -ACPI_EXTERN UINT32 AcpiGbl_ResolvedExternalMethods;
> -ACPI_EXTERN ACPI_EXTERNAL_LIST *AcpiGbl_ExternalList;
> -ACPI_EXTERN ACPI_EXTERNAL_FILE *AcpiGbl_ExternalFileList;
> -#endif
> +ACPI_INIT_GLOBAL (UINT8, AcpiGbl_NoResourceDisassembly, FALSE);
> +ACPI_INIT_GLOBAL (BOOLEAN, AcpiGbl_IgnoreNoopOperator, FALSE);
>
> +ACPI_GLOBAL (BOOLEAN, AcpiGbl_DbOpt_disasm);
> +ACPI_GLOBAL (BOOLEAN, AcpiGbl_DbOpt_verbose);
> +ACPI_GLOBAL (BOOLEAN, AcpiGbl_NumExternalMethods);
> +ACPI_GLOBAL (UINT32, AcpiGbl_ResolvedExternalMethods);
> +ACPI_GLOBAL (ACPI_EXTERNAL_LIST *, AcpiGbl_ExternalList);
> +ACPI_GLOBAL (ACPI_EXTERNAL_FILE *, AcpiGbl_ExternalFileList);
> +#endif
>
> #ifdef ACPI_DEBUGGER
>
> -extern BOOLEAN AcpiGbl_MethodExecuting;
> -extern BOOLEAN AcpiGbl_AbortMethod;
> -extern BOOLEAN AcpiGbl_DbTerminateThreads;
> +ACPI_INIT_GLOBAL (BOOLEAN, AcpiGbl_DbTerminateThreads, FALSE);
> +ACPI_INIT_GLOBAL (BOOLEAN, AcpiGbl_AbortMethod, FALSE);
> +ACPI_INIT_GLOBAL (BOOLEAN, AcpiGbl_MethodExecuting, FALSE);
>
> -ACPI_EXTERN BOOLEAN AcpiGbl_DbOpt_tables;
> -ACPI_EXTERN BOOLEAN AcpiGbl_DbOpt_stats;
> -ACPI_EXTERN BOOLEAN AcpiGbl_DbOpt_ini_methods;
> -ACPI_EXTERN BOOLEAN AcpiGbl_DbOpt_NoRegionSupport;
> -ACPI_EXTERN BOOLEAN AcpiGbl_DbOutputToFile;
> -ACPI_EXTERN char *AcpiGbl_DbBuffer;
> -ACPI_EXTERN char *AcpiGbl_DbFilename;
> -ACPI_EXTERN UINT32 AcpiGbl_DbDebugLevel;
> -ACPI_EXTERN UINT32 AcpiGbl_DbConsoleDebugLevel;
> -ACPI_EXTERN ACPI_NAMESPACE_NODE *AcpiGbl_DbScopeNode;
> +ACPI_GLOBAL (BOOLEAN, AcpiGbl_DbOpt_tables);
> +ACPI_GLOBAL (BOOLEAN, AcpiGbl_DbOpt_stats);
> +ACPI_GLOBAL (BOOLEAN, AcpiGbl_DbOpt_ini_methods);
> +ACPI_GLOBAL (BOOLEAN, AcpiGbl_DbOpt_NoRegionSupport);
> +ACPI_GLOBAL (BOOLEAN, AcpiGbl_DbOutputToFile);
> +ACPI_GLOBAL (char *, AcpiGbl_DbBuffer);
> +ACPI_GLOBAL (char *, AcpiGbl_DbFilename);
> +ACPI_GLOBAL (UINT32, AcpiGbl_DbDebugLevel);
> +ACPI_GLOBAL (UINT32, AcpiGbl_DbConsoleDebugLevel);
> +ACPI_GLOBAL (ACPI_NAMESPACE_NODE *, AcpiGbl_DbScopeNode);
>
> -ACPI_EXTERN char *AcpiGbl_DbArgs[ACPI_DEBUGGER_MAX_ARGS];
> -ACPI_EXTERN ACPI_OBJECT_TYPE AcpiGbl_DbArgTypes[ACPI_DEBUGGER_MAX_ARGS];
> +ACPI_GLOBAL (char *, AcpiGbl_DbArgs[ACPI_DEBUGGER_MAX_ARGS]);
> +ACPI_GLOBAL (ACPI_OBJECT_TYPE, AcpiGbl_DbArgTypes[ACPI_DEBUGGER_MAX_ARGS]);
>
> /* These buffers should all be the same size */
>
> -ACPI_EXTERN char AcpiGbl_DbLineBuf[ACPI_DB_LINE_BUFFER_SIZE];
> -ACPI_EXTERN char AcpiGbl_DbParsedBuf[ACPI_DB_LINE_BUFFER_SIZE];
> -ACPI_EXTERN char AcpiGbl_DbScopeBuf[ACPI_DB_LINE_BUFFER_SIZE];
> -ACPI_EXTERN char AcpiGbl_DbDebugFilename[ACPI_DB_LINE_BUFFER_SIZE];
> +ACPI_GLOBAL (char, AcpiGbl_DbLineBuf[ACPI_DB_LINE_BUFFER_SIZE]);
> +ACPI_GLOBAL (char, AcpiGbl_DbParsedBuf[ACPI_DB_LINE_BUFFER_SIZE]);
> +ACPI_GLOBAL (char, AcpiGbl_DbScopeBuf[ACPI_DB_LINE_BUFFER_SIZE]);
> +ACPI_GLOBAL (char, AcpiGbl_DbDebugFilename[ACPI_DB_LINE_BUFFER_SIZE]);
>
> /*
> * Statistic globals
> */
> -ACPI_EXTERN UINT16 AcpiGbl_ObjTypeCount[ACPI_TYPE_NS_NODE_MAX+1];
> -ACPI_EXTERN UINT16 AcpiGbl_NodeTypeCount[ACPI_TYPE_NS_NODE_MAX+1];
> -ACPI_EXTERN UINT16 AcpiGbl_ObjTypeCountMisc;
> -ACPI_EXTERN UINT16 AcpiGbl_NodeTypeCountMisc;
> -ACPI_EXTERN UINT32 AcpiGbl_NumNodes;
> -ACPI_EXTERN UINT32 AcpiGbl_NumObjects;
> -
> -
> -ACPI_EXTERN UINT32 AcpiGbl_SizeOfParseTree;
> -ACPI_EXTERN UINT32 AcpiGbl_SizeOfMethodTrees;
> -ACPI_EXTERN UINT32 AcpiGbl_SizeOfNodeEntries;
> -ACPI_EXTERN UINT32 AcpiGbl_SizeOfAcpiObjects;
> +ACPI_GLOBAL (UINT16, AcpiGbl_ObjTypeCount[ACPI_TYPE_NS_NODE_MAX+1]);
> +ACPI_GLOBAL (UINT16, AcpiGbl_NodeTypeCount[ACPI_TYPE_NS_NODE_MAX+1]);
> +ACPI_GLOBAL (UINT16, AcpiGbl_ObjTypeCountMisc);
> +ACPI_GLOBAL (UINT16, AcpiGbl_NodeTypeCountMisc);
> +ACPI_GLOBAL (UINT32, AcpiGbl_NumNodes);
> +ACPI_GLOBAL (UINT32, AcpiGbl_NumObjects);
> +
> +ACPI_GLOBAL (UINT32, AcpiGbl_SizeOfParseTree);
> +ACPI_GLOBAL (UINT32, AcpiGbl_SizeOfMethodTrees);
> +ACPI_GLOBAL (UINT32, AcpiGbl_SizeOfNodeEntries);
> +ACPI_GLOBAL (UINT32, AcpiGbl_SizeOfAcpiObjects);
>
> #endif /* ACPI_DEBUGGER */
>
> @@ -589,7 +579,7 @@ ACPI_EXTERN UINT32 AcpiGbl_SizeOfAcpiObjects;
>
> #ifdef ACPI_APPLICATION
>
> -ACPI_FILE ACPI_INIT_GLOBAL (AcpiGbl_DebugFile, NULL);
> +ACPI_INIT_GLOBAL (ACPI_FILE, AcpiGbl_DebugFile, NULL);
>
> #endif /* ACPI_APPLICATION */
>
> @@ -600,7 +590,9 @@ ACPI_FILE ACPI_INIT_GLOBAL (AcpiGbl_DebugFile, NULL);
> *
> ****************************************************************************/
>
> -extern const AH_PREDEFINED_NAME AslPredefinedInfo[];
> +extern const AH_PREDEFINED_NAME AslPredefinedInfo[];
> +
>
> +#pragma pack(pop) /* Restore original struct packing */
>
> #endif /* __ACGLOBAL_H__ */
> diff --git a/src/acpica/source/include/achware.h b/src/acpica/source/include/achware.h
> index ed39a36..7ac74db 100644
> --- a/src/acpica/source/include/achware.h
> +++ b/src/acpica/source/include/achware.h
> @@ -117,6 +117,8 @@
> #define __ACHWARE_H__
>
>
> +#pragma pack(push) /* Set default struct packing */
> +
> /* Values for the _SST predefined method */
>
> #define ACPI_SST_INDICATOR_OFF 0
> @@ -296,4 +298,6 @@ AcpiHwDerivePciId (
> ACPI_HANDLE PciRegion);
>
>
> +#pragma pack(pop) /* Restore original struct packing */
> +
> #endif /* __ACHWARE_H__ */
> diff --git a/src/acpica/source/include/acinterp.h b/src/acpica/source/include/acinterp.h
> index fbe0890..497a4e2 100644
> --- a/src/acpica/source/include/acinterp.h
> +++ b/src/acpica/source/include/acinterp.h
> @@ -117,6 +117,8 @@
> #define __ACINTERP_H__
>
>
> +#pragma pack(push) /* Set default struct packing */
> +
> #define ACPI_WALK_OPERANDS (&(WalkState->Operands [WalkState->NumOperands -1]))
>
> /* Macros for tables used for debug output */
> @@ -161,6 +163,10 @@ typedef const struct acpi_exdump_info
> #define ACPI_EXD_PACKAGE 11
> #define ACPI_EXD_FIELD 12
> #define ACPI_EXD_REFERENCE 13
> +#define ACPI_EXD_LIST 14 /* Operand object list */
> +#define ACPI_EXD_HDLR_LIST 15 /* Address Handler list */
> +#define ACPI_EXD_RGN_LIST 16 /* Region list */
> +#define ACPI_EXD_NODE 17 /* Namespace Node */
>
> /* restore default alignment */
>
> @@ -684,14 +690,6 @@ void
> AcpiExExitInterpreter (
> void);
>
> -void
> -AcpiExReacquireInterpreter (
> - void);
> -
> -void
> -AcpiExRelinquishInterpreter (
> - void);
> -
> BOOLEAN
> AcpiExTruncateFor32bitTable (
> ACPI_OPERAND_OBJECT *ObjDesc);
> @@ -795,4 +793,6 @@ AcpiExDataTableSpaceHandler (
> void *HandlerContext,
> void *RegionContext);
>
> +#pragma pack(pop) /* Restore original struct packing */
> +
> #endif /* __INTERP_H__ */
> diff --git a/src/acpica/source/include/aclocal.h b/src/acpica/source/include/aclocal.h
> index e31aedc..9c8cc99 100644
> --- a/src/acpica/source/include/aclocal.h
> +++ b/src/acpica/source/include/aclocal.h
> @@ -117,6 +117,8 @@
> #define __ACLOCAL_H__
>
>
> +#pragma pack(push) /* Set default struct packing */
> +
> /* acpisrc:StructDefs -- for acpisrc conversion */
>
> #define ACPI_SERIALIZED 0xFF
> @@ -1421,4 +1423,6 @@ typedef struct ah_predefined_name
>
> } AH_PREDEFINED_NAME;
>
> +#pragma pack(pop) /* Restore original struct packing */
> +
> #endif /* __ACLOCAL_H__ */
> diff --git a/src/acpica/source/include/acmacros.h b/src/acpica/source/include/acmacros.h
> index aa8bd56..14c85ef 100644
> --- a/src/acpica/source/include/acmacros.h
> +++ b/src/acpica/source/include/acmacros.h
> @@ -117,6 +117,8 @@
> #define __ACMACROS_H__
>
>
> +#pragma pack(push) /* Set default struct packing */
> +
> /*
> * Extract data using a pointer. Any more than a byte and we
> * get into potential aligment issues -- see the STORE macros below.
> @@ -505,4 +507,6 @@
> #define ACPI_IS_OCTAL_DIGIT(d) (((char)(d) >= '0') && ((char)(d) <= '7'))
>
>
> +#pragma pack(pop) /* Restore original struct packing */
> +
> #endif /* ACMACROS_H */
> diff --git a/src/acpica/source/include/acnamesp.h b/src/acpica/source/include/acnamesp.h
> index 883e9c4..2a31cdd 100644
> --- a/src/acpica/source/include/acnamesp.h
> +++ b/src/acpica/source/include/acnamesp.h
> @@ -117,6 +117,8 @@
> #define __ACNAMESP_H__
>
>
> +#pragma pack(push) /* Set default struct packing */
> +
> /* To search the entire name space, pass this as SearchBase */
>
> #define ACPI_NS_ALL ((ACPI_HANDLE)0)
> @@ -607,4 +609,6 @@ void
> AcpiNsTerminate (
> void);
>
> +#pragma pack(pop) /* Restore original struct packing */
> +
> #endif /* __ACNAMESP_H__ */
> diff --git a/src/acpica/source/include/acobject.h b/src/acpica/source/include/acobject.h
> index 534fe31..d890f96 100644
> --- a/src/acpica/source/include/acobject.h
> +++ b/src/acpica/source/include/acobject.h
> @@ -116,6 +116,8 @@
> #ifndef _ACOBJECT_H
> #define _ACOBJECT_H
>
> +#pragma pack(push) /* Set default struct packing */
> +
> /* acpisrc:StructDefs -- for acpisrc conversion */
>
>
> @@ -653,6 +655,6 @@ typedef union acpi_descriptor
>
> } ACPI_DESCRIPTOR;
>
> -#pragma pack()
> +#pragma pack(pop) /* Restore original struct packing */
>
> #endif /* _ACOBJECT_H */
> diff --git a/src/acpica/source/include/acoutput.h b/src/acpica/source/include/acoutput.h
> index 2311c44..4875a5f 100644
> --- a/src/acpica/source/include/acoutput.h
> +++ b/src/acpica/source/include/acoutput.h
> @@ -116,6 +116,8 @@
> #ifndef __ACOUTPUT_H__
> #define __ACOUTPUT_H__
>
> +#pragma pack(push) /* Set default struct packing */
> +
> /*
> * Debug levels and component IDs. These are used to control the
> * granularity of the output of the ACPI_DEBUG_PRINT macro -- on a
> @@ -536,4 +538,6 @@
> #endif /* ACPI_DEBUG_OUTPUT */
>
>
> +#pragma pack(pop) /* Restore original struct packing */
> +
> #endif /* __ACOUTPUT_H__ */
> diff --git a/src/acpica/source/include/acparser.h b/src/acpica/source/include/acparser.h
> index 5827a8c..90df9c1 100644
> --- a/src/acpica/source/include/acparser.h
> +++ b/src/acpica/source/include/acparser.h
> @@ -118,6 +118,8 @@
> #define __ACPARSER_H__
>
>
> +#pragma pack(push) /* Set default struct packing */
> +
> #define OP_HAS_RETURN_VALUE 1
>
> /* Variable number of arguments. This field must be 32 bits */
> @@ -425,4 +427,6 @@ AcpiPsShow (
> ACPI_PARSE_OBJECT *op);
>
>
> +#pragma pack(pop) /* Restore original struct packing */
> +
> #endif /* __ACPARSER_H__ */
> diff --git a/src/acpica/source/include/acpiosxf.h b/src/acpica/source/include/acpiosxf.h
> index 00922c7..43e99ee 100644
> --- a/src/acpica/source/include/acpiosxf.h
> +++ b/src/acpica/source/include/acpiosxf.h
> @@ -122,6 +122,8 @@
> #include "actypes.h"
>
>
> +#pragma pack(push) /* Set default struct packing */
> +
> /* Types for AcpiOsExecute */
>
> typedef enum
> @@ -623,4 +625,6 @@ AcpiOsCloseDirectory (
> #endif
>
>
> +#pragma pack(pop) /* Restore original struct packing */
> +
> #endif /* __ACPIOSXF_H__ */
> diff --git a/src/acpica/source/include/acpixf.h b/src/acpica/source/include/acpixf.h
> index 4e34438..a6d7c35 100644
> --- a/src/acpica/source/include/acpixf.h
> +++ b/src/acpica/source/include/acpixf.h
> @@ -119,13 +119,15 @@
>
> /* Current ACPICA subsystem version in YYYYMMDD format */
>
> -#define ACPI_CA_VERSION 0x20140114
> +#define ACPI_CA_VERSION 0x20140214
>
> #include "acconfig.h"
> #include "actypes.h"
> #include "actbl.h"
> #include "acbuffer.h"
>
> +#pragma pack(push) /* Set default struct packing */
> +
> /*
> * Globals that are publically available
> */
> @@ -142,7 +144,7 @@ extern UINT32 AcpiDbgLayer;
>
> /* ACPICA runtime options */
>
> -extern UINT8 AcpiGbl_AllMethodsSerialized;
> +extern UINT8 AcpiGbl_AutoSerializeMethods;
> extern UINT8 AcpiGbl_CopyDsdtLocally;
> extern UINT8 AcpiGbl_CreateOsiMethod;
> extern UINT8 AcpiGbl_DisableAutoRepair;
> @@ -903,4 +905,6 @@ AcpiDebugPrintRaw (
> ...);
> #endif
>
> +#pragma pack(pop) /* Restore original struct packing */
> +
> #endif /* __ACXFACE_H__ */
> diff --git a/src/acpica/source/include/acpredef.h b/src/acpica/source/include/acpredef.h
> index 5e8b00c..75aed15 100644
> --- a/src/acpica/source/include/acpredef.h
> +++ b/src/acpica/source/include/acpredef.h
> @@ -117,11 +117,13 @@
> #define __ACPREDEF_H__
>
>
> +#pragma pack(push) /* Set default struct packing */
> +
> /******************************************************************************
> *
> * Return Package types
> *
> - * 1) PTYPE1 packages do not contain sub-packages.
> + * 1) PTYPE1 packages do not contain subpackages.
> *
> * ACPI_PTYPE1_FIXED: Fixed-length length, 1 or 2 object types:
> * object type
> @@ -136,8 +138,8 @@
> * (Used for _PRW)
> *
> *
> - * 2) PTYPE2 packages contain a Variable-length number of sub-packages. Each
> - * of the different types describe the contents of each of the sub-packages.
> + * 2) PTYPE2 packages contain a Variable-length number of subpackages. Each
> + * of the different types describe the contents of each of the subpackages.
> *
> * ACPI_PTYPE2: Each subpackage contains 1 or 2 object types. Zero-length
> * parent package is allowed:
> @@ -626,7 +628,7 @@ const ACPI_PREDEFINED_INFO AcpiGbl_PredefinedMethods[] =
>
> /*
> * For _HPX, a single package is returned, containing a variable-length number
> - * of sub-packages. Each sub-package contains a PCI record setting.
> + * of subpackages. Each subpackage contains a PCI record setting.
> * There are several different type of record settings, of different
> * lengths, but all elements of all settings are Integers.
> */
> @@ -756,6 +758,12 @@ const ACPI_PREDEFINED_INFO AcpiGbl_PredefinedMethods[] =
> METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */
> PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0,0,0),
>
> + {{"_PRP", METHOD_0ARGS,
> + METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Pkgs) each: 1 Str, 1 Int/Str/Pkg */
> + PACKAGE_INFO (ACPI_PTYPE2, ACPI_RTYPE_STRING, 1,
> + ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING |
> + ACPI_RTYPE_PACKAGE | ACPI_RTYPE_REFERENCE, 1,0),
> +
> {{"_PRS", METHOD_0ARGS,
> METHOD_RETURNS (ACPI_RTYPE_BUFFER)}},
>
> @@ -1133,4 +1141,6 @@ static const ACPI_PREDEFINED_INFO AcpiGbl_ScopeNames[] = {
> extern const ACPI_PREDEFINED_INFO AcpiGbl_ResourceNames[];
> #endif
>
> +#pragma pack(pop) /* Restore original struct packing */
> +
> #endif
> diff --git a/src/acpica/source/include/acresrc.h b/src/acpica/source/include/acresrc.h
> index d1366f0..db23891 100644
> --- a/src/acpica/source/include/acresrc.h
> +++ b/src/acpica/source/include/acresrc.h
> @@ -122,6 +122,8 @@
> #include "amlresrc.h"
>
>
> +#pragma pack(push) /* Set default struct packing */
> +
> /*
> * If possible, pack the following structures to byte alignment, since we
> * don't care about performance for debug output. Two cases where we cannot
> @@ -510,4 +512,6 @@ extern ACPI_RSDUMP_INFO AcpiRsDumpUartSerialBus[];
> extern ACPI_RSDUMP_INFO AcpiRsDumpGeneralFlags[];
> #endif
>
> +#pragma pack(pop) /* Restore original struct packing */
> +
> #endif /* __ACRESRC_H__ */
> diff --git a/src/acpica/source/include/acrestyp.h b/src/acpica/source/include/acrestyp.h
> index 9cf948b..9ff05217 100644
> --- a/src/acpica/source/include/acrestyp.h
> +++ b/src/acpica/source/include/acrestyp.h
> @@ -117,6 +117,8 @@
> #define __ACRESTYP_H__
>
>
> +#pragma pack(push) /* Set default struct packing */
> +
> /*
> * Definitions for Resource Attributes
> */
> @@ -769,4 +771,6 @@ typedef struct acpi_pci_routing_table
>
> } ACPI_PCI_ROUTING_TABLE;
>
> +#pragma pack(pop) /* Restore original struct packing */
> +
> #endif /* __ACRESTYP_H__ */
> diff --git a/src/acpica/source/include/acstruct.h b/src/acpica/source/include/acstruct.h
> index ee4f989..7e91384 100644
> --- a/src/acpica/source/include/acstruct.h
> +++ b/src/acpica/source/include/acstruct.h
> @@ -116,6 +116,9 @@
> #ifndef __ACSTRUCT_H__
> #define __ACSTRUCT_H__
>
> +
> +#pragma pack(push) /* Set default struct packing */
> +
> /* acpisrc:StructDefs -- for acpisrc conversion */
>
> /*****************************************************************************
> @@ -211,6 +214,9 @@ typedef struct acpi_init_walk_info
> UINT32 TableIndex;
> UINT32 ObjectCount;
> UINT32 MethodCount;
> + UINT32 SerialMethodCount;
> + UINT32 NonSerialMethodCount;
> + UINT32 SerializedMethodCount;
> UINT32 DeviceCount;
> UINT32 OpRegionCount;
> UINT32 FieldCount;
> @@ -339,4 +345,6 @@ typedef struct acpi_walk_info
> #define ACPI_DISPLAY_SHORT (UINT8) 2
>
>
> +#pragma pack(pop) /* Restore original struct packing */
> +
> #endif
> diff --git a/src/acpica/source/include/actables.h b/src/acpica/source/include/actables.h
> index ed0e1b0..8ec349c 100644
> --- a/src/acpica/source/include/actables.h
> +++ b/src/acpica/source/include/actables.h
> @@ -117,6 +117,8 @@
> #define __ACTABLES_H__
>
>
> +#pragma pack(push) /* Set default struct packing */
> +
> ACPI_STATUS
> AcpiAllocateRootTable (
> UINT32 InitialTableCount);
> @@ -266,4 +268,6 @@ ACPI_STATUS
> AcpiTbParseRootTable (
> ACPI_PHYSICAL_ADDRESS RsdpAddress);
>
> +#pragma pack(pop) /* Restore original struct packing */
> +
> #endif /* __ACTABLES_H__ */
> diff --git a/src/acpica/source/include/actbl.h b/src/acpica/source/include/actbl.h
> index b300661..37d44d7 100644
> --- a/src/acpica/source/include/actbl.h
> +++ b/src/acpica/source/include/actbl.h
> @@ -117,6 +117,8 @@
> #define __ACTBL_H__
>
>
> +#pragma pack(push) /* Set default struct packing */
> +
> /*******************************************************************************
> *
> * Fundamental ACPI tables
> @@ -512,4 +514,6 @@ typedef struct acpi_table_desc
> #define ACPI_FADT_V3_SIZE (UINT32) (ACPI_FADT_OFFSET (SleepControl))
> #define ACPI_FADT_V5_SIZE (UINT32) (sizeof (ACPI_TABLE_FADT))
>
> +#pragma pack(pop) /* Restore original struct packing */
> +
> #endif /* __ACTBL_H__ */
> diff --git a/src/acpica/source/include/actbl1.h b/src/acpica/source/include/actbl1.h
> index 4710672..24a51a3 100644
> --- a/src/acpica/source/include/actbl1.h
> +++ b/src/acpica/source/include/actbl1.h
> @@ -117,6 +117,8 @@
> #define __ACTBL1_H__
>
>
> +#pragma pack(push) /* Set default struct packing */
> +
> /*******************************************************************************
> *
> * Additional ACPI Tables (1)
> @@ -1213,8 +1215,6 @@ typedef struct acpi_srat_x2apic_cpu_affinity
> #define ACPI_SRAT_CPU_ENABLED (1) /* 00: Use affinity structure */
>
>
> -/* Reset to default packing */
> -
> -#pragma pack()
> +#pragma pack(pop) /* Restore original struct packing */
>
> #endif /* __ACTBL1_H__ */
> diff --git a/src/acpica/source/include/actbl2.h b/src/acpica/source/include/actbl2.h
> index 2ae8ce3..5123a93 100644
> --- a/src/acpica/source/include/actbl2.h
> +++ b/src/acpica/source/include/actbl2.h
> @@ -117,6 +117,8 @@
> #define __ACTBL2_H__
>
>
> +#pragma pack(push) /* Set default struct packing */
> +
> /*******************************************************************************
> *
> * Additional ACPI Tables (2)
> @@ -1488,8 +1490,6 @@ typedef struct acpi_table_wdrt
> } ACPI_TABLE_WDRT;
>
>
> -/* Reset to default packing */
> -
> -#pragma pack()
> +#pragma pack(pop) /* Restore original struct packing */
>
> #endif /* __ACTBL2_H__ */
> diff --git a/src/acpica/source/include/actbl3.h b/src/acpica/source/include/actbl3.h
> index efec7e8..5ab1ff5 100644
> --- a/src/acpica/source/include/actbl3.h
> +++ b/src/acpica/source/include/actbl3.h
> @@ -117,6 +117,8 @@
> #define __ACTBL3_H__
>
>
> +#pragma pack(push) /* Set default struct packing */
> +
> /*******************************************************************************
> *
> * Additional ACPI Tables (3)
> @@ -804,8 +806,6 @@ typedef struct acpi_tpm2_control
> } ACPI_TPM2_CONTROL;
>
>
> -/* Reset to default packing */
> -
> -#pragma pack()
> +#pragma pack(pop) /* Restore original struct packing */
>
> #endif /* __ACTBL3_H__ */
> diff --git a/src/acpica/source/include/actypes.h b/src/acpica/source/include/actypes.h
> index a02cd10..b2dc8a7 100644
> --- a/src/acpica/source/include/actypes.h
> +++ b/src/acpica/source/include/actypes.h
> @@ -116,6 +116,8 @@
> #ifndef __ACTYPES_H__
> #define __ACTYPES_H__
>
> +#pragma pack(push) /* Set default struct packing */
> +
> /* acpisrc:StructDefs -- for acpisrc conversion */
>
> /*
> @@ -1387,4 +1389,6 @@ typedef struct acpi_memory_list
> #define ACPI_OSI_WIN_8 0x0C
>
>
> +#pragma pack(pop) /* Restore original struct packing */
> +
> #endif /* __ACTYPES_H__ */
> diff --git a/src/acpica/source/include/acutils.h b/src/acpica/source/include/acutils.h
> index f1c2c8b..1bf4319 100644
> --- a/src/acpica/source/include/acutils.h
> +++ b/src/acpica/source/include/acutils.h
> @@ -117,6 +117,8 @@
> #define _ACUTILS_H
>
>
> +#pragma pack(push) /* Set default struct packing */
> +
> extern const UINT8 AcpiGbl_ResourceAmlSizes[];
> extern const UINT8 AcpiGbl_ResourceAmlSerialBusSizes[];
>
> @@ -1171,4 +1173,7 @@ AcpiUtMethodError (
> const char *Path,
> ACPI_STATUS LookupStatus);
>
> +
> +#pragma pack(pop) /* Restore original struct packing */
> +
> #endif /* _ACUTILS_H */
> diff --git a/src/acpica/source/include/amlcode.h b/src/acpica/source/include/amlcode.h
> index 5eaf30c..8cf250c 100644
> --- a/src/acpica/source/include/amlcode.h
> +++ b/src/acpica/source/include/amlcode.h
> @@ -118,6 +118,9 @@
> #ifndef __AMLCODE_H__
> #define __AMLCODE_H__
>
> +#pragma pack(push) /* Set default struct packing */
> +
> +
> /* primary opcodes */
>
> #define AML_NULL_CHAR (UINT16) 0x00
> @@ -581,4 +584,6 @@ typedef enum
> #define AML_METHOD_SYNC_LEVEL 0xF0
>
>
> +#pragma pack(pop) /* Restore original struct packing */
> +
> #endif /* __AMLCODE_H__ */
> diff --git a/src/acpica/source/include/amlresrc.h b/src/acpica/source/include/amlresrc.h
> index 3fcd9ed..c54ae1f 100644
> --- a/src/acpica/source/include/amlresrc.h
> +++ b/src/acpica/source/include/amlresrc.h
> @@ -119,6 +119,8 @@
> #define __AMLRESRC_H
>
>
> +#pragma pack(push) /* Set default struct packing */
> +
> /*
> * Resource descriptor tags, as defined in the ACPI specification.
> * Used to symbolically reference fields within a descriptor.
> @@ -646,4 +648,7 @@ typedef union aml_resource
>
> } AML_RESOURCE;
>
> +
> +#pragma pack(pop) /* Restore original struct packing */
> +
> #endif
> diff --git a/src/acpica/source/tools/acpiexec/aecommon.h b/src/acpica/source/tools/acpiexec/aecommon.h
> index 5aac8f8..599abbc 100644
> --- a/src/acpica/source/tools/acpiexec/aecommon.h
> +++ b/src/acpica/source/tools/acpiexec/aecommon.h
> @@ -135,6 +135,8 @@
> #include <string.h>
> #include <signal.h>
>
> +#pragma pack(push) /* Set default struct packing */
> +
> extern BOOLEAN AcpiGbl_IgnoreErrors;
> extern UINT8 AcpiGbl_RegionFillValue;
> extern UINT8 AcpiGbl_UseHwReducedFadt;
> @@ -268,4 +270,7 @@ AeGlobalEventHandler (
> UINT32 EventNumber,
> void *Context);
>
> +
> +#pragma pack(pop) /* Restore original struct packing */
> +
> #endif /* _AECOMMON */
>
Acked-by: Alex Hung <alex.hung at canonical.com>
More information about the fwts-devel
mailing list