Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/external/bsd/acpica/dist 13 December 2018. Summary of ch...



details:   https://anonhg.NetBSD.org/src/rev/be48ff7676f3
branches:  trunk
changeset: 995783:be48ff7676f3
user:      christos <christos%NetBSD.org@localhost>
date:      Sat Jan 05 20:37:15 2019 +0000

description:
13 December 2018. Summary of changes for version 20181213:

1) ACPICA Kernel-resident Subsystem:

Fixed some buffer length issues with the GenericSerialBus, related to two
of the bidirectional protocols: AttribRawProcessBytes and AttribRawBytes,
which are rarely seen in the field. For these, the LEN field of the ASL
buffer is now ignored. Hans de Goede

Implemented a new object evaluation trace mechanism for control methods
and data objects. This includes nested control methods. It is
particularly useful for examining the ACPI execution during system
initialization since the output is relatively terse. The flag below
enables the output of the trace via the ACPI_DEBUG_PRINT_RAW interface:
   #define ACPI_LV_EVALUATION          0x00080000

Examples:
   Enter evaluation       :  _SB.PCI0._INI (Method)
   Exit evaluation        :  _SB.PCI0._INI
   Enter evaluation       :  _OSI (Method)
   Exit evaluation        :  _OSI
   Enter evaluation       :  _SB.PCI0.TEST (Method)
   Nested method call     :     _SB.PCI0.NST1
   Exit nested method     :     _SB.PCI0.NST1
   Exit evaluation        :  _SB.PCI0.TEST

Added two recently-defined _OSI strings. See
https://docs.microsoft.com/en-us/windows-hardware/drivers/acpi/winacpi-
osi.
   "Windows 2018"
   "Windows 2018.2"

Update for buffer-to-string conversions via the ToHexString ASL operator.
A "0x" is now prepended to each of the hex values in the output string.
This provides compatibility with other ACPI implementations. The ACPI
specification is somewhat vague on this issue.
   Example output string after conversion:
"0x01,0x02,0x03,0x04,0x05,0x06"

Return a run-time error for TermArg expressions within individual package
elements. Although this is technically supported by the ASL grammar,
other ACPI implementations do not support this either. Also, this fixes a
fault if this type of construct is ever encountered (it never has been).


2) iASL Compiler/Disassembler and Tools:

iASL: Implemented a new compile option (-ww) that will promote individual
warnings and remarks to errors. This is intended to enhance the firmware
build process.

AcpiExec: Implemented a new command-line option (-eo) to support the new
object evaluation trace mechanism described above.

Disassembler: Added support to disassemble OEMx tables as AML/ASL tables
instead of a "unknown table" message.

AcpiHelp: Improved support for the "special" predefined names such as
_Lxx, _Exx, _EJx, _T_x, etc. For these, any legal hex value can now be
used for "xx" and "x".

----------------------------------------
31 October 2018. Summary of changes for version 20181031:


An Operation Region regression was fixed by properly adding address
ranges to a global list during initialization. This allows OS to
accurately check for overlapping regions between native devices (such as
PCI) and Operation regions as well as checking for region conflicts
between two Operation Regions.

Added support for the 2-byte extended opcodes in the code/feature that
attempts to continue parsing during the table load phase. Skip parsing
Device declarations (and other extended opcodes) when an error occurs
during parsing. Previously, only single-byte opcodes were supported.

Cleanup: Simplified the module-level code support by eliminating a
useless global variable (AcpiGbl_GroupModuleLeveCode).


2) iASL Compiler/Disassembler and Tools:

iASL/Preprocessor: Fixed a regression where an incorrect use of ACPI_FREE
could cause a fault in the preprocessor. This was an inadvertent side-
effect from moving more allocations/frees to the local cache/memory
mechanism.

