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 November 2020. Summary of ch...



details:   https://anonhg.NetBSD.org/src/rev/6b17f171f436
branches:  trunk
changeset: 946431:6b17f171f436
user:      christos <christos%NetBSD.org@localhost>
date:      Fri Nov 27 16:56:51 2020 +0000

description:
13 November 2020. Summary of changes for version 20201113:

This release is available at https://acpica.org/downloads

1) ACPICA kernel-resident subsystem:

Interpreter: fixed a memory leak by using use existing buffer in
_HID repair. There was a memory leak that occurred when a _CID
object is defined as a package containing string objects. When _CID
is checked for any possible repairs, it calls a helper function to
repair _HID (because _CID basically contains multiple _HID entries).
The _HID repair function assumes that string objects are standalone
objects that are not contained inside of any packages. The _HID
repair function replaced the string object with a brand new object
and attempted to delete the old object by decrementing the reference
count of the old object. Strings inside of packages have a reference
count of 2 so the _HID repair function leaves this object in a
dangling state and causes a memory leak. Instead of allocating a
brand new object and removing the old object, use the existing
object when repairing the _HID object.

Added function trace macros to improve namespace debugging. The
namespace repair mechanism does not have function tracing macros.
Add several trace macros to improve debuggability.

Handle "orphan" _REG methods for GPIO OpRegions. Before this change
AcpiEvExecuteRegMethods() had special handling to handle "orphan"
(no matching OpRegion declared) _REG methods for EC nodes. On Intel
Cherry Trail devices there are 2 possible ACPI OpRegions for
accessing GPIOs. The standard GeneralPurposeIo OpRegion and the
Cherry Trail - specific UserDefined 0x9X OpRegions. Having 2
different types of OpRegions leads to potential issues with checks
for OpRegion availability, or in other words checks if _REG has
been called for the OpRegion which the ACPI code wants to use.
Except for the "orphan" EC handling, ACPICA core does not call _REG
on an ACPI node which does not define an OpRegion matching the type
being registered; and the reference design DSDT, from which most
Cherry Trail DSDTs are derived, does not define GeneralPurposeIo,
nor UserDefined(0x93) OpRegions for the GPO2 (UID 3) device, because
no pins were assigned ACPI controlled functions in the reference
design. Together this leads to the perfect storm, at least on the
Cherry Trail based Medion Akayo E1239T. This design does use a GPO2
pin from its ACPI code and has added the Cherry Trail specific
UserDefined(0x93) opregion to its GPO2 ACPI node to access this
pin. But it uses a "has _REG been called" availability check for
the standard GeneralPurposeIo OpRegion. This clearly is a bug in
the DSDT, but this does work under Windows. This issue leads to
the intel vbtn driver reporting the device always being in tablet-mode
at boot, even if it is in laptop mode. Which in turn causes userspace
to ignore touchpad events. So in other words, this issue causes
the touchpad to not work at boot. This change fixes this by extending
the "orphan" _REG method handling to also apply to GPIO address-space
handlers.

2) iASL Compiler/Disassembler and ACPICA tools:

iASL: Added more info to namespace dump file (-ln option). In a
separate section of the dump file (after the main namespace dump),
emit the full pathname for each namespace node, its type, and the
ASL filename and line number where it is declared.

AcpiHelp: Added an option to display/decode iASL exceptions. Option
is: -x [Hex Value] where "Hex Value" is the iASL exception code.
If Hex Value is omitted, all iASL exceptions are displayed.

iASL: Use StringLiteral instead of StringData for some ASL macros.
The use of the stringData rule allows for some "string" oriented
opcodes (Such as ToString, ToHexString, etc.) None of which make
sense with the macros in question. This change modifies the StringData
part of the rule for these macros to a simple string literal - thus
disallowing the use of ToString, ToHexString, etc.  The following
ASL operators (macros) are affected:  EisaId Fprintf Printf ToUuid
Unicode Note: The MS compiler requires the use of string literals
for these operators also.

iASL: Added a remark for an unknown UUID: ASL_MSG_UUID_NOT_FOUND.
Search the list of "known" UUIDs for the input to the ToUUID macro.

Added 5 new UUIDs to the known UUID table. All related to NVDIMM
and the NFIT table.

