Message ID | 20200528212353.515345-1-colin.king@canonical.com |
---|---|
State | Accepted |
Headers | show |
Series | ACPICA: Update to version 20200528 | expand |
On 2020-05-28 3:23 p.m., Colin King wrote: > From: Colin Ian King <colin.king@canonical.com> > > Changes in this release of ACPICA are detailed at the following > link on the ACPICA developer mailing list: > > https://lists.acpica.org/hyperkitty/list/devel@acpica.org/thread/XIGARBD4AECTLQPYP5A6MGJIUMMWWO4I/ > > Signed-off-by: Colin Ian King <colin.king@canonical.com> > --- > src/acpica/source/compiler/aslcompiler.l | 1 + > src/acpica/source/compiler/aslkeywords.y | 1 + > src/acpica/source/compiler/aslmap.c | 1 + > src/acpica/source/compiler/aslmethod.c | 5 +++- > src/acpica/source/compiler/asltokens.y | 1 + > src/acpica/source/compiler/aslxref.c | 21 ++++++++++++++--- > .../source/components/debugger/dbdisply.c | 2 ++ > .../source/components/utilities/utdecode.c | 23 ++++++++++--------- > src/acpica/source/include/acpixf.h | 2 +- > src/acpica/source/include/actypes.h | 3 ++- > 10 files changed, 43 insertions(+), 17 deletions(-) > > diff --git a/src/acpica/source/compiler/aslcompiler.l b/src/acpica/source/compiler/aslcompiler.l > index c12eb90b..4016faed 100644 > --- a/src/acpica/source/compiler/aslcompiler.l > +++ b/src/acpica/source/compiler/aslcompiler.l > @@ -693,6 +693,7 @@ NamePathTail [.]{NameSeg} > "GeneralPurposeIo" { count (0); return (PARSEOP_REGIONSPACE_GPIO); } /* ACPI 5.0 */ > "GenericSerialBus" { count (0); return (PARSEOP_REGIONSPACE_GSBUS); } /* ACPI 5.0 */ > "PCC" { count (0); return (PARSEOP_REGIONSPACE_PCC); } /* ACPI 5.0 */ > +"PlatformRtMechanism" { count (0); return (PARSEOP_REGIONSPACE_PRM); } > "FFixedHW" { count (0); return (PARSEOP_REGIONSPACE_FFIXEDHW); } > > /* ResourceTypeKeyword: Resource Usage - Resource Descriptors */ > diff --git a/src/acpica/source/compiler/aslkeywords.y b/src/acpica/source/compiler/aslkeywords.y > index 84a81632..8b456229 100644 > --- a/src/acpica/source/compiler/aslkeywords.y > +++ b/src/acpica/source/compiler/aslkeywords.y > @@ -394,6 +394,7 @@ RegionSpaceKeyword > | PARSEOP_REGIONSPACE_GPIO {$$ = TrCreateLeafOp (PARSEOP_REGIONSPACE_GPIO);} > | PARSEOP_REGIONSPACE_GSBUS {$$ = TrCreateLeafOp (PARSEOP_REGIONSPACE_GSBUS);} > | PARSEOP_REGIONSPACE_PCC {$$ = TrCreateLeafOp (PARSEOP_REGIONSPACE_PCC);} > + | PARSEOP_REGIONSPACE_PRM {$$ = TrCreateLeafOp (PARSEOP_REGIONSPACE_PRM);} > | PARSEOP_REGIONSPACE_FFIXEDHW {$$ = TrCreateLeafOp (PARSEOP_REGIONSPACE_FFIXEDHW);} > ; > > diff --git a/src/acpica/source/compiler/aslmap.c b/src/acpica/source/compiler/aslmap.c > index 65103049..2c03cd08 100644 > --- a/src/acpica/source/compiler/aslmap.c > +++ b/src/acpica/source/compiler/aslmap.c > @@ -485,6 +485,7 @@ const ASL_MAPPING_ENTRY AslKeywordMapping [] = > /* REGIONSPACE_PCC */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, ACPI_ADR_SPACE_PLATFORM_COMM, 0, 0), > /* REGIONSPACE_PCI */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, ACPI_ADR_SPACE_PCI_CONFIG, 0, 0), > /* REGIONSPACE_PCIBAR */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, ACPI_ADR_SPACE_PCI_BAR_TARGET, 0, 0), > +/* REGIONSPACE_PRM */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, ACPI_ADR_SPACE_PLATFORM_RT, 0, 0), > /* REGIONSPACE_SMBUS */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, ACPI_ADR_SPACE_SMBUS, 0, 0), > /* REGISTER */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), > /* RELEASE */ OP_TABLE_ENTRY (AML_RELEASE_OP, 0, 0, 0), > diff --git a/src/acpica/source/compiler/aslmethod.c b/src/acpica/source/compiler/aslmethod.c > index d56f4817..ff6fd474 100644 > --- a/src/acpica/source/compiler/aslmethod.c > +++ b/src/acpica/source/compiler/aslmethod.c > @@ -724,7 +724,7 @@ MtCheckNamedObjectInMethod ( > } > > OpInfo = AcpiPsGetOpcodeInfo (Op->Asl.AmlOpcode); > - if (OpInfo->Class == AML_CLASS_NAMED_OBJECT) > + if ((OpInfo->Class == AML_CLASS_NAMED_OBJECT) && (Op->Asl.AmlOpcode != AML_FIELD_OP)) > { > /* > * 1) Mark the method as a method that creates named objects. > @@ -739,6 +739,9 @@ MtCheckNamedObjectInMethod ( > * Reason: If a thread blocks within the method for any reason, and > * another thread enters the method, the method will fail because > * an attempt will be made to create the same object twice. > + * > + * Note: The Field opcode is disallowed here because Field() does not > + * create a new named object. > */ > ExternalPath = AcpiNsGetNormalizedPathname (MethodInfo->Op->Asl.Node, TRUE); > > diff --git a/src/acpica/source/compiler/asltokens.y b/src/acpica/source/compiler/asltokens.y > index 0b61469a..49c060a5 100644 > --- a/src/acpica/source/compiler/asltokens.y > +++ b/src/acpica/source/compiler/asltokens.y > @@ -422,6 +422,7 @@ NoEcho(' > %token <i> PARSEOP_REGIONSPACE_PCC > %token <i> PARSEOP_REGIONSPACE_PCI > %token <i> PARSEOP_REGIONSPACE_PCIBAR > +%token <i> PARSEOP_REGIONSPACE_PRM > %token <i> PARSEOP_REGIONSPACE_SMBUS > %token <i> PARSEOP_REGISTER > %token <i> PARSEOP_RELEASE > diff --git a/src/acpica/source/compiler/aslxref.c b/src/acpica/source/compiler/aslxref.c > index 0df33e31..4bbbe2bd 100644 > --- a/src/acpica/source/compiler/aslxref.c > +++ b/src/acpica/source/compiler/aslxref.c > @@ -821,9 +821,24 @@ XfNamespaceLocateBegin ( > Node->Flags |= ANOBJ_IS_REFERENCED; > } > > - /* Attempt to optimize the NamePath */ > - > - OptOptimizeNamePath (Op, OpInfo->Flags, WalkState, Path, Node); > + /* > + * Attempt to optimize the NamePath > + * > + * One special case: CondRefOf operator - not all AML interpreter > + * implementations expect optimized namepaths as a parameter to this > + * operator. They require relative name paths with prefix operators or > + * namepaths starting with the root scope. > + * > + * Other AML interpreter implementations do not perform the namespace > + * search that starts at the current scope and recursively searching the > + * parent scope until the root scope. The lack of search is only known to > + * occur for the namestring parameter for the CondRefOf operator. > + */ > + if ((Op->Asl.Parent) && > + (Op->Asl.Parent->Asl.ParseOpcode != PARSEOP_CONDREFOF)) > + { > + OptOptimizeNamePath (Op, OpInfo->Flags, WalkState, Path, Node); > + } > > /* > * 1) Dereference an alias (A name reference that is an alias) > diff --git a/src/acpica/source/components/debugger/dbdisply.c b/src/acpica/source/components/debugger/dbdisply.c > index 58bd8eae..75e3e6f8 100644 > --- a/src/acpica/source/components/debugger/dbdisply.c > +++ b/src/acpica/source/components/debugger/dbdisply.c > @@ -204,6 +204,8 @@ static ACPI_ADR_SPACE_TYPE AcpiGbl_SpaceIdList[] = > ACPI_ADR_SPACE_IPMI, > ACPI_ADR_SPACE_GPIO, > ACPI_ADR_SPACE_GSBUS, > + ACPI_ADR_SPACE_PLATFORM_COMM, > + ACPI_ADR_SPACE_PLATFORM_RT, > ACPI_ADR_SPACE_DATA_TABLE, > ACPI_ADR_SPACE_FIXED_HARDWARE > }; > diff --git a/src/acpica/source/components/utilities/utdecode.c b/src/acpica/source/components/utilities/utdecode.c > index 01b1823e..d7f2b5cc 100644 > --- a/src/acpica/source/components/utilities/utdecode.c > +++ b/src/acpica/source/components/utilities/utdecode.c > @@ -214,17 +214,18 @@ const UINT8 AcpiGbl_NsProperties[ACPI_NUM_NS_TYPES] = > > const char *AcpiGbl_RegionTypes[ACPI_NUM_PREDEFINED_REGIONS] = > { > - "SystemMemory", /* 0x00 */ > - "SystemIO", /* 0x01 */ > - "PCI_Config", /* 0x02 */ > - "EmbeddedControl", /* 0x03 */ > - "SMBus", /* 0x04 */ > - "SystemCMOS", /* 0x05 */ > - "PCIBARTarget", /* 0x06 */ > - "IPMI", /* 0x07 */ > - "GeneralPurposeIo", /* 0x08 */ > - "GenericSerialBus", /* 0x09 */ > - "PCC" /* 0x0A */ > + "SystemMemory", /* 0x00 */ > + "SystemIO", /* 0x01 */ > + "PCI_Config", /* 0x02 */ > + "EmbeddedControl", /* 0x03 */ > + "SMBus", /* 0x04 */ > + "SystemCMOS", /* 0x05 */ > + "PCIBARTarget", /* 0x06 */ > + "IPMI", /* 0x07 */ > + "GeneralPurposeIo", /* 0x08 */ > + "GenericSerialBus", /* 0x09 */ > + "PCC", /* 0x0A */ > + "PlatformRtMechanism" /* 0x0B */ > }; > > > diff --git a/src/acpica/source/include/acpixf.h b/src/acpica/source/include/acpixf.h > index ed280425..2eafdeac 100644 > --- a/src/acpica/source/include/acpixf.h > +++ b/src/acpica/source/include/acpixf.h > @@ -154,7 +154,7 @@ > > /* Current ACPICA subsystem version in YYYYMMDD format */ > > -#define ACPI_CA_VERSION 0x20200430 > +#define ACPI_CA_VERSION 0x20200528 > > #include "acconfig.h" > #include "actypes.h" > diff --git a/src/acpica/source/include/actypes.h b/src/acpica/source/include/actypes.h > index c7d2c9aa..2666ebfb 100644 > --- a/src/acpica/source/include/actypes.h > +++ b/src/acpica/source/include/actypes.h > @@ -968,8 +968,9 @@ typedef UINT8 ACPI_ADR_SPACE_TYPE; > #define ACPI_ADR_SPACE_GPIO (ACPI_ADR_SPACE_TYPE) 8 > #define ACPI_ADR_SPACE_GSBUS (ACPI_ADR_SPACE_TYPE) 9 > #define ACPI_ADR_SPACE_PLATFORM_COMM (ACPI_ADR_SPACE_TYPE) 10 > +#define ACPI_ADR_SPACE_PLATFORM_RT (ACPI_ADR_SPACE_TYPE) 11 > > -#define ACPI_NUM_PREDEFINED_REGIONS 11 > +#define ACPI_NUM_PREDEFINED_REGIONS 12 > > /* > * Special Address Spaces > Acked-by: Alex Hung <alex.hung@canonical.com>
On 5/29/20 5:23 AM, Colin King wrote: > From: Colin Ian King <colin.king@canonical.com> > > Changes in this release of ACPICA are detailed at the following > link on the ACPICA developer mailing list: > > https://lists.acpica.org/hyperkitty/list/devel@acpica.org/thread/XIGARBD4AECTLQPYP5A6MGJIUMMWWO4I/ > > Signed-off-by: Colin Ian King <colin.king@canonical.com> > --- > src/acpica/source/compiler/aslcompiler.l | 1 + > src/acpica/source/compiler/aslkeywords.y | 1 + > src/acpica/source/compiler/aslmap.c | 1 + > src/acpica/source/compiler/aslmethod.c | 5 +++- > src/acpica/source/compiler/asltokens.y | 1 + > src/acpica/source/compiler/aslxref.c | 21 ++++++++++++++--- > .../source/components/debugger/dbdisply.c | 2 ++ > .../source/components/utilities/utdecode.c | 23 ++++++++++--------- > src/acpica/source/include/acpixf.h | 2 +- > src/acpica/source/include/actypes.h | 3 ++- > 10 files changed, 43 insertions(+), 17 deletions(-) > > diff --git a/src/acpica/source/compiler/aslcompiler.l b/src/acpica/source/compiler/aslcompiler.l > index c12eb90b..4016faed 100644 > --- a/src/acpica/source/compiler/aslcompiler.l > +++ b/src/acpica/source/compiler/aslcompiler.l > @@ -693,6 +693,7 @@ NamePathTail [.]{NameSeg} > "GeneralPurposeIo" { count (0); return (PARSEOP_REGIONSPACE_GPIO); } /* ACPI 5.0 */ > "GenericSerialBus" { count (0); return (PARSEOP_REGIONSPACE_GSBUS); } /* ACPI 5.0 */ > "PCC" { count (0); return (PARSEOP_REGIONSPACE_PCC); } /* ACPI 5.0 */ > +"PlatformRtMechanism" { count (0); return (PARSEOP_REGIONSPACE_PRM); } > "FFixedHW" { count (0); return (PARSEOP_REGIONSPACE_FFIXEDHW); } > > /* ResourceTypeKeyword: Resource Usage - Resource Descriptors */ > diff --git a/src/acpica/source/compiler/aslkeywords.y b/src/acpica/source/compiler/aslkeywords.y > index 84a81632..8b456229 100644 > --- a/src/acpica/source/compiler/aslkeywords.y > +++ b/src/acpica/source/compiler/aslkeywords.y > @@ -394,6 +394,7 @@ RegionSpaceKeyword > | PARSEOP_REGIONSPACE_GPIO {$$ = TrCreateLeafOp (PARSEOP_REGIONSPACE_GPIO);} > | PARSEOP_REGIONSPACE_GSBUS {$$ = TrCreateLeafOp (PARSEOP_REGIONSPACE_GSBUS);} > | PARSEOP_REGIONSPACE_PCC {$$ = TrCreateLeafOp (PARSEOP_REGIONSPACE_PCC);} > + | PARSEOP_REGIONSPACE_PRM {$$ = TrCreateLeafOp (PARSEOP_REGIONSPACE_PRM);} > | PARSEOP_REGIONSPACE_FFIXEDHW {$$ = TrCreateLeafOp (PARSEOP_REGIONSPACE_FFIXEDHW);} > ; > > diff --git a/src/acpica/source/compiler/aslmap.c b/src/acpica/source/compiler/aslmap.c > index 65103049..2c03cd08 100644 > --- a/src/acpica/source/compiler/aslmap.c > +++ b/src/acpica/source/compiler/aslmap.c > @@ -485,6 +485,7 @@ const ASL_MAPPING_ENTRY AslKeywordMapping [] = > /* REGIONSPACE_PCC */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, ACPI_ADR_SPACE_PLATFORM_COMM, 0, 0), > /* REGIONSPACE_PCI */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, ACPI_ADR_SPACE_PCI_CONFIG, 0, 0), > /* REGIONSPACE_PCIBAR */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, ACPI_ADR_SPACE_PCI_BAR_TARGET, 0, 0), > +/* REGIONSPACE_PRM */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, ACPI_ADR_SPACE_PLATFORM_RT, 0, 0), > /* REGIONSPACE_SMBUS */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, ACPI_ADR_SPACE_SMBUS, 0, 0), > /* REGISTER */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), > /* RELEASE */ OP_TABLE_ENTRY (AML_RELEASE_OP, 0, 0, 0), > diff --git a/src/acpica/source/compiler/aslmethod.c b/src/acpica/source/compiler/aslmethod.c > index d56f4817..ff6fd474 100644 > --- a/src/acpica/source/compiler/aslmethod.c > +++ b/src/acpica/source/compiler/aslmethod.c > @@ -724,7 +724,7 @@ MtCheckNamedObjectInMethod ( > } > > OpInfo = AcpiPsGetOpcodeInfo (Op->Asl.AmlOpcode); > - if (OpInfo->Class == AML_CLASS_NAMED_OBJECT) > + if ((OpInfo->Class == AML_CLASS_NAMED_OBJECT) && (Op->Asl.AmlOpcode != AML_FIELD_OP)) > { > /* > * 1) Mark the method as a method that creates named objects. > @@ -739,6 +739,9 @@ MtCheckNamedObjectInMethod ( > * Reason: If a thread blocks within the method for any reason, and > * another thread enters the method, the method will fail because > * an attempt will be made to create the same object twice. > + * > + * Note: The Field opcode is disallowed here because Field() does not > + * create a new named object. > */ > ExternalPath = AcpiNsGetNormalizedPathname (MethodInfo->Op->Asl.Node, TRUE); > > diff --git a/src/acpica/source/compiler/asltokens.y b/src/acpica/source/compiler/asltokens.y > index 0b61469a..49c060a5 100644 > --- a/src/acpica/source/compiler/asltokens.y > +++ b/src/acpica/source/compiler/asltokens.y > @@ -422,6 +422,7 @@ NoEcho(' > %token <i> PARSEOP_REGIONSPACE_PCC > %token <i> PARSEOP_REGIONSPACE_PCI > %token <i> PARSEOP_REGIONSPACE_PCIBAR > +%token <i> PARSEOP_REGIONSPACE_PRM > %token <i> PARSEOP_REGIONSPACE_SMBUS > %token <i> PARSEOP_REGISTER > %token <i> PARSEOP_RELEASE > diff --git a/src/acpica/source/compiler/aslxref.c b/src/acpica/source/compiler/aslxref.c > index 0df33e31..4bbbe2bd 100644 > --- a/src/acpica/source/compiler/aslxref.c > +++ b/src/acpica/source/compiler/aslxref.c > @@ -821,9 +821,24 @@ XfNamespaceLocateBegin ( > Node->Flags |= ANOBJ_IS_REFERENCED; > } > > - /* Attempt to optimize the NamePath */ > - > - OptOptimizeNamePath (Op, OpInfo->Flags, WalkState, Path, Node); > + /* > + * Attempt to optimize the NamePath > + * > + * One special case: CondRefOf operator - not all AML interpreter > + * implementations expect optimized namepaths as a parameter to this > + * operator. They require relative name paths with prefix operators or > + * namepaths starting with the root scope. > + * > + * Other AML interpreter implementations do not perform the namespace > + * search that starts at the current scope and recursively searching the > + * parent scope until the root scope. The lack of search is only known to > + * occur for the namestring parameter for the CondRefOf operator. > + */ > + if ((Op->Asl.Parent) && > + (Op->Asl.Parent->Asl.ParseOpcode != PARSEOP_CONDREFOF)) > + { > + OptOptimizeNamePath (Op, OpInfo->Flags, WalkState, Path, Node); > + } > > /* > * 1) Dereference an alias (A name reference that is an alias) > diff --git a/src/acpica/source/components/debugger/dbdisply.c b/src/acpica/source/components/debugger/dbdisply.c > index 58bd8eae..75e3e6f8 100644 > --- a/src/acpica/source/components/debugger/dbdisply.c > +++ b/src/acpica/source/components/debugger/dbdisply.c > @@ -204,6 +204,8 @@ static ACPI_ADR_SPACE_TYPE AcpiGbl_SpaceIdList[] = > ACPI_ADR_SPACE_IPMI, > ACPI_ADR_SPACE_GPIO, > ACPI_ADR_SPACE_GSBUS, > + ACPI_ADR_SPACE_PLATFORM_COMM, > + ACPI_ADR_SPACE_PLATFORM_RT, > ACPI_ADR_SPACE_DATA_TABLE, > ACPI_ADR_SPACE_FIXED_HARDWARE > }; > diff --git a/src/acpica/source/components/utilities/utdecode.c b/src/acpica/source/components/utilities/utdecode.c > index 01b1823e..d7f2b5cc 100644 > --- a/src/acpica/source/components/utilities/utdecode.c > +++ b/src/acpica/source/components/utilities/utdecode.c > @@ -214,17 +214,18 @@ const UINT8 AcpiGbl_NsProperties[ACPI_NUM_NS_TYPES] = > > const char *AcpiGbl_RegionTypes[ACPI_NUM_PREDEFINED_REGIONS] = > { > - "SystemMemory", /* 0x00 */ > - "SystemIO", /* 0x01 */ > - "PCI_Config", /* 0x02 */ > - "EmbeddedControl", /* 0x03 */ > - "SMBus", /* 0x04 */ > - "SystemCMOS", /* 0x05 */ > - "PCIBARTarget", /* 0x06 */ > - "IPMI", /* 0x07 */ > - "GeneralPurposeIo", /* 0x08 */ > - "GenericSerialBus", /* 0x09 */ > - "PCC" /* 0x0A */ > + "SystemMemory", /* 0x00 */ > + "SystemIO", /* 0x01 */ > + "PCI_Config", /* 0x02 */ > + "EmbeddedControl", /* 0x03 */ > + "SMBus", /* 0x04 */ > + "SystemCMOS", /* 0x05 */ > + "PCIBARTarget", /* 0x06 */ > + "IPMI", /* 0x07 */ > + "GeneralPurposeIo", /* 0x08 */ > + "GenericSerialBus", /* 0x09 */ > + "PCC", /* 0x0A */ > + "PlatformRtMechanism" /* 0x0B */ > }; > > > diff --git a/src/acpica/source/include/acpixf.h b/src/acpica/source/include/acpixf.h > index ed280425..2eafdeac 100644 > --- a/src/acpica/source/include/acpixf.h > +++ b/src/acpica/source/include/acpixf.h > @@ -154,7 +154,7 @@ > > /* Current ACPICA subsystem version in YYYYMMDD format */ > > -#define ACPI_CA_VERSION 0x20200430 > +#define ACPI_CA_VERSION 0x20200528 > > #include "acconfig.h" > #include "actypes.h" > diff --git a/src/acpica/source/include/actypes.h b/src/acpica/source/include/actypes.h > index c7d2c9aa..2666ebfb 100644 > --- a/src/acpica/source/include/actypes.h > +++ b/src/acpica/source/include/actypes.h > @@ -968,8 +968,9 @@ typedef UINT8 ACPI_ADR_SPACE_TYPE; > #define ACPI_ADR_SPACE_GPIO (ACPI_ADR_SPACE_TYPE) 8 > #define ACPI_ADR_SPACE_GSBUS (ACPI_ADR_SPACE_TYPE) 9 > #define ACPI_ADR_SPACE_PLATFORM_COMM (ACPI_ADR_SPACE_TYPE) 10 > +#define ACPI_ADR_SPACE_PLATFORM_RT (ACPI_ADR_SPACE_TYPE) 11 > > -#define ACPI_NUM_PREDEFINED_REGIONS 11 > +#define ACPI_NUM_PREDEFINED_REGIONS 12 > > /* > * Special Address Spaces > Acked-by: Ivan Hu <ivan.hu@canonical.com>
diff --git a/src/acpica/source/compiler/aslcompiler.l b/src/acpica/source/compiler/aslcompiler.l index c12eb90b..4016faed 100644 --- a/src/acpica/source/compiler/aslcompiler.l +++ b/src/acpica/source/compiler/aslcompiler.l @@ -693,6 +693,7 @@ NamePathTail [.]{NameSeg} "GeneralPurposeIo" { count (0); return (PARSEOP_REGIONSPACE_GPIO); } /* ACPI 5.0 */ "GenericSerialBus" { count (0); return (PARSEOP_REGIONSPACE_GSBUS); } /* ACPI 5.0 */ "PCC" { count (0); return (PARSEOP_REGIONSPACE_PCC); } /* ACPI 5.0 */ +"PlatformRtMechanism" { count (0); return (PARSEOP_REGIONSPACE_PRM); } "FFixedHW" { count (0); return (PARSEOP_REGIONSPACE_FFIXEDHW); } /* ResourceTypeKeyword: Resource Usage - Resource Descriptors */ diff --git a/src/acpica/source/compiler/aslkeywords.y b/src/acpica/source/compiler/aslkeywords.y index 84a81632..8b456229 100644 --- a/src/acpica/source/compiler/aslkeywords.y +++ b/src/acpica/source/compiler/aslkeywords.y @@ -394,6 +394,7 @@ RegionSpaceKeyword | PARSEOP_REGIONSPACE_GPIO {$$ = TrCreateLeafOp (PARSEOP_REGIONSPACE_GPIO);} | PARSEOP_REGIONSPACE_GSBUS {$$ = TrCreateLeafOp (PARSEOP_REGIONSPACE_GSBUS);} | PARSEOP_REGIONSPACE_PCC {$$ = TrCreateLeafOp (PARSEOP_REGIONSPACE_PCC);} + | PARSEOP_REGIONSPACE_PRM {$$ = TrCreateLeafOp (PARSEOP_REGIONSPACE_PRM);} | PARSEOP_REGIONSPACE_FFIXEDHW {$$ = TrCreateLeafOp (PARSEOP_REGIONSPACE_FFIXEDHW);} ; diff --git a/src/acpica/source/compiler/aslmap.c b/src/acpica/source/compiler/aslmap.c index 65103049..2c03cd08 100644 --- a/src/acpica/source/compiler/aslmap.c +++ b/src/acpica/source/compiler/aslmap.c @@ -485,6 +485,7 @@ const ASL_MAPPING_ENTRY AslKeywordMapping [] = /* REGIONSPACE_PCC */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, ACPI_ADR_SPACE_PLATFORM_COMM, 0, 0), /* REGIONSPACE_PCI */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, ACPI_ADR_SPACE_PCI_CONFIG, 0, 0), /* REGIONSPACE_PCIBAR */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, ACPI_ADR_SPACE_PCI_BAR_TARGET, 0, 0), +/* REGIONSPACE_PRM */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, ACPI_ADR_SPACE_PLATFORM_RT, 0, 0), /* REGIONSPACE_SMBUS */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, ACPI_ADR_SPACE_SMBUS, 0, 0), /* REGISTER */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* RELEASE */ OP_TABLE_ENTRY (AML_RELEASE_OP, 0, 0, 0), diff --git a/src/acpica/source/compiler/aslmethod.c b/src/acpica/source/compiler/aslmethod.c index d56f4817..ff6fd474 100644 --- a/src/acpica/source/compiler/aslmethod.c +++ b/src/acpica/source/compiler/aslmethod.c @@ -724,7 +724,7 @@ MtCheckNamedObjectInMethod ( } OpInfo = AcpiPsGetOpcodeInfo (Op->Asl.AmlOpcode); - if (OpInfo->Class == AML_CLASS_NAMED_OBJECT) + if ((OpInfo->Class == AML_CLASS_NAMED_OBJECT) && (Op->Asl.AmlOpcode != AML_FIELD_OP)) { /* * 1) Mark the method as a method that creates named objects. @@ -739,6 +739,9 @@ MtCheckNamedObjectInMethod ( * Reason: If a thread blocks within the method for any reason, and * another thread enters the method, the method will fail because * an attempt will be made to create the same object twice. + * + * Note: The Field opcode is disallowed here because Field() does not + * create a new named object. */ ExternalPath = AcpiNsGetNormalizedPathname (MethodInfo->Op->Asl.Node, TRUE); diff --git a/src/acpica/source/compiler/asltokens.y b/src/acpica/source/compiler/asltokens.y index 0b61469a..49c060a5 100644 --- a/src/acpica/source/compiler/asltokens.y +++ b/src/acpica/source/compiler/asltokens.y @@ -422,6 +422,7 @@ NoEcho(' %token <i> PARSEOP_REGIONSPACE_PCC %token <i> PARSEOP_REGIONSPACE_PCI %token <i> PARSEOP_REGIONSPACE_PCIBAR +%token <i> PARSEOP_REGIONSPACE_PRM %token <i> PARSEOP_REGIONSPACE_SMBUS %token <i> PARSEOP_REGISTER %token <i> PARSEOP_RELEASE diff --git a/src/acpica/source/compiler/aslxref.c b/src/acpica/source/compiler/aslxref.c index 0df33e31..4bbbe2bd 100644 --- a/src/acpica/source/compiler/aslxref.c +++ b/src/acpica/source/compiler/aslxref.c @@ -821,9 +821,24 @@ XfNamespaceLocateBegin ( Node->Flags |= ANOBJ_IS_REFERENCED; } - /* Attempt to optimize the NamePath */ - - OptOptimizeNamePath (Op, OpInfo->Flags, WalkState, Path, Node); + /* + * Attempt to optimize the NamePath + * + * One special case: CondRefOf operator - not all AML interpreter + * implementations expect optimized namepaths as a parameter to this + * operator. They require relative name paths with prefix operators or + * namepaths starting with the root scope. + * + * Other AML interpreter implementations do not perform the namespace + * search that starts at the current scope and recursively searching the + * parent scope until the root scope. The lack of search is only known to + * occur for the namestring parameter for the CondRefOf operator. + */ + if ((Op->Asl.Parent) && + (Op->Asl.Parent->Asl.ParseOpcode != PARSEOP_CONDREFOF)) + { + OptOptimizeNamePath (Op, OpInfo->Flags, WalkState, Path, Node); + } /* * 1) Dereference an alias (A name reference that is an alias) diff --git a/src/acpica/source/components/debugger/dbdisply.c b/src/acpica/source/components/debugger/dbdisply.c index 58bd8eae..75e3e6f8 100644 --- a/src/acpica/source/components/debugger/dbdisply.c +++ b/src/acpica/source/components/debugger/dbdisply.c @@ -204,6 +204,8 @@ static ACPI_ADR_SPACE_TYPE AcpiGbl_SpaceIdList[] = ACPI_ADR_SPACE_IPMI, ACPI_ADR_SPACE_GPIO, ACPI_ADR_SPACE_GSBUS, + ACPI_ADR_SPACE_PLATFORM_COMM, + ACPI_ADR_SPACE_PLATFORM_RT, ACPI_ADR_SPACE_DATA_TABLE, ACPI_ADR_SPACE_FIXED_HARDWARE }; diff --git a/src/acpica/source/components/utilities/utdecode.c b/src/acpica/source/components/utilities/utdecode.c index 01b1823e..d7f2b5cc 100644 --- a/src/acpica/source/components/utilities/utdecode.c +++ b/src/acpica/source/components/utilities/utdecode.c @@ -214,17 +214,18 @@ const UINT8 AcpiGbl_NsProperties[ACPI_NUM_NS_TYPES] = const char *AcpiGbl_RegionTypes[ACPI_NUM_PREDEFINED_REGIONS] = { - "SystemMemory", /* 0x00 */ - "SystemIO", /* 0x01 */ - "PCI_Config", /* 0x02 */ - "EmbeddedControl", /* 0x03 */ - "SMBus", /* 0x04 */ - "SystemCMOS", /* 0x05 */ - "PCIBARTarget", /* 0x06 */ - "IPMI", /* 0x07 */ - "GeneralPurposeIo", /* 0x08 */ - "GenericSerialBus", /* 0x09 */ - "PCC" /* 0x0A */ + "SystemMemory", /* 0x00 */ + "SystemIO", /* 0x01 */ + "PCI_Config", /* 0x02 */ + "EmbeddedControl", /* 0x03 */ + "SMBus", /* 0x04 */ + "SystemCMOS", /* 0x05 */ + "PCIBARTarget", /* 0x06 */ + "IPMI", /* 0x07 */ + "GeneralPurposeIo", /* 0x08 */ + "GenericSerialBus", /* 0x09 */ + "PCC", /* 0x0A */ + "PlatformRtMechanism" /* 0x0B */ }; diff --git a/src/acpica/source/include/acpixf.h b/src/acpica/source/include/acpixf.h index ed280425..2eafdeac 100644 --- a/src/acpica/source/include/acpixf.h +++ b/src/acpica/source/include/acpixf.h @@ -154,7 +154,7 @@ /* Current ACPICA subsystem version in YYYYMMDD format */ -#define ACPI_CA_VERSION 0x20200430 +#define ACPI_CA_VERSION 0x20200528 #include "acconfig.h" #include "actypes.h" diff --git a/src/acpica/source/include/actypes.h b/src/acpica/source/include/actypes.h index c7d2c9aa..2666ebfb 100644 --- a/src/acpica/source/include/actypes.h +++ b/src/acpica/source/include/actypes.h @@ -968,8 +968,9 @@ typedef UINT8 ACPI_ADR_SPACE_TYPE; #define ACPI_ADR_SPACE_GPIO (ACPI_ADR_SPACE_TYPE) 8 #define ACPI_ADR_SPACE_GSBUS (ACPI_ADR_SPACE_TYPE) 9 #define ACPI_ADR_SPACE_PLATFORM_COMM (ACPI_ADR_SPACE_TYPE) 10 +#define ACPI_ADR_SPACE_PLATFORM_RT (ACPI_ADR_SPACE_TYPE) 11 -#define ACPI_NUM_PREDEFINED_REGIONS 11 +#define ACPI_NUM_PREDEFINED_REGIONS 12 /* * Special Address Spaces