iASL: Enhanced error detection by validating that all NameSeg elements
within a NamePatch actually exist. The previous behavior was spotty at
best, and such errors could be improperly ignored at compiler time (never
at runtime, however. There are two new error messages, as shown in the
examples below:

dsdt.asl     33:     CreateByteField (TTTT.BXXX, 1, CBF1)
Error    6161 -                              ^ One or more objects within
the Pathname do not exist (TTTT.BXXX)

dsdt.asl     34:     CreateByteField (BUF1, UUUU.INT1, BBBB.CBF1)
Error    6160 -        One or more prefix Scopes do not exist ^
(BBBB.CBF1)

iASL: Disassembler/table-compiler: Added support for the static data
table TPM2 revision 3 (an older version of TPM2). The support has been
added for the compiler and the disassembler.

Fixed compilation of DOS format data table file on Unix/Linux systems.
iASL now properly detects line continuations (\) for DOS format data
table definition language files on when executing on Unix/Linux.

----------------------------------------
03 October 2018. Summary of changes for version 20181003:


2) iASL Compiler/Disassembler and Tools:

Fixed a regression introduced in version 20180927 that could cause the
compiler to fault, especially with NamePaths containing one or more
carats (^). Such as: ^^_SB_PCI0

Added a new remark for the Sleep() operator when the sleep time operand
is larger than one second. This is a very long time for the ASL/BIOS code
and may not be what was intended by the ASL writer.

----------------------------------------
27 September 2018. Summary of changes for version 20180927:


1) ACPICA kernel-resident subsystem:

Updated the GPE support to clear the status of all ACPI events when
entering any/all sleep states in order to avoid premature wakeups. In
theory, this may cause some wakeup events to be missed, but the
likelihood of this is small. This change restores the original behavior
of the ACPICA code in order to fix a regression seen from the previous
"Stop unconditionally clearing ACPI IRQs during suspend/resume" change.
This regression could cause some systems to incorrectly wake immediately.

Updated the execution of the _REG methods during initialization and
namespace loading to bring the behavior into closer conformance to the
ACPI specification and other ACPI implementations:

>From the ACPI specification 6.2A, section 6.5.4 "_REG (Region):
    "Control methods must assume all operation regions are inaccessible
until the _REG(RegionSpace, 1) method is executed"

    "The exceptions to this rule are:
1.  OSPM must guarantee that the following operation regions are always
accessible:
    SystemIO operation regions.
    SystemMemory operation regions when accessing memory returned by the
System Address Map reporting interfaces."

Since the state of both the SystemIO and SystemMemory address spaces are
defined by the specification to never change, this ACPICA change ensures
that now _REG is never called on them. This solves some problems seen in
the field and provides compatibility with other ACPI implementations. An
update to the upcoming new version of the ACPI specification will help
clarify this behavior.

Updated the implementation of support for the Generic Serial Bus. For the
"bidirectional" protocols, the internal implementation now automatically
creates a return data buffer of the maximum size (255). This handles the
worst-case for data that is returned from the serial bus handler, and
fixes some problems seen in the field. This new buffer is directly
returned to the ASL. As such, there is no true "bidirectional" buffer,
which matches the ACPI specification. This is the reason for the "double
store" seen in the example ASL code in the specification, shown below:

Word Process Call (AttribProcessCall):
    OperationRegion(TOP1, GenericSerialBus, 0x00, 0x100)
    Field(TOP1, BufferAcc, NoLock, Preserve)
    {
        FLD1, 8, // Virtual register at command value 1.
    }

    Name(BUFF, Buffer(20){}) // Create GenericSerialBus data buffer
                             // as BUFF
    CreateWordField(BUFF, 0x02, DATA) // DATA = Data (Word)

    Store(0x5416, DATA)               // Save 0x5416 into the data buffer
    Store(Store(BUFF, FLD1), BUFF)    // Invoke a write/read Process Call
transaction
                           // This is the "double store". The write to
                           // FLD1 returns a new buffer, which is stored
                           // back into BUFF with the second Store.


2) iASL Compiler/Disassembler and Tools:

iASL: Implemented detection of extraneous/redundant uses of the Offset()
operator within a Field Unit list. A remark is now issued for these. For
example, the first two of the Offset() operators below are extraneous.
Because both the compiler and the interpreter track the offsets
automatically, these Offsets simply refer to the current offset and are
unnecessary. Note, when optimization is enabled, the iASL compiler will
in fact remove the redundant Offset operators and will not emit any AML
code for them.

    OperationRegion (OPR1, SystemMemory, 0x100, 0x100)
    Field (OPR1)
    {
        Offset (0),     // Never needed
        FLD1, 32,
        Offset (4),     // Redundant, offset is already 4 (bytes)
        FLD2, 8,
        Offset (64),    // OK use of Offset.
        FLD3, 16,
    }