diffstat:

 sys/external/bsd/acpica/dist/changes.txt                     |  173 ++++++++++-
 sys/external/bsd/acpica/dist/common/ahpredef.c               |    5 +
 sys/external/bsd/acpica/dist/common/ahuuids.c                |   13 +-
 sys/external/bsd/acpica/dist/common/dmtbinfo1.c              |    2 +-
 sys/external/bsd/acpica/dist/compiler/aslbtypes.c            |    2 +-
 sys/external/bsd/acpica/dist/compiler/aslcodegen.c           |    2 +-
 sys/external/bsd/acpica/dist/compiler/aslmap.c               |    2 +-
 sys/external/bsd/acpica/dist/compiler/aslmessages.c          |   88 +++++-
 sys/external/bsd/acpica/dist/compiler/aslmessages.h          |   10 +-
 sys/external/bsd/acpica/dist/compiler/aslnamesp.c            |   35 +-
 sys/external/bsd/acpica/dist/compiler/aslparseop.c           |   26 +
 sys/external/bsd/acpica/dist/compiler/aslprimaries.y         |   10 +-
 sys/external/bsd/acpica/dist/compiler/aslrules.y             |    4 +
 sys/external/bsd/acpica/dist/compiler/asltypes.y             |    1 +
 sys/external/bsd/acpica/dist/executer/exregion.c             |   70 +++-
 sys/external/bsd/acpica/dist/generate/lint/std32.lnt         |    2 +-
 sys/external/bsd/acpica/dist/generate/lint/std64.lnt         |    2 +-
 sys/external/bsd/acpica/dist/generate/release/build.sh       |    2 +-
 sys/external/bsd/acpica/dist/generate/release/release.sh     |    4 +-
 sys/external/bsd/acpica/dist/generate/unix/acpihelp/Makefile |    4 +-
 sys/external/bsd/acpica/dist/include/accommon.h              |    2 +-
 sys/external/bsd/acpica/dist/include/acconfig.h              |    2 +-
 sys/external/bsd/acpica/dist/include/acpredef.h              |   23 +-
 sys/external/bsd/acpica/dist/include/acuuid.h                |   13 +-
 sys/external/bsd/acpica/dist/include/platform/aclinux.h      |    3 +-
 sys/external/bsd/acpica/dist/namespace/nsalloc.c             |    2 +-
 sys/external/bsd/acpica/dist/namespace/nsarguments.c         |    4 +-
 sys/external/bsd/acpica/dist/namespace/nspredef.c            |    9 +-
 sys/external/bsd/acpica/dist/namespace/nsprepkg.c            |   38 +-
 sys/external/bsd/acpica/dist/namespace/nsxfobj.c             |    3 +-
 sys/external/bsd/acpica/dist/parser/psparse.c                |    4 +-
 sys/external/bsd/acpica/dist/tools/acpiexec/aemain.c         |    2 +-
 sys/external/bsd/acpica/dist/tools/acpihelp/acpihelp.h       |    7 +-
 sys/external/bsd/acpica/dist/tools/acpihelp/ahdecode.c       |    1 +
 sys/external/bsd/acpica/dist/tools/acpihelp/ahmain.c         |   13 +-
 sys/external/bsd/acpica/dist/utilities/utpredef.c            |    4 +-
 sys/external/bsd/acpica/dist/utilities/utstrsuppt.c          |   30 +-
 37 files changed, 525 insertions(+), 92 deletions(-)

diffs (truncated from 1427 to 300 lines):

diff -r 644f70334969 -r 6b17f171f436 sys/external/bsd/acpica/dist/changes.txt
--- a/sys/external/bsd/acpica/dist/changes.txt  Fri Nov 27 16:50:02 2020 +0000
+++ b/sys/external/bsd/acpica/dist/changes.txt  Fri Nov 27 16:56:51 2020 +0000
@@ -1,6 +1,173 @@
 ----------------------------------------
 
 
