diff options
author | Robert Moore <Robert.Moore@intel.com> | 2018-09-27 07:11:19 -0700 |
---|---|---|
committer | Robert Moore <Robert.Moore@intel.com> | 2018-09-27 07:11:19 -0700 |
commit | ee203847a2dc911c57e148329dbb49c18e168a4b (patch) | |
tree | bfead2d472a3d5c28797a9c3c05ab69aaa0b162a /documents | |
parent | 8f81cbef4ca13d511cd9e2194cd650d77982afba (diff) | |
download | acpica-ee203847a2dc911c57e148329dbb49c18e168a4b.tar.gz |
Logfile: Changes for version 20180927
Version 20180927
Diffstat (limited to 'documents')
-rw-r--r-- | documents/changes.txt | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/documents/changes.txt b/documents/changes.txt index d2a76e90a..c416898bb 100644 --- a/documents/changes.txt +++ b/documents/changes.txt @@ -1,4 +1,97 @@ ---------------------------------------- +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: |