dsdt.asl     14:         Offset (0),
Remark   2158 -                 ^ Unnecessary/redundant use of Offset
operator

dsdt.asl     16:         Offset (4),
Remark   2158 -                 ^ Unnecessary/redundant use of Offset
operator

diffstat:

 sys/external/bsd/acpica/dist/changes.txt                         |  218 +++++
 sys/external/bsd/acpica/dist/common/adisasm.c                    |    6 +-
 sys/external/bsd/acpica/dist/common/ahpredef.c                   |   16 +-
 sys/external/bsd/acpica/dist/common/ahtable.c                    |    6 +-
 sys/external/bsd/acpica/dist/common/dmextern.c                   |   20 +-
 sys/external/bsd/acpica/dist/common/dmswitch.c                   |    6 +
 sys/external/bsd/acpica/dist/common/dmtable.c                    |   12 +-
 sys/external/bsd/acpica/dist/common/dmtbdump3.c                  |   52 +
 sys/external/bsd/acpica/dist/common/dmtbinfo3.c                  |   20 +
 sys/external/bsd/acpica/dist/compiler/aslallocate.c              |   38 +-
 sys/external/bsd/acpica/dist/compiler/aslcache.c                 |  141 +-
 sys/external/bsd/acpica/dist/compiler/aslcodegen.c               |   65 +-
 sys/external/bsd/acpica/dist/compiler/asldefine.h                |    4 +-
 sys/external/bsd/acpica/dist/compiler/aslexternal.c              |   54 +-
 sys/external/bsd/acpica/dist/compiler/aslfold.c                  |    2 +-
 sys/external/bsd/acpica/dist/compiler/aslglobal.h                |  266 +++---
 sys/external/bsd/acpica/dist/compiler/aslhelp.c                  |    1 +
 sys/external/bsd/acpica/dist/compiler/aslhex.c                   |    8 +-
 sys/external/bsd/acpica/dist/compiler/aslkeywords.y              |    4 +-
 sys/external/bsd/acpica/dist/compiler/asllength.c                |    9 +-
 sys/external/bsd/acpica/dist/compiler/asllisting.c               |   48 +-
 sys/external/bsd/acpica/dist/compiler/asllistsup.c               |   98 +-
 sys/external/bsd/acpica/dist/compiler/aslmain.c                  |   26 +-
 sys/external/bsd/acpica/dist/compiler/aslmap.c                   |   23 +-
 sys/external/bsd/acpica/dist/compiler/aslmapenter.c              |   20 +-
 sys/external/bsd/acpica/dist/compiler/aslmapoutput.c             |   18 +-
 sys/external/bsd/acpica/dist/compiler/aslmessages.c              |   10 +-
 sys/external/bsd/acpica/dist/compiler/aslmessages.h              |    4 +
 sys/external/bsd/acpica/dist/compiler/aslmethod.c                |    8 +-
 sys/external/bsd/acpica/dist/compiler/aslnamesp.c                |   12 +-
 sys/external/bsd/acpica/dist/compiler/asloffset.c                |   44 +-
 sys/external/bsd/acpica/dist/compiler/asloperands.c              |   57 +-
 sys/external/bsd/acpica/dist/compiler/aslparseop.c               |   40 +-
 sys/external/bsd/acpica/dist/compiler/aslpld.c                   |    6 +-
 sys/external/bsd/acpica/dist/compiler/aslprune.c                 |    2 +-
 sys/external/bsd/acpica/dist/compiler/aslresource.c              |    4 +-
 sys/external/bsd/acpica/dist/compiler/aslstartup.c               |  134 +-
 sys/external/bsd/acpica/dist/compiler/aslsupport.y               |    6 +-
 sys/external/bsd/acpica/dist/compiler/asltokens.y                |    2 +-
 sys/external/bsd/acpica/dist/compiler/asltransform.c             |   30 +-
 sys/external/bsd/acpica/dist/compiler/aslxrefout.c               |   10 +-
 sys/external/bsd/acpica/dist/compiler/cvcompiler.c               |   48 +-
 sys/external/bsd/acpica/dist/compiler/cvdisasm.c                 |    4 +-
 sys/external/bsd/acpica/dist/compiler/cvparser.c                 |    4 +-
 sys/external/bsd/acpica/dist/compiler/dtcompiler.h               |   26 +-
 sys/external/bsd/acpica/dist/compiler/dtexpress.c                |   20 +-
 sys/external/bsd/acpica/dist/compiler/dtio.c                     |  132 +-
 sys/external/bsd/acpica/dist/compiler/dttable2.c                 |   80 +-
 sys/external/bsd/acpica/dist/compiler/dttemplate.c               |    2 +-
 sys/external/bsd/acpica/dist/compiler/preprocess.h               |   25 +-
 sys/external/bsd/acpica/dist/compiler/prexpress.c                |   28 +-
 sys/external/bsd/acpica/dist/compiler/prmacros.c                 |   56 +-
 sys/external/bsd/acpica/dist/compiler/prparser.l                 |    4 +-
 sys/external/bsd/acpica/dist/compiler/prscan.c                   |  214 ++--
 sys/external/bsd/acpica/dist/debugger/dbxface.c                  |  122 +-
 sys/external/bsd/acpica/dist/disassembler/dmutils.c              |   10 +-
 sys/external/bsd/acpica/dist/dispatcher/dsmethod.c               |   12 +
 sys/external/bsd/acpica/dist/dispatcher/dsobject.c               |   10 -
 sys/external/bsd/acpica/dist/dispatcher/dswload.c                |    6 +-
 sys/external/bsd/acpica/dist/dispatcher/dswload2.c               |   15 +-
 sys/external/bsd/acpica/dist/dispatcher/dswstate.c               |    2 +-
 sys/external/bsd/acpica/dist/events/evxfregn.c                   |    1 -
 sys/external/bsd/acpica/dist/executer/exconvrt.c                 |   49 +-
 sys/external/bsd/acpica/dist/executer/excreate.c                 |    2 -
 sys/external/bsd/acpica/dist/executer/exfield.c                  |  343 +------
 sys/external/bsd/acpica/dist/executer/exoparg2.c                 |    6 +-
 sys/external/bsd/acpica/dist/executer/exserial.c                 |  400 ++++++++++
 sys/external/bsd/acpica/dist/executer/exutils.c                  |    2 -
 sys/external/bsd/acpica/dist/generate/unix/acpiexamples/Makefile |    1 +
 sys/external/bsd/acpica/dist/generate/unix/acpiexec/Makefile     |    1 +
 sys/external/bsd/acpica/dist/include/acconfig.h                  |   18 +-
 sys/external/bsd/acpica/dist/include/acevents.h                  |    4 +
 sys/external/bsd/acpica/dist/include/acstruct.h                  |    5 +-
 sys/external/bsd/acpica/dist/include/actbinfo.h                  |    2 +
 sys/external/bsd/acpica/dist/include/actbl.h                     |    1 +
 sys/external/bsd/acpica/dist/include/actbl3.h                    |   28 +
 sys/external/bsd/acpica/dist/include/amlcode.h                   |   20 +-
 sys/external/bsd/acpica/dist/namespace/nsload.c                  |    2 -
 sys/external/bsd/acpica/dist/namespace/nsparse.c                 |   10 +
 sys/external/bsd/acpica/dist/parser/psloop.c                     |   24 +-
 sys/external/bsd/acpica/dist/parser/psobject.c                   |    2 +-
 sys/external/bsd/acpica/dist/parser/psparse.c                    |   12 +
 sys/external/bsd/acpica/dist/parser/psxface.c                    |    6 +
 sys/external/bsd/acpica/dist/tools/acpibin/abcompare.c           |    6 +-
 sys/external/bsd/acpica/dist/tools/acpidump/apmain.c             |    2 +-
 sys/external/bsd/acpica/dist/tools/acpiexec/aemain.c             |   13 +-
 sys/external/bsd/acpica/dist/tools/acpiexec/aeregion.c           |  162 +--
 sys/external/bsd/acpica/dist/tools/acpiexec/aetables.c           |   12 +-
 sys/external/bsd/acpica/dist/tools/acpihelp/acpihelp.h           |    2 +-
 sys/external/bsd/acpica/dist/tools/acpihelp/ahdecode.c           |  122 ++-
 sys/external/bsd/acpica/dist/tools/acpinames/anmain.c            |    1 -
 sys/external/bsd/acpica/dist/tools/acpisrc/astable.c             |    2 +
 sys/external/bsd/acpica/dist/tools/acpixtract/acpixtract.h       |    7 +-
 sys/external/bsd/acpica/dist/tools/acpixtract/axutils.c          |   33 +-
 94 files changed, 2242 insertions(+), 1429 deletions(-)