+13 November 2020. Summary of changes for version 20201113:
+
+This release is available at https://acpica.org/downloads
+
+
+1) ACPICA kernel-resident subsystem:
+
+Interpreter: fixed a memory leak by using use existing buffer in _HID 
+repair. There was a memory leak that occurred when a _CID object is 
+defined as a package containing string objects. When _CID is checked for 
+any possible repairs, it calls a helper function to repair _HID (because 
+_CID basically contains multiple _HID entries). The _HID repair function 
+assumes that string objects are standalone objects that are not contained 
+inside of any packages. The _HID repair function replaced the string 
+object with a brand new object and attempted to delete the old object by 
+decrementing the reference count of the old object. Strings inside of 
+packages have a reference count of 2 so the _HID repair function leaves 
+this object in a dangling state and causes a memory leak. Instead of 
+allocating a brand new object and removing the old object, use the 
+existing object when repairing the _HID object.
+
+Added function trace macros to improve namespace debugging. The namespace 
+repair mechanism does not have function tracing macros. Add several trace 
+macros to improve debuggability.
+
+Handle "orphan" _REG methods for GPIO OpRegions. Before this change 
+AcpiEvExecuteRegMethods() had special handling to handle "orphan" (no 
+matching OpRegion declared) _REG methods for EC nodes. On Intel Cherry 
+Trail devices there are 2 possible ACPI OpRegions for accessing GPIOs. 
+The standard GeneralPurposeIo OpRegion and the Cherry Trail - specific 
+UserDefined 0x9X OpRegions. Having 2 different types of OpRegions leads 
+to potential issues with checks for OpRegion availability, or in other 
+words checks if _REG has been called for the OpRegion which the ACPI code 
+wants to use. Except for the "orphan" EC handling, ACPICA core does not 
+call _REG on an ACPI node which does not define an OpRegion matching the 
+type being registered; and the reference design DSDT, from which most 
+Cherry Trail DSDTs are derived, does not define GeneralPurposeIo, nor 
+UserDefined(0x93) OpRegions for the GPO2 (UID 3) device, because no pins 
+were assigned ACPI controlled functions in the reference design. Together 
+this leads to the perfect storm, at least on the Cherry Trail based 
+Medion Akayo E1239T. This design does use a GPO2 pin from its ACPI code 
+and has added the Cherry Trail specific UserDefined(0x93) opregion to its 
+GPO2 ACPI node to access this pin. But it uses a "has _REG been called" 
+availability check for the standard GeneralPurposeIo OpRegion. This 
+clearly is a bug in the DSDT, but this does work under Windows. This 
+issue leads to the intel vbtn driver reporting the device always being in 
+tablet-mode at boot, even if it is in laptop mode. Which in turn causes 
+userspace to ignore touchpad events. So in other words, this issue causes 
+the touchpad to not work at boot. This change fixes this by extending the 
+"orphan" _REG method handling to also apply to GPIO address-space 
+handlers.
+
+
+2) iASL Compiler/Disassembler and ACPICA tools: 
+
+iASL: Added more info to namespace dump file (-ln option). In a separate 
+section of the dump file (after the main namespace dump), emit the full 
+pathname for each namespace node, its type, and the ASL filename and line 
+number where it is declared.
+
+AcpiHelp: Added an option to display/decode iASL exceptions. Option is: -
+x [Hex Value] where "Hex Value" is the iASL exception code. If Hex Value 
+is omitted, all iASL exceptions are displayed.
+
+iASL: Use StringLiteral instead of StringData for some ASL macros. The 
+use of the stringData rule allows for some "string" oriented opcodes 
+(Such as ToString, ToHexString, etc.) None of which make sense with the 
+macros in question. This change modifies the StringData part of the rule 
+for these macros to a simple string  literal - thus disallowing the use 
+of ToString, ToHexString, etc.
+The following ASL operators (macros) are affected:
+EisaId
+Fprintf
+Printf
+ToUuid
+Unicode
+Note: The MS compiler requires the use of string literals for these 
+operators also.
+
+iASL: Added a remark for an unknown UUID: ASL_MSG_UUID_NOT_FOUND. Search 
+the list of "known" UUIDs for the input to the ToUUID macro.
+
+Added 5 new UUIDs to the known UUID table. All related to NVDIMM and the 
+NFIT table.
+
+
+----------------------------------------
+
+25 September 2020. Summary of changes for version 20200925:
+
+This release is available at https://acpica.org/downloads
+
+
+1) ACPICA kernel-resident subsystem:
+
+Preserve memory opregion mappings. The ACPICA's strategy with respect to 
+the handling of memory mappings associated with memory operation regions 
+is to avoid mapping the entire region at once which may be problematic at 
+least in principle (for example, it may lead to conflicts with 
+overlapping mappings having different attributes created by drivers).  It 
+may also be wasteful, because memory opregions on some systems take up 
+vastchunks of address space while the fields in those regions actually 
+accessed by AML are sparsely distributed.
+
+For this reason, a one-page "window" is mapped for a given opregion on 
+the first memory access through it and if that "window" does not cover an 
+address range accessed through that opregion subsequently, it is unmapped 
+and a new "window" is mapped to replace it.  Next, if the new "window" is 
+not sufficient to access memory through the opregion in question in the 
+future, it will be replaced with yet another "window" and so on.  That 
+may lead to a suboptimal sequence of memory mapping and unmapping 
+operations, for example if two fields in one opregion separated from each 
+other by a sufficiently wide chunk of unused address space are accessed 
+in an alternating pattern.
+
+Added support for 64 bit risc-v compilation.  Useful for acpica tools and 
+incorporating ACPICA into the Firmware Test Suite. Colin Ian King 
+<colin.king%canonical.com@localhost>.
+
+Added support for SMBus predefined names (from SMBus Control Method 
+Interface Specification, Version 1.0, December 10, 1999. New predefined 
+names:
+    _SBA
+    _SBI
+    _SBR
+    _SBT
+    _SBW
+
+AML Disassembler: Added a new command, "All <NameSeg>". This command will 
+evaluate all objects in the current namespace whose NameString contains 
+the input NameSeg as the last element of the NameString. Useful for 
+debugging.
+
+
+2) iASL Compiler/Disassembler and ACPICA tools: 
+
+iASL: fixed a crash that occurred when predefined objects return packages 
+with lengths that exceed the initializer list.
+
+iASL: added more detail to external resolution error message when 
+compiling multiple definition blocks.
+
+iASL: added a remark for an attempt to create a nameseg or namestring 
+containing lower-case letters. This should prevent declaring multiple 
+namesegs or namestrings in an attempt to refer to different objects (with 
+different cases), but actually refer to the same object(s).
+
+iASL: improve alias analysis by saving object type. If the alias is a 
+method type, the parameter count is also recorded.
+
+AcpiExec: Increase the default loop timeout value. Was 1 second, is now 
+10 seconds. Prevents unnecessary timeouts when executing control methods 
+from the command line.
+
+AcpiHelp/disassembler: Added a bunch of "known" UUIDs to the internal 
+list. Includes:
+    Memory Device
+    Generic Buttons Device
+    NVDIMM Root Device
+    Control Method Battery
+    Device Graphs for _DSD method
+    Hierarchical Data Extension
+....ARM CoreSight Graph
+
+----------------------------------------
+
+
 17 July 2020. Summary of changes for version 20200717:
 
 This release is available at https://acpica.org/downloads
