aboutsummaryrefslogtreecommitdiff
path: root/sys/contrib/dev/acpica
diff options
context:
space:
mode:
authorJung-uk Kim <jkim@FreeBSD.org>2019-10-19 14:56:44 +0000
committerJung-uk Kim <jkim@FreeBSD.org>2019-10-19 14:56:44 +0000
commita009b7dcabdc27aa3fdde1f2c6dd08d4fe5a3170 (patch)
tree9e879858b8edf10dec3afabe746f951e18910443 /sys/contrib/dev/acpica
parent6b74887f0306adaba6eac4e30d8bcbc817fce9f4 (diff)
parente63852a7532181a14cec2928b31af2209e98414a (diff)
downloadsrc-a009b7dcabdc27aa3fdde1f2c6dd08d4fe5a3170.tar.gz
src-a009b7dcabdc27aa3fdde1f2c6dd08d4fe5a3170.zip
Merge ACPICA 20191018.
Notes
Notes: svn path=/head/; revision=353764
Diffstat (limited to 'sys/contrib/dev/acpica')
-rwxr-xr-xsys/contrib/dev/acpica/acpica_prep.sh13
-rw-r--r--sys/contrib/dev/acpica/changes.txt113
-rw-r--r--sys/contrib/dev/acpica/common/acgetline.c2
-rw-r--r--sys/contrib/dev/acpica/common/adisasm.c1
-rw-r--r--sys/contrib/dev/acpica/common/adwalk.c25
-rw-r--r--sys/contrib/dev/acpica/common/dmrestag.c6
-rw-r--r--sys/contrib/dev/acpica/common/dmtables.c8
-rw-r--r--sys/contrib/dev/acpica/common/dmtbdump1.c22
-rw-r--r--sys/contrib/dev/acpica/common/dmtbdump2.c26
-rw-r--r--sys/contrib/dev/acpica/common/dmtbdump3.c6
-rw-r--r--sys/contrib/dev/acpica/compiler/aslanalyze.c2
-rw-r--r--sys/contrib/dev/acpica/compiler/aslbtypes.c1
-rw-r--r--sys/contrib/dev/acpica/compiler/aslcache.c6
-rw-r--r--sys/contrib/dev/acpica/compiler/aslcodegen.c4
-rw-r--r--sys/contrib/dev/acpica/compiler/aslcompile.c29
-rw-r--r--sys/contrib/dev/acpica/compiler/aslcompiler.h18
-rw-r--r--sys/contrib/dev/acpica/compiler/asldebug.c2
-rw-r--r--sys/contrib/dev/acpica/compiler/asldefine.h2
-rw-r--r--sys/contrib/dev/acpica/compiler/aslglobal.h2
-rw-r--r--sys/contrib/dev/acpica/compiler/aslhelp.c1
-rw-r--r--sys/contrib/dev/acpica/compiler/aslkeywords.y2
-rw-r--r--sys/contrib/dev/acpica/compiler/asllength.c9
-rw-r--r--sys/contrib/dev/acpica/compiler/asllistsup.c2
-rw-r--r--sys/contrib/dev/acpica/compiler/aslload.c24
-rw-r--r--sys/contrib/dev/acpica/compiler/aslmain.c30
-rw-r--r--sys/contrib/dev/acpica/compiler/aslmessages.c9
-rw-r--r--sys/contrib/dev/acpica/compiler/aslmessages.h5
-rw-r--r--sys/contrib/dev/acpica/compiler/aslmethod.c20
-rw-r--r--sys/contrib/dev/acpica/compiler/aslnamesp.c13
-rw-r--r--sys/contrib/dev/acpica/compiler/asloptions.c5
-rw-r--r--sys/contrib/dev/acpica/compiler/aslparseop.c18
-rw-r--r--sys/contrib/dev/acpica/compiler/aslprepkg.c2
-rw-r--r--sys/contrib/dev/acpica/compiler/aslresource.c2
-rw-r--r--sys/contrib/dev/acpica/compiler/aslrestype2.c3
-rw-r--r--sys/contrib/dev/acpica/compiler/aslrestype2s.c1
-rw-r--r--sys/contrib/dev/acpica/compiler/aslstartup.c1
-rw-r--r--sys/contrib/dev/acpica/compiler/asltransform.c6
-rw-r--r--sys/contrib/dev/acpica/compiler/asltypes.h3
-rw-r--r--sys/contrib/dev/acpica/compiler/aslutils.c177
-rw-r--r--sys/contrib/dev/acpica/compiler/aslxrefout.c2
-rw-r--r--sys/contrib/dev/acpica/compiler/cvdisasm.c9
-rw-r--r--sys/contrib/dev/acpica/compiler/cvparser.c1
-rw-r--r--sys/contrib/dev/acpica/compiler/dtcompile.c97
-rw-r--r--sys/contrib/dev/acpica/compiler/dtcompiler.h50
-rw-r--r--sys/contrib/dev/acpica/compiler/dtcompilerparser.l294
-rw-r--r--sys/contrib/dev/acpica/compiler/dtcompilerparser.y285
-rw-r--r--sys/contrib/dev/acpica/compiler/dtfield.c131
-rw-r--r--sys/contrib/dev/acpica/compiler/dtio.c51
-rw-r--r--sys/contrib/dev/acpica/compiler/dtparser.l2
-rw-r--r--sys/contrib/dev/acpica/compiler/dttable2.c23
-rw-r--r--sys/contrib/dev/acpica/compiler/dttemplate.c2
-rw-r--r--sys/contrib/dev/acpica/compiler/prmacros.c2
-rw-r--r--sys/contrib/dev/acpica/compiler/prscan.c6
-rw-r--r--sys/contrib/dev/acpica/components/debugger/dbconvert.c4
-rw-r--r--sys/contrib/dev/acpica/components/debugger/dbdisply.c2
-rw-r--r--sys/contrib/dev/acpica/components/debugger/dbfileio.c2
-rw-r--r--sys/contrib/dev/acpica/components/debugger/dbhistry.c2
-rw-r--r--sys/contrib/dev/acpica/components/debugger/dbinput.c46
-rw-r--r--sys/contrib/dev/acpica/components/debugger/dbmethod.c10
-rw-r--r--sys/contrib/dev/acpica/components/debugger/dbnames.c122
-rw-r--r--sys/contrib/dev/acpica/components/debugger/dbobject.c2
-rw-r--r--sys/contrib/dev/acpica/components/debugger/dbstats.c92
-rw-r--r--sys/contrib/dev/acpica/components/disassembler/dmdeferred.c4
-rw-r--r--sys/contrib/dev/acpica/components/disassembler/dmresrc.c1
-rw-r--r--sys/contrib/dev/acpica/components/disassembler/dmwalk.c1
-rw-r--r--sys/contrib/dev/acpica/components/dispatcher/dscontrol.c2
-rw-r--r--sys/contrib/dev/acpica/components/dispatcher/dsfield.c9
-rw-r--r--sys/contrib/dev/acpica/components/events/evgpe.c9
-rw-r--r--sys/contrib/dev/acpica/components/events/evgpeblk.c6
-rw-r--r--sys/contrib/dev/acpica/components/events/evgpeinit.c3
-rw-r--r--sys/contrib/dev/acpica/components/events/evmisc.c17
-rw-r--r--sys/contrib/dev/acpica/components/events/evregion.c4
-rw-r--r--sys/contrib/dev/acpica/components/events/evrgnini.c1
-rw-r--r--sys/contrib/dev/acpica/components/events/evxfgpe.c27
-rw-r--r--sys/contrib/dev/acpica/components/executer/exdump.c6
-rw-r--r--sys/contrib/dev/acpica/components/hardware/hwxfsleep.c4
-rw-r--r--sys/contrib/dev/acpica/components/namespace/nsaccess.c2
-rw-r--r--sys/contrib/dev/acpica/components/namespace/nsalloc.c2
-rw-r--r--sys/contrib/dev/acpica/components/namespace/nsconvert.c2
-rw-r--r--sys/contrib/dev/acpica/components/namespace/nsdump.c8
-rw-r--r--sys/contrib/dev/acpica/components/namespace/nsrepair2.c2
-rw-r--r--sys/contrib/dev/acpica/components/namespace/nsxfname.c2
-rw-r--r--sys/contrib/dev/acpica/components/parser/psobject.c6
-rw-r--r--sys/contrib/dev/acpica/components/resources/rscreate.c4
-rw-r--r--sys/contrib/dev/acpica/components/tables/tbdata.c5
-rw-r--r--sys/contrib/dev/acpica/components/tables/tbxfload.c49
-rw-r--r--sys/contrib/dev/acpica/components/utilities/utbuffer.c62
-rw-r--r--sys/contrib/dev/acpica/components/utilities/utdebug.c4
-rw-r--r--sys/contrib/dev/acpica/components/utilities/uterror.c6
-rw-r--r--sys/contrib/dev/acpica/components/utilities/utosi.c3
-rw-r--r--sys/contrib/dev/acpica/components/utilities/utownerid.c12
-rw-r--r--sys/contrib/dev/acpica/components/utilities/uttrack.c2
-rw-r--r--sys/contrib/dev/acpica/include/acconfig.h4
-rw-r--r--sys/contrib/dev/acpica/include/acdebug.h4
-rw-r--r--sys/contrib/dev/acpica/include/aclocal.h4
-rw-r--r--sys/contrib/dev/acpica/include/acobject.h2
-rw-r--r--sys/contrib/dev/acpica/include/acpiosxf.h1
-rw-r--r--sys/contrib/dev/acpica/include/acpixf.h22
-rw-r--r--sys/contrib/dev/acpica/include/acstruct.h15
-rw-r--r--sys/contrib/dev/acpica/include/actypes.h20
-rw-r--r--sys/contrib/dev/acpica/include/acutils.h18
101 files changed, 1809 insertions, 404 deletions
diff --git a/sys/contrib/dev/acpica/acpica_prep.sh b/sys/contrib/dev/acpica/acpica_prep.sh
index e3f6f30aea91..1a53d8c44ae1 100755
--- a/sys/contrib/dev/acpica/acpica_prep.sh
+++ b/sys/contrib/dev/acpica/acpica_prep.sh
@@ -18,12 +18,13 @@ fulldirs="common compiler components include os_specific"
# files to remove
stripdirs="generate libraries parsers preprocessor tests tools"
-stripfiles="Makefile README accygwin.h acdragonfly.h acdragonflyex.h \
- acefi.h acefiex.h achaiku.h acintel.h aclinux.h aclinuxex.h \
- acmacosx.h acmsvc.h acmsvcex.h acnetbsd.h acos2.h acqnx.h \
- acwin.h acwin64.h acwinex.h new_table.txt osbsdtbl.c osefitbl.c \
- osefixf.c osfreebsdtbl.c oslinuxtbl.c osunixdir.c osunixmap.c \
- oswindir.c oswintbl.c oswinxf.c readme.txt utclib.c utprint.c"
+stripfiles="Makefile README aslcompiler.y accygwin.h acdragonfly.h \
+ acdragonflyex.h acefi.h acefiex.h achaiku.h acintel.h aclinux.h \
+ aclinuxex.h acmacosx.h acmsvc.h acmsvcex.h acnetbsd.h acos2.h \
+ acqnx.h acwin.h acwin64.h acwinex.h new_table.txt osbsdtbl.c \
+ osefitbl.c osefixf.c osfreebsdtbl.c oslinuxtbl.c osunixdir.c \
+ osunixmap.c oswindir.c oswintbl.c oswinxf.c readme.txt utclib.c \
+ utprint.c"
# include files to canonify
src_headers="acapps.h acbuffer.h acclib.h accommon.h acconfig.h \
diff --git a/sys/contrib/dev/acpica/changes.txt b/sys/contrib/dev/acpica/changes.txt
index 0020457b5d2a..d7f84e92f670 100644
--- a/sys/contrib/dev/acpica/changes.txt
+++ b/sys/contrib/dev/acpica/changes.txt
@@ -1,4 +1,117 @@
----------------------------------------
+18 October 2019. Summary of changes for version 20191018:
+
+
+1) ACPICA kernel-resident subsystem:
+
+Debugger: added a new command: ?Fields [address space ID]?. This command
+dumps the contents of all field units that are defined within the
+namespace with a particular address space ID.
+
+Modified the external interface AcpiLoadTable() to return a table index.
+This table index can be used for unloading a table for debugging.
+ ACPI_STATUS
+ AcpiLoadTable (
+ ACPI_TABLE_HEADER *Table,
+ UINT32 *TableIndex))
+
+Implemented a new external interface: AcpiUnloadTable() This new function
+takes a table index as an argument and unloads the table. Useful for
+debugging only.
+ ACPI_STATUS
+ AcpiUnloadTable (
+ UINT32 TableIndex))
+
+Ported the AcpiNames utility to use the new table initialization
+sequence. The utility was broken before this change. Also, it was
+required to include most of the AML interpreter into the utility in order
+to process table initialization (module-level code execution.)
+
+Update for results from running Clang V8.0.1. This fixes all "dead
+assignment" warnings. There are still several "Dereference of NULL
+pointer" warnings, but these have been found to be false positive
+warnings.
+
+
+2) iASL Compiler/Disassembler and ACPICA tools:
+
+iASL: numerous table compiler changes to ensure that the usage of
+yacc/bison syntax is POSIX-compliant.
+
+iASL/disassembler: several simple bug fixes in the data table
+disassembler.
+
+Acpiexec: expanded the initialization file (the -fi option) to initialize
+strings, buffers, packages, and field units.
+
+
+----------------------------------------
+16 August 2019. Summary of changes for version 20190816:
+
+This release is available at https://acpica.org/downloads
+
+
+1) ACPICA kernel-resident subsystem:
+
+Modified the OwnerId mechanism to allow for more Owner Ids. The previous
+limit was 256 Ids, now it is 4096 Ids. This prevents OWNER_ID_LIMIT
+exceptions on machines with a large number of initialization threads,
+many CPU cores and nested initialization control methods.
+
+Introduced acpi_dispatch_gpe() as a wrapper around AcpiEvDetectGpe() for
+checking if the given GPE (as represented by a GPE device handle and a
+GPE number) is currently active and dispatching it (if that's the case)
+outside of interrupt context.
+
+Table load: exit the interpreter before initializing objects within the
+new table This prevents re-acquiring the interpreter lock when loading
+tables
+
+Added the "Windows 2019" string to the _OSI support (version 1903). Jung-
+uk Kim
+
+Macros: removed pointer math on a null pointer. Causes warnings on some
+compilers and/or tools. Changed ACPI_TO_POINTER to use ACPI_CAST_PTR
+instead of using arithmetic.
+
+Fully deployed the ACPI_PRINTF_LIKE macro. This macro was not being used
+across all "printf-like" internal functions. Also, cleanup all calls to
+such functions (both in 32-bit mode and 64-bit mode) now that they are
+analyzed by the gcc compiler via ACPI_PRINTF_LIKE.
+
+
+2) iASL Compiler/Disassembler and ACPICA tools:
+
+iASL: implemented a new data table compiler flex/bison front-end. This
+change is internal and is not intended to result in changes to the
+compiled code. This new compiler front-end can be invoked using the -tp
+option for now, until the old mechanism is removed.
+
+ASLTS: Implemented a new data table compiler test suite. This test suite
+generates all table templates and compile/disassemble/re-compile/binary-
+compare each file.
+
+iASL: return -1 if AML files were not generated due to compiler errors
+
+iASL: added a warning on use of the now-legacy ASL Processor () keyword.
+
+iASL: added an error on _UID object declaration that returns a String
+within a Processor () declaration. A _UID for a processor must be an
+Integer.
+
+iASL: added a null terminator to name strings that consist only of
+multiple parent prefixes (^)
+
+iASL: added support to compile both ASL and data table files in a single
+command.
+
+Updated the tool generation project files that were recently migrated to
+MSVC 2017 to eliminate all new warnings. The new project files appear in
+the directory \acpica\generate\msvc2017. This change effectively
+deprecates the older project files in \acpica\generate\msvc9.
+
+
+----------------------------------------
03 July 2019. Summary of changes for version 20190703:
diff --git a/sys/contrib/dev/acpica/common/acgetline.c b/sys/contrib/dev/acpica/common/acgetline.c
index 5d78e0bb02a3..7313169df2c3 100644
--- a/sys/contrib/dev/acpica/common/acgetline.c
+++ b/sys/contrib/dev/acpica/common/acgetline.c
@@ -532,7 +532,7 @@ AcpiOsGetLine (
* Ignore the various keys like insert/delete/home/end, etc.
* But we must eat the final character of the ESC sequence.
*/
- InputChar = getchar ();
+ (void) getchar ();
continue;
default:
diff --git a/sys/contrib/dev/acpica/common/adisasm.c b/sys/contrib/dev/acpica/common/adisasm.c
index 68712f42ebaf..bb13a9603b50 100644
--- a/sys/contrib/dev/acpica/common/adisasm.c
+++ b/sys/contrib/dev/acpica/common/adisasm.c
@@ -746,7 +746,6 @@ AdDoExternalFileList (
{
ExternalFileList = ExternalFileList->Next;
GlobalStatus = AE_TYPE;
- Status = AE_OK;
continue;
}
diff --git a/sys/contrib/dev/acpica/common/adwalk.c b/sys/contrib/dev/acpica/common/adwalk.c
index b2bce566c9cb..fe3b05b37659 100644
--- a/sys/contrib/dev/acpica/common/adwalk.c
+++ b/sys/contrib/dev/acpica/common/adwalk.c
@@ -480,6 +480,7 @@ AcpiDmDumpDescending (
{
ACPI_OP_WALK_INFO *Info = Context;
char *Path;
+ ACPI_STATUS Status;
if (!Op)
@@ -522,10 +523,18 @@ AcpiDmDumpDescending (
if (Op->Common.Value.String)
{
- AcpiNsExternalizeName (ACPI_UINT32_MAX, Op->Common.Value.String,
+ Status = AcpiNsExternalizeName (ACPI_UINT32_MAX, Op->Common.Value.String,
NULL, &Path);
- AcpiOsPrintf ("%s %p", Path, Op->Common.Node);
- ACPI_FREE (Path);
+ if (ACPI_SUCCESS (Status))
+ {
+ AcpiOsPrintf ("%s %p", Path, Op->Common.Node);
+ ACPI_FREE (Path);
+ }
+ else
+ {
+ AcpiOsPrintf ("Could not externalize pathname for node [%4.4s]",
+ Op->Common.Node->Name.Ascii);
+ }
}
else
{
@@ -592,7 +601,9 @@ AcpiDmFindOrphanDescending (
return (AE_OK);
}
+#ifdef ACPI_UNDER_DEVELOPMENT
OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode);
+#endif
switch (Op->Common.AmlOpcode)
{
@@ -830,9 +841,9 @@ AcpiDmLoadDescendingOp (
* 2) Not the root node
* 3) Not a node created by Scope
*/
-
- if (!PreDefined && Node != AcpiGbl_RootNode &&
- Op->Common.AmlOpcode != AML_SCOPE_OP)
+ if (!PreDefined &&
+ (Node != AcpiGbl_RootNode) &&
+ (Op->Common.AmlOpcode != AML_SCOPE_OP))
{
Node->OwnerId = WalkState->OwnerId;
}
@@ -1091,7 +1102,7 @@ AcpiDmCommonDescendingOp (
/* Switch/Case conversion */
Status = AcpiDmProcessSwitch (Op);
- return (AE_OK);
+ return (Status);
}
diff --git a/sys/contrib/dev/acpica/common/dmrestag.c b/sys/contrib/dev/acpica/common/dmrestag.c
index efdab2e03ace..82e4656200ac 100644
--- a/sys/contrib/dev/acpica/common/dmrestag.c
+++ b/sys/contrib/dev/acpica/common/dmrestag.c
@@ -833,8 +833,12 @@ AcpiGetTagPathname (
/* Internalize the namepath to AML format */
- AcpiNsInternalizeName (Pathname, &InternalPath);
+ Status = AcpiNsInternalizeName (Pathname, &InternalPath);
ACPI_FREE (Pathname);
+ if (ACPI_FAILURE (Status))
+ {
+ return (NULL);
+ }
/* Update the Op with the symbol */
diff --git a/sys/contrib/dev/acpica/common/dmtables.c b/sys/contrib/dev/acpica/common/dmtables.c
index cdf3a02ab663..69a35d33f68a 100644
--- a/sys/contrib/dev/acpica/common/dmtables.c
+++ b/sys/contrib/dev/acpica/common/dmtables.c
@@ -327,7 +327,7 @@ AdCreateTableHeader (
* makes it easier to rename the disassembled ASL file if needed.
*/
AcpiOsPrintf (
- "DefinitionBlock (\"\", \"%4.4s\", %hu, \"%.6s\", \"%.8s\", 0x%8.8X)\n",
+ "DefinitionBlock (\"\", \"%4.4s\", %u, \"%.6s\", \"%.8s\", 0x%8.8X)\n",
Table->Signature, Table->Revision,
Table->OemId, Table->OemTableId, Table->OemRevision);
}
@@ -443,8 +443,8 @@ AdGetLocalTables (
/* Get the DSDT via table override */
ACPI_MOVE_32_TO_32 (TableHeader.Signature, ACPI_SIG_DSDT);
- AcpiOsTableOverride (&TableHeader, &NewTable);
- if (!NewTable)
+ Status = AcpiOsTableOverride (&TableHeader, &NewTable);
+ if (ACPI_FAILURE (Status) || !NewTable)
{
fprintf (stderr, "Could not obtain DSDT\n");
return (AE_NO_ACPI_TABLES);
@@ -601,7 +601,7 @@ AdParseTable (
fprintf (stderr,
"Parsing Deferred Opcodes (Methods/Buffers/Packages/Regions)\n");
- Status = AcpiDmParseDeferredOps (AcpiGbl_ParseOpRoot);
+ (void) AcpiDmParseDeferredOps (AcpiGbl_ParseOpRoot);
fprintf (stderr, "\n");
/* Process Resource Templates */
diff --git a/sys/contrib/dev/acpica/common/dmtbdump1.c b/sys/contrib/dev/acpica/common/dmtbdump1.c
index fdcd43b0888e..baf68ce8bdd1 100644
--- a/sys/contrib/dev/acpica/common/dmtbdump1.c
+++ b/sys/contrib/dev/acpica/common/dmtbdump1.c
@@ -474,7 +474,6 @@ AcpiDmDumpCsrt (
{
return;
}
- SubSubOffset += InfoLength;
}
/* Point to next sub-subtable */
@@ -1401,7 +1400,6 @@ AcpiDmDumpHmat (
while (Offset < Table->Length)
{
AcpiOsPrintf ("\n");
- SubtableOffset = 0;
/* Dump HMAT structure header */
@@ -1484,6 +1482,11 @@ AcpiDmDumpHmat (
Status = AcpiDmDumpTable (Table->Length, Offset + SubtableOffset,
ACPI_ADD_PTR (ACPI_HMAT_STRUCTURE, HmatStruct, SubtableOffset),
4, AcpiDmTableInfoHmat1a);
+ if (ACPI_FAILURE (Status))
+ {
+ return;
+ }
+
SubtableOffset += 4;
}
@@ -1500,6 +1503,11 @@ AcpiDmDumpHmat (
Status = AcpiDmDumpTable (Table->Length, Offset + SubtableOffset,
ACPI_ADD_PTR (ACPI_HMAT_STRUCTURE, HmatStruct, SubtableOffset),
4, AcpiDmTableInfoHmat1b);
+ if (ACPI_FAILURE (Status))
+ {
+ return;
+ }
+
SubtableOffset += 4;
}
@@ -1519,6 +1527,11 @@ AcpiDmDumpHmat (
Status = AcpiDmDumpTable (Table->Length, Offset + SubtableOffset,
ACPI_ADD_PTR (ACPI_HMAT_STRUCTURE, HmatStruct, SubtableOffset),
2, AcpiDmTableInfoHmat1c);
+ if (ACPI_FAILURE(Status))
+ {
+ return;
+ }
+
SubtableOffset += 2;
}
}
@@ -1542,6 +1555,11 @@ AcpiDmDumpHmat (
Status = AcpiDmDumpTable (Table->Length, Offset + SubtableOffset,
ACPI_ADD_PTR (ACPI_HMAT_STRUCTURE, HmatStruct, SubtableOffset),
2, AcpiDmTableInfoHmat2a);
+ if (ACPI_FAILURE (Status))
+ {
+ return;
+ }
+
SubtableOffset += 2;
}
break;
diff --git a/sys/contrib/dev/acpica/common/dmtbdump2.c b/sys/contrib/dev/acpica/common/dmtbdump2.c
index 2fed7c2edffc..40d535ecef33 100644
--- a/sys/contrib/dev/acpica/common/dmtbdump2.c
+++ b/sys/contrib/dev/acpica/common/dmtbdump2.c
@@ -187,6 +187,7 @@ AcpiDmDumpIort (
ACPI_DMTABLE_INFO *InfoTable;
char *String;
UINT32 i;
+ UINT32 MappingByteLength;
/* Main table */
@@ -314,6 +315,11 @@ AcpiDmDumpIort (
Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset,
ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset),
4, AcpiDmTableInfoIort0a);
+ if (ACPI_FAILURE (Status))
+ {
+ return;
+ }
+
NodeOffset += 4;
}
}
@@ -325,8 +331,10 @@ AcpiDmDumpIort (
if (IortNode->Length > NodeOffset)
{
+ MappingByteLength =
+ IortNode->MappingCount * sizeof (ACPI_IORT_ID_MAPPING);
Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset,
- Table, IortNode->Length - NodeOffset,
+ Table, IortNode->Length - NodeOffset - MappingByteLength,
AcpiDmTableInfoIort1a);
if (ACPI_FAILURE (Status))
{
@@ -410,7 +418,6 @@ NextSubtable:
/* Point to next node subtable */
Offset += IortNode->Length;
- IortNode = ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, IortNode->Length);
}
}
@@ -871,7 +878,7 @@ AcpiDmDumpMcfg (
if (Offset + sizeof (ACPI_MCFG_ALLOCATION) > Table->Length)
{
AcpiOsPrintf ("Warning: there are %u invalid trailing bytes\n",
- sizeof (ACPI_MCFG_ALLOCATION) - (Offset - Table->Length));
+ (UINT32) sizeof (ACPI_MCFG_ALLOCATION) - (Offset - Table->Length));
return;
}
@@ -1211,7 +1218,6 @@ AcpiDmDumpNfit (
/* Has a variable number of 32-bit values at the end */
InfoTable = AcpiDmTableInfoNfit2;
- Interleave = ACPI_CAST_PTR (ACPI_NFIT_INTERLEAVE, Subtable);
FieldOffset = sizeof (ACPI_NFIT_INTERLEAVE);
break;
@@ -1236,7 +1242,6 @@ AcpiDmDumpNfit (
/* Has a variable number of 64-bit addresses at the end */
InfoTable = AcpiDmTableInfoNfit6;
- Hint = ACPI_CAST_PTR (ACPI_NFIT_FLUSH_ADDRESS, Subtable);
FieldOffset = sizeof (ACPI_NFIT_FLUSH_ADDRESS) - sizeof (UINT64);
break;
@@ -1273,6 +1278,7 @@ AcpiDmDumpNfit (
{
case ACPI_NFIT_TYPE_INTERLEAVE:
+ Interleave = ACPI_CAST_PTR (ACPI_NFIT_INTERLEAVE, Subtable);
for (i = 0; i < Interleave->LineCount; i++)
{
Status = AcpiDmDumpTable (Table->Length, Offset + FieldOffset,
@@ -1308,6 +1314,7 @@ AcpiDmDumpNfit (
case ACPI_NFIT_TYPE_FLUSH_ADDRESS:
+ Hint = ACPI_CAST_PTR (ACPI_NFIT_FLUSH_ADDRESS, Subtable);
for (i = 0; i < Hint->HintCount; i++)
{
Status = AcpiDmDumpTable (Table->Length, Offset + FieldOffset,
@@ -1806,6 +1813,11 @@ AcpiDmDumpPptt (
Status = AcpiDmDumpTable (Table->Length, Offset + SubtableOffset,
ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, Subtable, SubtableOffset),
4, AcpiDmTableInfoPptt0a);
+ if (ACPI_FAILURE (Status))
+ {
+ return;
+ }
+
SubtableOffset += 4;
}
break;
@@ -2063,6 +2075,10 @@ AcpiDmDumpSdev (
Status = AcpiDmDumpTable (Table->Length, 0,
ACPI_ADD_PTR (UINT8, Pcie, VendorDataOffset),
VendorDataLength, AcpiDmTableInfoSdev1b);
+ if (ACPI_FAILURE (Status))
+ {
+ return;
+ }
}
break;
diff --git a/sys/contrib/dev/acpica/common/dmtbdump3.c b/sys/contrib/dev/acpica/common/dmtbdump3.c
index ac59021ad20a..10f7252de67b 100644
--- a/sys/contrib/dev/acpica/common/dmtbdump3.c
+++ b/sys/contrib/dev/acpica/common/dmtbdump3.c
@@ -410,7 +410,7 @@ AcpiDmDumpStao (
Namepath = ACPI_ADD_PTR (char, Table, Offset);
StringLength = strlen (Namepath) + 1;
- AcpiDmLineHeader (Offset, StringLength, "Namestring");
+ AcpiDmLineHeader (Offset, StringLength, "Namepath");
AcpiOsPrintf ("\"%s\"\n", Namepath);
/* Point to next namepath */
@@ -526,7 +526,7 @@ AcpiDmDumpTpm2Rev3 (
{
case ACPI_TPM23_ACPI_START_METHOD:
- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
+ (void) AcpiDmDumpTable (Table->Length, Offset, Subtable,
Table->Length - Offset, AcpiDmTableInfoTpm23a);
break;
@@ -591,7 +591,7 @@ AcpiDmDumpTpm2 (
Offset += sizeof (ACPI_TPM2_TRAILER);
AcpiOsPrintf ("\n");
- Status = AcpiDmDumpTable (Table->Length, Offset, ArmSubtable,
+ (void) AcpiDmDumpTable (Table->Length, Offset, ArmSubtable,
Table->Length - Offset, AcpiDmTableInfoTpm211);
break;
diff --git a/sys/contrib/dev/acpica/compiler/aslanalyze.c b/sys/contrib/dev/acpica/compiler/aslanalyze.c
index 16d5284ea5c8..a3e3c5380292 100644
--- a/sys/contrib/dev/acpica/compiler/aslanalyze.c
+++ b/sys/contrib/dev/acpica/compiler/aslanalyze.c
@@ -569,7 +569,7 @@ ApCheckForGpeNameConflict (
/* Need a null-terminated string version of NameSeg */
- ACPI_MOVE_32_TO_32 (Name, &Op->Asl.NameSeg);
+ ACPI_MOVE_32_TO_32 (Name, Op->Asl.NameSeg);
Name[ACPI_NAMESEG_SIZE] = 0;
/*
diff --git a/sys/contrib/dev/acpica/compiler/aslbtypes.c b/sys/contrib/dev/acpica/compiler/aslbtypes.c
index cd6e0d98ab09..0369b66560cc 100644
--- a/sys/contrib/dev/acpica/compiler/aslbtypes.c
+++ b/sys/contrib/dev/acpica/compiler/aslbtypes.c
@@ -474,7 +474,6 @@ AnFormatBtype (
strcat (Buffer, "|");
}
- First = FALSE;
strcat (Buffer, "Resource");
}
}
diff --git a/sys/contrib/dev/acpica/compiler/aslcache.c b/sys/contrib/dev/acpica/compiler/aslcache.c
index 5b04301775bc..fdc6846236e6 100644
--- a/sys/contrib/dev/acpica/compiler/aslcache.c
+++ b/sys/contrib/dev/acpica/compiler/aslcache.c
@@ -421,7 +421,7 @@ UtDeleteLocalCaches (
DbgPrint (ASL_DEBUG_OUTPUT,
"%u ParseOps, Buffer size: %u ops (%u bytes), %u Buffers\n",
AslGbl_ParseOpCount, ASL_PARSEOP_CACHE_SIZE,
- (sizeof (ACPI_PARSE_OBJECT) * ASL_PARSEOP_CACHE_SIZE), BufferCount);
+ ((UINT32) sizeof (ACPI_PARSE_OBJECT) * ASL_PARSEOP_CACHE_SIZE), BufferCount);
/* Reset cache globals */
@@ -445,7 +445,7 @@ UtDeleteLocalCaches (
DbgPrint (ASL_DEBUG_OUTPUT,
"%u Fields, Buffer size: %u fields (%u bytes), %u Buffers\n",
AslGbl_FieldCount, ASL_FIELD_CACHE_SIZE,
- (sizeof (DT_FIELD) * ASL_FIELD_CACHE_SIZE), BufferCount);
+ ((UINT32) sizeof (DT_FIELD) * ASL_FIELD_CACHE_SIZE), BufferCount);
/* Reset cache globals */
@@ -468,7 +468,7 @@ UtDeleteLocalCaches (
DbgPrint (ASL_DEBUG_OUTPUT,
"%u Subtables, Buffer size: %u subtables (%u bytes), %u Buffers\n",
AslGbl_SubtableCount, ASL_SUBTABLE_CACHE_SIZE,
- (sizeof (DT_SUBTABLE) * ASL_SUBTABLE_CACHE_SIZE), BufferCount);
+ ((UINT32) sizeof (DT_SUBTABLE) * ASL_SUBTABLE_CACHE_SIZE), BufferCount);
/* Reset cache globals */
diff --git a/sys/contrib/dev/acpica/compiler/aslcodegen.c b/sys/contrib/dev/acpica/compiler/aslcodegen.c
index 04a1f76b3852..afd9542082ea 100644
--- a/sys/contrib/dev/acpica/compiler/aslcodegen.c
+++ b/sys/contrib/dev/acpica/compiler/aslcodegen.c
@@ -618,8 +618,8 @@ CgWriteTableHeader (
Op->Asl.AmlSubtreeLength +=
strlen (AslGbl_ParseTreeRoot->Asl.Filename) + 3;
- CvDbgPrint (" Length: %lu\n",
- strlen (AslGbl_ParseTreeRoot->Asl.Filename) + 3);
+ CvDbgPrint (" Length: %u\n",
+ (UINT32) strlen (AslGbl_ParseTreeRoot->Asl.Filename) + 3);
if (Op->Asl.CommentList)
{
diff --git a/sys/contrib/dev/acpica/compiler/aslcompile.c b/sys/contrib/dev/acpica/compiler/aslcompile.c
index 54d4687f8028..67d94f30df74 100644
--- a/sys/contrib/dev/acpica/compiler/aslcompile.c
+++ b/sys/contrib/dev/acpica/compiler/aslcompile.c
@@ -853,10 +853,11 @@ CmDumpAllEvents (
*
******************************************************************************/
-void
+int
CmCleanupAndExit (
void)
{
+ int Status = 0;
BOOLEAN DeleteAmlFile = FALSE;
ASL_GLOBAL_FILE_NODE *CurrentFileNode = AslGbl_FilesList;
@@ -915,20 +916,38 @@ CmCleanupAndExit (
UtDisplaySummary (ASL_FILE_STDOUT);
/*
- * We will delete the AML file if there are errors and the
- * force AML output option has not been used.
+ * Delete the AML file if there are errors and the force AML output option
+ * (-f) has not been used.
+ *
+ * Return -1 as a status of the compiler if no AML files are generated. If
+ * the AML file is generated in the presence of errors, return 0. In the
+ * latter case, the errors were ignored by the user so the compilation is
+ * considered successful.
*/
- if (AslGbl_ParserErrorDetected || AslGbl_PreprocessOnly || ((AslGbl_ExceptionCount[ASL_ERROR] > 0) &&
+ if (AslGbl_ParserErrorDetected || AslGbl_PreprocessOnly ||
+ ((AslGbl_ExceptionCount[ASL_ERROR] > 0) &&
(!AslGbl_IgnoreErrors) &&
AslGbl_Files[ASL_FILE_AML_OUTPUT].Handle))
{
DeleteAmlFile = TRUE;
+ Status = -1;
}
/* Close all open files */
while (CurrentFileNode)
{
+ /*
+ * Set the program return status based on file errors. If there are any
+ * errors and during compilation, the command is not considered
+ * successful.
+ */
+ if (Status != -1 && !AslGbl_IgnoreErrors &&
+ CurrentFileNode->ParserErrorDetected)
+ {
+ Status = -1;
+ }
+
switch (FlSwitchFileSet (CurrentFileNode->Files[ASL_FILE_INPUT].Filename))
{
case SWITCH_TO_SAME_FILE:
@@ -952,6 +971,8 @@ CmCleanupAndExit (
{
UtDeleteLocalCaches ();
}
+
+ return (Status);
}
diff --git a/sys/contrib/dev/acpica/compiler/aslcompiler.h b/sys/contrib/dev/acpica/compiler/aslcompiler.h
index 818b1cb2245d..c36103bd85b5 100644
--- a/sys/contrib/dev/acpica/compiler/aslcompiler.h
+++ b/sys/contrib/dev/acpica/compiler/aslcompiler.h
@@ -266,7 +266,7 @@ void
CmDoOutputFiles (
void);
-void
+int
CmCleanupAndExit (
void);
@@ -1052,6 +1052,7 @@ void
FlCloseFile (
UINT32 FileId);
+ACPI_PRINTF_LIKE (2)
void
FlPrintFile (
UINT32 FileId,
@@ -1195,6 +1196,7 @@ OtXrefWalkPart1 (
/*
* aslutils - common compiler utilities
*/
+ACPI_PRINTF_LIKE(2)
void
DbgPrint (
UINT32 Type,
@@ -1288,6 +1290,10 @@ UtInternalizeName (
char *ExternalName,
char **ConvertedName);
+BOOLEAN
+UtNameContainsAllPrefix (
+ ACPI_PARSE_OBJECT *Op);
+
void
UtAttachNamepathToOwner (
ACPI_PARSE_OBJECT *Op,
@@ -1303,6 +1309,15 @@ UINT64
UtDoConstant (
char *String);
+char *
+AcpiUtStrdup (
+ char *String);
+
+char *
+AcpiUtStrcat (
+ char *String1,
+ char *String2);
+
/*
* asluuid - UUID support
@@ -1604,6 +1619,7 @@ DtCreateTemplates (
/*
* ASL/ASL+ converter debug
*/
+ACPI_PRINTF_LIKE (1)
void
CvDbgPrint (
char *Fmt,
diff --git a/sys/contrib/dev/acpica/compiler/asldebug.c b/sys/contrib/dev/acpica/compiler/asldebug.c
index 2010396971e6..8fb291886e10 100644
--- a/sys/contrib/dev/acpica/compiler/asldebug.c
+++ b/sys/contrib/dev/acpica/compiler/asldebug.c
@@ -239,7 +239,7 @@ UtDumpIntegerOp (
case 8: /* Dword */
DbgPrint (ASL_TREE_OUTPUT,
- "%*.*X", IntegerLength, IntegerLength, Op->Asl.Value.Integer);
+ "%*.*X", IntegerLength, IntegerLength, (UINT32) Op->Asl.Value.Integer);
break;
case 16: /* Qword and Integer */
diff --git a/sys/contrib/dev/acpica/compiler/asldefine.h b/sys/contrib/dev/acpica/compiler/asldefine.h
index c511187529ed..0ba08962047a 100644
--- a/sys/contrib/dev/acpica/compiler/asldefine.h
+++ b/sys/contrib/dev/acpica/compiler/asldefine.h
@@ -290,7 +290,7 @@
#define ASL_PARSE_TREE_DEBUG2 \
" %08X %04X %04X %01X %04X %04X %05X %05X "\
- "%08X %08X %08X %08X %08X %08X %04X %02d %5d %5d %5d %5d"
+ "%8p %8p %8p %8p %08X %08X %04X %02d %5d %5d %5d %5d"
/*
* Macros for ASL/ASL+ converter
diff --git a/sys/contrib/dev/acpica/compiler/aslglobal.h b/sys/contrib/dev/acpica/compiler/aslglobal.h
index 740f7f34ae51..9020c14d5d54 100644
--- a/sys/contrib/dev/acpica/compiler/aslglobal.h
+++ b/sys/contrib/dev/acpica/compiler/aslglobal.h
@@ -244,7 +244,6 @@ extern const char *AslGbl_SpecialNamedObjects[MAX_SPECIAL_NAME
#endif
-
/*
* Parser and other externals
*/
@@ -254,6 +253,7 @@ extern int DtParserdebug;
extern int PrParserdebug;
extern const ASL_MAPPING_ENTRY AslKeywordMapping[];
extern char *AslCompilertext;
+extern char *DtCompilerParsertext;
/*
* Older versions of Bison won't emit this external in the generated header.
diff --git a/sys/contrib/dev/acpica/compiler/aslhelp.c b/sys/contrib/dev/acpica/compiler/aslhelp.c
index 88eecbb0a36c..93fef64c2021 100644
--- a/sys/contrib/dev/acpica/compiler/aslhelp.c
+++ b/sys/contrib/dev/acpica/compiler/aslhelp.c
@@ -246,6 +246,7 @@ Usage (
ACPI_OPTION ("", " (Original comments are passed through to ASL+ file)");
printf ("\nData Table Compiler:\n");
+ ACPI_OPTION ("-tp", "Compile tables with flex/bison prototype");
ACPI_OPTION ("-G", "Compile custom table that contains generic operators");
ACPI_OPTION ("-T <sig list>|ALL", "Create ACPI table template/example files");
ACPI_OPTION ("-T <count>", "Emit DSDT and <count> SSDTs to same file");
diff --git a/sys/contrib/dev/acpica/compiler/aslkeywords.y b/sys/contrib/dev/acpica/compiler/aslkeywords.y
index a19b6425be0b..a505dc029468 100644
--- a/sys/contrib/dev/acpica/compiler/aslkeywords.y
+++ b/sys/contrib/dev/acpica/compiler/aslkeywords.y
@@ -202,7 +202,7 @@ AddressKeyword
;
AddressSpaceKeyword
- : ByteConst {$$ = UtCheckIntegerRange ($1, 0x0A, 0xFF);}
+ : ByteConst {$$ = UtCheckIntegerRange ($1, ACPI_NUM_PREDEFINED_REGIONS, 0xFF);}
| RegionSpaceKeyword {}
;
diff --git a/sys/contrib/dev/acpica/compiler/asllength.c b/sys/contrib/dev/acpica/compiler/asllength.c
index 29e9e1af9130..0abbd16ff976 100644
--- a/sys/contrib/dev/acpica/compiler/asllength.c
+++ b/sys/contrib/dev/acpica/compiler/asllength.c
@@ -479,12 +479,13 @@ CgGenerateAmlLengths (
Op->Asl.AmlLength = strlen (Buffer);
/*
- * Check for single backslash reference to root,
- * make it a null terminated string in the AML
+ * Check for single backslash reference to root or reference to a name
+ * consisting of only prefix (^) characters. Make it a null terminated
+ * string in the AML.
*/
- if (Op->Asl.AmlLength == 1)
+ if (Op->Asl.AmlLength == 1 || UtNameContainsAllPrefix(Op))
{
- Op->Asl.AmlLength = 2;
+ Op->Asl.AmlLength++;
}
break;
diff --git a/sys/contrib/dev/acpica/compiler/asllistsup.c b/sys/contrib/dev/acpica/compiler/asllistsup.c
index 00265602028e..e510d1defabb 100644
--- a/sys/contrib/dev/acpica/compiler/asllistsup.c
+++ b/sys/contrib/dev/acpica/compiler/asllistsup.c
@@ -241,7 +241,7 @@ LsDumpAsciiInComment (
{
/* Insert a space to break the sequence */
- FlPrintFile (FileId, ".", BufChar);
+ FlPrintFile (FileId, " ");
}
FlPrintFile (FileId, "%c", BufChar);
diff --git a/sys/contrib/dev/acpica/compiler/aslload.c b/sys/contrib/dev/acpica/compiler/aslload.c
index 19a4ce1edb7c..de78434aeaca 100644
--- a/sys/contrib/dev/acpica/compiler/aslload.c
+++ b/sys/contrib/dev/acpica/compiler/aslload.c
@@ -275,7 +275,6 @@ LdLoadFieldElements (
ACPI_STATUS Status;
-
SourceRegion = UtGetArg (Op, 0);
if (SourceRegion)
{
@@ -527,13 +526,12 @@ LdNamespace1Begin (
case AML_INT_CONNECTION_OP:
-
if (Op->Asl.Child->Asl.AmlOpcode != AML_INT_NAMEPATH_OP)
{
break;
}
- Arg = Op->Asl.Child;
+ Arg = Op->Asl.Child;
Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Asl.ExternalName,
ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT,
WalkState, &Node);
@@ -542,15 +540,6 @@ LdNamespace1Begin (
break;
}
- if (Node->Type == ACPI_TYPE_BUFFER)
- {
- Arg->Asl.Node = Node;
-
- Arg = Node->Op->Asl.Child; /* Get namepath */
- Arg = Arg->Asl.Next; /* Get actual buffer */
- Arg = Arg->Asl.Child; /* Buffer length */
- Arg = Arg->Asl.Next; /* RAW_DATA buffer */
- }
break;
default:
@@ -577,7 +566,6 @@ LdNamespace1Begin (
* These opcodes are guaranteed to have a parent.
* Examine the parent opcode.
*/
- Status = AE_OK;
ParentOp = Op->Asl.Parent;
OpInfo = AcpiPsGetOpcodeInfo (ParentOp->Asl.AmlOpcode);
@@ -1031,7 +1019,8 @@ FinishNode:
* DESCRIPTION: Check if certain named objects are declared in the incorrect
* scope. Special named objects are listed in
* AslGbl_SpecialNamedObjects and can only be declared at the root
- * scope.
+ * scope. _UID inside of a processor declaration must not be a
+ * string.
*
******************************************************************************/
@@ -1052,6 +1041,13 @@ LdCheckSpecialNames (
return;
}
}
+
+ if (ACPI_COMPARE_NAMESEG (Node->Name.Ascii, "_UID") &&
+ Node->Parent->Type == ACPI_TYPE_PROCESSOR &&
+ Node->Type == ACPI_TYPE_STRING)
+ {
+ AslError (ASL_ERROR, ASL_MSG_INVALID_PROCESSOR_UID , Op, "found a string");
+ }
}
diff --git a/sys/contrib/dev/acpica/compiler/aslmain.c b/sys/contrib/dev/acpica/compiler/aslmain.c
index e42453673657..fc911a1764af 100644
--- a/sys/contrib/dev/acpica/compiler/aslmain.c
+++ b/sys/contrib/dev/acpica/compiler/aslmain.c
@@ -282,7 +282,6 @@ main (
if (ACPI_FAILURE (Status))
{
ReturnStatus = -1;
- goto CleanupAndExit;
}
Index2++;
@@ -290,9 +289,10 @@ main (
/*
* At this point, compilation of a data table or disassembly is complete.
+ * However, if there is a parse tree, perform compiler analysis and
+ * generate AML.
*/
- if (AslGbl_PreprocessOnly || AcpiGbl_DisasmFlag ||
- AslGbl_FileType == ASL_INPUT_TYPE_ASCII_DATA)
+ if (AslGbl_PreprocessOnly || AcpiGbl_DisasmFlag || !AslGbl_ParseTreeRoot)
{
goto CleanupAndExit;
}
@@ -338,7 +338,6 @@ main (
}
-
CleanupAndExit:
UtFreeLineBuffers ();
@@ -350,7 +349,7 @@ CleanupAndExit:
if (!AcpiGbl_DisasmFlag)
{
- CmCleanupAndExit ();
+ ReturnStatus = CmCleanupAndExit ();
}
@@ -400,18 +399,21 @@ AslSignalHandler (
* Close all open files
* Note: the .pre file is the same as the input source file
*/
- AslGbl_Files[ASL_FILE_PREPROCESSOR].Handle = NULL;
-
- for (i = ASL_FILE_INPUT; i < ASL_MAX_FILE_TYPE; i++)
+ if (AslGbl_Files)
{
- FlCloseFile (i);
- }
+ AslGbl_Files[ASL_FILE_PREPROCESSOR].Handle = NULL;
- /* Delete any output files */
+ for (i = ASL_FILE_INPUT; i < ASL_MAX_FILE_TYPE; i++)
+ {
+ FlCloseFile (i);
+ }
- for (i = ASL_FILE_AML_OUTPUT; i < ASL_MAX_FILE_TYPE; i++)
- {
- FlDeleteFile (i);
+ /* Delete any output files */
+
+ for (i = ASL_FILE_AML_OUTPUT; i < ASL_MAX_FILE_TYPE; i++)
+ {
+ FlDeleteFile (i);
+ }
}
printf (ASL_PREFIX "Terminating\n");
diff --git a/sys/contrib/dev/acpica/compiler/aslmessages.c b/sys/contrib/dev/acpica/compiler/aslmessages.c
index 4a7e3449dffa..049c2dbdb747 100644
--- a/sys/contrib/dev/acpica/compiler/aslmessages.c
+++ b/sys/contrib/dev/acpica/compiler/aslmessages.c
@@ -366,7 +366,9 @@ const char *AslCompilerMsgs [] =
/* ASL_MSG_TEMPORARY_OBJECT */ "Object is created temporarily in another method and cannot be accessed",
/* ASL_MSG_UNDEFINED_EXTERNAL */ "Named object was declared external but the actual definition does not exist",
/* ASL_MSG_BUFFER_FIELD_OVERFLOW */ "Buffer field extends beyond end of target buffer",
-/* ASL_MSG_INVALID_SPECIAL_NAME */ "declaration of this named object outside root scope is illegal"
+/* ASL_MSG_INVALID_SPECIAL_NAME */ "declaration of this named object outside root scope is illegal",
+/* ASL_MSG_INVALID_PROCESSOR_UID */ "_UID inside processor declaration must be an integer",
+/* ASL_MSG_LEGACY_PROCESSOR_OP */ "Legacy Processor() keyword detected. Use Device() keyword instead."
};
/* Table compiler */
@@ -385,7 +387,10 @@ const char *AslTableCompilerMsgs [] =
/* ASL_MSG_UNKNOWN_LABEL */ "Label is undefined",
/* ASL_MSG_UNKNOWN_SUBTABLE */ "Unknown subtable type",
/* ASL_MSG_UNKNOWN_TABLE */ "Unknown ACPI table signature",
-/* ASL_MSG_ZERO_VALUE */ "Value must be non-zero"
+/* ASL_MSG_ZERO_VALUE */ "Value must be non-zero",
+/* ASL_MSG_INVALID_LABEL */ "Invalid field label detected",
+/* ASL_MSG_BUFFER_LIST */ "Invalid buffer initializer list",
+/* ASL_MSG_ENTRY_LIST */ "Invalid entry initializer list"
};
/* Preprocessor */
diff --git a/sys/contrib/dev/acpica/compiler/aslmessages.h b/sys/contrib/dev/acpica/compiler/aslmessages.h
index d998f0fe8eda..47e5bf4314d8 100644
--- a/sys/contrib/dev/acpica/compiler/aslmessages.h
+++ b/sys/contrib/dev/acpica/compiler/aslmessages.h
@@ -369,6 +369,8 @@ typedef enum
ASL_MSG_UNDEFINED_EXTERNAL,
ASL_MSG_BUFFER_FIELD_OVERFLOW,
ASL_MSG_INVALID_SPECIAL_NAME,
+ ASL_MSG_INVALID_PROCESSOR_UID,
+ ASL_MSG_LEGACY_PROCESSOR_OP,
/* These messages are used by the Data Table compiler only */
@@ -385,6 +387,9 @@ typedef enum
ASL_MSG_UNKNOWN_SUBTABLE,
ASL_MSG_UNKNOWN_TABLE,
ASL_MSG_ZERO_VALUE,
+ ASL_MSG_INVALID_LABEL,
+ ASL_MSG_BUFFER_LIST,
+ ASL_MSG_ENTRY_LIST,
/* These messages are used by the Preprocessor only */
diff --git a/sys/contrib/dev/acpica/compiler/aslmethod.c b/sys/contrib/dev/acpica/compiler/aslmethod.c
index 8af10d148814..f00dae7f8490 100644
--- a/sys/contrib/dev/acpica/compiler/aslmethod.c
+++ b/sys/contrib/dev/acpica/compiler/aslmethod.c
@@ -199,6 +199,8 @@ MtMethodAnalysisWalkBegin (
ACPI_PARSE_OBJECT *NextType;
ACPI_PARSE_OBJECT *NextParamType;
UINT8 ActualArgs = 0;
+ BOOLEAN HidExists;
+ BOOLEAN AdrExists;
/* Build cross-reference output file if requested */
@@ -535,12 +537,26 @@ MtMethodAnalysisWalkBegin (
case PARSEOP_DEVICE:
- if (!ApFindNameInDeviceTree (METHOD_NAME__HID, Op) &&
- !ApFindNameInDeviceTree (METHOD_NAME__ADR, Op))
+ /* Check usage of _HID and _ADR objects */
+
+ HidExists = ApFindNameInDeviceTree (METHOD_NAME__HID, Op);
+ AdrExists = ApFindNameInDeviceTree (METHOD_NAME__ADR, Op);
+
+ if (!HidExists && !AdrExists)
{
AslError (ASL_WARNING, ASL_MSG_MISSING_DEPENDENCY, Op,
"Device object requires a _HID or _ADR in same scope");
}
+ else if (HidExists && AdrExists)
+ {
+ /*
+ * According to the ACPI spec, "A device object must contain
+ * either an _HID object or an _ADR object, but should not contain
+ * both".
+ */
+ AslError (ASL_WARNING, ASL_MSG_MULTIPLE_TYPES, Op,
+ "Device object requires either a _HID or _ADR, but not both");
+ }
break;
case PARSEOP_EVENT:
diff --git a/sys/contrib/dev/acpica/compiler/aslnamesp.c b/sys/contrib/dev/acpica/compiler/aslnamesp.c
index 11f4654a26b1..3ffac5d28ee7 100644
--- a/sys/contrib/dev/acpica/compiler/aslnamesp.c
+++ b/sys/contrib/dev/acpica/compiler/aslnamesp.c
@@ -234,6 +234,10 @@ NsDisplayNamespace (
Status = AcpiNsWalkNamespace (ACPI_TYPE_ANY, ACPI_ROOT_OBJECT,
ACPI_UINT32_MAX, FALSE, NsDoOneNamespaceObject, NULL,
NULL, NULL);
+ if (ACPI_FAILURE (Status))
+ {
+ return (Status);
+ }
/* Print the full pathname for each namespace node */
@@ -276,7 +280,7 @@ NsDoOneNamespaceObject (
FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, "%5u [%u] %*s %4.4s - %s",
AslGbl_NumNamespaceObjects, Level, (Level * 3), " ",
- &Node->Name, AcpiUtGetTypeName (Node->Type));
+ &Node->Name.Ascii[0], AcpiUtGetTypeName (Node->Type));
Op = Node->Op;
ObjDesc = ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, Node->Object);
@@ -429,7 +433,7 @@ NsDoOneNamespaceObject (
{
FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT,
" [Initial Length 0x%.2X elements]",
- Op->Asl.Value.Integer);
+ (UINT32) Op->Asl.Value.Integer);
}
break;
@@ -452,7 +456,7 @@ NsDoOneNamespaceObject (
{
FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT,
" [Initial Length 0x%.2X bytes]",
- Op->Asl.Value.Integer);
+ (UINT32) Op->Asl.Value.Integer);
}
break;
@@ -531,7 +535,8 @@ NsDoOnePathname (
return (Status);
}
- FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, "%s\n", TargetPath.Pointer);
+ FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, "%s\n",
+ ACPI_CAST_PTR (char, TargetPath.Pointer));
ACPI_FREE (TargetPath.Pointer);
return (AE_OK);
}
diff --git a/sys/contrib/dev/acpica/compiler/asloptions.c b/sys/contrib/dev/acpica/compiler/asloptions.c
index f69b02d501d6..276b96e17075 100644
--- a/sys/contrib/dev/acpica/compiler/asloptions.c
+++ b/sys/contrib/dev/acpica/compiler/asloptions.c
@@ -837,6 +837,11 @@ AslDoOptions (
AslGbl_HexOutputFlag = HEX_OUTPUT_C;
break;
+ case 'p': /* data table flex/bison prototype */
+
+ AslGbl_DtLexBisonPrototype = TRUE;
+ break;
+
case 's':
AslGbl_HexOutputFlag = HEX_OUTPUT_ASL;
diff --git a/sys/contrib/dev/acpica/compiler/aslparseop.c b/sys/contrib/dev/acpica/compiler/aslparseop.c
index d8be74fe0f1f..825112a6189f 100644
--- a/sys/contrib/dev/acpica/compiler/aslparseop.c
+++ b/sys/contrib/dev/acpica/compiler/aslparseop.c
@@ -403,22 +403,22 @@ TrCreateValuedLeafOp (
{
case PARSEOP_STRING_LITERAL:
- DbgPrint (ASL_PARSE_OUTPUT, "STRING->%s", Value);
+ DbgPrint (ASL_PARSE_OUTPUT, "STRING->%s", Op->Asl.Value.String);
break;
case PARSEOP_NAMESEG:
- DbgPrint (ASL_PARSE_OUTPUT, "NAMESEG->%s", Value);
+ DbgPrint (ASL_PARSE_OUTPUT, "NAMESEG->%s", Op->Asl.Value.String);
break;
case PARSEOP_NAMESTRING:
- DbgPrint (ASL_PARSE_OUTPUT, "NAMESTRING->%s", Value);
+ DbgPrint (ASL_PARSE_OUTPUT, "NAMESTRING->%s", Op->Asl.Value.String);
break;
case PARSEOP_EISAID:
- DbgPrint (ASL_PARSE_OUTPUT, "EISAID->%s", Value);
+ DbgPrint (ASL_PARSE_OUTPUT, "EISAID->%s", Op->Asl.Value.String);
break;
case PARSEOP_METHOD:
@@ -693,7 +693,8 @@ TrCreateConstantLeafOp (
time_t CurrentTime;
char *StaticTimeString;
char *TimeString;
- char *Filename;
+ char *Filename = NULL;
+ ACPI_STATUS Status;
switch (ParseOpcode)
@@ -727,7 +728,12 @@ TrCreateConstantLeafOp (
/* Get the simple filename from the full path */
- FlSplitInputPathname (Op->Asl.Filename, NULL, &Filename);
+ Status = FlSplitInputPathname (Op->Asl.Filename, NULL, &Filename);
+ if (ACPI_FAILURE (Status))
+ {
+ return (NULL);
+ }
+
Op->Asl.Value.String = Filename;
break;
diff --git a/sys/contrib/dev/acpica/compiler/aslprepkg.c b/sys/contrib/dev/acpica/compiler/aslprepkg.c
index d552d7f32192..a0bd5dc62421 100644
--- a/sys/contrib/dev/acpica/compiler/aslprepkg.c
+++ b/sys/contrib/dev/acpica/compiler/aslprepkg.c
@@ -458,7 +458,7 @@ ApCheckPackage (
for (i = 0; i < Package->RetInfo4.Count1; ++i)
{
- Status = ApCheckObjectType (Predefined->Info.Name, Op,
+ ApCheckObjectType (Predefined->Info.Name, Op,
Package->RetInfo4.ObjectType1, i);
Op = Op->Asl.Next;
}
diff --git a/sys/contrib/dev/acpica/compiler/aslresource.c b/sys/contrib/dev/acpica/compiler/aslresource.c
index f130cf524c7b..57accd89b423 100644
--- a/sys/contrib/dev/acpica/compiler/aslresource.c
+++ b/sys/contrib/dev/acpica/compiler/aslresource.c
@@ -1226,7 +1226,7 @@ RsDoResourceTemplate (
BufferOp->Asl.AmlOpcode = AML_RAW_DATA_CHAIN;
BufferOp->Asl.AmlOpcodeLength = 0;
BufferOp->Asl.AmlLength = CurrentByteOffset;
- BufferOp->Asl.Value.Buffer = (UINT8 *) HeadRnode.Next;
+ BufferOp->Asl.Value.Buffer = ACPI_CAST_PTR (UINT8, HeadRnode.Next);
BufferOp->Asl.CompileFlags |= OP_IS_RESOURCE_DATA;
UtSetParseOpName (BufferOp);
diff --git a/sys/contrib/dev/acpica/compiler/aslrestype2.c b/sys/contrib/dev/acpica/compiler/aslrestype2.c
index dd69c8d05728..b96e6fbfb42e 100644
--- a/sys/contrib/dev/acpica/compiler/aslrestype2.c
+++ b/sys/contrib/dev/acpica/compiler/aslrestype2.c
@@ -487,10 +487,7 @@ RsDoInterruptDescriptor (
if (StringLength && ResSourceString)
{
-
strcpy ((char *) Rover, (char *) ResSourceString);
- Rover = ACPI_ADD_PTR (
- AML_RESOURCE, &(Rover->ByteItem), StringLength);
Descriptor->ExtendedIrq.ResourceLength = (UINT16)
(Descriptor->ExtendedIrq.ResourceLength + StringLength);
diff --git a/sys/contrib/dev/acpica/compiler/aslrestype2s.c b/sys/contrib/dev/acpica/compiler/aslrestype2s.c
index 1fec4049656c..88b92e8d3676 100644
--- a/sys/contrib/dev/acpica/compiler/aslrestype2s.c
+++ b/sys/contrib/dev/acpica/compiler/aslrestype2s.c
@@ -674,7 +674,6 @@ RsDoGpioIoDescriptor (
ResSourceLength = RsGetStringDataLength (InitializerOp);
VendorLength = RsGetBufferDataLength (InitializerOp);
InterruptLength = RsGetInterruptDataLength (InitializerOp, 10);
- PinList = InterruptList;
DescriptorSize = ACPI_AML_SIZE_LARGE (AML_RESOURCE_GPIO) +
ResSourceLength + VendorLength + InterruptLength;
diff --git a/sys/contrib/dev/acpica/compiler/aslstartup.c b/sys/contrib/dev/acpica/compiler/aslstartup.c
index 7b3cb9dccfe2..9f11e0828690 100644
--- a/sys/contrib/dev/acpica/compiler/aslstartup.c
+++ b/sys/contrib/dev/acpica/compiler/aslstartup.c
@@ -467,6 +467,7 @@ AslDoOneFile (
/* Determine input file type */
AslGbl_FileType = AslDetectSourceFileType (&AslGbl_Files[ASL_FILE_INPUT]);
+ FileNode->FileType = AslGbl_FileType;
if (AslGbl_FileType == ASL_INPUT_TYPE_BINARY)
{
return (AE_ERROR);
diff --git a/sys/contrib/dev/acpica/compiler/asltransform.c b/sys/contrib/dev/acpica/compiler/asltransform.c
index 5401fc3dcd93..5619d32ec093 100644
--- a/sys/contrib/dev/acpica/compiler/asltransform.c
+++ b/sys/contrib/dev/acpica/compiler/asltransform.c
@@ -507,6 +507,12 @@ TrTransformSubtree (
}
break;
+ case PARSEOP_PROCESSOR:
+
+ AslError (ASL_WARNING, ASL_MSG_LEGACY_PROCESSOR_OP, Op, Op->Asl.ExternalName);
+
+ break;
+
default:
/* Nothing to do here for other opcodes */
diff --git a/sys/contrib/dev/acpica/compiler/asltypes.h b/sys/contrib/dev/acpica/compiler/asltypes.h
index 8a6a07505181..2df31eab5583 100644
--- a/sys/contrib/dev/acpica/compiler/asltypes.h
+++ b/sys/contrib/dev/acpica/compiler/asltypes.h
@@ -505,9 +505,12 @@ typedef struct asl_files_node
UINT32 TotalLineCount;
UINT32 OriginalInputFileSize;
UINT32 TotalKeywords;
+ UINT32 TotalFields;
+ UINT32 OutputByteLength;
UINT32 TotalNamedObjects;
UINT32 TotalExecutableOpcodes;
BOOLEAN ParserErrorDetected;
+ UINT8 FileType;
} ASL_GLOBAL_FILE_NODE;
diff --git a/sys/contrib/dev/acpica/compiler/aslutils.c b/sys/contrib/dev/acpica/compiler/aslutils.c
index fb1b6f637c71..063d96e50824 100644
--- a/sys/contrib/dev/acpica/compiler/aslutils.c
+++ b/sys/contrib/dev/acpica/compiler/aslutils.c
@@ -223,6 +223,7 @@ UtQueryForOverwrite (
char *Pathname)
{
struct stat StatInfo;
+ int InChar;
if (!stat (Pathname, &StatInfo))
@@ -230,7 +231,13 @@ UtQueryForOverwrite (
fprintf (stderr, "Target file \"%s\" already exists, overwrite? [y|n] ",
Pathname);
- if (getchar () != 'y')
+ InChar = fgetc (stdin);
+ if (InChar == '\n')
+ {
+ InChar = fgetc (stdin);
+ }
+
+ if ((InChar != 'y') && (InChar != 'Y'))
{
return (FALSE);
}
@@ -559,58 +566,54 @@ UtDisplayOneSummary (
/* Summary of main input and output files */
- if (AslGbl_FileType == ASL_INPUT_TYPE_ASCII_DATA)
+ FileNode = FlGetCurrentFileNode ();
+ if (!FileNode)
+ {
+ fprintf (stderr, "Summary could not be generated");
+ return;
+ }
+
+ if (FileNode->ParserErrorDetected)
+ {
+ FlPrintFile (FileId,
+ "%-14s %s - Compilation aborted due to parser-detected syntax error(s)\n",
+ "Input file:", AslGbl_Files[ASL_FILE_INPUT].Filename);
+ }
+ else if (FileNode->FileType == ASL_INPUT_TYPE_ASCII_DATA)
{
FlPrintFile (FileId,
- "%-14s %s - %u lines, %u bytes, %u fields\n",
+ "%-14s %s - %7u bytes %6u fields %8u source lines\n",
"Table Input:",
- AslGbl_Files[ASL_FILE_INPUT].Filename, AslGbl_CurrentLineNumber,
- AslGbl_InputByteCount, AslGbl_InputFieldCount);
+ AslGbl_Files[ASL_FILE_INPUT].Filename,
+ FileNode->OriginalInputFileSize, FileNode->TotalFields,
+ FileNode->TotalLineCount);
- if ((AslGbl_ExceptionCount[ASL_ERROR] == 0) || (AslGbl_IgnoreErrors))
- {
- FlPrintFile (FileId,
- "%-14s %s - %u bytes\n",
- "Binary Output:",
- AslGbl_Files[ASL_FILE_AML_OUTPUT].Filename, AslGbl_TableLength);
- }
+ FlPrintFile (FileId,
+ "%-14s %s - %7u bytes\n",
+ "Binary Output:",
+ AslGbl_Files[ASL_FILE_AML_OUTPUT].Filename, FileNode->OutputByteLength);
}
- else
+ else if (FileNode->FileType == ASL_INPUT_TYPE_ASCII_ASL)
{
- FileNode = FlGetCurrentFileNode ();
- if (!FileNode)
- {
- fprintf (stderr, "Summary could not be generated");
- return;
- }
- if (FileNode->ParserErrorDetected)
- {
- FlPrintFile (FileId,
- "%-14s %s - Compilation aborted due to parser-detected syntax error(s)\n",
- "ASL Input:", AslGbl_Files[ASL_FILE_INPUT].Filename);
- }
- else
+ FlPrintFile (FileId,
+ "%-14s %s - %7u bytes %6u keywords %6u source lines\n",
+ "ASL Input:",
+ AslGbl_Files[ASL_FILE_INPUT].Filename,
+ FileNode->OriginalInputFileSize,
+ FileNode->TotalKeywords,
+ FileNode->TotalLineCount);
+
+ /* AML summary */
+
+ if (DisplayAMLSummary)
{
FlPrintFile (FileId,
- "%-14s %s - %7u bytes %6u keywords %6u source lines\n",
- "ASL Input:",
- AslGbl_Files[ASL_FILE_INPUT].Filename,
- FileNode->OriginalInputFileSize,
- FileNode->TotalKeywords,
- FileNode->TotalLineCount);
-
- /* AML summary */
-
- if (DisplayAMLSummary)
- {
- FlPrintFile (FileId,
- "%-14s %s - %7u bytes %6u opcodes %6u named objects\n",
- "AML Output:",
- AslGbl_Files[ASL_FILE_AML_OUTPUT].Filename,
- FlGetFileSize (ASL_FILE_AML_OUTPUT),
- FileNode->TotalExecutableOpcodes,
- FileNode->TotalNamedObjects);
- }
+ "%-14s %s - %7u bytes %6u opcodes %6u named objects\n",
+ "AML Output:",
+ AslGbl_Files[ASL_FILE_AML_OUTPUT].Filename,
+ FlGetFileSize (ASL_FILE_AML_OUTPUT),
+ FileNode->TotalExecutableOpcodes,
+ FileNode->TotalNamedObjects);
}
}
@@ -994,6 +997,37 @@ UtAttachNamepathToOwner (
/*******************************************************************************
*
+ * FUNCTION: UtNameContainsAllPrefix
+ *
+ * PARAMETERS: Op - Op containing NameString
+ *
+ * RETURN: NameString consists of all ^ characters
+ *
+ * DESCRIPTION: Determine if this Op contains a name segment that consists of
+ * all '^' characters.
+ *
+ ******************************************************************************/
+
+BOOLEAN
+UtNameContainsAllPrefix (
+ ACPI_PARSE_OBJECT *Op)
+{
+ UINT32 Length = Op->Asl.AmlLength;
+ UINT32 i;
+
+ for (i = 0; i < Length; i++)
+ {
+ if (Op->Asl.Value.String[i] != '^')
+ {
+ return (FALSE);
+ }
+ }
+
+ return (TRUE);
+}
+
+/*******************************************************************************
+ *
* FUNCTION: UtDoConstant
*
* PARAMETERS: String - Hex/Decimal/Octal
@@ -1026,3 +1060,56 @@ UtDoConstant (
return (ConvertedInteger);
}
+
+
+/******************************************************************************
+ *
+ * FUNCTION: AcpiUtStrdup
+ *
+ * PARAMETERS: String1 - string to duplicate
+ *
+ * RETURN: int that signifies string relationship. Zero means strings
+ * are equal.
+ *
+ * DESCRIPTION: Duplicate the string using UtCacheAlloc to avoid manual memory
+ * reclamation.
+ *
+ ******************************************************************************/
+
+char *
+AcpiUtStrdup (
+ char *String)
+{
+ char *NewString = (char *) UtLocalCalloc (strlen (String) + 1);
+
+
+ strcpy (NewString, String);
+ return (NewString);
+}
+
+
+/******************************************************************************
+ *
+ * FUNCTION: AcpiUtStrcat
+ *
+ * PARAMETERS: String1
+ * String2
+ *
+ * RETURN: New string with String1 concatenated with String2
+ *
+ * DESCRIPTION: Concatenate string1 and string2
+ *
+ ******************************************************************************/
+
+char *
+AcpiUtStrcat (
+ char *String1,
+ char *String2)
+{
+ UINT32 String1Length = strlen (String1);
+ char *NewString = (char *) UtLocalCalloc (strlen (String1) + strlen (String2) + 1);
+
+ strcpy (NewString, String1);
+ strcpy (NewString + String1Length, String2);
+ return (NewString);
+}
diff --git a/sys/contrib/dev/acpica/compiler/aslxrefout.c b/sys/contrib/dev/acpica/compiler/aslxrefout.c
index 453812c13080..1b2d570dba1c 100644
--- a/sys/contrib/dev/acpica/compiler/aslxrefout.c
+++ b/sys/contrib/dev/acpica/compiler/aslxrefout.c
@@ -799,7 +799,7 @@ OtXrefWalkPart3 (
else
{
FlPrintFile (ASL_FILE_XREF_OUTPUT,
- " %u references to this object in this module\n",
+ " %u references to this object in this module [%s]\n",
XrefInfo->ThisObjectReferences, ParentPath);
}
diff --git a/sys/contrib/dev/acpica/compiler/cvdisasm.c b/sys/contrib/dev/acpica/compiler/cvdisasm.c
index 9be880c73400..1b4a02a433f6 100644
--- a/sys/contrib/dev/acpica/compiler/cvdisasm.c
+++ b/sys/contrib/dev/acpica/compiler/cvdisasm.c
@@ -544,8 +544,11 @@ CvSwitchFiles(
Current = Current->Parent;
}
- /* Redirect output to Op->Common.CvFilename */
+ if (FNode)
+ {
+ /* Redirect output to Op->Common.CvFilename */
- AcpiOsRedirectOutput (FNode->File);
- AcpiGbl_CurrentFilename = FNode->Filename;
+ AcpiOsRedirectOutput (FNode->File);
+ AcpiGbl_CurrentFilename = FNode->Filename;
+ }
}
diff --git a/sys/contrib/dev/acpica/compiler/cvparser.c b/sys/contrib/dev/acpica/compiler/cvparser.c
index f62caaa0fb72..b44fb9ff4ad0 100644
--- a/sys/contrib/dev/acpica/compiler/cvparser.c
+++ b/sys/contrib/dev/acpica/compiler/cvparser.c
@@ -912,7 +912,6 @@ CvCaptureCommentsOnly (
/* Not a valid comment option. Revert the AML */
- Aml -= 2;
goto DefBlock;
} /* End switch statement */
diff --git a/sys/contrib/dev/acpica/compiler/dtcompile.c b/sys/contrib/dev/acpica/compiler/dtcompile.c
index be03f45d90cc..ba2740349628 100644
--- a/sys/contrib/dev/acpica/compiler/dtcompile.c
+++ b/sys/contrib/dev/acpica/compiler/dtcompile.c
@@ -161,7 +161,7 @@ static char VersionString[9];
/* Local prototypes */
-static ACPI_STATUS
+void
DtInitialize (
void);
@@ -196,16 +196,12 @@ DtDoCompile (
ACPI_STATUS Status;
UINT8 Event;
DT_FIELD *FieldList;
+ ASL_GLOBAL_FILE_NODE *FileNode;
/* Initialize globals */
- Status = DtInitialize ();
- if (ACPI_FAILURE (Status))
- {
- printf ("Error during compiler initialization, 0x%X\n", Status);
- return (Status);
- }
+ DtInitialize ();
/* Preprocessor */
@@ -223,13 +219,29 @@ DtDoCompile (
}
}
- /*
- * Scan the input file (file is already open) and
- * build the parse tree
- */
- Event = UtBeginEvent ("Scan and parse input file");
- FieldList = DtScanFile (AslGbl_Files[ASL_FILE_INPUT].Handle);
- UtEndEvent (Event);
+ /* Compile the parse tree */
+
+ if (AslGbl_DtLexBisonPrototype)
+ {
+ Event = UtBeginEvent ("Parse data table in prototype mode");
+
+ DtCompilerInitLexer (AslGbl_Files[ASL_FILE_INPUT].Handle);
+ DtCompilerParserparse ();
+ FieldList = AslGbl_FieldList;
+ DtCompilerTerminateLexer ();
+
+ UtEndEvent (Event);
+ }
+ else
+ {
+ /*
+ * Scan the input file (file is already open) and
+ * build the parse tree
+ */
+ Event = UtBeginEvent ("Scan and parse input file");
+ FieldList = DtScanFile (AslGbl_Files[ASL_FILE_INPUT].Handle);
+ UtEndEvent (Event);
+ }
/* Did the parse tree get successfully constructed? */
@@ -245,14 +257,30 @@ DtDoCompile (
Event = UtBeginEvent ("Compile parse tree");
- /*
- * Compile the parse tree
- */
Status = DtCompileDataTable (&FieldList);
UtEndEvent (Event);
+ FileNode = FlGetCurrentFileNode ();
+ if (!FileNode)
+ {
+ fprintf (stderr, "Summary for %s could not be generated",
+ AslGbl_Files[ASL_FILE_INPUT].Filename);
+ }
+ else
+ {
+ FileNode->TotalLineCount = AslGbl_CurrentLineNumber;
+ FileNode->OriginalInputFileSize = AslGbl_InputByteCount;
+ DbgPrint (ASL_PARSE_OUTPUT, "Line count: %u input file size: %u\n",
+ FileNode->TotalLineCount, FileNode->OriginalInputFileSize);
+ }
+
if (ACPI_FAILURE (Status))
{
+ if (FileNode)
+ {
+ FileNode->ParserErrorDetected = TRUE;
+ }
+
/* TBD: temporary error message. Msgs should come from function above */
DtError (ASL_ERROR, ASL_MSG_SYNTAX, NULL,
@@ -276,6 +304,14 @@ DtDoCompile (
HxDoHexOutput ();
DtWriteTableToListing ();
+ /* Save the compile time statistics to the current file node */
+
+ if (FileNode)
+ {
+ FileNode->TotalFields = AslGbl_InputFieldCount;
+ FileNode->OutputByteLength = AslGbl_TableLength;
+ }
+
return (Status);
}
@@ -293,25 +329,12 @@ DtDoCompile (
*
*****************************************************************************/
-static ACPI_STATUS
+void
DtInitialize (
void)
{
- ACPI_STATUS Status;
- Status = AcpiOsInitialize ();
- if (ACPI_FAILURE (Status))
- {
- return (Status);
- }
-
- Status = AcpiUtInitGlobals ();
- if (ACPI_FAILURE (Status))
- {
- return (Status);
- }
-
AcpiUtSetIntegerWidth (2); /* Set width to 64 bits */
AslGbl_FieldList = NULL;
@@ -319,7 +342,7 @@ DtInitialize (
AslGbl_SubtableStack = NULL;
sprintf (VersionString, "%X", (UINT32) ACPI_CA_VERSION);
- return (AE_OK);
+ return;
}
@@ -552,7 +575,7 @@ DtCompileTable (
ACPI_STATUS Status = AE_OK;
- if (!Field)
+ if (!Field || !Info)
{
return (AE_BAD_PARAMETER);
}
@@ -623,6 +646,14 @@ DtCompileTable (
FieldType = DtGetFieldType (Info);
AslGbl_InputFieldCount++;
+ if (FieldType != DT_FIELD_TYPE_INLINE_SUBTABLE &&
+ strcmp (Info->Name, LocalField->Name))
+ {
+ sprintf (AslGbl_MsgBuffer, "found \"%s\" expected \"%s\"",
+ LocalField->Name, Info->Name);
+ DtError (ASL_ERROR, ASL_MSG_INVALID_LABEL, LocalField, AslGbl_MsgBuffer);
+ }
+
switch (FieldType)
{
case DT_FIELD_TYPE_FLAGS_INTEGER:
diff --git a/sys/contrib/dev/acpica/compiler/dtcompiler.h b/sys/contrib/dev/acpica/compiler/dtcompiler.h
index e19cca800773..0dd86f939d0b 100644
--- a/sys/contrib/dev/acpica/compiler/dtcompiler.h
+++ b/sys/contrib/dev/acpica/compiler/dtcompiler.h
@@ -194,7 +194,7 @@ typedef struct dt_field
{
char *Name; /* Field name (from name : value) */
char *Value; /* Field value (from name : value) */
- UINT32 StringLength;/* Length of Value */
+ UINT32 StringLength; /* Length of Value */
struct dt_field *Next; /* Next field */
struct dt_field *NextLabel; /* If field is a label, next label */
UINT32 Line; /* Line number for this field */
@@ -210,6 +210,17 @@ typedef struct dt_field
#define DT_FIELD_NOT_ALLOCATED 1
+/*
+ * Structure used for each individual key or value
+ */
+typedef struct dt_table_unit
+{
+ char *Value; /* Field value (from name : value) */
+ UINT32 Line; /* Line number for this field */
+ UINT32 Column; /* Start column for field value */
+
+} DT_TABLE_UNIT;
+
/*
* Structure used for individual subtables within an ACPI table
@@ -256,6 +267,10 @@ DT_EXTERN DT_FIELD DT_INIT_GLOBAL (*AslGbl_LabelList, NULL);
DT_EXTERN UINT32 DT_INIT_GLOBAL (AslGbl_CurrentTableOffset, 0);
+/* Data table compiler Flex/Bison prototype */
+
+DT_EXTERN BOOLEAN DT_INIT_GLOBAL (AslGbl_DtLexBisonPrototype, FALSE);
+
/* Local caches */
DT_EXTERN UINT32 DT_INIT_GLOBAL (AslGbl_SubtableCount, 0);
@@ -425,12 +440,45 @@ DtCompileFlag (
ACPI_DMTABLE_INFO *Info);
+/* dtfield - DT_FIELD operations */
+
+void
+DtLinkField (
+ DT_FIELD *Field);
+
+void
+DtCreateField (
+ DT_TABLE_UNIT *FieldKey,
+ DT_TABLE_UNIT *FieldValue,
+ UINT32 Offset);
+
+DT_TABLE_UNIT *
+DtCreateTableUnit (
+ char *Data,
+ UINT32 Line,
+ UINT32 Column);
+
+
+
/* dtparser - lex/yacc files */
+UINT64 DtCompilerParserResult; /* Expression return value */
+int
+DtCompilerParserparse (
+ void);
+
UINT64
DtEvaluateExpression (
char *ExprString);
+void
+DtCompilerInitLexer (
+ FILE *inFile);
+
+void
+DtCompilerTerminateLexer (
+ void);
+
int
DtInitLexer (
char *String);
diff --git a/sys/contrib/dev/acpica/compiler/dtcompilerparser.l b/sys/contrib/dev/acpica/compiler/dtcompilerparser.l
new file mode 100644
index 000000000000..ea1ee24ec7a4
--- /dev/null
+++ b/sys/contrib/dev/acpica/compiler/dtcompilerparser.l
@@ -0,0 +1,294 @@
+%{
+/******************************************************************************
+ *
+ * Module Name: dtcompilerparser.l - Flex input file for table compiler lexer
+ *
+ *****************************************************************************/
+
+/******************************************************************************
+ *
+ * 1. Copyright Notice
+ *
+ * Some or all of this work - Copyright (c) 1999 - 2018, Intel Corp.
+ * All rights reserved.
+ *
+ * 2. License
+ *
+ * 2.1. This is your license from Intel Corp. under its intellectual property
+ * rights. You may have additional license terms from the party that provided
+ * you this software, covering your right to use that party's intellectual
+ * property rights.
+ *
+ * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
+ * copy of the source code appearing in this file ("Covered Code") an
+ * irrevocable, perpetual, worldwide license under Intel's copyrights in the
+ * base code distributed originally by Intel ("Original Intel Code") to copy,
+ * make derivatives, distribute, use and display any portion of the Covered
+ * Code in any form, with the right to sublicense such rights; and
+ *
+ * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
+ * license (with the right to sublicense), under only those claims of Intel
+ * patents that are infringed by the Original Intel Code, to make, use, sell,
+ * offer to sell, and import the Covered Code and derivative works thereof
+ * solely to the minimum extent necessary to exercise the above copyright
+ * license, and in no event shall the patent license extend to any additions
+ * to or modifications of the Original Intel Code. No other license or right
+ * is granted directly or by implication, estoppel or otherwise;
+ *
+ * The above copyright and patent license is granted only if the following
+ * conditions are met:
+ *
+ * 3. Conditions
+ *
+ * 3.1. Redistribution of Source with Rights to Further Distribute Source.
+ * Redistribution of source code of any substantial portion of the Covered
+ * Code or modification with rights to further distribute source must include
+ * the above Copyright Notice, the above License, this list of Conditions,
+ * and the following Disclaimer and Export Compliance provision. In addition,
+ * Licensee must cause all Covered Code to which Licensee contributes to
+ * contain a file documenting the changes Licensee made to create that Covered
+ * Code and the date of any change. Licensee must include in that file the
+ * documentation of any changes made by any predecessor Licensee. Licensee
+ * must include a prominent statement that the modification is derived,
+ * directly or indirectly, from Original Intel Code.
+ *
+ * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
+ * Redistribution of source code of any substantial portion of the Covered
+ * Code or modification without rights to further distribute source must
+ * include the following Disclaimer and Export Compliance provision in the
+ * documentation and/or other materials provided with distribution. In
+ * addition, Licensee may not authorize further sublicense of source of any
+ * portion of the Covered Code, and must include terms to the effect that the
+ * license from Licensee to its licensee is limited to the intellectual
+ * property embodied in the software Licensee provides to its licensee, and
+ * not to intellectual property embodied in modifications its licensee may
+ * make.
+ *
+ * 3.3. Redistribution of Executable. Redistribution in executable form of any
+ * substantial portion of the Covered Code or modification must reproduce the
+ * above Copyright Notice, and the following Disclaimer and Export Compliance
+ * provision in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3.4. Intel retains all right, title, and interest in and to the Original
+ * Intel Code.
+ *
+ * 3.5. Neither the name Intel nor any other trademark owned or controlled by
+ * Intel shall be used in advertising or otherwise to promote the sale, use or
+ * other dealings in products derived from or relating to the Covered Code
+ * without prior written authorization from Intel.
+ *
+ * 4. Disclaimer and Export Compliance
+ *
+ * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
+ * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
+ * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE,
+ * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY
+ * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY
+ * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
+ * PARTICULAR PURPOSE.
+ *
+ * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
+ * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
+ * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
+ * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
+ * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
+ * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS
+ * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
+ * LIMITED REMEDY.
+ *
+ * 4.3. Licensee shall not export, either directly or indirectly, any of this
+ * software or system incorporating such software without first obtaining any
+ * required license or other approval from the U. S. Department of Commerce or
+ * any other agency or department of the United States Government. In the
+ * event Licensee exports any such software from the United States or
+ * re-exports any such software from a foreign destination, Licensee shall
+ * ensure that the distribution and export/re-export of the software is in
+ * compliance with all laws, regulations, orders, or other restrictions of the
+ * U.S. Export Administration Regulations. Licensee agrees that neither it nor
+ * any of its subsidiaries will export/re-export any technical data, process,
+ * software, or service, directly or indirectly, to any country for which the
+ * United States government or any agency thereof requires an export license,
+ * other governmental approval, or letter of assurance, without first obtaining
+ * such license, approval or letter.
+ *
+ *****************************************************************************
+ *
+ * Alternatively, you may choose to be licensed under the terms of the
+ * following license:
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions, and the following disclaimer,
+ * without modification.
+ * 2. Redistributions in binary form must reproduce at minimum a disclaimer
+ * substantially similar to the "NO WARRANTY" disclaimer below
+ * ("Disclaimer") and any redistribution must be conditioned upon
+ * including a substantially similar Disclaimer requirement for further
+ * binary redistribution.
+ * 3. Neither the names of the above-listed copyright holders nor the names
+ * of any contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Alternatively, you may choose to be licensed under the terms of the
+ * GNU General Public License ("GPL") version 2 as published by the Free
+ * Software Foundation.
+ *
+ *****************************************************************************/
+
+#include <contrib/dev/acpica/compiler/aslcompiler.h>
+#include "dtcompilerparser.y.h"
+
+YYSTYPE DtCompilerlval;
+
+#define _COMPONENT ACPI_COMPILER
+ ACPI_MODULE_NAME ("dtcompilerscanner")
+
+/* handle locations */
+
+int DtCompilerParsercolumn = 1;
+int DtLabelByteOffset = 0;
+int DtCompilerParserByteOffset = 0;
+
+UINT32 DtTokenFirstLine = 0;
+UINT32 DtTokenFirstColumn = 0;
+
+#define YY_USER_ACTION \
+ DtTokenFirstLine = DtCompilerParserlineno; \
+ DtTokenFirstColumn = DtCompilerParsercolumn; \
+ DtCompilerParsercolumn += DtCompilerParserleng; \
+ DtCompilerParserByteOffset += DtCompilerParserleng; \
+ DbgPrint (ASL_PARSE_OUTPUT,\
+ "user action occurred. DtCompilerParserlloc.first_line: %u\n",\
+ DtTokenFirstLine);
+%}
+
+%option nounput noinput yylineno
+
+ /* Indicates a state used for parsing multiline C comments */
+%x ML_COMMENT
+%x DATA_STATE
+
+WhiteSpace [ \t\v\r]+
+NewLines [\n]+
+
+ /* Avoid ", \n, and [] as a part of label name. These are not valid characters of a label name */
+LabelName [^ ":\n\[\]]([^":\n\[\]]*[^" :\n\[\]])?
+
+ /* Avoid ", \n, \\, and [] as a part of data. These are not valid characters of data */
+Data [^ \\":\n\[\]]([^":\n\[\]\\]*[^" :\n\[\]\\])?
+
+Text [^ ":\n][^":\n]*
+Comment \[[^\n\[\]]*\]
+CommentField {LabelName}{WhiteSpace}*:{WhiteSpace}{Comment}?$
+
+
+%%
+
+<DATA_STATE>{WhiteSpace}"\\\n" {
+ DbgPrint(ASL_PARSE_OUTPUT,"Continuation matched\n");
+ return (DT_PARSEOP_LINE_CONTINUATION);
+ }
+
+":" {
+ DbgPrint(ASL_PARSE_OUTPUT, ": Matched\n");
+ BEGIN (DATA_STATE);
+ return (':');
+ }
+
+<INITIAL,DATA_STATE>{WhiteSpace} { DbgPrint(ASL_PARSE_OUTPUT,"Whitespace matched\n"); }
+
+<INITIAL,DATA_STATE>{Comment} { DbgPrint(ASL_PARSE_OUTPUT,"Comment matched\n"); }
+
+"/*" { BEGIN (ML_COMMENT); }
+<ML_COMMENT>"*/" { BEGIN (INITIAL); }
+<ML_COMMENT>"*/\n" { BEGIN (INITIAL); }
+<ML_COMMENT>([^*]|\n)+|. /* Ignore */
+"//".* /* Ignore */
+
+
+<DATA_STATE>{Data} {
+ char *s;
+ int size = strlen (DtCompilerParsertext);
+ s=UtLocalCacheCalloc (size + 1);
+ AcpiUtSafeStrncpy (s, DtCompilerParsertext, size + 1);
+ DtCompilerParserlval.s = s;
+ DbgPrint (ASL_PARSE_OUTPUT, "Data: %s\n", s);
+ return (DT_PARSEOP_DATA);
+}
+
+{CommentField} /* ignore */
+
+{LabelName} {
+ char *s;
+ int size = strlen (DtCompilerParsertext);
+ s=UtLocalCacheCalloc (size + 1);
+ AcpiUtSafeStrncpy (s, DtCompilerParsertext, size + 1);
+ DtCompilerParserlval.u = (DT_TABLE_UNIT *) UtLocalCacheCalloc (sizeof (DT_TABLE_UNIT));
+ DtCompilerParserlval.u->Value = s;
+ DtCompilerParserlval.u->Line = DtCompilerParserlineno;
+ DtCompilerParserlval.u->Column = DtCompilerParsercolumn;
+ DtLabelByteOffset = DtCompilerParserByteOffset;
+ DbgPrint (ASL_PARSE_OUTPUT, "Label: %s\n", s);
+ return (DT_PARSEOP_LABEL);
+}
+
+
+<DATA_STATE>\"{Text}?\" { // remove outer quotes from the string, they are unnecessary
+ char *s;
+ int size = strlen (DtCompilerParsertext);
+ s=UtLocalCacheCalloc (size - 1);
+ AcpiUtSafeStrncpy (s, DtCompilerParsertext + 1, size - 1);
+ DtCompilerParserlval.s = s;
+ DbgPrint (ASL_PARSE_OUTPUT, "String Data: %s\n", s);
+ BEGIN (INITIAL);
+ return (DT_PARSEOP_STRING_DATA);
+}
+
+
+<INITIAL,DATA_STATE>{NewLines} {
+ DbgPrint(ASL_PARSE_OUTPUT,
+ "Newline matched (data state). Current line number: %u\n",DtCompilerParserlineno);
+ BEGIN (INITIAL); DtCompilerParsercolumn = 1;
+}
+
+
+%%
+
+
+/*
+ * Local support functions
+ */
+
+void
+DtCompilerInitLexer (
+ FILE *inFile)
+{
+ yyin = inFile;
+}
+
+void
+DtCompilerTerminateLexer (
+ void)
+{
+ /*
+ * Flex/Bison increments the lineno for the EOF so decrement by 1 to get
+ * the correct number of lines.
+ */
+ AslGbl_CurrentLineNumber = DtCompilerParserlineno - 1;
+ AslGbl_InputByteCount = DtCompilerParserByteOffset;
+}
diff --git a/sys/contrib/dev/acpica/compiler/dtcompilerparser.y b/sys/contrib/dev/acpica/compiler/dtcompilerparser.y
new file mode 100644
index 000000000000..d0e0e3c64eee
--- /dev/null
+++ b/sys/contrib/dev/acpica/compiler/dtcompilerparser.y
@@ -0,0 +1,285 @@
+%{
+/******************************************************************************
+ *
+ * Module Name: dtcompilerparser.y - Bison input file for table compiler parser
+ *
+ *****************************************************************************/
+
+/******************************************************************************
+ *
+ * 1. Copyright Notice
+ *
+ * Some or all of this work - Copyright (c) 1999 - 2018, Intel Corp.
+ * All rights reserved.
+ *
+ * 2. License
+ *
+ * 2.1. This is your license from Intel Corp. under its intellectual property
+ * rights. You may have additional license terms from the party that provided
+ * you this software, covering your right to use that party's intellectual
+ * property rights.
+ *
+ * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
+ * copy of the source code appearing in this file ("Covered Code") an
+ * irrevocable, perpetual, worldwide license under Intel's copyrights in the
+ * base code distributed originally by Intel ("Original Intel Code") to copy,
+ * make derivatives, distribute, use and display any portion of the Covered
+ * Code in any form, with the right to sublicense such rights; and
+ *
+ * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
+ * license (with the right to sublicense), under only those claims of Intel
+ * patents that are infringed by the Original Intel Code, to make, use, sell,
+ * offer to sell, and import the Covered Code and derivative works thereof
+ * solely to the minimum extent necessary to exercise the above copyright
+ * license, and in no event shall the patent license extend to any additions
+ * to or modifications of the Original Intel Code. No other license or right
+ * is granted directly or by implication, estoppel or otherwise;
+ *
+ * The above copyright and patent license is granted only if the following
+ * conditions are met:
+ *
+ * 3. Conditions
+ *
+ * 3.1. Redistribution of Source with Rights to Further Distribute Source.
+ * Redistribution of source code of any substantial portion of the Covered
+ * Code or modification with rights to further distribute source must include
+ * the above Copyright Notice, the above License, this list of Conditions,
+ * and the following Disclaimer and Export Compliance provision. In addition,
+ * Licensee must cause all Covered Code to which Licensee contributes to
+ * contain a file documenting the changes Licensee made to create that Covered
+ * Code and the date of any change. Licensee must include in that file the
+ * documentation of any changes made by any predecessor Licensee. Licensee
+ * must include a prominent statement that the modification is derived,
+ * directly or indirectly, from Original Intel Code.
+ *
+ * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
+ * Redistribution of source code of any substantial portion of the Covered
+ * Code or modification without rights to further distribute source must
+ * include the following Disclaimer and Export Compliance provision in the
+ * documentation and/or other materials provided with distribution. In
+ * addition, Licensee may not authorize further sublicense of source of any
+ * portion of the Covered Code, and must include terms to the effect that the
+ * license from Licensee to its licensee is limited to the intellectual
+ * property embodied in the software Licensee provides to its licensee, and
+ * not to intellectual property embodied in modifications its licensee may
+ * make.
+ *
+ * 3.3. Redistribution of Executable. Redistribution in executable form of any
+ * substantial portion of the Covered Code or modification must reproduce the
+ * above Copyright Notice, and the following Disclaimer and Export Compliance
+ * provision in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3.4. Intel retains all right, title, and interest in and to the Original
+ * Intel Code.
+ *
+ * 3.5. Neither the name Intel nor any other trademark owned or controlled by
+ * Intel shall be used in advertising or otherwise to promote the sale, use or
+ * other dealings in products derived from or relating to the Covered Code
+ * without prior written authorization from Intel.
+ *
+ * 4. Disclaimer and Export Compliance
+ *
+ * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
+ * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
+ * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE,
+ * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY
+ * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY
+ * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
+ * PARTICULAR PURPOSE.
+ *
+ * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
+ * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
+ * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
+ * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
+ * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
+ * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS
+ * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
+ * LIMITED REMEDY.
+ *
+ * 4.3. Licensee shall not export, either directly or indirectly, any of this
+ * software or system incorporating such software without first obtaining any
+ * required license or other approval from the U. S. Department of Commerce or
+ * any other agency or department of the United States Government. In the
+ * event Licensee exports any such software from the United States or
+ * re-exports any such software from a foreign destination, Licensee shall
+ * ensure that the distribution and export/re-export of the software is in
+ * compliance with all laws, regulations, orders, or other restrictions of the
+ * U.S. Export Administration Regulations. Licensee agrees that neither it nor
+ * any of its subsidiaries will export/re-export any technical data, process,
+ * software, or service, directly or indirectly, to any country for which the
+ * United States government or any agency thereof requires an export license,
+ * other governmental approval, or letter of assurance, without first obtaining
+ * such license, approval or letter.
+ *
+ *****************************************************************************
+ *
+ * Alternatively, you may choose to be licensed under the terms of the
+ * following license:
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions, and the following disclaimer,
+ * without modification.
+ * 2. Redistributions in binary form must reproduce at minimum a disclaimer
+ * substantially similar to the "NO WARRANTY" disclaimer below
+ * ("Disclaimer") and any redistribution must be conditioned upon
+ * including a substantially similar Disclaimer requirement for further
+ * binary redistribution.
+ * 3. Neither the names of the above-listed copyright holders nor the names
+ * of any contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Alternatively, you may choose to be licensed under the terms of the
+ * GNU General Public License ("GPL") version 2 as published by the Free
+ * Software Foundation.
+ *
+ *****************************************************************************/
+
+#include <contrib/dev/acpica/compiler/aslcompiler.h>
+
+
+#define _COMPONENT DT_COMPILER
+ ACPI_MODULE_NAME ("dtcompilerparser")
+
+void * AslLocalAllocate (unsigned int Size);
+
+/* Bison/yacc configuration */
+
+#undef alloca
+#define alloca AslLocalAllocate
+
+int DtCompilerParserlex (void);
+int DtCompilerParserparse (void);
+void DtCompilerParsererror (char const *msg);
+extern char *DtCompilerParsertext;
+extern DT_FIELD *AslGbl_CurrentField;
+
+extern int DtLabelByteOffset;
+extern UINT64 DtCompilerParserResult; /* Expression return value */
+extern UINT64 DtCompilerParserlineno; /* Current line number */
+
+extern UINT32 DtTokenFirstLine;
+extern UINT32 DtTokenFirstColumn;
+
+/* Bison/yacc configuration */
+
+#define yytname DtCompilerParsername
+#define YYDEBUG 1 /* Enable debug output */
+#define YYERROR_VERBOSE 1 /* Verbose error messages */
+#define YYFLAG -32768
+
+/* Define YYMALLOC/YYFREE to prevent redefinition errors */
+
+#define YYMALLOC malloc
+#define YYFREE free
+
+%}
+
+
+%union {
+ char *s;
+ DT_FIELD *f;
+ DT_TABLE_UNIT *u;
+}
+
+
+%type <f> Table
+%token <u> DT_PARSEOP_DATA
+%token <u> DT_PARSEOP_LABEL
+%token <u> DT_PARSEOP_STRING_DATA
+%token <u> DT_PARSEOP_LINE_CONTINUATION
+%type <u> Data
+%type <u> Datum
+%type <u> MultiLineData
+%type <u> MultiLineDataList
+
+
+%%
+
+Table
+ :
+ FieldList { }
+ ;
+
+FieldList
+ : Field FieldList
+ | Field
+ ;
+
+Field
+ : DT_PARSEOP_LABEL ':' Data { DtCreateField ($1, $3, DtLabelByteOffset); }
+ ;
+
+Data
+ : MultiLineDataList { $$ = $1; }
+ | Datum { $$ = $1; }
+ | Datum MultiLineDataList { $$ = $1; } /* combine the string with strcat */
+ ;
+
+MultiLineDataList
+ : MultiLineDataList MultiLineData { $$ = DtCreateTableUnit (AcpiUtStrcat(AcpiUtStrcat($1->Value, " "), $2->Value), $1->Line, $1->Column); } /* combine the strings with strcat */
+ | MultiLineData { $$ = $1; }
+ ;
+
+MultiLineData
+ : DT_PARSEOP_LINE_CONTINUATION Datum { DbgPrint (ASL_PARSE_OUTPUT, "line continuation detected\n"); $$ = $2; }
+ ;
+
+Datum
+ : DT_PARSEOP_DATA {
+ DbgPrint (ASL_PARSE_OUTPUT, "parser data: [%s]\n", DtCompilerParserlval.s);
+ $$ = DtCreateTableUnit (AcpiUtStrdup(DtCompilerParserlval.s), DtTokenFirstLine, DtTokenFirstColumn);
+ }
+ | DT_PARSEOP_STRING_DATA {
+ DbgPrint (ASL_PARSE_OUTPUT, "parser string data: [%s]\n", DtCompilerParserlval.s);
+ $$ = DtCreateTableUnit (AcpiUtStrdup(DtCompilerParserlval.s), DtTokenFirstLine, DtTokenFirstColumn);
+ }
+ ;
+
+
+%%
+
+
+/*
+ * Local support functions, including parser entry point
+ */
+/******************************************************************************
+ *
+ * FUNCTION: DtCompilerParsererror
+ *
+ * PARAMETERS: Message - Parser-generated error message
+ *
+ * RETURN: None
+ *
+ * DESCRIPTION: Handler for parser errors
+ *
+ *****************************************************************************/
+
+void
+DtCompilerParsererror (
+ char const *Message)
+{
+ DtError (ASL_ERROR, ASL_MSG_SYNTAX,
+ AslGbl_CurrentField, (char *) Message);
+}
+
+int
+DtCompilerParserwrap(void)
+{
+ return (1);
+}
diff --git a/sys/contrib/dev/acpica/compiler/dtfield.c b/sys/contrib/dev/acpica/compiler/dtfield.c
index 7d4547ad9f57..23f3bea2aff5 100644
--- a/sys/contrib/dev/acpica/compiler/dtfield.c
+++ b/sys/contrib/dev/acpica/compiler/dtfield.c
@@ -280,7 +280,9 @@ DtCompileString (
if (Length > ByteLength)
{
- sprintf (AslGbl_MsgBuffer, "Maximum %u characters", ByteLength);
+ sprintf (AslGbl_MsgBuffer,
+ "Maximum %u characters, found %u characters [%s]",
+ ByteLength, Length, Field->Value);
DtError (ASL_ERROR, ASL_MSG_STRING_LENGTH, Field, AslGbl_MsgBuffer);
Length = ByteLength;
}
@@ -574,6 +576,14 @@ DtCompileBuffer (
StringValue = DtNormalizeBuffer (StringValue, &Count);
Substring = StringValue;
+ if (Count != ByteLength)
+ {
+ sprintf(AslGbl_MsgBuffer,
+ "Found %u values, must match expected count: %u",
+ Count, ByteLength);
+ DtError (ASL_ERROR, ASL_MSG_BUFFER_LIST, Field, AslGbl_MsgBuffer);
+ goto Exit;
+ }
/* Each element of StringValue is now three chars (2 hex + 1 space) */
@@ -719,3 +729,122 @@ DtCompileFlag (
*Buffer |= (UINT8) (Value << BitPosition);
}
+
+
+/******************************************************************************
+ *
+ * FUNCTION: DtCreateField
+ *
+ * PARAMETERS: Name
+ * Value
+ * Line
+ * Offset
+ * Column
+ * NameColumn
+ *
+ * RETURN: None
+ *
+ * DESCRIPTION: Create a field
+ *
+ *****************************************************************************/
+
+void
+DtCreateField (
+ DT_TABLE_UNIT *FieldKey,
+ DT_TABLE_UNIT *FieldValue,
+ UINT32 Offset)
+{
+ DT_FIELD *Field = UtFieldCacheCalloc ();
+
+
+ Field->StringLength = 0;
+ if (FieldKey->Value)
+ {
+ Field->Name =
+ strcpy (UtLocalCacheCalloc (strlen (FieldKey->Value) + 1), FieldKey->Value);
+ }
+
+ if (FieldValue->Value)
+ {
+ Field->StringLength = strlen (FieldValue->Value);
+ Field->Value =
+ strcpy (UtLocalCacheCalloc (Field->StringLength + 1), FieldValue->Value);
+ }
+
+ Field->Line = FieldValue->Line;
+ Field->ByteOffset = Offset;
+ Field->NameColumn = FieldKey->Column;
+ Field->Column = FieldValue->Column;
+ DtLinkField (Field);
+
+ DtDumpFieldList (AslGbl_FieldList);
+}
+
+
+/******************************************************************************
+ *
+ * FUNCTION: DtCreateTableUnit
+ *
+ * PARAMETERS: Data
+ * Line
+ * Column
+ *
+ * RETURN: a table unit
+ *
+ * DESCRIPTION: Create a table unit
+ *
+ *****************************************************************************/
+
+DT_TABLE_UNIT *
+DtCreateTableUnit (
+ char *Data,
+ UINT32 Line,
+ UINT32 Column)
+{
+ DT_TABLE_UNIT *Unit = (DT_TABLE_UNIT *) UtFieldCacheCalloc ();
+
+
+ Unit->Value = Data;
+ Unit->Line = Line;
+ Unit->Column = Column;
+ return (Unit);
+}
+
+
+/******************************************************************************
+ *
+ * FUNCTION: DtLinkField
+ *
+ * PARAMETERS: Field - New field object to link
+ *
+ * RETURN: None
+ *
+ * DESCRIPTION: Link one field name and value to the list
+ *
+ *****************************************************************************/
+
+void
+DtLinkField (
+ DT_FIELD *Field)
+{
+ DT_FIELD *Prev;
+ DT_FIELD *Next;
+
+
+ Prev = Next = AslGbl_FieldList;
+
+ while (Next)
+ {
+ Prev = Next;
+ Next = Next->Next;
+ }
+
+ if (Prev)
+ {
+ Prev->Next = Field;
+ }
+ else
+ {
+ AslGbl_FieldList = Field;
+ }
+}
diff --git a/sys/contrib/dev/acpica/compiler/dtio.c b/sys/contrib/dev/acpica/compiler/dtio.c
index 9d6d21523fe9..680609aaa8ee 100644
--- a/sys/contrib/dev/acpica/compiler/dtio.c
+++ b/sys/contrib/dev/acpica/compiler/dtio.c
@@ -162,10 +162,6 @@ static char *
DtTrim (
char *String);
-static void
-DtLinkField (
- DT_FIELD *Field);
-
static ACPI_STATUS
DtParseLine (
char *LineBuffer,
@@ -299,45 +295,6 @@ DtTrim (
/******************************************************************************
*
- * FUNCTION: DtLinkField
- *
- * PARAMETERS: Field - New field object to link
- *
- * RETURN: None
- *
- * DESCRIPTION: Link one field name and value to the list
- *
- *****************************************************************************/
-
-static void
-DtLinkField (
- DT_FIELD *Field)
-{
- DT_FIELD *Prev;
- DT_FIELD *Next;
-
-
- Prev = Next = AslGbl_FieldList;
-
- while (Next)
- {
- Prev = Next;
- Next = Next->Next;
- }
-
- if (Prev)
- {
- Prev->Next = Field;
- }
- else
- {
- AslGbl_FieldList = Field;
- }
-}
-
-
-/******************************************************************************
- *
* FUNCTION: DtParseLine
*
* PARAMETERS: LineBuffer - Current source code line
@@ -787,7 +744,6 @@ DtGetNextLine (
case '\n':
- CurrentLineOffset = AslGbl_NextLineOffset;
AslGbl_NextLineOffset = (UINT32) ftell (Handle);
AslGbl_CurrentLineNumber++;
break;
@@ -829,7 +785,6 @@ DtGetNextLine (
/* Ignore newline, this will merge the lines */
- CurrentLineOffset = AslGbl_NextLineOffset;
AslGbl_NextLineOffset = (UINT32) ftell (Handle);
AslGbl_CurrentLineNumber++;
State = DT_NORMAL_TEXT;
@@ -1117,7 +1072,7 @@ DtDumpSubtableInfo (
{
DbgPrint (ASL_DEBUG_OUTPUT,
- "[%.04X] %24s %.08X %.08X %.08X %.08X %.08X %p %p %p\n",
+ "[%.04X] %24s %.08X %.08X %.08X %.08X %p %p %p %p\n",
Subtable->Depth, Subtable->Name, Subtable->Length, Subtable->TotalLength,
Subtable->SizeOfLengthField, Subtable->Flags, Subtable,
Subtable->Parent, Subtable->Child, Subtable->Peer);
@@ -1131,7 +1086,7 @@ DtDumpSubtableTree (
{
DbgPrint (ASL_DEBUG_OUTPUT,
- "[%.04X] %24s %*s%08X (%.02X) - (%.02X)\n",
+ "[%.04X] %24s %*s%p (%.02X) - (%.02X)\n",
Subtable->Depth, Subtable->Name, (4 * Subtable->Depth), " ",
Subtable, Subtable->Length, Subtable->TotalLength);
}
@@ -1225,7 +1180,7 @@ DtWriteFieldToListing (
if (strlen (Field->Value) > 64)
{
FlPrintFile (ASL_FILE_LISTING_OUTPUT, "...Additional data, length 0x%X\n",
- strlen (Field->Value));
+ (UINT32) strlen (Field->Value));
}
FlPrintFile (ASL_FILE_LISTING_OUTPUT, "\n");
diff --git a/sys/contrib/dev/acpica/compiler/dtparser.l b/sys/contrib/dev/acpica/compiler/dtparser.l
index d935b9e3da4a..32f821a5ca07 100644
--- a/sys/contrib/dev/acpica/compiler/dtparser.l
+++ b/sys/contrib/dev/acpica/compiler/dtparser.l
@@ -227,7 +227,6 @@ int
DtInitLexer (
char *String)
{
-
LexBuffer = yy_scan_string (String);
return (LexBuffer == NULL);
}
@@ -236,6 +235,5 @@ void
DtTerminateLexer (
void)
{
-
yy_delete_buffer (LexBuffer);
}
diff --git a/sys/contrib/dev/acpica/compiler/dttable2.c b/sys/contrib/dev/acpica/compiler/dttable2.c
index 29b845a5a1ba..6f1c82de7c37 100644
--- a/sys/contrib/dev/acpica/compiler/dttable2.c
+++ b/sys/contrib/dev/acpica/compiler/dttable2.c
@@ -1474,13 +1474,14 @@ DtCompileSdev (
Namesp->DeviceIdOffset + Namesp->DeviceIdLength;
Namesp->VendorDataLength =
(UINT16) Subtable->Length;
+
+ /* Final size of entire namespace structure */
+
+ SdevHeader->Length = (UINT16)(sizeof(ACPI_SDEV_NAMESPACE) +
+ Subtable->Length + Namesp->DeviceIdLength);
}
}
- /* Final size of entire namespace structure */
-
- SdevHeader->Length = (UINT16) (sizeof (ACPI_SDEV_NAMESPACE) +
- Subtable->Length + Namesp->DeviceIdLength);
break;
case ACPI_SDEV_TYPE_PCIE_ENDPOINT_DEVICE:
@@ -1620,7 +1621,9 @@ DtCompileSlit (
DT_SUBTABLE *ParentTable;
DT_FIELD **PFieldList = (DT_FIELD **) List;
DT_FIELD *FieldList;
+ DT_FIELD *EndOfFieldList = NULL;
UINT32 Localities;
+ UINT32 LocalityListLength;
UINT8 *LocalityBuffer;
@@ -1636,6 +1639,7 @@ DtCompileSlit (
Localities = *ACPI_CAST_PTR (UINT32, Subtable->Buffer);
LocalityBuffer = UtLocalCalloc (Localities);
+ LocalityListLength = 0;
/* Compile each locality buffer */
@@ -1645,11 +1649,22 @@ DtCompileSlit (
DtCompileBuffer (LocalityBuffer,
FieldList->Value, FieldList, Localities);
+ LocalityListLength++;
DtCreateSubtable (LocalityBuffer, Localities, &Subtable);
DtInsertSubtable (ParentTable, Subtable);
+ EndOfFieldList = FieldList;
FieldList = FieldList->Next;
}
+ if (LocalityListLength != Localities)
+ {
+ sprintf(AslGbl_MsgBuffer,
+ "Found %u entries, must match LocalityCount: %u",
+ LocalityListLength, Localities);
+ DtError (ASL_ERROR, ASL_MSG_ENTRY_LIST, EndOfFieldList, AslGbl_MsgBuffer);
+ return (AE_LIMIT);
+ }
+
ACPI_FREE (LocalityBuffer);
return (AE_OK);
}
diff --git a/sys/contrib/dev/acpica/compiler/dttemplate.c b/sys/contrib/dev/acpica/compiler/dttemplate.c
index 9af71d5d031c..7ccfb8aaeabc 100644
--- a/sys/contrib/dev/acpica/compiler/dttemplate.c
+++ b/sys/contrib/dev/acpica/compiler/dttemplate.c
@@ -509,7 +509,7 @@ DtCreateOneTemplate (
AcpiUtStrlwr (DisasmFilename);
if (!UtQueryForOverwrite (DisasmFilename))
{
- return (AE_ERROR);
+ return (AE_OK);
}
File = fopen (DisasmFilename, "w+");
diff --git a/sys/contrib/dev/acpica/compiler/prmacros.c b/sys/contrib/dev/acpica/compiler/prmacros.c
index 59db77debee5..52aa822f48e7 100644
--- a/sys/contrib/dev/acpica/compiler/prmacros.c
+++ b/sys/contrib/dev/acpica/compiler/prmacros.c
@@ -223,7 +223,7 @@ PrAddDefine (
DefineInfo = PrMatchDefine (Identifier);
if (DefineInfo)
{
- DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID,
+ DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID
"#define: name already exists: %s\n",
AslGbl_CurrentLineNumber, Identifier);
diff --git a/sys/contrib/dev/acpica/compiler/prscan.c b/sys/contrib/dev/acpica/compiler/prscan.c
index ed7423657302..5d4065a16b43 100644
--- a/sys/contrib/dev/acpica/compiler/prscan.c
+++ b/sys/contrib/dev/acpica/compiler/prscan.c
@@ -850,7 +850,7 @@ PrDoDirective (
DbgPrint (ASL_PARSE_OUTPUT, PR_PREFIX_ID
"Start #include file \"%s\"\n", AslGbl_CurrentLineNumber,
- Token, AslGbl_CurrentLineNumber);
+ Token);
PrDoIncludeFile (Token);
break;
@@ -1356,7 +1356,7 @@ PrDoIncludeBuffer (
{
if (!(i % 8))
{
- FlPrintFile (ASL_FILE_PREPROCESSOR, "\n ", c);
+ FlPrintFile (ASL_FILE_PREPROCESSOR, "\n ");
}
FlPrintFile (ASL_FILE_PREPROCESSOR, " 0x%2.2X,", c);
@@ -1369,6 +1369,6 @@ PrDoIncludeBuffer (
/* Close the Name() operator */
- FlPrintFile (ASL_FILE_PREPROCESSOR, "\n})\n", BufferName);
+ FlPrintFile (ASL_FILE_PREPROCESSOR, "\n})\n");
fclose (BinaryBufferFile);
}
diff --git a/sys/contrib/dev/acpica/components/debugger/dbconvert.c b/sys/contrib/dev/acpica/components/debugger/dbconvert.c
index a4fd597863c7..b2b64741286c 100644
--- a/sys/contrib/dev/acpica/components/debugger/dbconvert.c
+++ b/sys/contrib/dev/acpica/components/debugger/dbconvert.c
@@ -274,6 +274,10 @@ AcpiDbConvertToBuffer (
ACPI_STATUS Status;
+ /* Skip all preceding white space*/
+
+ AcpiUtRemoveWhitespace (&String);
+
/* Generate the final buffer length */
for (i = 0, Length = 0; String[i];)
diff --git a/sys/contrib/dev/acpica/components/debugger/dbdisply.c b/sys/contrib/dev/acpica/components/debugger/dbdisply.c
index 13df4994c043..9521c0fcbf59 100644
--- a/sys/contrib/dev/acpica/components/debugger/dbdisply.c
+++ b/sys/contrib/dev/acpica/components/debugger/dbdisply.c
@@ -713,7 +713,6 @@ AcpiDbDisplayResults (
return;
}
- ObjDesc = WalkState->MethodDesc;
Node = WalkState->MethodNode;
if (WalkState->Results)
@@ -773,7 +772,6 @@ AcpiDbDisplayCallingTree (
return;
}
- Node = WalkState->MethodNode;
AcpiOsPrintf ("Current Control Method Call Tree\n");
while (WalkState)
diff --git a/sys/contrib/dev/acpica/components/debugger/dbfileio.c b/sys/contrib/dev/acpica/components/debugger/dbfileio.c
index 67d3efe33e47..fe3b50563947 100644
--- a/sys/contrib/dev/acpica/components/debugger/dbfileio.c
+++ b/sys/contrib/dev/acpica/components/debugger/dbfileio.c
@@ -253,7 +253,7 @@ AcpiDbLoadTables (
{
Table = TableListHead->Table;
- Status = AcpiLoadTable (Table);
+ Status = AcpiLoadTable (Table, NULL);
if (ACPI_FAILURE (Status))
{
if (Status == AE_ALREADY_EXISTS)
diff --git a/sys/contrib/dev/acpica/components/debugger/dbhistry.c b/sys/contrib/dev/acpica/components/debugger/dbhistry.c
index 956641a2e88c..ea1274c5f2e5 100644
--- a/sys/contrib/dev/acpica/components/debugger/dbhistry.c
+++ b/sys/contrib/dev/acpica/components/debugger/dbhistry.c
@@ -284,7 +284,7 @@ AcpiDbDisplayHistory (
{
if (AcpiGbl_HistoryBuffer[HistoryIndex].Command)
{
- AcpiOsPrintf ("%3ld %s\n",
+ AcpiOsPrintf ("%3u %s\n",
AcpiGbl_HistoryBuffer[HistoryIndex].CmdNum,
AcpiGbl_HistoryBuffer[HistoryIndex].Command);
}
diff --git a/sys/contrib/dev/acpica/components/debugger/dbinput.c b/sys/contrib/dev/acpica/components/debugger/dbinput.c
index 756c08b757fc..1a6c4d13258c 100644
--- a/sys/contrib/dev/acpica/components/debugger/dbinput.c
+++ b/sys/contrib/dev/acpica/components/debugger/dbinput.c
@@ -208,6 +208,7 @@ enum AcpiExDebuggerCommands
CMD_EVALUATE,
CMD_EXECUTE,
CMD_EXIT,
+ CMD_FIELDS,
CMD_FIND,
CMD_GO,
CMD_HANDLERS,
@@ -287,6 +288,7 @@ static const ACPI_DB_COMMAND_INFO AcpiGbl_DbCommands[] =
{"EVALUATE", 1},
{"EXECUTE", 1},
{"EXIT", 0},
+ {"FIELDS", 1},
{"FIND", 1},
{"GO", 0},
{"HANDLERS", 0},
@@ -360,6 +362,7 @@ static const ACPI_DB_COMMAND_HELP AcpiGbl_DbCommandHelp[] =
{1, " Find <AcpiName> (? is wildcard)", "Find ACPI name(s) with wildcards\n"},
{1, " Integrity", "Validate namespace integrity\n"},
{1, " Methods", "Display list of loaded control methods\n"},
+ {1, " Fields <AddressSpaceId>", "Display list of loaded field units by space ID\n"},
{1, " Namespace [Object] [Depth]", "Display loaded namespace tree/subtree\n"},
{1, " Notify <Object> <Value>", "Send a notification on Object\n"},
{1, " Objects [ObjectType]", "Display summary of all objects or just given type\n"},
@@ -683,6 +686,22 @@ AcpiDbGetNextToken (
}
break;
+ case '{':
+
+ /* This is the start of a field unit, scan until closing brace */
+
+ String++;
+ Start = String;
+ Type = ACPI_TYPE_FIELD_UNIT;
+
+ /* Find end of buffer */
+
+ while (*String && (*String != '}'))
+ {
+ String++;
+ }
+ break;
+
case '[':
/* This is the start of a package, scan until closing bracket */
@@ -785,7 +804,7 @@ AcpiDbGetLine (
{
AcpiOsPrintf (
"Buffer overflow while parsing input line (max %u characters)\n",
- sizeof (AcpiGbl_DbParsedBuf));
+ (UINT32) sizeof (AcpiGbl_DbParsedBuf));
return (0);
}
@@ -877,6 +896,7 @@ AcpiDbCommandDispatch (
ACPI_PARSE_OBJECT *Op)
{
UINT32 Temp;
+ UINT64 Temp64;
UINT32 CommandIndex;
UINT32 ParamCount;
char *CommandLine;
@@ -894,7 +914,6 @@ AcpiDbCommandDispatch (
ParamCount = AcpiDbGetLine (InputBuffer);
CommandIndex = AcpiDbMatchCommand (AcpiGbl_DbArgs[0]);
- Temp = 0;
/*
* We don't want to add the !! command to the history buffer. It
@@ -993,6 +1012,21 @@ AcpiDbCommandDispatch (
Status = AcpiDbFindNameInNamespace (AcpiGbl_DbArgs[1]);
break;
+ case CMD_FIELDS:
+
+ Status = AcpiUtStrtoul64 (AcpiGbl_DbArgs[1], &Temp64);
+
+ if (ACPI_FAILURE (Status) || Temp64 >= ACPI_NUM_PREDEFINED_REGIONS)
+ {
+ AcpiOsPrintf (
+ "Invalid adress space ID: must be between 0 and %u inclusive\n",
+ ACPI_NUM_PREDEFINED_REGIONS - 1);
+ return (AE_OK);
+ }
+
+ Status = AcpiDbDisplayFields ((UINT32) Temp64);
+ break;
+
case CMD_GO:
AcpiGbl_CmSingleStep = FALSE;
@@ -1060,10 +1094,10 @@ AcpiDbCommandDispatch (
if (ParamCount == 0)
{
AcpiOsPrintf (
- "Current debug level for file output is: %8.8lX\n",
+ "Current debug level for file output is: %8.8X\n",
AcpiGbl_DbDebugLevel);
AcpiOsPrintf (
- "Current debug level for console output is: %8.8lX\n",
+ "Current debug level for console output is: %8.8X\n",
AcpiGbl_DbConsoleDebugLevel);
}
else if (ParamCount == 2)
@@ -1072,7 +1106,7 @@ AcpiDbCommandDispatch (
AcpiGbl_DbConsoleDebugLevel =
strtoul (AcpiGbl_DbArgs[1], NULL, 16);
AcpiOsPrintf (
- "Debug Level for console output was %8.8lX, now %8.8lX\n",
+ "Debug Level for console output was %8.8X, now %8.8X\n",
Temp, AcpiGbl_DbConsoleDebugLevel);
}
else
@@ -1080,7 +1114,7 @@ AcpiDbCommandDispatch (
Temp = AcpiGbl_DbDebugLevel;
AcpiGbl_DbDebugLevel = strtoul (AcpiGbl_DbArgs[1], NULL, 16);
AcpiOsPrintf (
- "Debug Level for file output was %8.8lX, now %8.8lX\n",
+ "Debug Level for file output was %8.8X, now %8.8X\n",
Temp, AcpiGbl_DbDebugLevel);
}
break;
diff --git a/sys/contrib/dev/acpica/components/debugger/dbmethod.c b/sys/contrib/dev/acpica/components/debugger/dbmethod.c
index 35dde07407ef..be9bd472a7e9 100644
--- a/sys/contrib/dev/acpica/components/debugger/dbmethod.c
+++ b/sys/contrib/dev/acpica/components/debugger/dbmethod.c
@@ -493,6 +493,11 @@ AcpiDbDisassembleMethod (
}
Status = AcpiUtAllocateOwnerId (&ObjDesc->Method.OwnerId);
+ if (ACPI_FAILURE(Status))
+ {
+ return (Status);
+ }
+
WalkState->OwnerId = ObjDesc->Method.OwnerId;
/* Push start scope on scope stack and make it current */
@@ -510,6 +515,11 @@ AcpiDbDisassembleMethod (
WalkState->ParseFlags |= ACPI_PARSE_DISASSEMBLE;
Status = AcpiPsParseAml (WalkState);
+ if (ACPI_FAILURE(Status))
+ {
+ return (Status);
+ }
+
(void) AcpiDmParseDeferredOps (Op);
/* Now we can disassemble the method */
diff --git a/sys/contrib/dev/acpica/components/debugger/dbnames.c b/sys/contrib/dev/acpica/components/debugger/dbnames.c
index be09156514b7..f44cb3e0b4bd 100644
--- a/sys/contrib/dev/acpica/components/debugger/dbnames.c
+++ b/sys/contrib/dev/acpica/components/debugger/dbnames.c
@@ -154,6 +154,7 @@
#include <contrib/dev/acpica/include/acnamesp.h>
#include <contrib/dev/acpica/include/acdebug.h>
#include <contrib/dev/acpica/include/acpredef.h>
+#include <contrib/dev/acpica/include/acinterp.h>
#define _COMPONENT ACPI_CA_DEBUGGER
@@ -724,6 +725,91 @@ AcpiDbWalkForObjectCounts (
/*******************************************************************************
*
+ * FUNCTION: AcpiDbWalkForFields
+ *
+ * PARAMETERS: Callback from WalkNamespace
+ *
+ * RETURN: Status
+ *
+ * DESCRIPTION: Display short info about objects in the namespace
+ *
+ ******************************************************************************/
+
+static ACPI_STATUS
+AcpiDbWalkForFields (
+ ACPI_HANDLE ObjHandle,
+ UINT32 NestingLevel,
+ void *Context,
+ void **ReturnValue)
+{
+ ACPI_OBJECT *RetValue;
+ ACPI_REGION_WALK_INFO *Info = (ACPI_REGION_WALK_INFO *) Context;
+ ACPI_BUFFER Buffer;
+ ACPI_STATUS Status;
+ ACPI_NAMESPACE_NODE *Node = AcpiNsValidateHandle (ObjHandle);
+
+
+ if (!Node)
+ {
+ return (AE_OK);
+ }
+ if (Node->Object->Field.RegionObj->Region.SpaceId != Info->AddressSpaceId)
+ {
+ return (AE_OK);
+ }
+
+ Info->Count++;
+
+ /* Get and display the full pathname to this object */
+
+ Buffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER;
+ Status = AcpiNsHandleToPathname (ObjHandle, &Buffer, TRUE);
+ if (ACPI_FAILURE (Status))
+ {
+ AcpiOsPrintf ("Could Not get pathname for object %p\n", ObjHandle);
+ return (AE_OK);
+ }
+
+ AcpiOsPrintf ("%s ", (char *) Buffer.Pointer);
+ ACPI_FREE (Buffer.Pointer);
+
+ Buffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER;
+ AcpiEvaluateObject (ObjHandle, NULL, NULL, &Buffer);
+
+ /*
+ * Since this is a field unit, surround the output in braces
+ */
+ AcpiOsPrintf ("{");
+
+ RetValue = (ACPI_OBJECT *) Buffer.Pointer;
+ switch (RetValue->Type)
+ {
+ case ACPI_TYPE_INTEGER:
+
+ AcpiOsPrintf ("%8.8X%8.8X", ACPI_FORMAT_UINT64 (RetValue->Integer.Value));
+ break;
+
+ case ACPI_TYPE_BUFFER:
+
+ AcpiUtDumpBuffer (RetValue->Buffer.Pointer,
+ RetValue->Buffer.Length, DB_DISPLAY_DATA_ONLY | DB_BYTE_DISPLAY, 0);
+ break;
+
+ default:
+
+ break;
+ }
+
+ AcpiOsPrintf ("}\n");
+
+ ACPI_FREE (Buffer.Pointer);
+ return (AE_OK);
+}
+
+
+
+/*******************************************************************************
+ *
* FUNCTION: AcpiDbWalkForSpecificObjects
*
* PARAMETERS: Callback from WalkNamespace
@@ -859,6 +945,42 @@ AcpiDbDisplayObjects (
/*******************************************************************************
*
+ * FUNCTION: AcpiDbDisplayFields
+ *
+ * PARAMETERS: ObjTypeArg - Type of object to display
+ * DisplayCountArg - Max depth to display
+ *
+ * RETURN: None
+ *
+ * DESCRIPTION: Display objects in the namespace of the requested type
+ *
+ ******************************************************************************/
+
+ACPI_STATUS
+AcpiDbDisplayFields (
+ UINT32 AddressSpaceId)
+{
+ ACPI_REGION_WALK_INFO Info;
+
+
+ Info.Count = 0;
+ Info.OwnerId = ACPI_OWNER_ID_MAX;
+ Info.DebugLevel = ACPI_UINT32_MAX;
+ Info.DisplayType = ACPI_DISPLAY_SUMMARY | ACPI_DISPLAY_SHORT;
+ Info.AddressSpaceId = AddressSpaceId;
+
+ /* Walk the namespace from the root */
+
+ (void) AcpiWalkNamespace (ACPI_TYPE_LOCAL_REGION_FIELD, ACPI_ROOT_OBJECT,
+ ACPI_UINT32_MAX, AcpiDbWalkForFields, NULL,
+ (void *) &Info, NULL);
+
+ return (AE_OK);
+}
+
+
+/*******************************************************************************
+ *
* FUNCTION: AcpiDbIntegrityWalk
*
* PARAMETERS: Callback from WalkNamespace
diff --git a/sys/contrib/dev/acpica/components/debugger/dbobject.c b/sys/contrib/dev/acpica/components/debugger/dbobject.c
index 841dde197120..d1e34f98cd6b 100644
--- a/sys/contrib/dev/acpica/components/debugger/dbobject.c
+++ b/sys/contrib/dev/acpica/components/debugger/dbobject.c
@@ -567,7 +567,6 @@ AcpiDbDecodeLocals (
Node = WalkState->MethodNode;
- ObjDesc = WalkState->MethodDesc;
/* There are no locals for the module-level code case */
@@ -650,7 +649,6 @@ AcpiDbDecodeArguments (
Node = WalkState->MethodNode;
- ObjDesc = WalkState->MethodDesc;
/* There are no arguments for the module-level code case */
diff --git a/sys/contrib/dev/acpica/components/debugger/dbstats.c b/sys/contrib/dev/acpica/components/debugger/dbstats.c
index 469d85991ce0..a3ceb86c5c84 100644
--- a/sys/contrib/dev/acpica/components/debugger/dbstats.c
+++ b/sys/contrib/dev/acpica/components/debugger/dbstats.c
@@ -544,14 +544,14 @@ AcpiDbDisplayStatistics (
for (i = 0; i < ACPI_TYPE_NS_NODE_MAX; i++)
{
- AcpiOsPrintf ("%16.16s % 10ld% 10ld\n", AcpiUtGetTypeName (i),
+ AcpiOsPrintf ("%16.16s %10u %10u\n", AcpiUtGetTypeName (i),
AcpiGbl_NodeTypeCount [i], AcpiGbl_ObjTypeCount [i]);
}
- AcpiOsPrintf ("%16.16s % 10ld% 10ld\n", "Misc/Unknown",
+ AcpiOsPrintf ("%16.16s %10u %10u\n", "Misc/Unknown",
AcpiGbl_NodeTypeCountMisc, AcpiGbl_ObjTypeCountMisc);
- AcpiOsPrintf ("%16.16s % 10ld% 10ld\n", "TOTALS:",
+ AcpiOsPrintf ("%16.16s %10u %10u\n", "TOTALS:",
AcpiGbl_NumNodes, AcpiGbl_NumObjects);
break;
@@ -577,17 +577,15 @@ AcpiDbDisplayStatistics (
case CMD_STAT_MISC:
AcpiOsPrintf ("\nMiscellaneous Statistics:\n\n");
- AcpiOsPrintf ("Calls to AcpiPsFind:.. ........% 7ld\n",
+ AcpiOsPrintf ("%-28s: %7u\n", "Calls to AcpiPsFind",
AcpiGbl_PsFindCount);
- AcpiOsPrintf ("Calls to AcpiNsLookup:..........% 7ld\n",
+ AcpiOsPrintf ("%-28s: %7u\n", "Calls to AcpiNsLookup",
AcpiGbl_NsLookupCount);
- AcpiOsPrintf ("\n");
-
- AcpiOsPrintf ("Mutex usage:\n\n");
+ AcpiOsPrintf ("\nMutex usage:\n\n");
for (i = 0; i < ACPI_NUM_MUTEX; i++)
{
- AcpiOsPrintf ("%-28s: % 7ld\n",
+ AcpiOsPrintf ("%-28s: %7u\n",
AcpiUtGetMutexName (i), AcpiGbl_MutexInfo[i].UseCount);
}
break;
@@ -596,50 +594,50 @@ AcpiDbDisplayStatistics (
AcpiOsPrintf ("\nInternal object sizes:\n\n");
- AcpiOsPrintf ("Common %3d\n", sizeof (ACPI_OBJECT_COMMON));
- AcpiOsPrintf ("Number %3d\n", sizeof (ACPI_OBJECT_INTEGER));
- AcpiOsPrintf ("String %3d\n", sizeof (ACPI_OBJECT_STRING));
- AcpiOsPrintf ("Buffer %3d\n", sizeof (ACPI_OBJECT_BUFFER));
- AcpiOsPrintf ("Package %3d\n", sizeof (ACPI_OBJECT_PACKAGE));
- AcpiOsPrintf ("BufferField %3d\n", sizeof (ACPI_OBJECT_BUFFER_FIELD));
- AcpiOsPrintf ("Device %3d\n", sizeof (ACPI_OBJECT_DEVICE));
- AcpiOsPrintf ("Event %3d\n", sizeof (ACPI_OBJECT_EVENT));
- AcpiOsPrintf ("Method %3d\n", sizeof (ACPI_OBJECT_METHOD));
- AcpiOsPrintf ("Mutex %3d\n", sizeof (ACPI_OBJECT_MUTEX));
- AcpiOsPrintf ("Region %3d\n", sizeof (ACPI_OBJECT_REGION));
- AcpiOsPrintf ("PowerResource %3d\n", sizeof (ACPI_OBJECT_POWER_RESOURCE));
- AcpiOsPrintf ("Processor %3d\n", sizeof (ACPI_OBJECT_PROCESSOR));
- AcpiOsPrintf ("ThermalZone %3d\n", sizeof (ACPI_OBJECT_THERMAL_ZONE));
- AcpiOsPrintf ("RegionField %3d\n", sizeof (ACPI_OBJECT_REGION_FIELD));
- AcpiOsPrintf ("BankField %3d\n", sizeof (ACPI_OBJECT_BANK_FIELD));
- AcpiOsPrintf ("IndexField %3d\n", sizeof (ACPI_OBJECT_INDEX_FIELD));
- AcpiOsPrintf ("Reference %3d\n", sizeof (ACPI_OBJECT_REFERENCE));
- AcpiOsPrintf ("Notify %3d\n", sizeof (ACPI_OBJECT_NOTIFY_HANDLER));
- AcpiOsPrintf ("AddressSpace %3d\n", sizeof (ACPI_OBJECT_ADDR_HANDLER));
- AcpiOsPrintf ("Extra %3d\n", sizeof (ACPI_OBJECT_EXTRA));
- AcpiOsPrintf ("Data %3d\n", sizeof (ACPI_OBJECT_DATA));
+ AcpiOsPrintf ("Common %3d\n", (UINT32) sizeof (ACPI_OBJECT_COMMON));
+ AcpiOsPrintf ("Number %3d\n", (UINT32) sizeof (ACPI_OBJECT_INTEGER));
+ AcpiOsPrintf ("String %3d\n", (UINT32) sizeof (ACPI_OBJECT_STRING));
+ AcpiOsPrintf ("Buffer %3d\n", (UINT32) sizeof (ACPI_OBJECT_BUFFER));
+ AcpiOsPrintf ("Package %3d\n", (UINT32) sizeof (ACPI_OBJECT_PACKAGE));
+ AcpiOsPrintf ("BufferField %3d\n", (UINT32) sizeof (ACPI_OBJECT_BUFFER_FIELD));
+ AcpiOsPrintf ("Device %3d\n", (UINT32) sizeof (ACPI_OBJECT_DEVICE));
+ AcpiOsPrintf ("Event %3d\n", (UINT32) sizeof (ACPI_OBJECT_EVENT));
+ AcpiOsPrintf ("Method %3d\n", (UINT32) sizeof (ACPI_OBJECT_METHOD));
+ AcpiOsPrintf ("Mutex %3d\n", (UINT32) sizeof (ACPI_OBJECT_MUTEX));
+ AcpiOsPrintf ("Region %3d\n", (UINT32) sizeof (ACPI_OBJECT_REGION));
+ AcpiOsPrintf ("PowerResource %3d\n", (UINT32) sizeof (ACPI_OBJECT_POWER_RESOURCE));
+ AcpiOsPrintf ("Processor %3d\n", (UINT32) sizeof (ACPI_OBJECT_PROCESSOR));
+ AcpiOsPrintf ("ThermalZone %3d\n", (UINT32) sizeof (ACPI_OBJECT_THERMAL_ZONE));
+ AcpiOsPrintf ("RegionField %3d\n", (UINT32) sizeof (ACPI_OBJECT_REGION_FIELD));
+ AcpiOsPrintf ("BankField %3d\n", (UINT32) sizeof (ACPI_OBJECT_BANK_FIELD));
+ AcpiOsPrintf ("IndexField %3d\n", (UINT32) sizeof (ACPI_OBJECT_INDEX_FIELD));
+ AcpiOsPrintf ("Reference %3d\n", (UINT32) sizeof (ACPI_OBJECT_REFERENCE));
+ AcpiOsPrintf ("Notify %3d\n", (UINT32) sizeof (ACPI_OBJECT_NOTIFY_HANDLER));
+ AcpiOsPrintf ("AddressSpace %3d\n", (UINT32) sizeof (ACPI_OBJECT_ADDR_HANDLER));
+ AcpiOsPrintf ("Extra %3d\n", (UINT32) sizeof (ACPI_OBJECT_EXTRA));
+ AcpiOsPrintf ("Data %3d\n", (UINT32) sizeof (ACPI_OBJECT_DATA));
AcpiOsPrintf ("\n");
- AcpiOsPrintf ("ParseObject %3d\n", sizeof (ACPI_PARSE_OBJ_COMMON));
- AcpiOsPrintf ("ParseObjectNamed %3d\n", sizeof (ACPI_PARSE_OBJ_NAMED));
- AcpiOsPrintf ("ParseObjectAsl %3d\n", sizeof (ACPI_PARSE_OBJ_ASL));
- AcpiOsPrintf ("OperandObject %3d\n", sizeof (ACPI_OPERAND_OBJECT));
- AcpiOsPrintf ("NamespaceNode %3d\n", sizeof (ACPI_NAMESPACE_NODE));
- AcpiOsPrintf ("AcpiObject %3d\n", sizeof (ACPI_OBJECT));
+ AcpiOsPrintf ("ParseObject %3d\n", (UINT32) sizeof (ACPI_PARSE_OBJ_COMMON));
+ AcpiOsPrintf ("ParseObjectNamed %3d\n", (UINT32) sizeof (ACPI_PARSE_OBJ_NAMED));
+ AcpiOsPrintf ("ParseObjectAsl %3d\n", (UINT32) sizeof (ACPI_PARSE_OBJ_ASL));
+ AcpiOsPrintf ("OperandObject %3d\n", (UINT32) sizeof (ACPI_OPERAND_OBJECT));
+ AcpiOsPrintf ("NamespaceNode %3d\n", (UINT32) sizeof (ACPI_NAMESPACE_NODE));
+ AcpiOsPrintf ("AcpiObject %3d\n", (UINT32) sizeof (ACPI_OBJECT));
AcpiOsPrintf ("\n");
- AcpiOsPrintf ("Generic State %3d\n", sizeof (ACPI_GENERIC_STATE));
- AcpiOsPrintf ("Common State %3d\n", sizeof (ACPI_COMMON_STATE));
- AcpiOsPrintf ("Control State %3d\n", sizeof (ACPI_CONTROL_STATE));
- AcpiOsPrintf ("Update State %3d\n", sizeof (ACPI_UPDATE_STATE));
- AcpiOsPrintf ("Scope State %3d\n", sizeof (ACPI_SCOPE_STATE));
- AcpiOsPrintf ("Parse Scope %3d\n", sizeof (ACPI_PSCOPE_STATE));
- AcpiOsPrintf ("Package State %3d\n", sizeof (ACPI_PKG_STATE));
- AcpiOsPrintf ("Thread State %3d\n", sizeof (ACPI_THREAD_STATE));
- AcpiOsPrintf ("Result Values %3d\n", sizeof (ACPI_RESULT_VALUES));
- AcpiOsPrintf ("Notify Info %3d\n", sizeof (ACPI_NOTIFY_INFO));
+ AcpiOsPrintf ("Generic State %3d\n", (UINT32) sizeof (ACPI_GENERIC_STATE));
+ AcpiOsPrintf ("Common State %3d\n", (UINT32) sizeof (ACPI_COMMON_STATE));
+ AcpiOsPrintf ("Control State %3d\n", (UINT32) sizeof (ACPI_CONTROL_STATE));
+ AcpiOsPrintf ("Update State %3d\n", (UINT32) sizeof (ACPI_UPDATE_STATE));
+ AcpiOsPrintf ("Scope State %3d\n", (UINT32) sizeof (ACPI_SCOPE_STATE));
+ AcpiOsPrintf ("Parse Scope %3d\n", (UINT32) sizeof (ACPI_PSCOPE_STATE));
+ AcpiOsPrintf ("Package State %3d\n", (UINT32) sizeof (ACPI_PKG_STATE));
+ AcpiOsPrintf ("Thread State %3d\n", (UINT32) sizeof (ACPI_THREAD_STATE));
+ AcpiOsPrintf ("Result Values %3d\n", (UINT32) sizeof (ACPI_RESULT_VALUES));
+ AcpiOsPrintf ("Notify Info %3d\n", (UINT32) sizeof (ACPI_NOTIFY_INFO));
break;
case CMD_STAT_STACK:
diff --git a/sys/contrib/dev/acpica/components/disassembler/dmdeferred.c b/sys/contrib/dev/acpica/components/disassembler/dmdeferred.c
index f5ec6b2d9a13..f59c6b913bee 100644
--- a/sys/contrib/dev/acpica/components/disassembler/dmdeferred.c
+++ b/sys/contrib/dev/acpica/components/disassembler/dmdeferred.c
@@ -309,6 +309,10 @@ AcpiDmDeferredParse (
WalkState->ParseFlags &= ~ACPI_PARSE_DELETE_TREE;
WalkState->ParseFlags |= ACPI_PARSE_DISASSEMBLE;
Status = AcpiPsParseAml (WalkState);
+ if (ACPI_FAILURE (Status))
+ {
+ return_ACPI_STATUS(Status);
+ }
StartOp = (Op->Common.Value.Arg)->Common.Next;
SearchOp = StartOp;
diff --git a/sys/contrib/dev/acpica/components/disassembler/dmresrc.c b/sys/contrib/dev/acpica/components/disassembler/dmresrc.c
index 93e6d292e8ab..05d5f9eb5e51 100644
--- a/sys/contrib/dev/acpica/components/disassembler/dmresrc.c
+++ b/sys/contrib/dev/acpica/components/disassembler/dmresrc.c
@@ -441,7 +441,6 @@ AcpiDmResourceTemplate (
* missing EndDependentDescriptor.
*/
Level--;
- DependentFns = FALSE;
/* Go ahead and insert EndDependentFn() */
diff --git a/sys/contrib/dev/acpica/components/disassembler/dmwalk.c b/sys/contrib/dev/acpica/components/disassembler/dmwalk.c
index 5f01f2ae3c9a..f6b0c0871ad4 100644
--- a/sys/contrib/dev/acpica/components/disassembler/dmwalk.c
+++ b/sys/contrib/dev/acpica/components/disassembler/dmwalk.c
@@ -957,7 +957,6 @@ AcpiDmDescendingOp (
* the buffer size Op. Open up a new block
*/
NextOp->Common.DisasmFlags |= ACPI_PARSEOP_IGNORE;
- NextOp = NextOp->Common.Next;
ASL_CV_CLOSE_PAREN (Op, Level);
/* Emit description comment for Name() with a predefined ACPI name */
diff --git a/sys/contrib/dev/acpica/components/dispatcher/dscontrol.c b/sys/contrib/dev/acpica/components/dispatcher/dscontrol.c
index ede9427f0a19..b37eaf7a239d 100644
--- a/sys/contrib/dev/acpica/components/dispatcher/dscontrol.c
+++ b/sys/contrib/dev/acpica/components/dispatcher/dscontrol.c
@@ -235,7 +235,7 @@ AcpiDsExecBeginControlOp (
ControlState->Control.Opcode =
Op->Common.AmlOpcode;
ControlState->Control.LoopTimeout = AcpiOsGetTimer () +
- (UINT64) (AcpiGbl_MaxLoopIterations * ACPI_100NSEC_PER_SEC);
+ ((UINT64) AcpiGbl_MaxLoopIterations * ACPI_100NSEC_PER_SEC);
/* Push the control state on this walk's control stack */
diff --git a/sys/contrib/dev/acpica/components/dispatcher/dsfield.c b/sys/contrib/dev/acpica/components/dispatcher/dsfield.c
index d3b5c8597f38..7df13832e268 100644
--- a/sys/contrib/dev/acpica/components/dispatcher/dsfield.c
+++ b/sys/contrib/dev/acpica/components/dispatcher/dsfield.c
@@ -309,7 +309,6 @@ AcpiDsCreateBufferField (
if (WalkState->DeferredNode)
{
Node = WalkState->DeferredNode;
- Status = AE_OK;
}
else
{
@@ -435,7 +434,6 @@ AcpiDsGetFieldNames (
ACPI_PARSE_OBJECT *Child;
#if !defined(ACPI_DB_APP) && defined(ACPI_EXEC_APP)
- UINT64 Value = 0;
ACPI_OPERAND_OBJECT *ResultDesc;
ACPI_OPERAND_OBJECT *ObjDesc;
char *NamePath;
@@ -577,14 +575,13 @@ AcpiDsGetFieldNames (
}
#if !defined(ACPI_DB_APP) && defined(ACPI_EXEC_APP)
NamePath = AcpiNsGetExternalPathname (Info->FieldNode);
- ObjDesc = AcpiUtCreateIntegerObject (Value);
- if (ACPI_SUCCESS (AeLookupInitFileEntry (NamePath, &Value)))
+ if (ACPI_SUCCESS (AeLookupInitFileEntry (NamePath, &ObjDesc)))
{
AcpiExWriteDataToField (ObjDesc,
AcpiNsGetAttachedObject (Info->FieldNode),
&ResultDesc);
+ AcpiUtRemoveReference (ObjDesc);
}
- AcpiUtRemoveReference (ObjDesc);
ACPI_FREE (NamePath);
#endif
}
@@ -813,8 +810,6 @@ AcpiDsInitFieldObjects (
}
/* Name already exists, just ignore this error */
-
- Status = AE_OK;
}
Arg->Common.Node = Node;
diff --git a/sys/contrib/dev/acpica/components/events/evgpe.c b/sys/contrib/dev/acpica/components/events/evgpe.c
index 6b0791987468..b9e79a769f7e 100644
--- a/sys/contrib/dev/acpica/components/events/evgpe.c
+++ b/sys/contrib/dev/acpica/components/events/evgpe.c
@@ -848,6 +848,15 @@ AcpiEvDetectGpe (
Flags = AcpiOsAcquireLock (AcpiGbl_GpeLock);
+ if (!GpeEventInfo)
+ {
+ GpeEventInfo = AcpiEvGetGpeEventInfo (GpeDevice, GpeNumber);
+ if (!GpeEventInfo)
+ {
+ goto ErrorExit;
+ }
+ }
+
/* Get the info block for the entire GPE register */
GpeRegisterInfo = GpeEventInfo->RegisterInfo;
diff --git a/sys/contrib/dev/acpica/components/events/evgpeblk.c b/sys/contrib/dev/acpica/components/events/evgpeblk.c
index d7f1e860ed66..b0417bf5a437 100644
--- a/sys/contrib/dev/acpica/components/events/evgpeblk.c
+++ b/sys/contrib/dev/acpica/components/events/evgpeblk.c
@@ -272,6 +272,10 @@ AcpiEvDeleteGpeBlock (
/* Disable all GPEs in this block */
Status = AcpiHwDisableGpeBlock (GpeBlock->XruptBlock, GpeBlock, NULL);
+ if (ACPI_FAILURE (Status))
+ {
+ return_ACPI_STATUS (Status);
+ }
if (!GpeBlock->Previous && !GpeBlock->Next)
{
@@ -542,7 +546,7 @@ AcpiEvCreateGpeBlock (
WalkInfo.GpeDevice = GpeDevice;
WalkInfo.ExecuteByOwnerId = FALSE;
- Status = AcpiNsWalkNamespace (ACPI_TYPE_METHOD, GpeDevice,
+ (void) AcpiNsWalkNamespace (ACPI_TYPE_METHOD, GpeDevice,
ACPI_UINT32_MAX, ACPI_NS_WALK_NO_UNLOCK,
AcpiEvMatchGpeMethod, NULL, &WalkInfo, NULL);
diff --git a/sys/contrib/dev/acpica/components/events/evgpeinit.c b/sys/contrib/dev/acpica/components/events/evgpeinit.c
index c8102b97edd4..098ce43f91b8 100644
--- a/sys/contrib/dev/acpica/components/events/evgpeinit.c
+++ b/sys/contrib/dev/acpica/components/events/evgpeinit.c
@@ -302,8 +302,6 @@ AcpiEvGpeInitialize (
* GPE0 and GPE1 do not have to be contiguous in the GPE number
* space. However, GPE0 always starts at GPE number zero.
*/
- GpeNumberMax = AcpiGbl_FADT.Gpe1Base +
- ((RegisterCount1 * ACPI_GPE_REGISTER_WIDTH) - 1);
}
}
@@ -315,7 +313,6 @@ AcpiEvGpeInitialize (
ACPI_DEBUG_PRINT ((ACPI_DB_INIT,
"There are no GPE blocks defined in the FADT\n"));
- Status = AE_OK;
goto Cleanup;
}
diff --git a/sys/contrib/dev/acpica/components/events/evmisc.c b/sys/contrib/dev/acpica/components/events/evmisc.c
index a72b3b532777..c23eaccc5007 100644
--- a/sys/contrib/dev/acpica/components/events/evmisc.c
+++ b/sys/contrib/dev/acpica/components/events/evmisc.c
@@ -400,11 +400,16 @@ AcpiEvTerminate (
/* Disable all GPEs in all GPE blocks */
Status = AcpiEvWalkGpeList (AcpiHwDisableGpeBlock, NULL);
+ if (ACPI_FAILURE (Status))
+ {
+ ACPI_EXCEPTION ((AE_INFO, Status,
+ "Could not disable GPEs in GPE block"));
+ }
Status = AcpiEvRemoveGlobalLockHandler ();
- if (ACPI_FAILURE(Status))
+ if (ACPI_FAILURE (Status))
{
- ACPI_ERROR ((AE_INFO,
+ ACPI_EXCEPTION ((AE_INFO, Status,
"Could not remove Global Lock handler"));
}
@@ -414,7 +419,7 @@ AcpiEvTerminate (
/* Remove SCI handlers */
Status = AcpiEvRemoveAllSciHandlers ();
- if (ACPI_FAILURE(Status))
+ if (ACPI_FAILURE (Status))
{
ACPI_ERROR ((AE_INFO,
"Could not remove SCI handler"));
@@ -423,6 +428,12 @@ AcpiEvTerminate (
/* Deallocate all handler objects installed within GPE info structs */
Status = AcpiEvWalkGpeList (AcpiEvDeleteGpeHandlers, NULL);
+ if (ACPI_FAILURE (Status))
+ {
+ ACPI_EXCEPTION ((AE_INFO, Status,
+ "Could not delete GPE handlers"));
+ }
+
/* Return to original mode if necessary */
diff --git a/sys/contrib/dev/acpica/components/events/evregion.c b/sys/contrib/dev/acpica/components/events/evregion.c
index 2ada439b0ff0..91d92f9f2e82 100644
--- a/sys/contrib/dev/acpica/components/events/evregion.c
+++ b/sys/contrib/dev/acpica/components/events/evregion.c
@@ -1037,11 +1037,11 @@ AcpiEvOrphanEcRegMethod (
Objects[1].Type = ACPI_TYPE_INTEGER;
Objects[1].Integer.Value = ACPI_REG_CONNECT;
- Status = AcpiEvaluateObject (RegMethod, NULL, &Args, NULL);
+ (void) AcpiEvaluateObject (RegMethod, NULL, &Args, NULL);
Exit:
/* We ignore all errors from above, don't care */
- Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE);
+ (void) AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE);
return_VOID;
}
diff --git a/sys/contrib/dev/acpica/components/events/evrgnini.c b/sys/contrib/dev/acpica/components/events/evrgnini.c
index 5f28efaabdb3..c9d8f71bdf29 100644
--- a/sys/contrib/dev/acpica/components/events/evrgnini.c
+++ b/sys/contrib/dev/acpica/components/events/evrgnini.c
@@ -363,7 +363,6 @@ AcpiEvPciConfigRegionSetup (
* root bridge. Still need to return a context object
* for the new PCI_Config operation region, however.
*/
- Status = AE_OK;
}
else
{
diff --git a/sys/contrib/dev/acpica/components/events/evxfgpe.c b/sys/contrib/dev/acpica/components/events/evxfgpe.c
index 7519c8bbfe86..284a191a97c1 100644
--- a/sys/contrib/dev/acpica/components/events/evxfgpe.c
+++ b/sys/contrib/dev/acpica/components/events/evxfgpe.c
@@ -877,6 +877,33 @@ ACPI_EXPORT_SYMBOL (AcpiGetGpeStatus)
/*******************************************************************************
*
+ * FUNCTION: AcpiDispatchGpe
+ *
+ * PARAMETERS: GpeDevice - Parent GPE Device. NULL for GPE0/GPE1
+ * GpeNumber - GPE level within the GPE block
+ *
+ * RETURN: INTERRUPT_HANDLED or INTERRUPT_NOT_HANDLED
+ *
+ * DESCRIPTION: Detect and dispatch a General Purpose Event to either a function
+ * (e.g. EC) or method (e.g. _Lxx/_Exx) handler.
+ *
+ ******************************************************************************/
+
+UINT32
+AcpiDispatchGpe(
+ ACPI_HANDLE GpeDevice,
+ UINT32 GpeNumber)
+{
+ ACPI_FUNCTION_TRACE(acpi_dispatch_gpe);
+
+ return (AcpiEvDetectGpe (GpeDevice, NULL, GpeNumber));
+}
+
+ACPI_EXPORT_SYMBOL (AcpiDispatchGpe)
+
+
+/*******************************************************************************
+ *
* FUNCTION: AcpiFinishGpe
*
* PARAMETERS: GpeDevice - Namespace node for the GPE Block
diff --git a/sys/contrib/dev/acpica/components/executer/exdump.c b/sys/contrib/dev/acpica/components/executer/exdump.c
index 5a423228d374..c0aa6303ba93 100644
--- a/sys/contrib/dev/acpica/components/executer/exdump.c
+++ b/sys/contrib/dev/acpica/components/executer/exdump.c
@@ -255,7 +255,7 @@ static ACPI_EXDUMP_INFO AcpiExDumpMethod[9] =
{ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Method.ParamCount), "Parameter Count"},
{ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Method.SyncLevel), "Sync Level"},
{ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Method.Mutex), "Mutex"},
- {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Method.OwnerId), "Owner Id"},
+ {ACPI_EXD_UINT16, ACPI_EXD_OFFSET (Method.OwnerId), "Owner Id"},
{ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Method.ThreadCount), "Thread Count"},
{ACPI_EXD_UINT32, ACPI_EXD_OFFSET (Method.AmlLength), "Aml Length"},
{ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Method.AmlStart), "Aml Start"}
@@ -422,8 +422,8 @@ static ACPI_EXDUMP_INFO AcpiExDumpFieldCommon[7] =
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_UINT16, ACPI_EXD_NSOFFSET (Flags), "Flags"},
+ {ACPI_EXD_UINT16, ACPI_EXD_NSOFFSET (OwnerId), "Owner Id"},
{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"},
diff --git a/sys/contrib/dev/acpica/components/hardware/hwxfsleep.c b/sys/contrib/dev/acpica/components/hardware/hwxfsleep.c
index 06be83daf39a..6a67c5ff0f3a 100644
--- a/sys/contrib/dev/acpica/components/hardware/hwxfsleep.c
+++ b/sys/contrib/dev/acpica/components/hardware/hwxfsleep.c
@@ -357,6 +357,10 @@ AcpiEnterSleepStateS4bios (
Status = AcpiHwWritePort (AcpiGbl_FADT.SmiCommand,
(UINT32) AcpiGbl_FADT.S4BiosRequest, 8);
+ if (ACPI_FAILURE (Status))
+ {
+ return_ACPI_STATUS (Status);
+ }
do {
AcpiOsStall (ACPI_USEC_PER_MSEC);
diff --git a/sys/contrib/dev/acpica/components/namespace/nsaccess.c b/sys/contrib/dev/acpica/components/namespace/nsaccess.c
index 843705a5f23f..62e4dfaeeebf 100644
--- a/sys/contrib/dev/acpica/components/namespace/nsaccess.c
+++ b/sys/contrib/dev/acpica/components/namespace/nsaccess.c
@@ -767,7 +767,7 @@ AcpiNsLookup (
if (Flags & ACPI_NS_PREFIX_MUST_EXIST)
{
AcpiOsPrintf (ACPI_MSG_BIOS_ERROR
- "Object does not exist: %4.4s\n", &SimpleName);
+ "Object does not exist: %4.4s\n", (char *) &SimpleName);
}
#endif
/* Name not found in ACPI namespace */
diff --git a/sys/contrib/dev/acpica/components/namespace/nsalloc.c b/sys/contrib/dev/acpica/components/namespace/nsalloc.c
index 2fa9e1304bc4..4ea35cdd21ec 100644
--- a/sys/contrib/dev/acpica/components/namespace/nsalloc.c
+++ b/sys/contrib/dev/acpica/components/namespace/nsalloc.c
@@ -423,7 +423,7 @@ AcpiNsInstallNode (
Node->Type = (UINT8) Type;
ACPI_DEBUG_PRINT ((ACPI_DB_NAMES,
- "%4.4s (%s) [Node %p Owner %X] added to %4.4s (%s) [Node %p]\n",
+ "%4.4s (%s) [Node %p Owner %3.3X] added to %4.4s (%s) [Node %p]\n",
AcpiUtGetNodeName (Node), AcpiUtGetTypeName (Node->Type), Node, OwnerId,
AcpiUtGetNodeName (ParentNode), AcpiUtGetTypeName (ParentNode->Type),
ParentNode));
diff --git a/sys/contrib/dev/acpica/components/namespace/nsconvert.c b/sys/contrib/dev/acpica/components/namespace/nsconvert.c
index 2ee85074c7fe..6a223f58ec02 100644
--- a/sys/contrib/dev/acpica/components/namespace/nsconvert.c
+++ b/sys/contrib/dev/acpica/components/namespace/nsconvert.c
@@ -670,5 +670,5 @@ AcpiNsConvertToReference (
ErrorExit:
ACPI_FREE (Name);
*ReturnObject = NewObject;
- return (AE_OK);
+ return (Status);
}
diff --git a/sys/contrib/dev/acpica/components/namespace/nsdump.c b/sys/contrib/dev/acpica/components/namespace/nsdump.c
index 19524c4c21a6..5eda2df9fa7b 100644
--- a/sys/contrib/dev/acpica/components/namespace/nsdump.c
+++ b/sys/contrib/dev/acpica/components/namespace/nsdump.c
@@ -381,7 +381,7 @@ AcpiNsDumpOneObject (
/* Now we can print out the pertinent information */
- AcpiOsPrintf (" %-12s %p %2.2X ",
+ AcpiOsPrintf (" %-12s %p %3.3X ",
AcpiUtGetTypeName (Type), ThisNode, ThisNode->OwnerId);
DbgLevel = AcpiDbgLevel;
@@ -478,7 +478,7 @@ AcpiNsDumpOneObject (
AcpiOsPrintf (" =");
for (i = 0; (i < ObjDesc->Buffer.Length && i < 12); i++)
{
- AcpiOsPrintf (" %.2hX", ObjDesc->Buffer.Pointer[i]);
+ AcpiOsPrintf (" %2.2X", ObjDesc->Buffer.Pointer[i]);
}
}
AcpiOsPrintf ("\n");
@@ -575,7 +575,7 @@ AcpiNsDumpOneObject (
case ACPI_TYPE_LOCAL_BANK_FIELD:
case ACPI_TYPE_LOCAL_INDEX_FIELD:
- AcpiOsPrintf (" Off %.3X Len %.2X Acc %.2hd\n",
+ AcpiOsPrintf (" Off %.3X Len %.2X Acc %.2X\n",
(ObjDesc->CommonField.BaseByteOffset * 8)
+ ObjDesc->CommonField.StartFieldBitOffset,
ObjDesc->CommonField.BitLength,
@@ -760,8 +760,6 @@ AcpiNsDumpOneObject (
goto Cleanup;
}
-
- ObjType = ACPI_TYPE_INVALID; /* Terminate loop after next pass */
}
Cleanup:
diff --git a/sys/contrib/dev/acpica/components/namespace/nsrepair2.c b/sys/contrib/dev/acpica/components/namespace/nsrepair2.c
index 1e65f100eeb3..84801ec377d7 100644
--- a/sys/contrib/dev/acpica/components/namespace/nsrepair2.c
+++ b/sys/contrib/dev/acpica/components/namespace/nsrepair2.c
@@ -289,7 +289,7 @@ static const ACPI_REPAIR_INFO AcpiNsRepairableNames[] =
#define ACPI_FDE_FIELD_COUNT 5
#define ACPI_FDE_BYTE_BUFFER_SIZE 5
-#define ACPI_FDE_DWORD_BUFFER_SIZE (ACPI_FDE_FIELD_COUNT * sizeof (UINT32))
+#define ACPI_FDE_DWORD_BUFFER_SIZE (ACPI_FDE_FIELD_COUNT * (UINT32) sizeof (UINT32))
/******************************************************************************
diff --git a/sys/contrib/dev/acpica/components/namespace/nsxfname.c b/sys/contrib/dev/acpica/components/namespace/nsxfname.c
index 62eb0afd46c4..229d91d29e54 100644
--- a/sys/contrib/dev/acpica/components/namespace/nsxfname.c
+++ b/sys/contrib/dev/acpica/components/namespace/nsxfname.c
@@ -611,7 +611,7 @@ AcpiGetObjectInfo (
if (Cls)
{
- NextIdString = AcpiNsCopyDeviceId (&Info->ClassCode,
+ (void) AcpiNsCopyDeviceId (&Info->ClassCode,
Cls, NextIdString);
}
diff --git a/sys/contrib/dev/acpica/components/parser/psobject.c b/sys/contrib/dev/acpica/components/parser/psobject.c
index 2a100d639bfe..7a4eca14dadf 100644
--- a/sys/contrib/dev/acpica/components/parser/psobject.c
+++ b/sys/contrib/dev/acpica/components/parser/psobject.c
@@ -652,7 +652,7 @@ AcpiPsCompleteOp (
WalkState->Opcode = (*Op)->Common.AmlOpcode;
Status = WalkState->AscendingCallback (WalkState);
- Status = AcpiPsNextParseState (WalkState, *Op, Status);
+ (void) AcpiPsNextParseState (WalkState, *Op, Status);
Status2 = AcpiPsCompleteThisOp (WalkState, *Op);
if (ACPI_FAILURE (Status2))
@@ -661,7 +661,6 @@ AcpiPsCompleteOp (
}
}
- Status = AE_OK;
break;
case AE_CTRL_BREAK:
@@ -682,7 +681,7 @@ AcpiPsCompleteOp (
WalkState->Opcode = (*Op)->Common.AmlOpcode;
Status = WalkState->AscendingCallback (WalkState);
- Status = AcpiPsNextParseState (WalkState, *Op, Status);
+ (void) AcpiPsNextParseState (WalkState, *Op, Status);
Status2 = AcpiPsCompleteThisOp (WalkState, *Op);
if (ACPI_FAILURE (Status2))
@@ -690,7 +689,6 @@ AcpiPsCompleteOp (
return_ACPI_STATUS (Status2);
}
- Status = AE_OK;
break;
case AE_CTRL_TERMINATE:
diff --git a/sys/contrib/dev/acpica/components/resources/rscreate.c b/sys/contrib/dev/acpica/components/resources/rscreate.c
index ae388e593bef..ea1b5639c379 100644
--- a/sys/contrib/dev/acpica/components/resources/rscreate.c
+++ b/sys/contrib/dev/acpica/components/resources/rscreate.c
@@ -481,6 +481,10 @@ AcpiRsCreatePciRoutingTable (
Status = AcpiNsHandleToPathname (
(ACPI_HANDLE) Node, &PathBuffer, FALSE);
+ if (ACPI_FAILURE (Status))
+ {
+ return_ACPI_STATUS (Status);
+ }
/* +1 to include null terminator */
diff --git a/sys/contrib/dev/acpica/components/tables/tbdata.c b/sys/contrib/dev/acpica/components/tables/tbdata.c
index 8e8e2a808ac2..adb92bf586e4 100644
--- a/sys/contrib/dev/acpica/components/tables/tbdata.c
+++ b/sys/contrib/dev/acpica/components/tables/tbdata.c
@@ -973,6 +973,7 @@ AcpiTbDeleteNamespaceByOwner (
{
return_ACPI_STATUS (Status);
}
+
AcpiNsDeleteNamespaceByOwner (OwnerId);
AcpiUtReleaseWriteLock (&AcpiGbl_NamespaceRwLock);
return_ACPI_STATUS (Status);
@@ -1189,6 +1190,10 @@ AcpiTbLoadTable (
}
Status = AcpiNsLoadTable (TableIndex, ParentNode);
+ if (ACPI_FAILURE (Status))
+ {
+ return_ACPI_STATUS (Status);
+ }
/*
* Update GPEs for any new _Lxx/_Exx methods. Ignore errors. The host is
diff --git a/sys/contrib/dev/acpica/components/tables/tbxfload.c b/sys/contrib/dev/acpica/components/tables/tbxfload.c
index 1fb867565664..1f2a1bf5ba98 100644
--- a/sys/contrib/dev/acpica/components/tables/tbxfload.c
+++ b/sys/contrib/dev/acpica/components/tables/tbxfload.c
@@ -445,6 +445,8 @@ ACPI_EXPORT_SYMBOL_INIT (AcpiInstallTable)
*
* PARAMETERS: Table - Pointer to a buffer containing the ACPI
* table to be loaded.
+ * TableIdx - Pointer to a UINT32 for storing the table
+ * index, might be NULL
*
* RETURN: Status
*
@@ -458,7 +460,8 @@ ACPI_EXPORT_SYMBOL_INIT (AcpiInstallTable)
ACPI_STATUS
AcpiLoadTable (
- ACPI_TABLE_HEADER *Table)
+ ACPI_TABLE_HEADER *Table,
+ UINT32 *TableIdx)
{
ACPI_STATUS Status;
UINT32 TableIndex;
@@ -479,6 +482,11 @@ AcpiLoadTable (
ACPI_INFO (("Host-directed Dynamic ACPI Table Load:"));
Status = AcpiTbInstallAndLoadTable (ACPI_PTR_TO_PHYSADDR (Table),
ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL, FALSE, &TableIndex);
+ if (TableIdx)
+ {
+ *TableIdx = TableIndex;
+ }
+
if (ACPI_SUCCESS (Status))
{
/* Complete the initialization/resolution of new objects */
@@ -582,3 +590,42 @@ AcpiUnloadParentTable (
}
ACPI_EXPORT_SYMBOL (AcpiUnloadParentTable)
+
+
+/*******************************************************************************
+ *
+ * FUNCTION: AcpiUnloadTable
+ *
+ * PARAMETERS: TableIndex - Index as returned by AcpiLoadTable
+ *
+ * RETURN: Status
+ *
+ * DESCRIPTION: Via the TableIndex representing an SSDT or OEMx table, unloads
+ * the table and deletes all namespace objects associated with
+ * that table. Unloading of the DSDT is not allowed.
+ * Note: Mainly intended to support hotplug removal of SSDTs.
+ *
+ ******************************************************************************/
+
+ACPI_STATUS
+AcpiUnloadTable (
+ UINT32 TableIndex)
+{
+ ACPI_STATUS Status;
+
+
+ ACPI_FUNCTION_TRACE (AcpiUnloadTable);
+
+
+ if (TableIndex == 1)
+ {
+ /* TableIndex==1 means DSDT is the owner. DSDT cannot be unloaded */
+
+ return_ACPI_STATUS (AE_TYPE);
+ }
+
+ Status = AcpiTbUnloadTable (TableIndex);
+ return_ACPI_STATUS (Status);
+}
+
+ACPI_EXPORT_SYMBOL (AcpiUnloadTable)
diff --git a/sys/contrib/dev/acpica/components/utilities/utbuffer.c b/sys/contrib/dev/acpica/components/utilities/utbuffer.c
index 5382ee98167f..b1e2af966ef3 100644
--- a/sys/contrib/dev/acpica/components/utilities/utbuffer.c
+++ b/sys/contrib/dev/acpica/components/utilities/utbuffer.c
@@ -186,8 +186,10 @@ AcpiUtDumpBuffer (
UINT32 j;
UINT32 Temp32;
UINT8 BufChar;
+ UINT32 DisplayDataOnly = Display & DB_DISPLAY_DATA_ONLY;
+ Display &= ~DB_DISPLAY_DATA_ONLY;
if (!Buffer)
{
AcpiOsPrintf ("Null Buffer Pointer in DumpBuffer!\n");
@@ -205,7 +207,10 @@ AcpiUtDumpBuffer (
{
/* Print current offset */
- AcpiOsPrintf ("%8.4X: ", (BaseOffset + i));
+ if (!DisplayDataOnly)
+ {
+ AcpiOsPrintf ("%8.4X: ", (BaseOffset + i));
+ }
/* Print 16 hex chars */
@@ -257,38 +262,41 @@ AcpiUtDumpBuffer (
* Print the ASCII equivalent characters but watch out for the bad
* unprintable ones (printable chars are 0x20 through 0x7E)
*/
- AcpiOsPrintf (" ");
- for (j = 0; j < 16; j++)
+ if (!DisplayDataOnly)
{
- if (i + j >= Count)
+ AcpiOsPrintf (" ");
+ for (j = 0; j < 16; j++)
{
- AcpiOsPrintf ("\n");
- return;
+ if (i + j >= Count)
+ {
+ AcpiOsPrintf ("\n");
+ return;
+ }
+
+ /*
+ * Add comment characters so rest of line is ignored when
+ * compiled
+ */
+ if (j == 0)
+ {
+ AcpiOsPrintf ("// ");
+ }
+
+ BufChar = Buffer[(ACPI_SIZE) i + j];
+ if (isprint (BufChar))
+ {
+ AcpiOsPrintf ("%c", BufChar);
+ }
+ else
+ {
+ AcpiOsPrintf (".");
+ }
}
- /*
- * Add comment characters so rest of line is ignored when
- * compiled
- */
- if (j == 0)
- {
- AcpiOsPrintf ("// ");
- }
+ /* Done with that line. */
- BufChar = Buffer[(ACPI_SIZE) i + j];
- if (isprint (BufChar))
- {
- AcpiOsPrintf ("%c", BufChar);
- }
- else
- {
- AcpiOsPrintf (".");
- }
+ AcpiOsPrintf ("\n");
}
-
- /* Done with that line. */
-
- AcpiOsPrintf ("\n");
i += 16;
}
diff --git a/sys/contrib/dev/acpica/components/utilities/utdebug.c b/sys/contrib/dev/acpica/components/utilities/utdebug.c
index 26f631a91627..b56fbe1f6bcb 100644
--- a/sys/contrib/dev/acpica/components/utilities/utdebug.c
+++ b/sys/contrib/dev/acpica/components/utilities/utdebug.c
@@ -322,7 +322,7 @@ AcpiDebugPrint (
* Display the module name, current line number, thread ID (if requested),
* current procedure nesting level, and the current procedure name
*/
- AcpiOsPrintf ("%9s-%04ld ", ModuleName, LineNumber);
+ AcpiOsPrintf ("%9s-%04d ", ModuleName, LineNumber);
#ifdef ACPI_APPLICATION
/*
@@ -343,7 +343,7 @@ AcpiDebugPrint (
FillCount = 0;
}
- AcpiOsPrintf ("[%02ld] %*s",
+ AcpiOsPrintf ("[%02d] %*s",
AcpiGbl_NestingLevel, AcpiGbl_NestingLevel + 1, " ");
AcpiOsPrintf ("%s%*s: ",
AcpiUtTrimFunctionName (FunctionName), FillCount, " ");
diff --git a/sys/contrib/dev/acpica/components/utilities/uterror.c b/sys/contrib/dev/acpica/components/utilities/uterror.c
index 28b210347862..1e64aa46804c 100644
--- a/sys/contrib/dev/acpica/components/utilities/uterror.c
+++ b/sys/contrib/dev/acpica/components/utilities/uterror.c
@@ -188,7 +188,7 @@ AcpiUtPredefinedWarning (
const char *ModuleName,
UINT32 LineNumber,
char *Pathname,
- UINT8 NodeFlags,
+ UINT16 NodeFlags,
const char *Format,
...)
{
@@ -237,7 +237,7 @@ AcpiUtPredefinedInfo (
const char *ModuleName,
UINT32 LineNumber,
char *Pathname,
- UINT8 NodeFlags,
+ UINT16 NodeFlags,
const char *Format,
...)
{
@@ -286,7 +286,7 @@ AcpiUtPredefinedBiosError (
const char *ModuleName,
UINT32 LineNumber,
char *Pathname,
- UINT8 NodeFlags,
+ UINT16 NodeFlags,
const char *Format,
...)
{
diff --git a/sys/contrib/dev/acpica/components/utilities/utosi.c b/sys/contrib/dev/acpica/components/utilities/utosi.c
index 006a6d6129c3..f0d3c94856f3 100644
--- a/sys/contrib/dev/acpica/components/utilities/utosi.c
+++ b/sys/contrib/dev/acpica/components/utilities/utosi.c
@@ -212,13 +212,14 @@ 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 */
+ {"Windows 2013", NULL, 0, ACPI_OSI_WIN_8_1}, /* Windows 8.1 and Server 2012 R2 - Added 01/2014 */
{"Windows 2015", NULL, 0, ACPI_OSI_WIN_10}, /* Windows 10 - Added 03/2015 */
{"Windows 2016", NULL, 0, ACPI_OSI_WIN_10_RS1}, /* Windows 10 version 1607 - Added 12/2017 */
{"Windows 2017", NULL, 0, ACPI_OSI_WIN_10_RS2}, /* Windows 10 version 1703 - Added 12/2017 */
{"Windows 2017.2", NULL, 0, ACPI_OSI_WIN_10_RS3}, /* Windows 10 version 1709 - Added 02/2018 */
{"Windows 2018", NULL, 0, ACPI_OSI_WIN_10_RS4}, /* Windows 10 version 1803 - Added 11/2018 */
{"Windows 2018.2", NULL, 0, ACPI_OSI_WIN_10_RS5}, /* Windows 10 version 1809 - Added 11/2018 */
+ {"Windows 2019", NULL, 0, ACPI_OSI_WIN_10_19H1}, /* Windows 10 version 1903 - Added 08/2019 */
/* Feature Group Strings */
diff --git a/sys/contrib/dev/acpica/components/utilities/utownerid.c b/sys/contrib/dev/acpica/components/utilities/utownerid.c
index 57efce4b73d0..c740961fc747 100644
--- a/sys/contrib/dev/acpica/components/utilities/utownerid.c
+++ b/sys/contrib/dev/acpica/components/utilities/utownerid.c
@@ -190,7 +190,7 @@ AcpiUtAllocateOwnerId (
if (*OwnerId)
{
ACPI_ERROR ((AE_INFO,
- "Owner ID [0x%2.2X] already exists", *OwnerId));
+ "Owner ID [0x%3.3X] already exists", *OwnerId));
return_ACPI_STATUS (AE_ALREADY_EXISTS);
}
@@ -246,13 +246,13 @@ AcpiUtAllocateOwnerId (
/*
* Construct encoded ID from the index and bit position
*
- * Note: Last [j].k (bit 255) is never used and is marked
+ * Note: Last [j].k (bit 4095) is never used and is marked
* permanently allocated (prevents +1 overflow)
*/
*OwnerId = (ACPI_OWNER_ID) ((k + 1) + ACPI_MUL_32 (j));
ACPI_DEBUG_PRINT ((ACPI_DB_VALUES,
- "Allocated OwnerId: %2.2X\n", (unsigned int) *OwnerId));
+ "Allocated OwnerId: 0x%3.3X\n", (unsigned int) *OwnerId));
goto Exit;
}
}
@@ -272,7 +272,7 @@ AcpiUtAllocateOwnerId (
*/
Status = AE_OWNER_ID_LIMIT;
ACPI_ERROR ((AE_INFO,
- "Could not allocate new OwnerId (255 max), AE_OWNER_ID_LIMIT"));
+ "Could not allocate new OwnerId (4095 max), AE_OWNER_ID_LIMIT"));
Exit:
(void) AcpiUtReleaseMutex (ACPI_MTX_CACHES);
@@ -315,7 +315,7 @@ AcpiUtReleaseOwnerId (
if (OwnerId == 0)
{
- ACPI_ERROR ((AE_INFO, "Invalid OwnerId: 0x%2.2X", OwnerId));
+ ACPI_ERROR ((AE_INFO, "Invalid OwnerId: 0x%3.3X", OwnerId));
return_VOID;
}
@@ -345,7 +345,7 @@ AcpiUtReleaseOwnerId (
else
{
ACPI_ERROR ((AE_INFO,
- "Release of non-allocated OwnerId: 0x%2.2X", OwnerId + 1));
+ "Attempted release of non-allocated OwnerId: 0x%3.3X", OwnerId + 1));
}
(void) AcpiUtReleaseMutex (ACPI_MTX_CACHES);
diff --git a/sys/contrib/dev/acpica/components/utilities/uttrack.c b/sys/contrib/dev/acpica/components/utilities/uttrack.c
index 2d81fc144a2e..25d1306574ee 100644
--- a/sys/contrib/dev/acpica/components/utilities/uttrack.c
+++ b/sys/contrib/dev/acpica/components/utilities/uttrack.c
@@ -864,7 +864,7 @@ AcpiUtDumpAllocations (
case ACPI_DESC_TYPE_PARSER:
- AcpiOsPrintf ("AmlOpcode 0x%04hX\n",
+ AcpiOsPrintf ("AmlOpcode 0x%04X\n",
Descriptor->Op.Asl.AmlOpcode);
break;
diff --git a/sys/contrib/dev/acpica/include/acconfig.h b/sys/contrib/dev/acpica/include/acconfig.h
index e93cfe1eafae..50bfe0b9a771 100644
--- a/sys/contrib/dev/acpica/include/acconfig.h
+++ b/sys/contrib/dev/acpica/include/acconfig.h
@@ -239,9 +239,9 @@
#define ACPI_DEFAULT_PAGE_SIZE 4096 /* Must be power of 2 */
-/* OwnerId tracking. 8 entries allows for 255 OwnerIds */
+/* OwnerId tracking. 128 entries allows for 4095 OwnerIds */
-#define ACPI_NUM_OWNERID_MASKS 8
+#define ACPI_NUM_OWNERID_MASKS 128
/* Size of the root table array is increased by this increment */
diff --git a/sys/contrib/dev/acpica/include/acdebug.h b/sys/contrib/dev/acpica/include/acdebug.h
index ec9d485f02de..131b31460467 100644
--- a/sys/contrib/dev/acpica/include/acdebug.h
+++ b/sys/contrib/dev/acpica/include/acdebug.h
@@ -392,6 +392,10 @@ void
AcpiDbGetBusInfo (
void);
+ACPI_STATUS
+AcpiDbDisplayFields (
+ UINT32 AddressSpaceId);
+
/*
* dbdisply - debug display commands
diff --git a/sys/contrib/dev/acpica/include/aclocal.h b/sys/contrib/dev/acpica/include/aclocal.h
index e1ed00531356..c3703c152a44 100644
--- a/sys/contrib/dev/acpica/include/aclocal.h
+++ b/sys/contrib/dev/acpica/include/aclocal.h
@@ -295,12 +295,12 @@ typedef struct acpi_namespace_node
union acpi_operand_object *Object; /* Interpreter object */
UINT8 DescriptorType; /* Differentiate object descriptor types */
UINT8 Type; /* ACPI Type associated with this name */
- UINT8 Flags; /* Miscellaneous flags */
- ACPI_OWNER_ID OwnerId; /* Node creator */
+ UINT16 Flags; /* Miscellaneous flags */
ACPI_NAME_UNION Name; /* ACPI Name, always 4 chars per ACPI spec */
struct acpi_namespace_node *Parent; /* Parent node */
struct acpi_namespace_node *Child; /* First child */
struct acpi_namespace_node *Peer; /* First peer */
+ ACPI_OWNER_ID OwnerId; /* Node creator */
/*
* The following fields are used by the ASL compiler and disassembler only
diff --git a/sys/contrib/dev/acpica/include/acobject.h b/sys/contrib/dev/acpica/include/acobject.h
index b9b30200e9ec..74feb8d93da9 100644
--- a/sys/contrib/dev/acpica/include/acobject.h
+++ b/sys/contrib/dev/acpica/include/acobject.h
@@ -333,8 +333,8 @@ typedef struct acpi_object_method
} Dispatch;
UINT32 AmlLength;
- UINT8 ThreadCount;
ACPI_OWNER_ID OwnerId;
+ UINT8 ThreadCount;
} ACPI_OBJECT_METHOD;
diff --git a/sys/contrib/dev/acpica/include/acpiosxf.h b/sys/contrib/dev/acpica/include/acpiosxf.h
index 0299d66ac357..795ca6bd306e 100644
--- a/sys/contrib/dev/acpica/include/acpiosxf.h
+++ b/sys/contrib/dev/acpica/include/acpiosxf.h
@@ -577,6 +577,7 @@ AcpiOsEnterSleep (
* Debug print routines
*/
#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsPrintf
+ACPI_PRINTF_LIKE (1)
void ACPI_INTERNAL_VAR_XFACE
AcpiOsPrintf (
const char *Format,
diff --git a/sys/contrib/dev/acpica/include/acpixf.h b/sys/contrib/dev/acpica/include/acpixf.h
index 3e6682766ef7..e87e3c737795 100644
--- a/sys/contrib/dev/acpica/include/acpixf.h
+++ b/sys/contrib/dev/acpica/include/acpixf.h
@@ -154,7 +154,7 @@
/* Current ACPICA subsystem version in YYYYMMDD format */
-#define ACPI_CA_VERSION 0x20190703
+#define ACPI_CA_VERSION 0x20191018
#include <contrib/dev/acpica/include/acconfig.h>
#include <contrib/dev/acpica/include/actypes.h>
@@ -446,6 +446,9 @@ ACPI_GLOBAL (BOOLEAN, AcpiGbl_SystemAwakeAndRunning);
#define ACPI_HW_DEPENDENT_RETURN_OK(Prototype) \
ACPI_EXTERNAL_RETURN_OK(Prototype)
+#define ACPI_HW_DEPENDENT_RETURN_UINT32(prototype) \
+ ACPI_EXTERNAL_RETURN_UINT32(prototype)
+
#define ACPI_HW_DEPENDENT_RETURN_VOID(Prototype) \
ACPI_EXTERNAL_RETURN_VOID(Prototype)
@@ -456,6 +459,9 @@ ACPI_GLOBAL (BOOLEAN, AcpiGbl_SystemAwakeAndRunning);
#define ACPI_HW_DEPENDENT_RETURN_OK(Prototype) \
static ACPI_INLINE Prototype {return(AE_OK);}
+#define ACPI_HW_DEPENDENT_RETURN_UINT32(prototype) \
+ static ACPI_INLINE prototype {return(0);}
+
#define ACPI_HW_DEPENDENT_RETURN_VOID(Prototype) \
static ACPI_INLINE Prototype {return;}
@@ -658,7 +664,13 @@ AcpiInstallTable (
ACPI_EXTERNAL_RETURN_STATUS (
ACPI_STATUS
AcpiLoadTable (
- ACPI_TABLE_HEADER *Table))
+ ACPI_TABLE_HEADER *Table,
+ UINT32 *TableIdx))
+
+ACPI_EXTERNAL_RETURN_STATUS (
+ACPI_STATUS
+AcpiUnloadTable (
+ UINT32 TableIndex))
ACPI_EXTERNAL_RETURN_STATUS (
ACPI_STATUS
@@ -1076,6 +1088,12 @@ AcpiGetGpeStatus (
UINT32 GpeNumber,
ACPI_EVENT_STATUS *EventStatus))
+ACPI_HW_DEPENDENT_RETURN_UINT32 (
+UINT32
+AcpiDispatchGpe (
+ ACPI_HANDLE GpeDevice,
+ UINT32 GpeNumber))
+
ACPI_HW_DEPENDENT_RETURN_STATUS (
ACPI_STATUS
AcpiDisableAllGpes (
diff --git a/sys/contrib/dev/acpica/include/acstruct.h b/sys/contrib/dev/acpica/include/acstruct.h
index a0b63ec40937..e6ab1d907412 100644
--- a/sys/contrib/dev/acpica/include/acstruct.h
+++ b/sys/contrib/dev/acpica/include/acstruct.h
@@ -327,9 +327,9 @@ typedef struct acpi_evaluate_info
UINT32 ReturnFlags; /* Used for return value analysis */
UINT32 ReturnBtype; /* Bitmapped type of the returned object */
UINT16 ParamCount; /* Count of the input argument list */
+ UINT16 NodeFlags; /* Same as Node->Flags */
UINT8 PassNumber; /* Parser pass number */
UINT8 ReturnObjectType; /* Object type of the returned object */
- UINT8 NodeFlags; /* Same as Node->Flags */
UINT8 Flags; /* General flags */
} ACPI_EVALUATE_INFO;
@@ -357,6 +357,19 @@ typedef struct acpi_device_walk_info
} ACPI_DEVICE_WALK_INFO;
+/* Info used by Acpi AcpiDbDisplayFields */
+
+typedef struct acpi_region_walk_info
+{
+ UINT32 DebugLevel;
+ UINT32 Count;
+ ACPI_OWNER_ID OwnerId;
+ UINT8 DisplayType;
+ UINT32 AddressSpaceId;
+
+} ACPI_REGION_WALK_INFO;
+
+
/* TBD: [Restructure] Merge with struct above */
typedef struct acpi_walk_info
diff --git a/sys/contrib/dev/acpica/include/actypes.h b/sys/contrib/dev/acpica/include/actypes.h
index e7a2d57804e2..0521f3353e67 100644
--- a/sys/contrib/dev/acpica/include/actypes.h
+++ b/sys/contrib/dev/acpica/include/actypes.h
@@ -591,8 +591,8 @@ typedef void * ACPI_HANDLE; /* Actually a ptr to a N
/* Owner IDs are used to track namespace nodes for selective deletion */
-typedef UINT8 ACPI_OWNER_ID;
-#define ACPI_OWNER_ID_MAX 0xFF
+typedef UINT16 ACPI_OWNER_ID;
+#define ACPI_OWNER_ID_MAX 0xFFF /* 4095 possible owner IDs */
#define ACPI_INTEGER_BIT_SIZE 64
@@ -657,7 +657,7 @@ typedef UINT64 ACPI_INTEGER;
/* Pointer/Integer type conversions */
-#define ACPI_TO_POINTER(i) ACPI_ADD_PTR (void, (void *) 0, (ACPI_SIZE) (i))
+#define ACPI_TO_POINTER(i) ACPI_CAST_PTR (void, (ACPI_SIZE) (i))
#define ACPI_TO_INTEGER(p) ACPI_PTR_DIFF (p, (void *) 0)
#define ACPI_OFFSET(d, f) ACPI_PTR_DIFF (&(((d *) 0)->f), (void *) 0)
#define ACPI_PHYSADDR_TO_PTR(i) ACPI_TO_POINTER(i)
@@ -1513,12 +1513,14 @@ typedef enum
#define ACPI_OSI_WIN_VISTA_SP2 0x0A
#define ACPI_OSI_WIN_7 0x0B
#define ACPI_OSI_WIN_8 0x0C
-#define ACPI_OSI_WIN_10 0x0D
-#define ACPI_OSI_WIN_10_RS1 0x0E
-#define ACPI_OSI_WIN_10_RS2 0x0F
-#define ACPI_OSI_WIN_10_RS3 0x10
-#define ACPI_OSI_WIN_10_RS4 0x11
-#define ACPI_OSI_WIN_10_RS5 0x12
+#define ACPI_OSI_WIN_8_1 0x0D
+#define ACPI_OSI_WIN_10 0x0E
+#define ACPI_OSI_WIN_10_RS1 0x0F
+#define ACPI_OSI_WIN_10_RS2 0x10
+#define ACPI_OSI_WIN_10_RS3 0x11
+#define ACPI_OSI_WIN_10_RS4 0x12
+#define ACPI_OSI_WIN_10_RS5 0x13
+#define ACPI_OSI_WIN_10_19H1 0x14
/* Definitions of getopt */
diff --git a/sys/contrib/dev/acpica/include/acutils.h b/sys/contrib/dev/acpica/include/acutils.h
index e5673e1067c2..9a23cd28851d 100644
--- a/sys/contrib/dev/acpica/include/acutils.h
+++ b/sys/contrib/dev/acpica/include/acutils.h
@@ -290,10 +290,11 @@ typedef struct acpi_pkg_info
/* AcpiUtDumpBuffer */
-#define DB_BYTE_DISPLAY 1
-#define DB_WORD_DISPLAY 2
-#define DB_DWORD_DISPLAY 4
-#define DB_QWORD_DISPLAY 8
+#define DB_BYTE_DISPLAY 0x01
+#define DB_WORD_DISPLAY 0x02
+#define DB_DWORD_DISPLAY 0x04
+#define DB_QWORD_DISPLAY 0x08
+#define DB_DISPLAY_DATA_ONLY 0x10
/*
@@ -1194,30 +1195,33 @@ AcpiUtDeleteAddressLists (
/*
* utxferror - various error/warning output functions
*/
+ACPI_PRINTF_LIKE(5)
void ACPI_INTERNAL_VAR_XFACE
AcpiUtPredefinedWarning (
const char *ModuleName,
UINT32 LineNumber,
char *Pathname,
- UINT8 NodeFlags,
+ UINT16 NodeFlags,
const char *Format,
...);
+ACPI_PRINTF_LIKE(5)
void ACPI_INTERNAL_VAR_XFACE
AcpiUtPredefinedInfo (
const char *ModuleName,
UINT32 LineNumber,
char *Pathname,
- UINT8 NodeFlags,
+ UINT16 NodeFlags,
const char *Format,
...);
+ACPI_PRINTF_LIKE(5)
void ACPI_INTERNAL_VAR_XFACE
AcpiUtPredefinedBiosError (
const char *ModuleName,
UINT32 LineNumber,
char *Pathname,
- UINT8 NodeFlags,
+ UINT16 NodeFlags,
const char *Format,
...);