diffs (truncated from 7858 to 300 lines):

diff -r af43bb0eb204 -r be48ff7676f3 sys/external/bsd/acpica/dist/changes.txt
--- a/sys/external/bsd/acpica/dist/changes.txt  Sat Jan 05 20:32:02 2019 +0000
+++ b/sys/external/bsd/acpica/dist/changes.txt  Sat Jan 05 20:37:15 2019 +0000
@@ -1,4 +1,222 @@
 ----------------------------------------
+13 December 2018. Summary of changes for version 20181213:
+
+
+1) ACPICA Kernel-resident Subsystem:
+
+Fixed some buffer length issues with the GenericSerialBus, related to two 
+of the bidirectional protocols: AttribRawProcessBytes and AttribRawBytes, 
+which are rarely seen in the field. For these, the LEN field of the ASL 
+buffer is now ignored. Hans de Goede
+
+Implemented a new object evaluation trace mechanism for control methods 
+and data objects. This includes nested control methods. It is 
+particularly useful for examining the ACPI execution during system 
+initialization since the output is relatively terse. The flag below 
+enables the output of the trace via the ACPI_DEBUG_PRINT_RAW interface:
+   #define ACPI_LV_EVALUATION          0x00080000
+
+Examples:
+   Enter evaluation       :  _SB.PCI0._INI (Method)
+   Exit evaluation        :  _SB.PCI0._INI
+   Enter evaluation       :  _OSI (Method)
+   Exit evaluation        :  _OSI
+   Enter evaluation       :  _SB.PCI0.TEST (Method)
+   Nested method call     :     _SB.PCI0.NST1
+   Exit nested method     :     _SB.PCI0.NST1
+   Exit evaluation        :  _SB.PCI0.TEST
+
+Added two recently-defined _OSI strings. See 
+https://docs.microsoft.com/en-us/windows-hardware/drivers/acpi/winacpi-
+osi.
+   "Windows 2018"
+   "Windows 2018.2"
+
+Update for buffer-to-string conversions via the ToHexString ASL operator. 
+A "0x" is now prepended to each of the hex values in the output string. 
+This provides compatibility with other ACPI implementations. The ACPI 
+specification is somewhat vague on this issue.
+   Example output string after conversion: 
+"0x01,0x02,0x03,0x04,0x05,0x06"
+
+Return a run-time error for TermArg expressions within individual package 
+elements. Although this is technically supported by the ASL grammar, 
+other ACPI implementations do not support this either. Also, this fixes a 
+fault if this type of construct is ever encountered (it never has been).
+
+
+2) iASL Compiler/Disassembler and Tools:
+
+iASL: Implemented a new compile option (-ww) that will promote individual 
+warnings and remarks to errors. This is intended to enhance the firmware 
+build process.
+
+AcpiExec: Implemented a new command-line option (-eo) to support the new 
+object evaluation trace mechanism described above.
+
+Disassembler: Added support to disassemble OEMx tables as AML/ASL tables 
+instead of a "unknown table" message.
+
+AcpiHelp: Improved support for the "special" predefined names such as 
+_Lxx, _Exx, _EJx, _T_x, etc. For these, any legal hex value can now be 
+used for "xx" and "x".
+
+----------------------------------------
+31 October 2018. Summary of changes for version 20181031:
+
+
+An Operation Region regression was fixed by properly adding address 
+ranges to a global list during initialization. This allows OS to 
+accurately check for overlapping regions between native devices (such as 
+PCI) and Operation regions as well as checking for region conflicts 
+between two Operation Regions.
+
+Added support for the 2-byte extended opcodes in the code/feature that 
+attempts to continue parsing during the table load phase. Skip parsing 
+Device declarations (and other extended opcodes) when an error occurs 
+during parsing. Previously, only single-byte opcodes were supported.
+
+Cleanup: Simplified the module-level code support by eliminating a 
+useless global variable (AcpiGbl_GroupModuleLeveCode).
+
+
+2) iASL Compiler/Disassembler and Tools:
+
+iASL/Preprocessor: Fixed a regression where an incorrect use of ACPI_FREE 
+could cause a fault in the preprocessor. This was an inadvertent side-
+effect from moving more allocations/frees to the local cache/memory 
+mechanism.
+
+iASL: Enhanced error detection by validating that all NameSeg elements 
+within a NamePatch actually exist. The previous behavior was spotty at 
+best, and such errors could be improperly ignored at compiler time (never 
+at runtime, however. There are two new error messages, as shown in the 
+examples below:
+
+dsdt.asl     33:     CreateByteField (TTTT.BXXX, 1, CBF1)
+Error    6161 -                              ^ One or more objects within 
+the Pathname do not exist (TTTT.BXXX)
+
+dsdt.asl     34:     CreateByteField (BUF1, UUUU.INT1, BBBB.CBF1)
+Error    6160 -        One or more prefix Scopes do not exist ^  
+(BBBB.CBF1)
+
+iASL: Disassembler/table-compiler: Added support for the static data 
+table TPM2 revision 3 (an older version of TPM2). The support has been 
+added for the compiler and the disassembler.
+
+Fixed compilation of DOS format data table file on Unix/Linux systems. 
+iASL now properly detects line continuations (\) for DOS format data 
+table definition language files on when executing on Unix/Linux.
+
+----------------------------------------
+03 October 2018. Summary of changes for version 20181003:
+
+
+2) iASL Compiler/Disassembler and Tools:
+
+Fixed a regression introduced in version 20180927 that could cause the 
+compiler to fault, especially with NamePaths containing one or more 
+carats (^). Such as: ^^_SB_PCI0
+
+Added a new remark for the Sleep() operator when the sleep time operand 
+is larger than one second. This is a very long time for the ASL/BIOS code 
+and may not be what was intended by the ASL writer.
+
+----------------------------------------
+27 September 2018. Summary of changes for version 20180927:
+
+
+1) ACPICA kernel-resident subsystem:
+
+Updated the GPE support to clear the status of all ACPI events when 
+entering any/all sleep states in order to avoid premature wakeups. In 
+theory, this may cause some wakeup events to be missed, but the 
+likelihood of this is small. This change restores the original behavior 
+of the ACPICA code in order to fix a regression seen from the previous 
+"Stop unconditionally clearing ACPI IRQs during suspend/resume" change. 
+This regression could cause some systems to incorrectly wake immediately.
+
+Updated the execution of the _REG methods during initialization and 
+namespace loading to bring the behavior into closer conformance to the 
+ACPI specification and other ACPI implementations:
+
+From the ACPI specification 6.2A, section 6.5.4 "_REG (Region):
+    "Control methods must assume all operation regions are inaccessible 
+until the _REG(RegionSpace, 1) method is executed"
+
+    "The exceptions to this rule are:
+1.  OSPM must guarantee that the following operation regions are always 
+accessible:
+    SystemIO operation regions.
+    SystemMemory operation regions when accessing memory returned by the 
+System Address Map reporting interfaces."
+
+Since the state of both the SystemIO and SystemMemory address spaces are 
+defined by the specification to never change, this ACPICA change ensures 
+that now _REG is never called on them. This solves some problems seen in 
+the field and provides compatibility with other ACPI implementations. An 
+update to the upcoming new version of the ACPI specification will help 
+clarify this behavior.
+
+Updated the implementation of support for the Generic Serial Bus. For the 
+"bidirectional" protocols, the internal implementation now automatically 
+creates a return data buffer of the maximum size (255). This handles the 
+worst-case for data that is returned from the serial bus handler, and 
+fixes some problems seen in the field. This new buffer is directly 
+returned to the ASL. As such, there is no true "bidirectional" buffer, 
+which matches the ACPI specification. This is the reason for the "double 
+store" seen in the example ASL code in the specification, shown below:
+
+Word Process Call (AttribProcessCall):
+    OperationRegion(TOP1, GenericSerialBus, 0x00, 0x100)
+    Field(TOP1, BufferAcc, NoLock, Preserve)
+    {
+        FLD1, 8, // Virtual register at command value 1.
+    }
+
+    Name(BUFF, Buffer(20){}) // Create GenericSerialBus data buffer
+                             // as BUFF
+    CreateWordField(BUFF, 0x02, DATA) // DATA = Data (Word)
+
+    Store(0x5416, DATA)               // Save 0x5416 into the data buffer
+    Store(Store(BUFF, FLD1), BUFF)    // Invoke a write/read Process Call 
+transaction
+                           // This is the "double store". The write to
+                           // FLD1 returns a new buffer, which is stored
+                           // back into BUFF with the second Store.
+
+
+2) iASL Compiler/Disassembler and Tools:
+
+iASL: Implemented detection of extraneous/redundant uses of the Offset() 
+operator within a Field Unit list. A remark is now issued for these. For 
+example, the first two of the Offset() operators below are extraneous. 
+Because both the compiler and the interpreter track the offsets 
+automatically, these Offsets simply refer to the current offset and are 
+unnecessary. Note, when optimization is enabled, the iASL compiler will 
+in fact remove the redundant Offset operators and will not emit any AML 
+code for them.
+
+    OperationRegion (OPR1, SystemMemory, 0x100, 0x100)
+    Field (OPR1)
+    {
+        Offset (0),     // Never needed
+        FLD1, 32,
+        Offset (4),     // Redundant, offset is already 4 (bytes)
+        FLD2, 8,
+        Offset (64),    // OK use of Offset.
+        FLD3, 16,
+    }
+dsdt.asl     14:         Offset (0),
+Remark   2158 -                 ^ Unnecessary/redundant use of Offset 
+operator
+
+dsdt.asl     16:         Offset (4),
+Remark   2158 -                 ^ Unnecessary/redundant use of Offset 
+operator
+
+----------------------------------------
 10 August 2018. Summary of changes for version 20180810:
 
 