@@ -94,7 +261,7 @@
 utility and since acpiexec can already dump the entire namespace (via the 
 'namespace' command), we no longer have the need to maintain acpinames.
 
-    In order to dump the contents of the ACPI namepsace using acpiexec, 
+    In order to dump the contents of the ACPI namespace using acpiexec,
 execute the following command from the command line:
 
         acpiexec -b "n" [aml files]
@@ -3628,7 +3795,7 @@
 Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues.
 A raw gpe handling mechanism was created to allow better handling of GPE
 storms that aren't easily managed by the normal handler. The raw handler
-allows disabling/renabling of the the GPE so that interrupt storms can be
+allows disabling/renabling of the GPE so that interrupt storms can be
 avoided in cases where events cannot be timely serviced. In this 
 scenario, handlers should use the AcpiSetGpe() API to disable/enable the 
 GPE. This API will leave the reference counts undisturbed, thereby 
@@ -17606,7 +17773,7 @@
 The ACPI 2.0 semantics for the SizeOf operator are fully
 implemented.  The change is that performing a SizeOf on a
 reference object causes an automatic dereference of the object to
-tha actual value before the size is evaluated. This behavior was
+the actual value before the size is evaluated. This behavior was
 undefined in ACPI 1.0.
 
 The ACPI 2.0 semantics for the Extended IRQ resource descriptor
