ACK: [PATCH] ACPICA: Update to version 20250807
Ivan Hu
ivan.hu at canonical.com
Mon Aug 18 03:30:24 UTC 2025
Thanks!
Acked-by: Ivan Hu <ivan.hu at canonical.com>
On Fri, Aug 8, 2025 at 3:36 PM Colin Ian King <colin.i.king at gmail.com>
wrote:
> Major changes in this release of ACPICA are detailed below (from
> ACPICA documents/changes.txt):
>
> * Added option to skip the global lock for SMM - Huacai Chen
> * Fixed non-NUL terminated string implementations - Ahmed Salem
> * Fixed CCEL and CDAT templates - Ahmed Salem
> * Fixed a major Linux kernel bug (UAF) that was triggered by unequal
> number of method parameters (definition) vs arguments (invocation)
> in different places - Peter Williams, Hans de Goede, Rafael Wysocki
> * Define distinct D3 states (D3Hot and D3Cold) that help clarify the
> device behavior support - Aymeric Wibo
> * A few cleanups, improvements to existing table supports, small
> fixes, spelling corrections etc.
>
> Signed-off-by: Colin Ian King <colin.i.king at gmail.com>
> ---
> src/acpica/source/common/adisasm.c | 12 +--
> src/acpica/source/common/ahtable.c | 1 +
> src/acpica/source/common/dmtable.c | 1 +
> src/acpica/source/common/dmtbdump2.c | 2 +-
> src/acpica/source/common/dmtbinfo2.c | 2 +-
> src/acpica/source/common/dmtbinfo3.c | 2 +-
> src/acpica/source/compiler/aslanalyze.c | 16 +++-
> src/acpica/source/compiler/aslrestype2s.c | 2 +-
> src/acpica/source/compiler/dttable2.c | 77 +++++++++++++------
> src/acpica/source/compiler/dttemplate.c | 24 ++++--
> src/acpica/source/compiler/dttemplate.h | 24 +++---
> src/acpica/source/compiler/dtutils.c | 1 +
> .../components/disassembler/dmresrcl2.c | 2 +-
> .../source/components/dispatcher/dsmethod.c | 29 ++++---
> .../source/components/dispatcher/dsmthdat.c | 1 +
> src/acpica/source/components/events/evglock.c | 5 ++
> .../source/components/executer/extrace.c | 66 +++++++++++++++-
> .../source/components/parser/psopinfo.c | 8 +-
> src/acpica/source/components/tables/tbprint.c | 8 ++
> .../source/components/utilities/utnonansi.c | 2 +-
> src/acpica/source/include/acdebug.h | 2 +-
> src/acpica/source/include/acexcep.h | 9 ++-
> src/acpica/source/include/acinterp.h | 4 +
> src/acpica/source/include/acpixf.h | 8 +-
> src/acpica/source/include/actbl.h | 2 +-
> src/acpica/source/include/actbl1.h | 2 +-
> src/acpica/source/include/actbl2.h | 25 ++++++
> src/acpica/source/include/actypes.h | 8 +-
> 28 files changed, 262 insertions(+), 83 deletions(-)
>
> diff --git a/src/acpica/source/common/adisasm.c
> b/src/acpica/source/common/adisasm.c
> index a207c504..dafc0d1e 100644
> --- a/src/acpica/source/common/adisasm.c
> +++ b/src/acpica/source/common/adisasm.c
> @@ -481,12 +481,12 @@ AdDisassembleOneTable (
> "FieldName : FieldValue (in hex)\n */\n\n");
>
> AcpiDmDumpDataTable (Table);
> - fprintf (stderr, "Acpi Data Table [%4.4s] decoded\n",
> + fprintf (stdout, "Acpi Data Table [%4.4s] decoded\n",
> AcpiGbl_CDAT ? (char *) AcpiGbl_CDAT : Table->Signature);
>
> if (File)
> {
> - fprintf (stderr, "Formatted output: %s - %u bytes\n",
> + fprintf (stdout, "Formatted output: %s - %u bytes\n",
> DisasmFilename, CmGetFileSize (File));
> }
>
> @@ -584,16 +584,16 @@ AdDisassembleOneTable (
>
> AcpiDmDumpDataTable (Table);
>
> - fprintf (stderr, "Disassembly completed\n");
> + fprintf (stdout, "Disassembly completed\n");
> if (File)
> {
> - fprintf (stderr, "ASL Output: %s - %u bytes\n",
> + fprintf (stdout, "ASL Output: %s - %u bytes\n",
> DisasmFilename, CmGetFileSize (File));
> }
>
> if (AslGbl_MapfileFlag)
> {
> - fprintf (stderr, "%14s %s - %u bytes\n",
> + fprintf (stdout, "%14s %s - %u bytes\n",
> AslGbl_FileDescs[ASL_FILE_MAP_OUTPUT].ShortDescription,
> AslGbl_Files[ASL_FILE_MAP_OUTPUT].Filename,
> FlGetFileSize (ASL_FILE_MAP_OUTPUT));
> @@ -630,7 +630,7 @@ AdReparseOneTable (
> ACPI_COMMENT_ADDR_NODE *AddrListHead;
>
>
> - fprintf (stderr,
> + fprintf (stdout,
> "\nFound %u external control methods, "
> "reparsing with new information\n",
> AcpiDmGetUnresolvedExternalMethodCount ());
> diff --git a/src/acpica/source/common/ahtable.c
> b/src/acpica/source/common/ahtable.c
> index 4d4ea69d..705a6188 100644
> --- a/src/acpica/source/common/ahtable.c
> +++ b/src/acpica/source/common/ahtable.c
> @@ -265,6 +265,7 @@ const AH_TABLE AcpiGbl_SupportedTables[] =
> {ACPI_SIG_SSDT, "Secondary System Description Table (AML table)"},
> {ACPI_SIG_STAO, "Status Override Table"},
> {ACPI_SIG_SVKL, "Storage Volume Key Location Table"},
> + {ACPI_SIG_SWFT, "SoundWire File Table"},
> {ACPI_SIG_TCPA, "Trusted Computing Platform Alliance Table"},
> {ACPI_SIG_TDEL, "TD-Event Log Table"},
> {ACPI_SIG_TPM2, "Trusted Platform Module hardware interface Table"},
> diff --git a/src/acpica/source/common/dmtable.c
> b/src/acpica/source/common/dmtable.c
> index 796fb6eb..02125db1 100644
> --- a/src/acpica/source/common/dmtable.c
> +++ b/src/acpica/source/common/dmtable.c
> @@ -721,6 +721,7 @@ const ACPI_DMTABLE_DATA AcpiDmTableData[] =
> {ACPI_SIG_SRAT, NULL, AcpiDmDumpSrat,
> DtCompileSrat, TemplateSrat},
> {ACPI_SIG_STAO, NULL, AcpiDmDumpStao,
> DtCompileStao, TemplateStao},
> {ACPI_SIG_SVKL, AcpiDmTableInfoSvkl, AcpiDmDumpSvkl,
> DtCompileSvkl, TemplateSvkl},
> + {ACPI_SIG_SWFT, NULL, NULL, NULL,
> NULL},
> {ACPI_SIG_TCPA, NULL, AcpiDmDumpTcpa,
> DtCompileTcpa, TemplateTcpa},
> {ACPI_SIG_TDEL, AcpiDmTableInfoTdel, NULL, NULL,
> TemplateTdel},
> {ACPI_SIG_TPM2, AcpiDmTableInfoTpm2, AcpiDmDumpTpm2,
> DtCompileTpm2, TemplateTpm2},
> diff --git a/src/acpica/source/common/dmtbdump2.c
> b/src/acpica/source/common/dmtbdump2.c
> index 60184733..f9145d7c 100644
> --- a/src/acpica/source/common/dmtbdump2.c
> +++ b/src/acpica/source/common/dmtbdump2.c
> @@ -2637,7 +2637,7 @@ AcpiDmDumpRhct (
> RhctIsaString, RhctIsaString->IsaLength,
> AcpiDmTableInfoRhctIsa1);
> if (Subtable->Length > IsaPadOffset)
> {
> - Status = AcpiDmDumpTable (Table->Length, Offset +
> SubtableOffset,
> + Status = AcpiDmDumpTable (Table->Length, Offset +
> IsaPadOffset,
> ACPI_ADD_PTR (UINT8, Subtable, IsaPadOffset),
> (Subtable->Length - IsaPadOffset),
> AcpiDmTableInfoRhctIsaPad);
> }
> diff --git a/src/acpica/source/common/dmtbinfo2.c
> b/src/acpica/source/common/dmtbinfo2.c
> index 9ae831bd..570540e5 100644
> --- a/src/acpica/source/common/dmtbinfo2.c
> +++ b/src/acpica/source/common/dmtbinfo2.c
> @@ -2180,7 +2180,7 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoRhct[] =
> ACPI_DMTABLE_INFO AcpiDmTableInfoRhctNodeHdr[] =
> {
> {ACPI_DMT_RHCT, ACPI_RHCTH_OFFSET (Type), "Subtable
> Type", 0},
> - {ACPI_DMT_UINT16, ACPI_RHCTH_OFFSET (Length), "Length",
> 0},
> + {ACPI_DMT_UINT16, ACPI_RHCTH_OFFSET (Length), "Length",
> DT_LENGTH},
> {ACPI_DMT_UINT16, ACPI_RHCTH_OFFSET (Revision), "Revision",
> 0},
> ACPI_DMT_TERMINATOR
> };
> diff --git a/src/acpica/source/common/dmtbinfo3.c
> b/src/acpica/source/common/dmtbinfo3.c
> index 35c544d3..24187f6a 100644
> --- a/src/acpica/source/common/dmtbinfo3.c
> +++ b/src/acpica/source/common/dmtbinfo3.c
> @@ -200,7 +200,7 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoCcel[] =
> {
> {ACPI_DMT_UINT8, ACPI_CCEL_OFFSET (CCType), "CC
> Type", 0},
> {ACPI_DMT_UINT8, ACPI_CCEL_OFFSET (CCSubType), "CC
> Sub Type", 0},
> - {ACPI_DMT_UINT32, ACPI_CCEL_OFFSET (Reserved),
> "Reserved", 0},
> + {ACPI_DMT_UINT16, ACPI_CCEL_OFFSET (Reserved),
> "Reserved", 0},
> {ACPI_DMT_UINT64, ACPI_CCEL_OFFSET (LogAreaMinimumLength), "Log
> Area Minimum Length", 0},
> {ACPI_DMT_UINT64, ACPI_CCEL_OFFSET (LogAreaStartAddress), "Log
> Area Start Address", 0},
> ACPI_DMT_TERMINATOR
> diff --git a/src/acpica/source/compiler/aslanalyze.c
> b/src/acpica/source/compiler/aslanalyze.c
> index 78b6279f..cad84bc0 100644
> --- a/src/acpica/source/compiler/aslanalyze.c
> +++ b/src/acpica/source/compiler/aslanalyze.c
> @@ -572,10 +572,22 @@ ApCheckForGpeNameConflict (
> ACPI_PARSE_OBJECT *NextOp;
> UINT32 GpeNumber;
> char Name[ACPI_NAMESEG_SIZE + 1];
> - char Target[ACPI_NAMESEG_SIZE];
> + char Target[ACPI_NAMESEG_SIZE] ACPI_NONSTRING;
>
>
> - /* Need a null-terminated string version of NameSeg */
> + /**
> + * Need a null-terminated string version of NameSeg
> + *
> + * NOTE: during a review on Name[ACPI_NAMESEG_SIZE + 1] having an
> extra
> + * byte[1], compiler testing exhibited a difference in behavior
> between
> + * GCC and Clang[2] (at least; MSVC may also exhibit the same)
> in
> + * how optimization is done. The extra byte is needed to ensure
> + * the signature does not get mangled, subsequently avoiding
> + * GpeNumber being a completely different return value from
> strtoul.
> + *
> + * [1]
> https://github.com/acpica/acpica/pull/1019#discussion_r2058687704
> + * [2]
> https://github.com/acpica/acpica/pull/1019#discussion_r2061953039
> + */
>
> ACPI_MOVE_32_TO_32 (Name, Op->Asl.NameSeg);
> Name[ACPI_NAMESEG_SIZE] = 0;
> diff --git a/src/acpica/source/compiler/aslrestype2s.c
> b/src/acpica/source/compiler/aslrestype2s.c
> index d9e55541..f7d89557 100644
> --- a/src/acpica/source/compiler/aslrestype2s.c
> +++ b/src/acpica/source/compiler/aslrestype2s.c
> @@ -1469,7 +1469,7 @@ RsDoCsi2SerialBusDescriptor (
>
> case 2: /* Local Port Instance [Integer] (_PRT) */
>
> - RsSetFlagBits16 ((UINT16 *)
> &Descriptor->Csi2SerialBus.TypeSpecificFlags, InitializerOp, 0, 0);
> + RsSetFlagBits16 ((UINT16 *)
> &Descriptor->Csi2SerialBus.TypeSpecificFlags, InitializerOp, 2, 0);
> RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_LOCALPORT,
> CurrentByteOffset + ASL_RESDESC_OFFSET
> (Csi2SerialBus.TypeSpecificFlags), 2, 6);
> break;
> diff --git a/src/acpica/source/compiler/dttable2.c
> b/src/acpica/source/compiler/dttable2.c
> index 0db2ff7f..c752965c 100644
> --- a/src/acpica/source/compiler/dttable2.c
> +++ b/src/acpica/source/compiler/dttable2.c
> @@ -1929,24 +1929,30 @@ DtCompileRhct (
> {
> ACPI_STATUS Status;
> ACPI_RHCT_NODE_HEADER *RhctHeader;
> - ACPI_RHCT_HART_INFO *RhctHartInfo = NULL;
> + ACPI_RHCT_HART_INFO *RhctHartInfo;
> DT_SUBTABLE *Subtable;
> DT_SUBTABLE *ParentTable;
> ACPI_DMTABLE_INFO *InfoTable;
> DT_FIELD **PFieldList = (DT_FIELD **) List;
> DT_FIELD *SubtableStart;
> + ACPI_TABLE_RHCT *Table;
> + BOOLEAN FirstNode = TRUE;
>
>
> /* Compile the main table */
>
> + ParentTable = DtPeekSubtable ();
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoRhct,
> &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> }
> + DtInsertSubtable (ParentTable, Subtable);
> + Table = ACPI_CAST_PTR (ACPI_TABLE_RHCT, ParentTable->Buffer);
> + Table->NodeCount = 0;
> + Table->NodeOffset = sizeof (ACPI_TABLE_RHCT);
>
> - ParentTable = DtPeekSubtable ();
> while (*PFieldList)
> {
> SubtableStart = *PFieldList;
> @@ -1961,7 +1967,10 @@ DtCompileRhct (
> }
> DtInsertSubtable (ParentTable, Subtable);
> RhctHeader = ACPI_CAST_PTR (ACPI_RHCT_NODE_HEADER,
> Subtable->Buffer);
> - RhctHeader->Length = (UINT16)(Subtable->Length);
> +
> + DtPushSubtable (Subtable);
> + ParentTable = DtPeekSubtable ();
> + Table->NodeCount++;
>
> switch (RhctHeader->Type)
> {
> @@ -1999,37 +2008,54 @@ DtCompileRhct (
> return (Status);
> }
> DtInsertSubtable (ParentTable, Subtable);
> - RhctHeader->Length += (UINT16)(Subtable->Length);
> + if (FirstNode)
> + {
> + Table->NodeOffset = ACPI_PTR_DIFF(ParentTable->Buffer, Table);
> + FirstNode = FALSE;
> + }
>
> /* Compile RHCT subtable additionals */
>
> switch (RhctHeader->Type)
> {
> - case ACPI_RHCT_NODE_TYPE_HART_INFO:
> + case ACPI_RHCT_NODE_TYPE_ISA_STRING:
>
> - RhctHartInfo = ACPI_SUB_PTR (ACPI_RHCT_HART_INFO,
> - Subtable->Buffer, sizeof (ACPI_RHCT_NODE_HEADER));
> - if (RhctHartInfo)
> + /*
> + * Padding - Variable-length data
> + * Optionally allows the padding of the ISA string to be used
> + * for filling this field.
> + */
> + Status = DtCompileTable (PFieldList,
> AcpiDmTableInfoRhctIsaPad,
> + &Subtable);
> + if (ACPI_FAILURE (Status))
> + {
> + return (Status);
> + }
> + if (Subtable)
> {
> + DtInsertSubtable (ParentTable, Subtable);
> + }
> + break;
>
> - RhctHartInfo->NumOffsets = 0;
> - while (*PFieldList)
> - {
> - Status = DtCompileTable (PFieldList,
> - AcpiDmTableInfoRhctHartInfo2, &Subtable);
> - if (ACPI_FAILURE (Status))
> - {
> - return (Status);
> - }
> - if (!Subtable)
> - {
> - break;
> - }
> + case ACPI_RHCT_NODE_TYPE_HART_INFO:
>
> - DtInsertSubtable (ParentTable, Subtable);
> - RhctHeader->Length += (UINT16)(Subtable->Length);
> - RhctHartInfo->NumOffsets++;
> + RhctHartInfo = ACPI_CAST_PTR (ACPI_RHCT_HART_INFO,
> + Subtable->Buffer);
> + RhctHartInfo->NumOffsets = 0;
> + while (*PFieldList)
> + {
> + Status = DtCompileTable (PFieldList,
> + AcpiDmTableInfoRhctHartInfo2, &Subtable);
> + if (ACPI_FAILURE (Status))
> + {
> + return (Status);
> }
> + if (!Subtable)
> + {
> + break;
> + }
> + DtInsertSubtable (ParentTable, Subtable);
> + RhctHartInfo->NumOffsets++;
> }
> break;
>
> @@ -2037,6 +2063,9 @@ DtCompileRhct (
>
> break;
> }
> +
> + DtPopSubtable ();
> + ParentTable = DtPeekSubtable ();
> }
>
> return (AE_OK);
> diff --git a/src/acpica/source/compiler/dttemplate.c
> b/src/acpica/source/compiler/dttemplate.c
> index 48e115d8..c3fd3346 100644
> --- a/src/acpica/source/compiler/dttemplate.c
> +++ b/src/acpica/source/compiler/dttemplate.c
> @@ -255,7 +255,7 @@ DtCreateTemplates (
>
> if (AcpiGbl_Optind < 3)
> {
> - fprintf (stderr, "Creating default template: [DSDT]\n");
> + fprintf (stdout, "Creating default template: [DSDT]\n");
> Status = DtCreateOneTemplateFile (ACPI_SIG_DSDT, 0);
> goto Exit;
> }
> @@ -411,7 +411,7 @@ DtCreateAllTemplates (
> ACPI_STATUS Status;
>
>
> - fprintf (stderr, "Creating all supported Template files\n");
> + fprintf (stdout, "Creating all supported Template files\n");
>
> /* Walk entire ACPI table data structure */
>
> @@ -421,8 +421,13 @@ DtCreateAllTemplates (
>
> if (TableData->Template)
> {
> - Status = DtCreateOneTemplate (TableData->Signature,
> - 0, TableData);
> + if (ACPI_COMPARE_NAMESEG (TableData->Signature, ACPI_SIG_CDAT))
> + /* Special handling of CDAT */
> + Status = DtCreateOneTemplate (TableData->Signature,
> + 0, NULL);
> + else
> + Status = DtCreateOneTemplate (TableData->Signature,
> + 0, TableData);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -563,7 +568,7 @@ DtCreateOneTemplate (
> }
> else
> {
> - /* Special ACPI tables - DSDT, SSDT, OSDT, FACS, RSDP */
> + /* Special ACPI tables - DSDT, SSDT, OSDT, FACS, RSDP, CDAT */
>
> AcpiOsPrintf (" (AML byte code table)\n");
> AcpiOsPrintf (" */\n");
> @@ -621,6 +626,11 @@ DtCreateOneTemplate (
> AcpiDmDumpDataTable (ACPI_CAST_PTR (ACPI_TABLE_HEADER,
> TemplateRsdp));
> }
> + else if (ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_CDAT))
> + {
> + AcpiDmDumpCdat (ACPI_CAST_PTR (ACPI_TABLE_HEADER,
> + TemplateCdat));
> + }
> else
> {
> fprintf (stderr,
> @@ -632,14 +642,14 @@ DtCreateOneTemplate (
>
> if (TableCount == 0)
> {
> - fprintf (stderr,
> + fprintf (stdout,
> "Created ACPI table template for [%4.4s], "
> "written to \"%s\"\n",
> Signature, DisasmFilename);
> }
> else
> {
> - fprintf (stderr,
> + fprintf (stdout,
> "Created ACPI table templates for [%4.4s] "
> "and %u [SSDT] in same file, written to \"%s\"\n",
> Signature, TableCount, DisasmFilename);
> diff --git a/src/acpica/source/compiler/dttemplate.h
> b/src/acpica/source/compiler/dttemplate.h
> index 0fdd90f7..51a34be5 100644
> --- a/src/acpica/source/compiler/dttemplate.h
> +++ b/src/acpica/source/compiler/dttemplate.h
> @@ -389,7 +389,7 @@ const unsigned char TemplateBoot[] =
> const unsigned char TemplateCcel[] =
> {
> 0x43,0x43,0x45,0x4C,0x38,0x00,0x00,0x00, /* 00000000 "CCEL8..." */
> - 0x04,0x1C,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */
> + 0x04,0x2E,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */
> 0x54,0x65,0x6D,0x70,0x6C,0x61,0x74,0x65, /* 00000010 "Template" */
> 0x00,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */
> 0x30,0x09,0x21,0x20,0x00,0x00,0x00,0x00, /* 00000020 "0.! ...." */
> @@ -1951,25 +1951,25 @@ const unsigned char TemplateRgrt[] =
>
> const unsigned char TemplateRhct[] =
> {
> - 0x52,0x48,0x43,0x54,0x96,0x00,0x00,0x00, /* 00000000 "RHCT|..." */
> - 0x01,0x24,0x4F,0x45,0x4D,0x43,0x41,0x00, /* 00000008 "..OEMCA." */
> + 0x52,0x48,0x43,0x54,0x96,0x00,0x00,0x00, /* 00000000 "RHCT...." */
> + 0x01,0x6D,0x4F,0x45,0x4D,0x43,0x41,0x00, /* 00000008 ".mOEMCA." */
> 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */
> 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */
> - 0x28,0x09,0x22,0x20,0x00,0x00,0x00,0x00, /* 00000020 "... ...." */
> + 0x04,0x04,0x25,0x20,0x00,0x00,0x00,0x00, /* 00000020 "..% ...." */
> 0x80,0x96,0x98,0x00,0x00,0x00,0x00,0x00, /* 00000028 "........" */
> - 0x02,0x00,0x00,0x00,0x38,0x00,0x00,0x00, /* 00000030 "....8..." */
> - 0x00,0x00,0x34,0x00,0x01,0x00,0x2B,0x00, /* 00000038 "..4...*." */
> + 0x04,0x00,0x00,0x00,0x38,0x00,0x00,0x00, /* 00000030 "....8..." */
> + 0x00,0x00,0x34,0x00,0x01,0x00,0x2B,0x00, /* 00000038 "..4...+." */
> 0x72,0x76,0x36,0x34,0x69,0x6D,0x61,0x66, /* 00000040 "rv64imaf" */
> 0x64,0x63,0x68,0x5F,0x7A,0x69,0x63,0x73, /* 00000048 "dch_zics" */
> 0x72,0x5F,0x7A,0x69,0x66,0x65,0x6E,0x63, /* 00000050 "r_zifenc" */
> 0x65,0x69,0x5F,0x7A,0x62,0x61,0x5F,0x7A, /* 00000058 "ei_zba_z" */
> 0x62,0x62,0x5F,0x7A,0x62,0x63,0x5F,0x7A, /* 00000060 "bb_zbc_z" */
> - 0x62,0x73,0x00,0x00,0xFF,0xFF,0x18,0x00, /* 00000068 "bs......" */
> - 0x01,0x00,0x03,0x00,0x00,0x00,0x00,0x00, /* 00000070 "........" */
> - 0x38,0x00,0x00,0x00,0x7c,0x00,0x00,0x00, /* 00000078 "........" */
> - 0x8E,0x00,0x00,0x00,0x01,0x00,0x0A,0x00, /* 00000080 "........" */
> - 0x01,0x00,0x00,0x06,0x06,0x06,0x02,0x00, /* 00000088 "........" */
> - 0x08,0x00,0x01,0x00,0x00,0x02 /* 00000090 "........" */
> + 0x62,0x73,0x00,0x00,0x01,0x00,0x0A,0x00, /* 00000068 "bs......" */
> + 0x01,0x00,0x00,0x06,0x06,0x06,0x02,0x00, /* 00000070 "........" */
> + 0x08,0x00,0x01,0x00,0x00,0x02,0xFF,0xFF, /* 00000078 "........" */
> + 0x18,0x00,0x01,0x00,0x03,0x00,0x00,0x00, /* 00000080 "........" */
> + 0x00,0x00,0x3B,0x00,0x00,0x00,0x6C,0x00, /* 00000088 "..;...l." */
> + 0x00,0x00,0x76,0x00,0x00,0x00 /* 00000090 "..v..." */
> };
>
> const unsigned char TemplateRimt[] =
> diff --git a/src/acpica/source/compiler/dtutils.c
> b/src/acpica/source/compiler/dtutils.c
> index 7605c37b..d2c0ac71 100644
> --- a/src/acpica/source/compiler/dtutils.c
> +++ b/src/acpica/source/compiler/dtutils.c
> @@ -623,6 +623,7 @@ DtGetFieldLength (
> case ACPI_DMT_NFIT:
> case ACPI_DMT_PCI_PATH:
> case ACPI_DMT_PHAT:
> + case ACPI_DMT_RHCT:
>
> ByteLength = 2;
> break;
> diff --git a/src/acpica/source/components/disassembler/dmresrcl2.c
> b/src/acpica/source/components/disassembler/dmresrcl2.c
> index 07eee3e8..ecd049fc 100644
> --- a/src/acpica/source/components/disassembler/dmresrcl2.c
> +++ b/src/acpica/source/components/disassembler/dmresrcl2.c
> @@ -776,7 +776,7 @@ AcpiDmCsi2SerialBusDescriptor (
>
> AcpiOsPrintf (" 0x%2.2X, 0x%2.2X,\n",
> Resource->Csi2SerialBus.TypeSpecificFlags & 0x03,
> - Resource->Csi2SerialBus.TypeSpecificFlags & 0xFC);
> + (Resource->Csi2SerialBus.TypeSpecificFlags & 0xFC) >> 2);
>
> /* ResourceSource is a required field */
>
> diff --git a/src/acpica/source/components/dispatcher/dsmethod.c
> b/src/acpica/source/components/dispatcher/dsmethod.c
> index fb194738..09745e12 100644
> --- a/src/acpica/source/components/dispatcher/dsmethod.c
> +++ b/src/acpica/source/components/dispatcher/dsmethod.c
> @@ -646,8 +646,6 @@ AcpiDsCallControlMethod (
> ACPI_WALK_STATE *NextWalkState = NULL;
> ACPI_OPERAND_OBJECT *ObjDesc;
> ACPI_EVALUATE_INFO *Info;
> - UINT32 i;
> -
>
> ACPI_FUNCTION_TRACE_PTR (DsCallControlMethod, ThisWalkState);
>
> @@ -670,6 +668,23 @@ AcpiDsCallControlMethod (
> return_ACPI_STATUS (AE_NULL_OBJECT);
> }
>
> + if (ThisWalkState->NumOperands < ObjDesc->Method.ParamCount)
> + {
> + ACPI_ERROR ((AE_INFO, "Missing argument(s) for method [%4.4s]",
> + AcpiUtGetNodeName (MethodNode)));
> +
> + return_ACPI_STATUS (AE_AML_TOO_FEW_ARGUMENTS);
> + }
> +
> + else if (ThisWalkState->NumOperands > ObjDesc->Method.ParamCount)
> + {
> + ACPI_ERROR ((AE_INFO, "Too many arguments for method [%4.4s]",
> + AcpiUtGetNodeName (MethodNode)));
> +
> + return_ACPI_STATUS (AE_AML_TOO_MANY_ARGUMENTS);
> + }
> +
> +
> /* Init for new method, possibly wait on method mutex */
>
> Status = AcpiDsBeginMethodExecution (
> @@ -726,15 +741,7 @@ AcpiDsCallControlMethod (
> * Delete the operands on the previous walkstate operand stack
> * (they were copied to new objects)
> */
> - for (i = 0; i < ObjDesc->Method.ParamCount; i++)
> - {
> - AcpiUtRemoveReference (ThisWalkState->Operands [i]);
> - ThisWalkState->Operands [i] = NULL;
> - }
> -
> - /* Clear the operand stack */
> -
> - ThisWalkState->NumOperands = 0;
> + AcpiDsClearOperands (ThisWalkState);
>
> ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
> "**** Begin nested execution of [%4.4s] **** WalkState=%p\n",
> diff --git a/src/acpica/source/components/dispatcher/dsmthdat.c
> b/src/acpica/source/components/dispatcher/dsmthdat.c
> index 67504137..98e69efa 100644
> --- a/src/acpica/source/components/dispatcher/dsmthdat.c
> +++ b/src/acpica/source/components/dispatcher/dsmthdat.c
> @@ -357,6 +357,7 @@ AcpiDsMethodDataInitArgs (
>
> Index++;
> }
> + AcpiExTraceArgs(Params, Index);
>
> ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%u args passed to method\n",
> Index));
> return_ACPI_STATUS (AE_OK);
> diff --git a/src/acpica/source/components/events/evglock.c
> b/src/acpica/source/components/events/evglock.c
> index ab688360..153a7ff0 100644
> --- a/src/acpica/source/components/events/evglock.c
> +++ b/src/acpica/source/components/events/evglock.c
> @@ -195,6 +195,11 @@ AcpiEvInitGlobalLockHandler (
> return_ACPI_STATUS (AE_OK);
> }
>
> + if (!AcpiGbl_UseGlobalLock)
> + {
> + return_ACPI_STATUS (AE_OK);
> + }
> +
> /* Attempt installation of the global lock handler */
>
> Status = AcpiInstallFixedEventHandler (ACPI_EVENT_GLOBAL,
> diff --git a/src/acpica/source/components/executer/extrace.c
> b/src/acpica/source/components/executer/extrace.c
> index 336cc679..2d596f2b 100644
> --- a/src/acpica/source/components/executer/extrace.c
> +++ b/src/acpica/source/components/executer/extrace.c
> @@ -269,6 +269,68 @@ AcpiExGetTraceEventName (
>
> #endif
>
>
> +/*******************************************************************************
> + *
> + * FUNCTION: AcpiExTraceArgs
> + *
> + * PARAMETERS: Params - AML method arguments
> + * Count - numer of method arguments
> + *
> + * RETURN: None
> + *
> + * DESCRIPTION: Trace any arguments
> + *
> +
> ******************************************************************************/
> +
> +void
> +AcpiExTraceArgs(ACPI_OPERAND_OBJECT **Params, UINT32 Count)
> +{
> + UINT32 i;
> +
> + ACPI_FUNCTION_NAME(ExTraceArgs);
> +
> + for (i = 0; i < Count; i++)
> + {
> + ACPI_OPERAND_OBJECT *obj_desc = Params[i];
> +
> + if (!i)
> + {
> + ACPI_DEBUG_PRINT((ACPI_DB_TRACE_POINT, " "));
> + }
> +
> + switch (obj_desc->Common.Type)
> + {
> + case ACPI_TYPE_INTEGER:
> + ACPI_DEBUG_PRINT_RAW((ACPI_DB_TRACE_POINT, "%lx",
> obj_desc->Integer.Value));
> + break;
> +
> + case ACPI_TYPE_STRING:
> + if (!obj_desc->String.Length)
> + {
> + ACPI_DEBUG_PRINT_RAW((ACPI_DB_TRACE_POINT, "NULL"));
> + break;
> + }
> + if (ACPI_IS_DEBUG_ENABLED(ACPI_LV_TRACE_POINT, _COMPONENT))
> + {
> + AcpiUtPrintString(obj_desc->String.Pointer,
> ACPI_UINT8_MAX);
> + }
> + break;
> +
> + default:
> + ACPI_DEBUG_PRINT_RAW((ACPI_DB_TRACE_POINT, "Unknown"));
> + break;
> + }
> +
> + if ((i + 1) == Count)
> + {
> + ACPI_DEBUG_PRINT_RAW((ACPI_DB_TRACE_POINT, "\n"));
> + }
> + else
> + {
> + ACPI_DEBUG_PRINT_RAW((ACPI_DB_TRACE_POINT, ", "));
> + }
> + }
> +}
>
>
> /*******************************************************************************
> *
> @@ -299,9 +361,9 @@ AcpiExTracePoint (
> if (Pathname)
> {
> ACPI_DEBUG_PRINT ((ACPI_DB_TRACE_POINT,
> - "%s %s [0x%p:%s] execution.\n",
> + "%s %s [%s] execution.\n",
> AcpiExGetTraceEventName (Type), Begin ? "Begin" : "End",
> - Aml, Pathname));
> + Pathname));
> }
> else
> {
> diff --git a/src/acpica/source/components/parser/psopinfo.c
> b/src/acpica/source/components/parser/psopinfo.c
> index a37f9f5a..dcc426ff 100644
> --- a/src/acpica/source/components/parser/psopinfo.c
> +++ b/src/acpica/source/components/parser/psopinfo.c
> @@ -180,8 +180,8 @@ const ACPI_OPCODE_INFO *
> AcpiPsGetOpcodeInfo (
> UINT16 Opcode)
> {
> -#ifdef ACPI_DEBUG_OUTPUT
> - const char *OpcodeName = "Unknown AML opcode";
> +#if defined ACPI_ASL_COMPILER && defined ACPI_DEBUG_OUTPUT
> + const char *OpcodeName = "Unknown AML opcode";
> #endif
>
> ACPI_FUNCTION_NAME (PsGetOpcodeInfo);
> @@ -207,7 +207,7 @@ AcpiPsGetOpcodeInfo (
>
> #if defined ACPI_ASL_COMPILER && defined ACPI_DEBUG_OUTPUT
> #include "asldefine.h"
> -
> +
> switch (Opcode)
> {
> case AML_RAW_DATA_BYTE:
> @@ -249,12 +249,12 @@ AcpiPsGetOpcodeInfo (
> default:
> break;
> }
> -#endif
>
> /* Unknown AML opcode */
>
> ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
> "%s [%4.4X]\n", OpcodeName, Opcode));
> +#endif
>
> return (&AcpiGbl_AmlOpInfo [_UNK]);
> }
> diff --git a/src/acpica/source/components/tables/tbprint.c
> b/src/acpica/source/components/tables/tbprint.c
> index 3f471e28..d82cfddb 100644
> --- a/src/acpica/source/components/tables/tbprint.c
> +++ b/src/acpica/source/components/tables/tbprint.c
> @@ -279,6 +279,14 @@ AcpiTbPrintTableHeader (
> ACPI_CAST_PTR (ACPI_TABLE_RSDP, Header)->Revision,
> LocalHeader.OemId));
> }
> + else if (AcpiGbl_CDAT && !AcpiUtValidNameseg (Header->Signature))
> + {
> + /* CDAT does not use the common ACPI table header */
> +
> + ACPI_INFO (("%-4.4s 0x%8.8X%8.8X %06X",
> + ACPI_SIG_CDAT, ACPI_FORMAT_UINT64 (Address),
> + ACPI_CAST_PTR (ACPI_TABLE_CDAT, Header)->Length));
> + }
> else
> {
> /* Standard ACPI table with full common header */
> diff --git a/src/acpica/source/components/utilities/utnonansi.c
> b/src/acpica/source/components/utilities/utnonansi.c
> index ba5b3ee6..76fa07f6 100644
> --- a/src/acpica/source/components/utilities/utnonansi.c
> +++ b/src/acpica/source/components/utilities/utnonansi.c
> @@ -353,7 +353,7 @@ AcpiUtSafeStrncpy (
> {
> /* Always terminate destination string */
>
> - memcpy (Dest, Source, DestSize);
> + strncpy (Dest, Source, DestSize);
> Dest[DestSize - 1] = 0;
> }
>
> diff --git a/src/acpica/source/include/acdebug.h
> b/src/acpica/source/include/acdebug.h
> index 139f65c1..05225eef 100644
> --- a/src/acpica/source/include/acdebug.h
> +++ b/src/acpica/source/include/acdebug.h
> @@ -187,7 +187,7 @@ typedef struct acpi_db_execute_walk
> {
> UINT32 Count;
> UINT32 MaxCount;
> - char NameSeg[ACPI_NAMESEG_SIZE + 1] ACPI_NONSTRING;
> + char NameSeg[ACPI_NAMESEG_SIZE + 1];
>
> } ACPI_DB_EXECUTE_WALK;
>
> diff --git a/src/acpica/source/include/acexcep.h
> b/src/acpica/source/include/acexcep.h
> index 57f98ab4..7216e0d4 100644
> --- a/src/acpica/source/include/acexcep.h
> +++ b/src/acpica/source/include/acexcep.h
> @@ -322,8 +322,11 @@ typedef struct acpi_exception_info
> #define AE_AML_TARGET_TYPE EXCEP_AML (0x0023)
> #define AE_AML_PROTOCOL EXCEP_AML (0x0024)
> #define AE_AML_BUFFER_LENGTH EXCEP_AML (0x0025)
> +#define AE_AML_TOO_FEW_ARGUMENTS EXCEP_AML (0x0026)
> +#define AE_AML_TOO_MANY_ARGUMENTS EXCEP_AML (0x0027)
>
> -#define AE_CODE_AML_MAX 0x0025
> +
> +#define AE_CODE_AML_MAX 0x0027
>
>
> /*
> @@ -456,7 +459,9 @@ static const ACPI_EXCEPTION_INFO
> AcpiGbl_ExceptionNames_Aml[] =
> EXCEP_TXT ("AE_AML_UNINITIALIZED_NODE", "A namespace node is
> uninitialized or unresolved"),
> EXCEP_TXT ("AE_AML_TARGET_TYPE", "A target operand of an
> incorrect type was encountered"),
> EXCEP_TXT ("AE_AML_PROTOCOL", "Violation of a fixed
> ACPI protocol"),
> - EXCEP_TXT ("AE_AML_BUFFER_LENGTH", "The length of the buffer
> is invalid/incorrect")
> + EXCEP_TXT ("AE_AML_BUFFER_LENGTH", "The length of the buffer
> is invalid/incorrect"),
> + EXCEP_TXT ("AE_AML_TOO_FEW_ARGUMENTS", "There are fewer than
> expected method arguments"),
> + EXCEP_TXT ("AE_AML_TOO_MANY_ARGUMENTS", "There are too many
> arguments for this method")
> };
>
> static const ACPI_EXCEPTION_INFO AcpiGbl_ExceptionNames_Ctrl[] =
> diff --git a/src/acpica/source/include/acinterp.h
> b/src/acpica/source/include/acinterp.h
> index 74166384..b7f9e8f6 100644
> --- a/src/acpica/source/include/acinterp.h
> +++ b/src/acpica/source/include/acinterp.h
> @@ -280,6 +280,10 @@ AcpiExTracePoint (
> UINT8 *Aml,
> char *Pathname);
>
> +void
> +AcpiExTraceArgs(
> + ACPI_OPERAND_OBJECT **Params,
> + UINT32 Count);
>
> /*
> * exfield - ACPI AML (p-code) execution - field manipulation
> diff --git a/src/acpica/source/include/acpixf.h
> b/src/acpica/source/include/acpixf.h
> index 64c6b924..8f7047cd 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 0x20250404
> +#define ACPI_CA_VERSION 0x20250807
>
> #include "acconfig.h"
> #include "actypes.h"
> @@ -357,6 +357,12 @@ ACPI_INIT_GLOBAL (UINT8, AcpiGbl_OsiData,
> 0);
> */
> ACPI_INIT_GLOBAL (BOOLEAN, AcpiGbl_ReducedHardware, FALSE);
>
> +/*
> + * ACPI Global Lock is mainly used for systems with SMM, so no-SMM systems
> + * (such as LoongArch) may not have and not use Global Lock.
> + */
> +ACPI_INIT_GLOBAL (BOOLEAN, AcpiGbl_UseGlobalLock, TRUE);
> +
> /*
> * Maximum timeout for While() loop iterations before forced method abort.
> * This mechanism is intended to prevent infinite loops during interpreter
> diff --git a/src/acpica/source/include/actbl.h
> b/src/acpica/source/include/actbl.h
> index bcd2420f..e3bfafd9 100644
> --- a/src/acpica/source/include/actbl.h
> +++ b/src/acpica/source/include/actbl.h
> @@ -220,7 +220,7 @@ typedef struct acpi_table_header
> char OemId[ACPI_OEM_ID_SIZE] ACPI_NONSTRING;
> /* ASCII OEM identification */
> char OemTableId[ACPI_OEM_TABLE_ID_SIZE]
> ACPI_NONSTRING; /* ASCII OEM table identification */
> UINT32 OemRevision;
> /* OEM revision number */
> - char AslCompilerId[ACPI_NAMESEG_SIZE];
> /* ASCII ASL compiler vendor ID */
> + char AslCompilerId[ACPI_NAMESEG_SIZE]
> ACPI_NONSTRING; /* ASCII ASL compiler vendor ID */
> UINT32 AslCompilerRevision;
> /* ASL compiler version */
>
> } ACPI_TABLE_HEADER;
> diff --git a/src/acpica/source/include/actbl1.h
> b/src/acpica/source/include/actbl1.h
> index 876b7210..ec04f0a0 100644
> --- a/src/acpica/source/include/actbl1.h
> +++ b/src/acpica/source/include/actbl1.h
> @@ -262,7 +262,7 @@ typedef struct acpi_whea_header
>
> /* Larger subtable header (when Length can exceed 255) */
>
> -typedef struct acpi_subtable_header_16
> +typedef struct acpi_subtbl_hdr_16
> {
> UINT16 Type;
> UINT16 Length;
> diff --git a/src/acpica/source/include/actbl2.h
> b/src/acpica/source/include/actbl2.h
> index 4899929b..a74b6d55 100644
> --- a/src/acpica/source/include/actbl2.h
> +++ b/src/acpica/source/include/actbl2.h
> @@ -201,6 +201,7 @@
> #define ACPI_SIG_SDEI "SDEI" /* Software Delegated
> Exception Interface Table */
> #define ACPI_SIG_SDEV "SDEV" /* Secure Devices table */
> #define ACPI_SIG_SVKL "SVKL" /* Storage Volume Key
> Location Table */
> +#define ACPI_SIG_SWFT "SWFT" /* SoundWire File Table */
> #define ACPI_SIG_TDEL "TDEL" /* TD Event Log Table */
>
>
> @@ -4094,6 +4095,30 @@ enum acpi_svkl_format
> ACPI_SVKL_FORMAT_RESERVED = 1 /* 1 and greater are reserved */
> };
>
>
> +/*******************************************************************************
> + *
> + * SWFT - SoundWire File Table
> + * as described in Discovery and Configuration (DisCo)
> Specification
> + * for SoundWire®
> + * Version 1
> + *
> +
> ******************************************************************************/
> +
> +typedef struct acpi_table_swft
> +{
> + ACPI_TABLE_HEADER Header; /* Common ACPI table header */
> +
> +} ACPI_TABLE_SWFT;
> +
> +typedef struct acpi_swft_file
> +{
> + UINT16 VendorID;
> + UINT32 FileID;
> + UINT16 FileVersion;
> + UINT16 FileLength;
> + UINT8 FileData[];
> +
> +} ACPI_SWFT_FILE;
>
>
> /*******************************************************************************
> *
> diff --git a/src/acpica/source/include/actypes.h
> b/src/acpica/source/include/actypes.h
> index 66333243..3c95887b 100644
> --- a/src/acpica/source/include/actypes.h
> +++ b/src/acpica/source/include/actypes.h
> @@ -741,9 +741,11 @@ typedef UINT64 ACPI_INTEGER;
> #define ACPI_STATE_D0 (UINT8) 0
> #define ACPI_STATE_D1 (UINT8) 1
> #define ACPI_STATE_D2 (UINT8) 2
> -#define ACPI_STATE_D3 (UINT8) 3
> -#define ACPI_D_STATES_MAX ACPI_STATE_D3
> -#define ACPI_D_STATE_COUNT 4
> +#define ACPI_STATE_D3_HOT (UINT8) 3
> +#define ACPI_STATE_D3_COLD (UINT8) 4
> +#define ACPI_STATE_D3 ACPI_STATE_D3_COLD
> +#define ACPI_D_STATES_MAX ACPI_STATE_D3_COLD
> +#define ACPI_D_STATE_COUNT 5
>
> #define ACPI_STATE_C0 (UINT8) 0
> #define ACPI_STATE_C1 (UINT8) 1
> --
> 2.50.1
>
>
> --
> fwts-devel mailing list
> fwts-devel at lists.ubuntu.com
> Modify settings or unsubscribe at:
> https://lists.ubuntu.com/mailman/listinfo/fwts-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.ubuntu.com/archives/fwts-devel/attachments/20250818/5b5ab54c/attachment-0001.html>
More information about the fwts-devel
mailing list