MFV: r367652
Merge ACPICA 20201113.
This commit is contained in:
commit
fbde34778b
@ -1,6 +1,94 @@
|
|||||||
----------------------------------------
|
----------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
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:
|
25 September 2020. Summary of changes for version 20200925:
|
||||||
|
|
||||||
This release is available at https://acpica.org/downloads
|
This release is available at https://acpica.org/downloads
|
||||||
@ -41,7 +129,7 @@ names:
|
|||||||
_SBT
|
_SBT
|
||||||
_SBW
|
_SBW
|
||||||
|
|
||||||
AML Disassembler: Added a new command, "All <NameSeg". This command will
|
AML Disassembler: Added a new command, "All <NameSeg>". This command will
|
||||||
evaluate all objects in the current namespace whose NameString contains
|
evaluate all objects in the current namespace whose NameString contains
|
||||||
the input NameSeg as the last element of the NameString. Useful for
|
the input NameSeg as the last element of the NameString. Useful for
|
||||||
debugging.
|
debugging.
|
||||||
@ -55,6 +143,11 @@ with lengths that exceed the initializer list.
|
|||||||
iASL: added more detail to external resolution error message when
|
iASL: added more detail to external resolution error message when
|
||||||
compiling multiple definition blocks.
|
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
|
iASL: improve alias analysis by saving object type. If the alias is a
|
||||||
method type, the parameter count is also recorded.
|
method type, the parameter count is also recorded.
|
||||||
|
|
||||||
@ -3702,7 +3795,7 @@ iASL compiler, all ACPICA utilities, and the test suites.
|
|||||||
Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues.
|
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
|
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
|
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
|
avoided in cases where events cannot be timely serviced. In this
|
||||||
scenario, handlers should use the AcpiSetGpe() API to disable/enable the
|
scenario, handlers should use the AcpiSetGpe() API to disable/enable the
|
||||||
GPE. This API will leave the reference counts undisturbed, thereby
|
GPE. This API will leave the reference counts undisturbed, thereby
|
||||||
|
@ -181,6 +181,7 @@ const AH_UUID Gbl_AcpiUuids[] =
|
|||||||
{"Physical Presence Interface", UUID_PHYSICAL_PRESENCE},
|
{"Physical Presence Interface", UUID_PHYSICAL_PRESENCE},
|
||||||
|
|
||||||
{"[Non-volatile DIMM and NFIT table]", NULL},
|
{"[Non-volatile DIMM and NFIT table]", NULL},
|
||||||
|
{"NVDIMM Device", UUID_NFIT_DIMM},
|
||||||
{"Volatile Memory Region", UUID_VOLATILE_MEMORY},
|
{"Volatile Memory Region", UUID_VOLATILE_MEMORY},
|
||||||
{"Persistent Memory Region", UUID_PERSISTENT_MEMORY},
|
{"Persistent Memory Region", UUID_PERSISTENT_MEMORY},
|
||||||
{"NVDIMM Control Region", UUID_CONTROL_REGION},
|
{"NVDIMM Control Region", UUID_CONTROL_REGION},
|
||||||
@ -189,6 +190,10 @@ const AH_UUID Gbl_AcpiUuids[] =
|
|||||||
{"Volatile Virtual CD", UUID_VOLATILE_VIRTUAL_CD},
|
{"Volatile Virtual CD", UUID_VOLATILE_VIRTUAL_CD},
|
||||||
{"Persistent Virtual Disk", UUID_PERSISTENT_VIRTUAL_DISK},
|
{"Persistent Virtual Disk", UUID_PERSISTENT_VIRTUAL_DISK},
|
||||||
{"Persistent Virtual CD", UUID_PERSISTENT_VIRTUAL_CD},
|
{"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},
|
{"[Processor Properties]", NULL},
|
||||||
{"Cache Properties", UUID_CACHE_PROPERTIES},
|
{"Cache Properties", UUID_CACHE_PROPERTIES},
|
||||||
|
@ -672,7 +672,7 @@ AnMapObjTypeToBtype (
|
|||||||
*
|
*
|
||||||
* PARAMETERS: Btype - Bitfield of ACPI types
|
* 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
|
* DESCRIPTION: Convert a bitfield type to an encoded type
|
||||||
*
|
*
|
||||||
|
@ -700,7 +700,7 @@ CgUpdateHeader (
|
|||||||
|
|
||||||
Checksum = (UINT8) (0 - Sum);
|
Checksum = (UINT8) (0 - Sum);
|
||||||
|
|
||||||
/* Re-write the the checksum byte */
|
/* Re-write the checksum byte */
|
||||||
|
|
||||||
FlSeekFile (ASL_FILE_AML_OUTPUT, Op->Asl.FinalAmlOffset +
|
FlSeekFile (ASL_FILE_AML_OUTPUT, Op->Asl.FinalAmlOffset +
|
||||||
ACPI_OFFSET (ACPI_TABLE_HEADER, Checksum));
|
ACPI_OFFSET (ACPI_TABLE_HEADER, Checksum));
|
||||||
|
@ -538,7 +538,7 @@ const ASL_MAPPING_ENTRY AslKeywordMapping [] =
|
|||||||
/* TYPE_TRANSLATION */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0),
|
/* TYPE_TRANSLATION */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0),
|
||||||
/* UART_SERIALBUS */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0),
|
/* UART_SERIALBUS */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0),
|
||||||
/* UART_SERIALBUSV2 */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0),
|
/* UART_SERIALBUSV2 */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0),
|
||||||
/* UNICODE */ OP_TABLE_ENTRY (AML_BUFFER_OP, 0, OP_AML_PACKAGE, 0),
|
/* UNICODE */ OP_TABLE_ENTRY (AML_BUFFER_OP, 0, OP_AML_PACKAGE, ACPI_BTYPE_BUFFER),
|
||||||
/* UNLOAD */ OP_TABLE_ENTRY (AML_UNLOAD_OP, 0, 0, 0),
|
/* UNLOAD */ OP_TABLE_ENTRY (AML_UNLOAD_OP, 0, 0, 0),
|
||||||
/* UPDATERULE_ONES */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_UPDATE_WRITE_AS_ONES, 0, 0),
|
/* UPDATERULE_ONES */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_UPDATE_WRITE_AS_ONES, 0, 0),
|
||||||
/* UPDATERULE_PRESERVE */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_UPDATE_PRESERVE, 0, 0),
|
/* UPDATERULE_PRESERVE */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_UPDATE_PRESERVE, 0, 0),
|
||||||
|
@ -384,6 +384,7 @@ const char *AslCompilerMsgs [] =
|
|||||||
/* ASL_MSG_EXTERNAL_FOUND_HERE */ "External declaration below ",
|
/* ASL_MSG_EXTERNAL_FOUND_HERE */ "External declaration below ",
|
||||||
/* ASL_MSG_LOWER_CASE_NAMESEG */ "At least one lower case letter found in NameSeg, ASL is case insensitive - converting to upper case",
|
/* ASL_MSG_LOWER_CASE_NAMESEG */ "At least one lower case letter found in NameSeg, ASL is case insensitive - converting to upper case",
|
||||||
/* ASL_MSG_LOWER_CASE_NAMEPATH */ "At least one lower case letter found in NamePath, ASL is case insensitive - converting to upper case",
|
/* ASL_MSG_LOWER_CASE_NAMEPATH */ "At least one lower case letter found in NamePath, ASL is case insensitive - converting to upper case",
|
||||||
|
/* ASL_MSG_UUID_NOT_FOUND */ "Unknown UUID string"
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Table compiler */
|
/* Table compiler */
|
||||||
@ -457,7 +458,7 @@ AeDecodeMessageId (
|
|||||||
|
|
||||||
if (Index >= ACPI_ARRAY_LENGTH (AslCompilerMsgs))
|
if (Index >= ACPI_ARRAY_LENGTH (AslCompilerMsgs))
|
||||||
{
|
{
|
||||||
return ("[Unknown ASL Compiler exception ID]");
|
return ("[Unknown iASL Compiler exception ID]");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -470,7 +471,7 @@ AeDecodeMessageId (
|
|||||||
|
|
||||||
if (Index >= ACPI_ARRAY_LENGTH (AslTableCompilerMsgs))
|
if (Index >= ACPI_ARRAY_LENGTH (AslTableCompilerMsgs))
|
||||||
{
|
{
|
||||||
return ("[Unknown Table Compiler exception ID]");
|
return ("[Unknown iASL Table Compiler exception ID]");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -483,7 +484,7 @@ AeDecodeMessageId (
|
|||||||
|
|
||||||
if (Index >= ACPI_ARRAY_LENGTH (AslPreprocessorMsgs))
|
if (Index >= ACPI_ARRAY_LENGTH (AslPreprocessorMsgs))
|
||||||
{
|
{
|
||||||
return ("[Unknown Preprocessor exception ID]");
|
return ("[Unknown iASL Preprocessor exception ID]");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -491,7 +492,7 @@ AeDecodeMessageId (
|
|||||||
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return ("[Unknown exception/component ID]");
|
return ("[Unknown iASL exception ID]");
|
||||||
}
|
}
|
||||||
|
|
||||||
return (MessageTable[Index]);
|
return (MessageTable[Index]);
|
||||||
@ -559,3 +560,79 @@ AeBuildFullExceptionCode (
|
|||||||
*/
|
*/
|
||||||
return (((Level + 1) * 1000) + MessageId);
|
return (((Level + 1) * 1000) + MessageId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef ACPI_HELP_APP
|
||||||
|
/*******************************************************************************
|
||||||
|
*
|
||||||
|
* FUNCTION: AhDecodeAslException
|
||||||
|
*
|
||||||
|
* PARAMETERS: HexString - iASL status string from command line, in
|
||||||
|
* hex. If null, display all exceptions.
|
||||||
|
*
|
||||||
|
* RETURN: None
|
||||||
|
*
|
||||||
|
* DESCRIPTION: Decode and display an iASL exception code. Note1: a
|
||||||
|
* NULL string for HexString displays all known iASL exceptions. Note2:
|
||||||
|
* implements the -x option for AcpiHelp.
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#define AH_DISPLAY_ASL_EXCEPTION_TEXT(Status, Exception) \
|
||||||
|
printf ("%.4X: %s\n", Status, Exception)
|
||||||
|
|
||||||
|
#define AH_DISPLAY_EXCEPTION(Status, Name) \
|
||||||
|
printf ("%.4X: %s\n", Status, Name)
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
AhDecodeAslException (
|
||||||
|
char *HexString)
|
||||||
|
{
|
||||||
|
UINT32 i;
|
||||||
|
UINT32 MessageId;
|
||||||
|
const char *OneException;
|
||||||
|
UINT32 Index = 1;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* A null input string means to decode and display all known
|
||||||
|
* exception codes.
|
||||||
|
*/
|
||||||
|
if (!HexString)
|
||||||
|
{
|
||||||
|
printf ("All defined iASL exception codes:\n\n");
|
||||||
|
printf ("Main iASL exceptions:\n\n");
|
||||||
|
AH_DISPLAY_EXCEPTION (0,
|
||||||
|
"AE_OK (No error occurred)");
|
||||||
|
|
||||||
|
/* Display codes in each block of exception types */
|
||||||
|
|
||||||
|
for (i = 1; Index < ACPI_ARRAY_LENGTH (AslCompilerMsgs); i++, Index++)
|
||||||
|
{
|
||||||
|
AH_DISPLAY_ASL_EXCEPTION_TEXT (Index, AslCompilerMsgs[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
printf ("\niASL Table Compiler exceptions:\n\n");
|
||||||
|
Index = ASL_MSG_TABLE_COMPILER;
|
||||||
|
for (i = 0; i < ACPI_ARRAY_LENGTH (AslTableCompilerMsgs); i++, Index++)
|
||||||
|
{
|
||||||
|
AH_DISPLAY_ASL_EXCEPTION_TEXT (Index, AslTableCompilerMsgs[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
printf ("\niASL Preprocessor exceptions:\n\n");
|
||||||
|
Index = ASL_MSG_PREPROCESSOR;
|
||||||
|
for (i = 0; i < ACPI_ARRAY_LENGTH (AslPreprocessorMsgs); i++, Index++)
|
||||||
|
{
|
||||||
|
AH_DISPLAY_ASL_EXCEPTION_TEXT (Index, AslPreprocessorMsgs[i]);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* HexString is valid - convert it to a MessageId and decode it */
|
||||||
|
|
||||||
|
MessageId = strtol (HexString, NULL, 16);
|
||||||
|
OneException = AeDecodeMessageId ((UINT16) MessageId);
|
||||||
|
AH_DISPLAY_ASL_EXCEPTION_TEXT (MessageId, OneException);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
@ -152,7 +152,6 @@
|
|||||||
#ifndef __ASLMESSAGES_H
|
#ifndef __ASLMESSAGES_H
|
||||||
#define __ASLMESSAGES_H
|
#define __ASLMESSAGES_H
|
||||||
|
|
||||||
|
|
||||||
/* These values must match error type string tables in aslmessages.c */
|
/* These values must match error type string tables in aslmessages.c */
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
@ -167,9 +166,12 @@ typedef enum
|
|||||||
|
|
||||||
} ASL_MESSAGE_TYPES;
|
} ASL_MESSAGE_TYPES;
|
||||||
|
|
||||||
|
|
||||||
#define ASL_ERROR_LEVEL_LENGTH 8 /* Length of strings for types above */
|
#define ASL_ERROR_LEVEL_LENGTH 8 /* Length of strings for types above */
|
||||||
|
|
||||||
|
void
|
||||||
|
AhDecodeAslException (
|
||||||
|
char *HexString);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Exception code blocks, 0 - 999
|
* Exception code blocks, 0 - 999
|
||||||
* Available for new exception blocks: 600 - 999
|
* Available for new exception blocks: 600 - 999
|
||||||
@ -386,6 +388,7 @@ typedef enum
|
|||||||
ASL_MSG_EXTERNAL_FOUND_HERE,
|
ASL_MSG_EXTERNAL_FOUND_HERE,
|
||||||
ASL_MSG_LOWER_CASE_NAMESEG,
|
ASL_MSG_LOWER_CASE_NAMESEG,
|
||||||
ASL_MSG_LOWER_CASE_NAMEPATH,
|
ASL_MSG_LOWER_CASE_NAMEPATH,
|
||||||
|
ASL_MSG_UUID_NOT_FOUND,
|
||||||
|
|
||||||
|
|
||||||
/* These messages are used by the Data Table compiler only */
|
/* These messages are used by the Data Table compiler only */
|
||||||
|
@ -226,8 +226,8 @@ NsDisplayNamespace (
|
|||||||
|
|
||||||
/* File header */
|
/* File header */
|
||||||
|
|
||||||
FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, "Contents of ACPI Namespace\n\n");
|
FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, "Contents of ACPI Namespace\n\n"
|
||||||
FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, "Count Depth Name - Type\n\n");
|
"Count Depth Name - Type\n\n");
|
||||||
|
|
||||||
/* Walk entire namespace from the root */
|
/* Walk entire namespace from the root */
|
||||||
|
|
||||||
@ -239,14 +239,21 @@ NsDisplayNamespace (
|
|||||||
return (Status);
|
return (Status);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Print the full pathname for each namespace node */
|
/* Print the full pathname for each namespace node in the common namespace */
|
||||||
|
|
||||||
FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, "\nNamespace pathnames\n\n");
|
FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT,
|
||||||
|
"\nNamespace pathnames and where declared:\n"
|
||||||
|
"<NamePath, Object type, Containing file, Line number within file>\n\n");
|
||||||
|
|
||||||
Status = AcpiNsWalkNamespace (ACPI_TYPE_ANY, ACPI_ROOT_OBJECT,
|
Status = AcpiNsWalkNamespace (ACPI_TYPE_ANY, ACPI_ROOT_OBJECT,
|
||||||
ACPI_UINT32_MAX, FALSE, NsDoOnePathname, NULL,
|
ACPI_UINT32_MAX, FALSE, NsDoOnePathname, NULL,
|
||||||
NULL, NULL);
|
NULL, NULL);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* We just dumped the entire common namespace, we don't want to do it
|
||||||
|
* again for other input files.
|
||||||
|
*/
|
||||||
|
AslGbl_NsOutputFlag = FALSE;
|
||||||
return (Status);
|
return (Status);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -512,7 +519,7 @@ NsDoOneNamespaceObject (
|
|||||||
*
|
*
|
||||||
* RETURN: Status
|
* RETURN: Status
|
||||||
*
|
*
|
||||||
* DESCRIPTION: Print the full pathname for a namespace node.
|
* DESCRIPTION: Print the full pathname and addtional info for a namespace node.
|
||||||
*
|
*
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
@ -528,6 +535,13 @@ NsDoOnePathname (
|
|||||||
ACPI_BUFFER TargetPath;
|
ACPI_BUFFER TargetPath;
|
||||||
|
|
||||||
|
|
||||||
|
/* Ignore predefined namespace nodes and External declarations */
|
||||||
|
|
||||||
|
if (!Node->Op || (Node->Flags & ANOBJ_IS_EXTERNAL))
|
||||||
|
{
|
||||||
|
return (AE_OK);
|
||||||
|
}
|
||||||
|
|
||||||
TargetPath.Length = ACPI_ALLOCATE_LOCAL_BUFFER;
|
TargetPath.Length = ACPI_ALLOCATE_LOCAL_BUFFER;
|
||||||
Status = AcpiNsHandleToPathname (Node, &TargetPath, FALSE);
|
Status = AcpiNsHandleToPathname (Node, &TargetPath, FALSE);
|
||||||
if (ACPI_FAILURE (Status))
|
if (ACPI_FAILURE (Status))
|
||||||
@ -535,8 +549,15 @@ NsDoOnePathname (
|
|||||||
return (Status);
|
return (Status);
|
||||||
}
|
}
|
||||||
|
|
||||||
FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, "%s\n",
|
/*
|
||||||
ACPI_CAST_PTR (char, TargetPath.Pointer));
|
* Print the full pathname (and other information)
|
||||||
|
* for each namespace node in the common namespace
|
||||||
|
*/
|
||||||
|
FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, "%-41s %-12s %s, %u\n",
|
||||||
|
ACPI_CAST_PTR (char, TargetPath.Pointer),
|
||||||
|
AcpiUtGetTypeName (Node->Type),
|
||||||
|
Node->Op->Asl.Filename, Node->Op->Asl.LogicalLineNumber);
|
||||||
|
|
||||||
ACPI_FREE (TargetPath.Pointer);
|
ACPI_FREE (TargetPath.Pointer);
|
||||||
return (AE_OK);
|
return (AE_OK);
|
||||||
}
|
}
|
||||||
|
@ -798,7 +798,13 @@ OpcDoUuId (
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
/* Convert UUID string to a buffer, check for a known UUID */
|
||||||
|
|
||||||
AcpiUtConvertStringToUuid (InString, Buffer);
|
AcpiUtConvertStringToUuid (InString, Buffer);
|
||||||
|
if (!AcpiAhMatchUuid (Buffer))
|
||||||
|
{
|
||||||
|
AslError (ASL_REMARK, ASL_MSG_UUID_NOT_FOUND, Op, NULL);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Change Op to a Buffer */
|
/* Change Op to a Buffer */
|
||||||
|
@ -500,7 +500,7 @@ DivideTerm
|
|||||||
EISAIDTerm
|
EISAIDTerm
|
||||||
: PARSEOP_EISAID
|
: PARSEOP_EISAID
|
||||||
PARSEOP_OPEN_PAREN
|
PARSEOP_OPEN_PAREN
|
||||||
StringData
|
StringLiteral
|
||||||
PARSEOP_CLOSE_PAREN {$$ = TrSetOpIntegerValue (PARSEOP_EISAID, $3);}
|
PARSEOP_CLOSE_PAREN {$$ = TrSetOpIntegerValue (PARSEOP_EISAID, $3);}
|
||||||
| PARSEOP_EISAID
|
| PARSEOP_EISAID
|
||||||
PARSEOP_OPEN_PAREN
|
PARSEOP_OPEN_PAREN
|
||||||
@ -635,7 +635,7 @@ FprintfTerm
|
|||||||
: PARSEOP_FPRINTF
|
: PARSEOP_FPRINTF
|
||||||
PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_FPRINTF);}
|
PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_FPRINTF);}
|
||||||
TermArg ','
|
TermArg ','
|
||||||
StringData
|
StringLiteral
|
||||||
PrintfArgList
|
PrintfArgList
|
||||||
PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,3,$4,$6,$7);}
|
PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,3,$4,$6,$7);}
|
||||||
| PARSEOP_FPRINTF
|
| PARSEOP_FPRINTF
|
||||||
@ -1091,7 +1091,7 @@ PowerResTerm
|
|||||||
PrintfTerm
|
PrintfTerm
|
||||||
: PARSEOP_PRINTF
|
: PARSEOP_PRINTF
|
||||||
PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_PRINTF);}
|
PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_PRINTF);}
|
||||||
StringData
|
StringLiteral
|
||||||
PrintfArgList
|
PrintfArgList
|
||||||
PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,2,$4,$5);}
|
PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,2,$4,$5);}
|
||||||
| PARSEOP_PRINTF
|
| PARSEOP_PRINTF
|
||||||
@ -1412,7 +1412,7 @@ ToStringTerm
|
|||||||
ToUUIDTerm
|
ToUUIDTerm
|
||||||
: PARSEOP_TOUUID
|
: PARSEOP_TOUUID
|
||||||
PARSEOP_OPEN_PAREN
|
PARSEOP_OPEN_PAREN
|
||||||
StringData
|
StringLiteral
|
||||||
PARSEOP_CLOSE_PAREN {$$ = TrSetOpIntegerValue (PARSEOP_TOUUID, $3);}
|
PARSEOP_CLOSE_PAREN {$$ = TrSetOpIntegerValue (PARSEOP_TOUUID, $3);}
|
||||||
| PARSEOP_TOUUID
|
| PARSEOP_TOUUID
|
||||||
PARSEOP_OPEN_PAREN
|
PARSEOP_OPEN_PAREN
|
||||||
@ -1422,7 +1422,7 @@ ToUUIDTerm
|
|||||||
UnicodeTerm
|
UnicodeTerm
|
||||||
: PARSEOP_UNICODE
|
: PARSEOP_UNICODE
|
||||||
PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_UNICODE);}
|
PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_UNICODE);}
|
||||||
StringData
|
StringLiteral
|
||||||
PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,2,0,$4);}
|
PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,2,0,$4);}
|
||||||
| PARSEOP_UNICODE
|
| PARSEOP_UNICODE
|
||||||
PARSEOP_OPEN_PAREN
|
PARSEOP_OPEN_PAREN
|
||||||
|
@ -523,6 +523,10 @@ StringData
|
|||||||
| String {}
|
| String {}
|
||||||
;
|
;
|
||||||
|
|
||||||
|
StringLiteral
|
||||||
|
: String {}
|
||||||
|
;
|
||||||
|
|
||||||
ByteConst
|
ByteConst
|
||||||
: Integer {$$ = TrSetOpIntegerValue (PARSEOP_BYTECONST, $1);}
|
: Integer {$$ = TrSetOpIntegerValue (PARSEOP_BYTECONST, $1);}
|
||||||
;
|
;
|
||||||
|
@ -178,6 +178,7 @@ NoEcho('
|
|||||||
%type <n> RequiredTarget
|
%type <n> RequiredTarget
|
||||||
%type <n> SimpleName
|
%type <n> SimpleName
|
||||||
%type <n> StringData
|
%type <n> StringData
|
||||||
|
%type <n> StringLiteral
|
||||||
%type <n> Target
|
%type <n> Target
|
||||||
%type <n> Term
|
%type <n> Term
|
||||||
%type <n> TermArg
|
%type <n> TermArg
|
||||||
|
@ -164,8 +164,10 @@ extern UINT8 AcpiGbl_DefaultAddressSpaces[];
|
|||||||
/* Local prototypes */
|
/* Local prototypes */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
AcpiEvOrphanEcRegMethod (
|
AcpiEvExecuteOrphanRegMethod (
|
||||||
ACPI_NAMESPACE_NODE *EcDeviceNode);
|
ACPI_NAMESPACE_NODE *DeviceNode,
|
||||||
|
ACPI_ADR_SPACE_TYPE SpaceId);
|
||||||
|
|
||||||
|
|
||||||
static ACPI_STATUS
|
static ACPI_STATUS
|
||||||
AcpiEvRegRun (
|
AcpiEvRegRun (
|
||||||
@ -869,11 +871,13 @@ AcpiEvExecuteRegMethods (
|
|||||||
(void) AcpiNsWalkNamespace (ACPI_TYPE_ANY, Node, ACPI_UINT32_MAX,
|
(void) AcpiNsWalkNamespace (ACPI_TYPE_ANY, Node, ACPI_UINT32_MAX,
|
||||||
ACPI_NS_WALK_UNLOCK, AcpiEvRegRun, NULL, &Info, NULL);
|
ACPI_NS_WALK_UNLOCK, AcpiEvRegRun, NULL, &Info, NULL);
|
||||||
|
|
||||||
/* Special case for EC: handle "orphan" _REG methods with no region */
|
/*
|
||||||
|
* Special case for EC and GPIO: handle "orphan" _REG methods with
|
||||||
if (SpaceId == ACPI_ADR_SPACE_EC)
|
* no region.
|
||||||
|
*/
|
||||||
|
if (SpaceId == ACPI_ADR_SPACE_EC || SpaceId == ACPI_ADR_SPACE_GPIO)
|
||||||
{
|
{
|
||||||
AcpiEvOrphanEcRegMethod (Node);
|
AcpiEvExecuteOrphanRegMethod (Node, SpaceId);
|
||||||
}
|
}
|
||||||
|
|
||||||
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_NAMES,
|
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_NAMES,
|
||||||
@ -954,32 +958,29 @@ AcpiEvRegRun (
|
|||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
*
|
*
|
||||||
* FUNCTION: AcpiEvOrphanEcRegMethod
|
* FUNCTION: AcpiEvExecuteOrphanRegMethod
|
||||||
*
|
*
|
||||||
* PARAMETERS: EcDeviceNode - Namespace node for an EC device
|
* PARAMETERS: DeviceNode - Namespace node for an ACPI device
|
||||||
|
* SpaceId - The address space ID
|
||||||
*
|
*
|
||||||
* RETURN: None
|
* RETURN: None
|
||||||
*
|
*
|
||||||
* DESCRIPTION: Execute an "orphan" _REG method that appears under the EC
|
* DESCRIPTION: Execute an "orphan" _REG method that appears under an ACPI
|
||||||
* device. This is a _REG method that has no corresponding region
|
* device. This is a _REG method that has no corresponding region
|
||||||
* within the EC device scope. The orphan _REG method appears to
|
* within the device's scope. ACPI tables depending on these
|
||||||
* have been enabled by the description of the ECDT in the ACPI
|
* "orphan" _REG methods have been seen for both EC and GPIO
|
||||||
* specification: "The availability of the region space can be
|
* Operation Regions. Presumably the Windows ACPI implementation
|
||||||
* detected by providing a _REG method object underneath the
|
* always calls the _REG method independent of the presence of
|
||||||
* Embedded Controller device."
|
* an actual Operation Region with the correct address space ID.
|
||||||
*
|
|
||||||
* To quickly access the EC device, we use the EcDeviceNode used
|
|
||||||
* during EC handler installation. Otherwise, we would need to
|
|
||||||
* perform a time consuming namespace walk, executing _HID
|
|
||||||
* methods to find the EC device.
|
|
||||||
*
|
*
|
||||||
* MUTEX: Assumes the namespace is locked
|
* MUTEX: Assumes the namespace is locked
|
||||||
*
|
*
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
static void
|
static void
|
||||||
AcpiEvOrphanEcRegMethod (
|
AcpiEvExecuteOrphanRegMethod (
|
||||||
ACPI_NAMESPACE_NODE *EcDeviceNode)
|
ACPI_NAMESPACE_NODE *DeviceNode,
|
||||||
|
ACPI_ADR_SPACE_TYPE SpaceId)
|
||||||
{
|
{
|
||||||
ACPI_HANDLE RegMethod;
|
ACPI_HANDLE RegMethod;
|
||||||
ACPI_NAMESPACE_NODE *NextNode;
|
ACPI_NAMESPACE_NODE *NextNode;
|
||||||
@ -988,10 +989,10 @@ AcpiEvOrphanEcRegMethod (
|
|||||||
ACPI_OBJECT Objects[2];
|
ACPI_OBJECT Objects[2];
|
||||||
|
|
||||||
|
|
||||||
ACPI_FUNCTION_TRACE (EvOrphanEcRegMethod);
|
ACPI_FUNCTION_TRACE (EvExecuteOrphanRegMethod);
|
||||||
|
|
||||||
|
|
||||||
if (!EcDeviceNode)
|
if (!DeviceNode)
|
||||||
{
|
{
|
||||||
return_VOID;
|
return_VOID;
|
||||||
}
|
}
|
||||||
@ -1002,7 +1003,7 @@ AcpiEvOrphanEcRegMethod (
|
|||||||
|
|
||||||
/* Get a handle to a _REG method immediately under the EC device */
|
/* Get a handle to a _REG method immediately under the EC device */
|
||||||
|
|
||||||
Status = AcpiGetHandle (EcDeviceNode, METHOD_NAME__REG, &RegMethod);
|
Status = AcpiGetHandle (DeviceNode, METHOD_NAME__REG, &RegMethod);
|
||||||
if (ACPI_FAILURE (Status))
|
if (ACPI_FAILURE (Status))
|
||||||
{
|
{
|
||||||
goto Exit; /* There is no _REG method present */
|
goto Exit; /* There is no _REG method present */
|
||||||
@ -1015,25 +1016,25 @@ AcpiEvOrphanEcRegMethod (
|
|||||||
* with other space IDs to be present; but the code below will then
|
* with other space IDs to be present; but the code below will then
|
||||||
* execute the _REG method with the EmbeddedControl SpaceID argument.
|
* execute the _REG method with the EmbeddedControl SpaceID argument.
|
||||||
*/
|
*/
|
||||||
NextNode = AcpiNsGetNextNode (EcDeviceNode, NULL);
|
NextNode = AcpiNsGetNextNode (DeviceNode, NULL);
|
||||||
while (NextNode)
|
while (NextNode)
|
||||||
{
|
{
|
||||||
if ((NextNode->Type == ACPI_TYPE_REGION) &&
|
if ((NextNode->Type == ACPI_TYPE_REGION) &&
|
||||||
(NextNode->Object) &&
|
(NextNode->Object) &&
|
||||||
(NextNode->Object->Region.SpaceId == ACPI_ADR_SPACE_EC))
|
(NextNode->Object->Region.SpaceId == SpaceId))
|
||||||
{
|
{
|
||||||
goto Exit; /* Do not execute the _REG */
|
goto Exit; /* Do not execute the _REG */
|
||||||
}
|
}
|
||||||
|
|
||||||
NextNode = AcpiNsGetNextNode (EcDeviceNode, NextNode);
|
NextNode = AcpiNsGetNextNode (DeviceNode, NextNode);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Evaluate the _REG(EmbeddedControl,Connect) method */
|
/* Evaluate the _REG(SpaceId,Connect) method */
|
||||||
|
|
||||||
Args.Count = 2;
|
Args.Count = 2;
|
||||||
Args.Pointer = Objects;
|
Args.Pointer = Objects;
|
||||||
Objects[0].Type = ACPI_TYPE_INTEGER;
|
Objects[0].Type = ACPI_TYPE_INTEGER;
|
||||||
Objects[0].Integer.Value = ACPI_ADR_SPACE_EC;
|
Objects[0].Integer.Value = SpaceId;
|
||||||
Objects[1].Type = ACPI_TYPE_INTEGER;
|
Objects[1].Type = ACPI_TYPE_INTEGER;
|
||||||
Objects[1].Integer.Value = ACPI_REG_CONNECT;
|
Objects[1].Integer.Value = ACPI_REG_CONNECT;
|
||||||
|
|
||||||
|
@ -223,13 +223,14 @@ AcpiNsCheckReturnValue (
|
|||||||
ACPI_STATUS Status;
|
ACPI_STATUS Status;
|
||||||
const ACPI_PREDEFINED_INFO *Predefined;
|
const ACPI_PREDEFINED_INFO *Predefined;
|
||||||
|
|
||||||
|
ACPI_FUNCTION_TRACE (NsCheckReturnValue);
|
||||||
|
|
||||||
/* If not a predefined name, we cannot validate the return object */
|
/* If not a predefined name, we cannot validate the return object */
|
||||||
|
|
||||||
Predefined = Info->Predefined;
|
Predefined = Info->Predefined;
|
||||||
if (!Predefined)
|
if (!Predefined)
|
||||||
{
|
{
|
||||||
return (AE_OK);
|
return_ACPI_STATUS (AE_OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -239,7 +240,7 @@ AcpiNsCheckReturnValue (
|
|||||||
if ((ReturnStatus != AE_OK) &&
|
if ((ReturnStatus != AE_OK) &&
|
||||||
(ReturnStatus != AE_CTRL_RETURN_VALUE))
|
(ReturnStatus != AE_CTRL_RETURN_VALUE))
|
||||||
{
|
{
|
||||||
return (AE_OK);
|
return_ACPI_STATUS (AE_OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -259,7 +260,7 @@ AcpiNsCheckReturnValue (
|
|||||||
(!Predefined->Info.ExpectedBtypes) ||
|
(!Predefined->Info.ExpectedBtypes) ||
|
||||||
(Predefined->Info.ExpectedBtypes == ACPI_RTYPE_ALL))
|
(Predefined->Info.ExpectedBtypes == ACPI_RTYPE_ALL))
|
||||||
{
|
{
|
||||||
return (AE_OK);
|
return_ACPI_STATUS (AE_OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -325,7 +326,7 @@ AcpiNsCheckReturnValue (
|
|||||||
Node->Flags |= ANOBJ_EVALUATED;
|
Node->Flags |= ANOBJ_EVALUATED;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (Status);
|
return_ACPI_STATUS (Status);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -214,7 +214,7 @@ AcpiNsCheckPackage (
|
|||||||
UINT32 i;
|
UINT32 i;
|
||||||
|
|
||||||
|
|
||||||
ACPI_FUNCTION_NAME (NsCheckPackage);
|
ACPI_FUNCTION_TRACE (NsCheckPackage);
|
||||||
|
|
||||||
|
|
||||||
/* The package info for this name is in the next table entry */
|
/* The package info for this name is in the next table entry */
|
||||||
@ -245,13 +245,13 @@ AcpiNsCheckPackage (
|
|||||||
{
|
{
|
||||||
if (Package->RetInfo.Type == ACPI_PTYPE1_VAR)
|
if (Package->RetInfo.Type == ACPI_PTYPE1_VAR)
|
||||||
{
|
{
|
||||||
return (AE_OK);
|
return_ACPI_STATUS (AE_OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, Info->NodeFlags,
|
ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, Info->NodeFlags,
|
||||||
"Return Package has no elements (empty)"));
|
"Return Package has no elements (empty)"));
|
||||||
|
|
||||||
return (AE_AML_OPERAND_VALUE);
|
return_ACPI_STATUS (AE_AML_OPERAND_VALUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -305,7 +305,7 @@ AcpiNsCheckPackage (
|
|||||||
Package->RetInfo.ObjectType1, i);
|
Package->RetInfo.ObjectType1, i);
|
||||||
if (ACPI_FAILURE (Status))
|
if (ACPI_FAILURE (Status))
|
||||||
{
|
{
|
||||||
return (Status);
|
return_ACPI_STATUS (Status);
|
||||||
}
|
}
|
||||||
|
|
||||||
Elements++;
|
Elements++;
|
||||||
@ -338,7 +338,7 @@ AcpiNsCheckPackage (
|
|||||||
Package->RetInfo3.ObjectType[i], i);
|
Package->RetInfo3.ObjectType[i], i);
|
||||||
if (ACPI_FAILURE (Status))
|
if (ACPI_FAILURE (Status))
|
||||||
{
|
{
|
||||||
return (Status);
|
return_ACPI_STATUS (Status);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -349,7 +349,7 @@ AcpiNsCheckPackage (
|
|||||||
Package->RetInfo3.TailObjectType, i);
|
Package->RetInfo3.TailObjectType, i);
|
||||||
if (ACPI_FAILURE (Status))
|
if (ACPI_FAILURE (Status))
|
||||||
{
|
{
|
||||||
return (Status);
|
return_ACPI_STATUS (Status);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -365,7 +365,7 @@ AcpiNsCheckPackage (
|
|||||||
Info, Elements, ACPI_RTYPE_INTEGER, 0);
|
Info, Elements, ACPI_RTYPE_INTEGER, 0);
|
||||||
if (ACPI_FAILURE (Status))
|
if (ACPI_FAILURE (Status))
|
||||||
{
|
{
|
||||||
return (Status);
|
return_ACPI_STATUS (Status);
|
||||||
}
|
}
|
||||||
|
|
||||||
Elements++;
|
Elements++;
|
||||||
@ -384,7 +384,7 @@ AcpiNsCheckPackage (
|
|||||||
Info, Elements, ACPI_RTYPE_INTEGER, 0);
|
Info, Elements, ACPI_RTYPE_INTEGER, 0);
|
||||||
if (ACPI_FAILURE (Status))
|
if (ACPI_FAILURE (Status))
|
||||||
{
|
{
|
||||||
return (Status);
|
return_ACPI_STATUS (Status);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -428,7 +428,7 @@ AcpiNsCheckPackage (
|
|||||||
Info, ReturnObject, ReturnObjectPtr);
|
Info, ReturnObject, ReturnObjectPtr);
|
||||||
if (ACPI_FAILURE (Status))
|
if (ACPI_FAILURE (Status))
|
||||||
{
|
{
|
||||||
return (Status);
|
return_ACPI_STATUS (Status);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Update locals to point to the new package (of 1 element) */
|
/* Update locals to point to the new package (of 1 element) */
|
||||||
@ -466,7 +466,7 @@ AcpiNsCheckPackage (
|
|||||||
Package->RetInfo.ObjectType1, 0);
|
Package->RetInfo.ObjectType1, 0);
|
||||||
if (ACPI_FAILURE(Status))
|
if (ACPI_FAILURE(Status))
|
||||||
{
|
{
|
||||||
return (Status);
|
return_ACPI_STATUS (Status);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Validate length of the UUID buffer */
|
/* Validate length of the UUID buffer */
|
||||||
@ -475,14 +475,14 @@ AcpiNsCheckPackage (
|
|||||||
{
|
{
|
||||||
ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname,
|
ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname,
|
||||||
Info->NodeFlags, "Invalid length for UUID Buffer"));
|
Info->NodeFlags, "Invalid length for UUID Buffer"));
|
||||||
return (AE_AML_OPERAND_VALUE);
|
return_ACPI_STATUS (AE_AML_OPERAND_VALUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
Status = AcpiNsCheckObjectType(Info, Elements + 1,
|
Status = AcpiNsCheckObjectType(Info, Elements + 1,
|
||||||
Package->RetInfo.ObjectType2, 0);
|
Package->RetInfo.ObjectType2, 0);
|
||||||
if (ACPI_FAILURE(Status))
|
if (ACPI_FAILURE(Status))
|
||||||
{
|
{
|
||||||
return (Status);
|
return_ACPI_STATUS (Status);
|
||||||
}
|
}
|
||||||
|
|
||||||
Elements += 2;
|
Elements += 2;
|
||||||
@ -498,10 +498,10 @@ AcpiNsCheckPackage (
|
|||||||
"Invalid internal return type in table entry: %X",
|
"Invalid internal return type in table entry: %X",
|
||||||
Package->RetInfo.Type));
|
Package->RetInfo.Type));
|
||||||
|
|
||||||
return (AE_AML_INTERNAL);
|
return_ACPI_STATUS (AE_AML_INTERNAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (Status);
|
return_ACPI_STATUS (Status);
|
||||||
|
|
||||||
|
|
||||||
PackageTooSmall:
|
PackageTooSmall:
|
||||||
@ -512,7 +512,7 @@ AcpiNsCheckPackage (
|
|||||||
"Return Package is too small - found %u elements, expected %u",
|
"Return Package is too small - found %u elements, expected %u",
|
||||||
Count, ExpectedCount));
|
Count, ExpectedCount));
|
||||||
|
|
||||||
return (AE_AML_OPERAND_VALUE);
|
return_ACPI_STATUS (AE_AML_OPERAND_VALUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -865,6 +865,8 @@ AcpiNsCheckPackageElements (
|
|||||||
UINT32 i;
|
UINT32 i;
|
||||||
|
|
||||||
|
|
||||||
|
ACPI_FUNCTION_TRACE (NsCheckPackageElements);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Up to two groups of package elements are supported by the data
|
* Up to two groups of package elements are supported by the data
|
||||||
* structure. All elements in each group must be of the same type.
|
* structure. All elements in each group must be of the same type.
|
||||||
@ -876,7 +878,7 @@ AcpiNsCheckPackageElements (
|
|||||||
Type1, i + StartIndex);
|
Type1, i + StartIndex);
|
||||||
if (ACPI_FAILURE (Status))
|
if (ACPI_FAILURE (Status))
|
||||||
{
|
{
|
||||||
return (Status);
|
return_ACPI_STATUS (Status);
|
||||||
}
|
}
|
||||||
|
|
||||||
ThisElement++;
|
ThisElement++;
|
||||||
@ -888,11 +890,11 @@ AcpiNsCheckPackageElements (
|
|||||||
Type2, (i + Count1 + StartIndex));
|
Type2, (i + Count1 + StartIndex));
|
||||||
if (ACPI_FAILURE (Status))
|
if (ACPI_FAILURE (Status))
|
||||||
{
|
{
|
||||||
return (Status);
|
return_ACPI_STATUS (Status);
|
||||||
}
|
}
|
||||||
|
|
||||||
ThisElement++;
|
ThisElement++;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (AE_OK);
|
return_ACPI_STATUS (AE_OK);
|
||||||
}
|
}
|
||||||
|
@ -321,16 +321,18 @@ AcpiNsComplexRepairs (
|
|||||||
ACPI_STATUS Status;
|
ACPI_STATUS Status;
|
||||||
|
|
||||||
|
|
||||||
|
ACPI_FUNCTION_TRACE (NsComplexRepairs);
|
||||||
|
|
||||||
/* Check if this name is in the list of repairable names */
|
/* Check if this name is in the list of repairable names */
|
||||||
|
|
||||||
Predefined = AcpiNsMatchComplexRepair (Node);
|
Predefined = AcpiNsMatchComplexRepair (Node);
|
||||||
if (!Predefined)
|
if (!Predefined)
|
||||||
{
|
{
|
||||||
return (ValidateStatus);
|
return_ACPI_STATUS (ValidateStatus);
|
||||||
}
|
}
|
||||||
|
|
||||||
Status = Predefined->RepairFunction (Info, ReturnObjectPtr);
|
Status = Predefined->RepairFunction (Info, ReturnObjectPtr);
|
||||||
return (Status);
|
return_ACPI_STATUS (Status);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -526,20 +528,21 @@ AcpiNsRepair_CID (
|
|||||||
UINT16 OriginalRefCount;
|
UINT16 OriginalRefCount;
|
||||||
UINT32 i;
|
UINT32 i;
|
||||||
|
|
||||||
|
ACPI_FUNCTION_TRACE (NsRepair_CID);
|
||||||
|
|
||||||
/* Check for _CID as a simple string */
|
/* Check for _CID as a simple string */
|
||||||
|
|
||||||
if (ReturnObject->Common.Type == ACPI_TYPE_STRING)
|
if (ReturnObject->Common.Type == ACPI_TYPE_STRING)
|
||||||
{
|
{
|
||||||
Status = AcpiNsRepair_HID (Info, ReturnObjectPtr);
|
Status = AcpiNsRepair_HID (Info, ReturnObjectPtr);
|
||||||
return (Status);
|
return_ACPI_STATUS (Status);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Exit if not a Package */
|
/* Exit if not a Package */
|
||||||
|
|
||||||
if (ReturnObject->Common.Type != ACPI_TYPE_PACKAGE)
|
if (ReturnObject->Common.Type != ACPI_TYPE_PACKAGE)
|
||||||
{
|
{
|
||||||
return (AE_OK);
|
return_ACPI_STATUS (AE_OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Examine each element of the _CID package */
|
/* Examine each element of the _CID package */
|
||||||
@ -553,7 +556,7 @@ AcpiNsRepair_CID (
|
|||||||
Status = AcpiNsRepair_HID (Info, ElementPtr);
|
Status = AcpiNsRepair_HID (Info, ElementPtr);
|
||||||
if (ACPI_FAILURE (Status))
|
if (ACPI_FAILURE (Status))
|
||||||
{
|
{
|
||||||
return (Status);
|
return_ACPI_STATUS (Status);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (OriginalElement != *ElementPtr)
|
if (OriginalElement != *ElementPtr)
|
||||||
@ -567,7 +570,7 @@ AcpiNsRepair_CID (
|
|||||||
ElementPtr++;
|
ElementPtr++;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (AE_OK);
|
return_ACPI_STATUS (AE_OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -687,9 +690,8 @@ AcpiNsRepair_HID (
|
|||||||
ACPI_OPERAND_OBJECT **ReturnObjectPtr)
|
ACPI_OPERAND_OBJECT **ReturnObjectPtr)
|
||||||
{
|
{
|
||||||
ACPI_OPERAND_OBJECT *ReturnObject = *ReturnObjectPtr;
|
ACPI_OPERAND_OBJECT *ReturnObject = *ReturnObjectPtr;
|
||||||
ACPI_OPERAND_OBJECT *NewString;
|
|
||||||
char *Source;
|
|
||||||
char *Dest;
|
char *Dest;
|
||||||
|
char *Source;
|
||||||
|
|
||||||
|
|
||||||
ACPI_FUNCTION_NAME (NsRepair_HID);
|
ACPI_FUNCTION_NAME (NsRepair_HID);
|
||||||
@ -699,7 +701,7 @@ AcpiNsRepair_HID (
|
|||||||
|
|
||||||
if (ReturnObject->Common.Type != ACPI_TYPE_STRING)
|
if (ReturnObject->Common.Type != ACPI_TYPE_STRING)
|
||||||
{
|
{
|
||||||
return (AE_OK);
|
return_ACPI_STATUS (AE_OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ReturnObject->String.Length == 0)
|
if (ReturnObject->String.Length == 0)
|
||||||
@ -711,15 +713,7 @@ AcpiNsRepair_HID (
|
|||||||
/* Return AE_OK anyway, let driver handle it */
|
/* Return AE_OK anyway, let driver handle it */
|
||||||
|
|
||||||
Info->ReturnFlags |= ACPI_OBJECT_REPAIRED;
|
Info->ReturnFlags |= ACPI_OBJECT_REPAIRED;
|
||||||
return (AE_OK);
|
return_ACPI_STATUS (AE_OK);
|
||||||
}
|
|
||||||
|
|
||||||
/* It is simplest to always create a new string object */
|
|
||||||
|
|
||||||
NewString = AcpiUtCreateStringObject (ReturnObject->String.Length);
|
|
||||||
if (!NewString)
|
|
||||||
{
|
|
||||||
return (AE_NO_MEMORY);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -732,7 +726,7 @@ AcpiNsRepair_HID (
|
|||||||
if (*Source == '*')
|
if (*Source == '*')
|
||||||
{
|
{
|
||||||
Source++;
|
Source++;
|
||||||
NewString->String.Length--;
|
ReturnObject->String.Length--;
|
||||||
|
|
||||||
ACPI_DEBUG_PRINT ((ACPI_DB_REPAIR,
|
ACPI_DEBUG_PRINT ((ACPI_DB_REPAIR,
|
||||||
"%s: Removed invalid leading asterisk\n", Info->FullPathname));
|
"%s: Removed invalid leading asterisk\n", Info->FullPathname));
|
||||||
@ -746,14 +740,13 @@ AcpiNsRepair_HID (
|
|||||||
* "NNNN####" where N is an uppercase letter or decimal digit, and
|
* "NNNN####" where N is an uppercase letter or decimal digit, and
|
||||||
* # is a hex digit.
|
* # is a hex digit.
|
||||||
*/
|
*/
|
||||||
for (Dest = NewString->String.Pointer; *Source; Dest++, Source++)
|
for (Dest = ReturnObject->String.Pointer; *Source; Dest++, Source++)
|
||||||
{
|
{
|
||||||
*Dest = (char) toupper ((int) *Source);
|
*Dest = (char) toupper ((int) *Source);
|
||||||
}
|
}
|
||||||
|
ReturnObject->String.Pointer[ReturnObject->String.Length] = 0;
|
||||||
|
|
||||||
AcpiUtRemoveReference (ReturnObject);
|
return_ACPI_STATUS (AE_OK);
|
||||||
*ReturnObjectPtr = NewString;
|
|
||||||
return (AE_OK);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -155,7 +155,7 @@
|
|||||||
/*
|
/*
|
||||||
* Common set of includes for all ACPICA source files.
|
* Common set of includes for all ACPICA source files.
|
||||||
* We put them here because we don't want to duplicate them
|
* We put them here because we don't want to duplicate them
|
||||||
* in the the source code again and again.
|
* in the source code again and again.
|
||||||
*
|
*
|
||||||
* Note: The order of these include files is important.
|
* Note: The order of these include files is important.
|
||||||
*/
|
*/
|
||||||
|
@ -154,7 +154,7 @@
|
|||||||
|
|
||||||
/* Current ACPICA subsystem version in YYYYMMDD format */
|
/* Current ACPICA subsystem version in YYYYMMDD format */
|
||||||
|
|
||||||
#define ACPI_CA_VERSION 0x20200925
|
#define ACPI_CA_VERSION 0x20201113
|
||||||
|
|
||||||
#include <contrib/dev/acpica/include/acconfig.h>
|
#include <contrib/dev/acpica/include/acconfig.h>
|
||||||
#include <contrib/dev/acpica/include/actypes.h>
|
#include <contrib/dev/acpica/include/actypes.h>
|
||||||
|
@ -181,6 +181,7 @@
|
|||||||
|
|
||||||
/* NVDIMM - NFIT table */
|
/* NVDIMM - NFIT table */
|
||||||
|
|
||||||
|
#define UUID_NFIT_DIMM "4309ac30-0d11-11e4-9191-0800200c9a66"
|
||||||
#define UUID_VOLATILE_MEMORY "7305944f-fdda-44e3-b16c-3f22d252e5d0"
|
#define UUID_VOLATILE_MEMORY "7305944f-fdda-44e3-b16c-3f22d252e5d0"
|
||||||
#define UUID_PERSISTENT_MEMORY "66f0d379-b4f3-4074-ac43-0d3318b78cdb"
|
#define UUID_PERSISTENT_MEMORY "66f0d379-b4f3-4074-ac43-0d3318b78cdb"
|
||||||
#define UUID_CONTROL_REGION "92f701f6-13b4-405d-910b-299367e8234c"
|
#define UUID_CONTROL_REGION "92f701f6-13b4-405d-910b-299367e8234c"
|
||||||
@ -189,6 +190,10 @@
|
|||||||
#define UUID_VOLATILE_VIRTUAL_CD "3d5abd30-4175-87ce-6d64-d2ade523c4bb"
|
#define UUID_VOLATILE_VIRTUAL_CD "3d5abd30-4175-87ce-6d64-d2ade523c4bb"
|
||||||
#define UUID_PERSISTENT_VIRTUAL_DISK "5cea02c9-4d07-69d3-269f-4496fbe096f9"
|
#define UUID_PERSISTENT_VIRTUAL_DISK "5cea02c9-4d07-69d3-269f-4496fbe096f9"
|
||||||
#define UUID_PERSISTENT_VIRTUAL_CD "08018188-42cd-bb48-100f-5387d53ded3d"
|
#define UUID_PERSISTENT_VIRTUAL_CD "08018188-42cd-bb48-100f-5387d53ded3d"
|
||||||
|
#define UUID_NFIT_DIMM_N_MSFT "1ee68b36-d4bd-4a1a-9a16-4f8e53d46e05"
|
||||||
|
#define UUID_NFIT_DIMM_N_HPE1 "9002c334-acf3-4c0e-9642-a235f0d53bc6"
|
||||||
|
#define UUID_NFIT_DIMM_N_HPE2 "5008664b-b758-41a0-a03c-27c2f2d04f7e"
|
||||||
|
#define UUID_NFIT_DIMM_N_HYPERV "5746c5f2-a9a2-4264-ad0e-e4ddc9e09e80"
|
||||||
|
|
||||||
/* Processor Properties (ACPI 6.2) */
|
/* Processor Properties (ACPI 6.2) */
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user