diff -r 644f70334969 -r 6b17f171f436 sys/external/bsd/acpica/dist/common/ahpredef.c
--- a/sys/external/bsd/acpica/dist/common/ahpredef.c    Fri Nov 27 16:50:02 2020 +0000
+++ b/sys/external/bsd/acpica/dist/common/ahpredef.c    Fri Nov 27 16:56:51 2020 +0000
@@ -285,6 +285,11 @@
     AH_PREDEF ("_S3W",    "S3 Device Wake State", "Returns the lowest D-state for this device that can wake the system from S3"),
     AH_PREDEF ("_S4W",    "S4 Device Wake State", "Returns the lowest D-state for this device that can wake the system from S4"),
     AH_PREDEF ("_SB_",    "System Bus", "Predefined scope for device and bus objects"),
+    AH_PREDEF ("_SBA",    "SM Bus Alert information", "Returns info on an SMBus alert"),
+    AH_PREDEF ("_SBI",    "SM Bus General information", "Returns info on an SMBus segment"),
+    AH_PREDEF ("_SBR",    "SM Bus Data read", "Reads Byte, Word, or Block data from an SMBus segment"),
+    AH_PREDEF ("_SBT",    "SM Bus Data transfer", "Performs data transfer to/from an SMBus segment. Implements ProcessCall protocol"),
+    AH_PREDEF ("_SBW",    "SM Bus Data write", "Writes Byte, Word, or Block data to an SMBus segment"),
     AH_PREDEF ("_SBS",    "Smart Battery Subsystem", "Returns the subsystem configuration"),
     AH_PREDEF ("_SCP",    "Set Cooling Policy", "Sets the cooling policy (active or passive)"),
     AH_PREDEF ("_SDD",    "Set Device Data", "Sets data for a SATA device"),
diff -r 644f70334969 -r 6b17f171f436 sys/external/bsd/acpica/dist/common/ahuuids.c
--- a/sys/external/bsd/acpica/dist/common/ahuuids.c     Fri Nov 27 16:50:02 2020 +0000
+++ b/sys/external/bsd/acpica/dist/common/ahuuids.c     Fri Nov 27 16:56:51 2020 +0000
@@ -63,12 +63,17 @@
     {"PCI Host Bridge Device",      UUID_PCI_HOST_BRIDGE},
     {"HID I2C Device",              UUID_I2C_DEVICE},
     {"Power Button Device",         UUID_POWER_BUTTON},
+    {"Memory Device",               UUID_MEMORY_DEVICE},
+    {"Generic Buttons Device",      UUID_GENERIC_BUTTONS_DEVICE},
+    {"NVDIMM Root Device",          UUID_NVDIMM_ROOT_DEVICE},
+    {"Control Method Battery",      UUID_CONTROL_METHOD_BATTERY},
 
     {"[Interfaces]",                NULL},
     {"Device Labeling Interface",   UUID_DEVICE_LABELING},
     {"Physical Presence Interface", UUID_PHYSICAL_PRESENCE},
 
     {"[Non-volatile DIMM and NFIT table]",       NULL},
+    {"NVDIMM Device",               UUID_NFIT_DIMM},
     {"Volatile Memory Region",      UUID_VOLATILE_MEMORY},
     {"Persistent Memory Region",    UUID_PERSISTENT_MEMORY},
     {"NVDIMM Control Region",       UUID_CONTROL_REGION},
@@ -77,6 +82,10 @@
     {"Volatile Virtual CD",         UUID_VOLATILE_VIRTUAL_CD},
     {"Persistent Virtual Disk",     UUID_PERSISTENT_VIRTUAL_DISK},
     {"Persistent Virtual CD",       UUID_PERSISTENT_VIRTUAL_CD},
+    {"Microsoft NVDIMM Command set",UUID_NFIT_DIMM_N_MSFT},
+    {"HP NDIMM HPE1",               UUID_NFIT_DIMM_N_HPE1},
+    {"HP NDIMM HPE2",               UUID_NFIT_DIMM_N_HPE2},
+    {"Virtual NVDIMM",              UUID_NFIT_DIMM_N_HYPERV},
 
     {"[Processor Properties]",      NULL},
     {"Cache Properties",            UUID_CACHE_PROPERTIES},