diff -r af43bb0eb204 -r be48ff7676f3 sys/external/bsd/acpica/dist/common/adisasm.c
--- a/sys/external/bsd/acpica/dist/common/adisasm.c     Sat Jan 05 20:32:02 2019 +0000
+++ b/sys/external/bsd/acpica/dist/common/adisasm.c     Sat Jan 05 20:37:15 2019 +0000
@@ -468,11 +468,11 @@
                 DisasmFilename, CmGetFileSize (File));
         }
 
-        if (Gbl_MapfileFlag)
+        if (AslGbl_MapfileFlag)
         {
             fprintf (stderr, "%14s %s - %u bytes\n",
-                Gbl_Files[ASL_FILE_MAP_OUTPUT].ShortDescription,
-                Gbl_Files[ASL_FILE_MAP_OUTPUT].Filename,
+                AslGbl_Files[ASL_FILE_MAP_OUTPUT].ShortDescription,
+                AslGbl_Files[ASL_FILE_MAP_OUTPUT].Filename,
                 FlGetFileSize (ASL_FILE_MAP_OUTPUT));
         }
     }
diff -r af43bb0eb204 -r be48ff7676f3 sys/external/bsd/acpica/dist/common/ahpredef.c
--- a/sys/external/bsd/acpica/dist/common/ahpredef.c    Sat Jan 05 20:32:02 2019 +0000
+++ b/sys/external/bsd/acpica/dist/common/ahpredef.c    Sat Jan 05 20:37:15 2019 +0000
@@ -63,7 +63,7 @@
  */
 const AH_PREDEFINED_NAME    AslPredefinedInfo[] =
 {
-    AH_PREDEF ("_ACx",    "Active Cooling", "Returns the active cooling policy threshold values"),
+    AH_PREDEF ("_ACx",    "Active Cooling, x=0-9", "Returns the active cooling policy threshold values"),
     AH_PREDEF ("_ADR",    "Address", "Returns address of a device on parent bus, and resource field"),
     AH_PREDEF ("_AEI",    "ACPI Event Interrupts", "Returns a list of GPIO events to be used as ACPI events"),
     AH_PREDEF ("_ALC",    "Ambient Light Chromaticity", "Returns the ambient light color chromaticity"),
@@ -72,7 +72,7 @@
     AH_PREDEF ("_ALP",    "Ambient Light Polling", "Returns the ambient light sensor polling frequency"),
     AH_PREDEF ("_ALR",    "Ambient Light Response", "Returns the ambient light brightness to display brightness mappings"),
     AH_PREDEF ("_ALT",    "Ambient Light Temperature", "Returns the ambient light color temperature"),
-    AH_PREDEF ("_ALx",    "Active List", "Returns a list of active cooling device objects"),
+    AH_PREDEF ("_ALx",    "Active List, x=0-9", "Returns a list of active cooling device objects"),
     AH_PREDEF ("_ART",    "Active Cooling Relationship Table", "Returns thermal relationship information between platform devices and fan devices"),
     AH_PREDEF ("_ASI",    "Address Space Id", "Resource Descriptor field"),
     AH_PREDEF ("_ASZ",    "Access Size", "Resource Descriptor field"),
@@ -129,11 +129,11 @@
     AH_PREDEF ("_DSS",    "Device Set State", "Sets the display device state"),
     AH_PREDEF ("_DSW",    "Device Sleep Wake", "Sets the sleep and wake transition states for a device"),
     AH_PREDEF ("_DTI",    "Device Temperature Indication", "Conveys native device temperature to the platform"),
-    AH_PREDEF ("_Exx",    "Edge-Triggered GPE", "Method executed as a result of a general-purpose event"),
+    AH_PREDEF ("_Exx",    "Edge-Triggered GPE, xx=0x00-0xFF", "Method executed as a result of a general-purpose event"),
     AH_PREDEF ("_EC_",    "Embedded Controller", "returns EC offset and query information"),
     AH_PREDEF ("_EDL",    "Eject Device List", "Returns a list of devices that are dependent on a device (docking)"),
     AH_PREDEF ("_EJD",    "Ejection Dependent Device", "Returns the name of dependent (parent) device (docking)"),
-    AH_PREDEF ("_EJx",    "Eject Device", "Begin or cancel a device ejection request (docking)"),
+    AH_PREDEF ("_EJx",    "Eject Device, x=0-9", "Begin or cancel a device ejection request (docking)"),
     AH_PREDEF ("_END",    "Endianness", "Endian orientation, Resource Descriptor field"),
     AH_PREDEF ("_EVT",    "Event", "Event method for GPIO events"),
     AH_PREDEF ("_FDE",    "Floppy Disk Enumerate", "Returns floppy disk configuration information"),
@@ -173,7 +173,7 @@
     AH_PREDEF ("_INT",    "Interrupts", "Interrupt mask bits, Resource Descriptor field"),
     AH_PREDEF ("_IOR",    "I/O Restriction", "Restriction type, Resource Descriptor field"),
     AH_PREDEF ("_IRC",    "Inrush Current", "Presence indicates that a device has a significant inrush current draw"),
-    AH_PREDEF ("_Lxx",    "Level-Triggered GPE", "Control method executed as a result of a general-purpose event"),
+    AH_PREDEF ("_Lxx",    "Level-Triggered GPE, xx=0x00-0xFF", "Control method executed as a result of a general-purpose event"),
     AH_PREDEF ("_LCK",    "Lock Device", "Locks or unlocks a device (docking)"),
     AH_PREDEF ("_LEN",    "Length", "Range length, Resource Descriptor field"),
     AH_PREDEF ("_LID",    "Lid Status", "Returns the open/closed status of the lid on a mobile system"),
@@ -250,7 +250,7 @@
     AH_PREDEF ("_PTS",    "Prepare To Sleep", "Inform the platform of an impending sleep transition"),
     AH_PREDEF ("_PUR",    "Processor Utilization Request", "Returns the number of processors that the platform would like to idle"),
     AH_PREDEF ("_PXM",    "Device Proximity", "Returns a device's proximity domain identifier"),
-    AH_PREDEF ("_Qxx",    "EC Query", "Embedded Controller query and SMBus Alarm control method"),
+    AH_PREDEF ("_Qxx",    "EC Query, xx=0x00-0xFF", "Embedded Controller query and SMBus Alarm control method"),
     AH_PREDEF ("_RBO",    "Register Bit Offset", "Resource Descriptor field"),
     AH_PREDEF ("_RBW",    "Register Bit Width", "Resource Descriptor field"),
     AH_PREDEF ("_RDI",    "Resource Dependencies for Idle", "Returns a list of dependencies for idle states"),
@@ -305,7 +305,7 @@
     AH_PREDEF ("_SUB",    "Subsystem ID", "Returns the subsystem ID for a device"),
     AH_PREDEF ("_SUN",    "Slot User Number", "Returns the slot unique ID number"),



Home | Main Index | Thread Index | Old Index