@@ -88,7 +97,9 @@
     {"Battery Thermal Limit",       UUID_BATTERY_THERMAL_LIMIT},
     {"Thermal Extensions",          UUID_THERMAL_EXTENSIONS},
     {"Device Properties for _DSD",  UUID_DEVICE_PROPERTIES},
-
+    {"Device Graphs for _DSD",      UUID_DEVICE_GRAPHS},
+    {"Hierarchical Data Extension", UUID_HIERARCHICAL_DATA_EXTENSION},
+    {"ARM Coresight Graph",         UUID_CORESIGHT_GRAPH},
     {NULL, NULL}
 };
 
diff -r 644f70334969 -r 6b17f171f436 sys/external/bsd/acpica/dist/common/dmtbinfo1.c
--- a/sys/external/bsd/acpica/dist/common/dmtbinfo1.c   Fri Nov 27 16:50:02 2020 +0000
+++ b/sys/external/bsd/acpica/dist/common/dmtbinfo1.c   Fri Nov 27 16:56:51 2020 +0000
@@ -1013,7 +1013,7 @@
     {ACPI_DMT_UINT16,   ACPI_HMAT0_OFFSET (Flags),                  "Flags (decoded below)", 0},
     {ACPI_DMT_FLAG0,    ACPI_HMAT0_FLAG_OFFSET (Flags,0),           "Processor Proximity Domain Valid", 0},
     {ACPI_DMT_UINT16,   ACPI_HMAT0_OFFSET (Reserved1),              "Reserved1", 0},
-    {ACPI_DMT_UINT32,   ACPI_HMAT0_OFFSET (ProcessorPD),            "Processor Proximity Domain", 0},
+    {ACPI_DMT_UINT32,   ACPI_HMAT0_OFFSET (InitiatorPD),            "Attached Initiator Proximity Domain", 0},
     {ACPI_DMT_UINT32,   ACPI_HMAT0_OFFSET (MemoryPD),               "Memory Proximity Domain", 0},
     {ACPI_DMT_UINT32,   ACPI_HMAT0_OFFSET (Reserved2),              "Reserved2", 0},
     {ACPI_DMT_UINT64,   ACPI_HMAT0_OFFSET (Reserved3),              "Reserved3", 0},
diff -r 644f70334969 -r 6b17f171f436 sys/external/bsd/acpica/dist/compiler/aslbtypes.c
--- a/sys/external/bsd/acpica/dist/compiler/aslbtypes.c Fri Nov 27 16:50:02 2020 +0000
+++ b/sys/external/bsd/acpica/dist/compiler/aslbtypes.c Fri Nov 27 16:56:51 2020 +0000
@@ -564,7 +564,7 @@
  *
  * PARAMETERS:  Btype               - Bitfield of ACPI types
  *
- * RETURN:      The Etype corresponding the the Btype
+ * RETURN:      The Etype corresponding the Btype
  *
  * DESCRIPTION: Convert a bitfield type to an encoded type
  *
diff -r 644f70334969 -r 6b17f171f436 sys/external/bsd/acpica/dist/compiler/aslcodegen.c
--- a/sys/external/bsd/acpica/dist/compiler/aslcodegen.c        Fri Nov 27 16:50:02 2020 +0000
+++ b/sys/external/bsd/acpica/dist/compiler/aslcodegen.c        Fri Nov 27 16:56:51 2020 +0000
@@ -592,7 +592,7 @@
 
     Checksum = (UINT8) (0 - Sum);
 
-    /* Re-write the the checksum byte */
+    /* Re-write the checksum byte */
 
     FlSeekFile (ASL_FILE_AML_OUTPUT, Op->Asl.FinalAmlOffset +
         ACPI_OFFSET (ACPI_TABLE_HEADER, Checksum));
diff -r 644f70334969 -r 6b17f171f436 sys/external/bsd/acpica/dist/compiler/aslmap.c
--- a/sys/external/bsd/acpica/dist/compiler/aslmap.c    Fri Nov 27 16:50:02 2020 +0000



Home | Main Index | Thread Index | Old Index