Import ACPICA 20260408

This commit is contained in:
Jung-uk Kim
2026-05-11 17:41:03 -04:00
parent 5cab380e2a
commit 69ae37302e
430 changed files with 1840 additions and 488 deletions
+24
View File
@@ -1,3 +1,27 @@
----------------------------------------
8 April 2026. Summary of changes for version 20260804:
Major changes:
• ACPI Table Enhancements:
Updated IORT and MADT template compilations to add new IWB and GICv5 translator/router/ITS entries. Introduced full support for the new DTPR table, including compiler and disassembler handling, template fixes, and register structure refinements. — Jose Marinho and Michal Camacho Romero
• Expanded IDs, GUIDs, and Methods:
Added Framework Computer Hardware IDs, modern standby _DSM GUIDs, and TPM2 start methods. Updated _DSM Arg3 formatting and _CPC handling to align with newer ACPI specifications and avoid Linux compatibility warnings. — Daniel Schaefer and Saket Dumbre
• Compiler, Disassembler, and Tooling Improvements:
Enhanced the ASL compiler and disassembler with External() deduplication, alias node support, improved validation of malformed inputs, and comma-separated Package output. Updated acpisrc to recognize missing structures and improved parse tree walk termination logic. — ikaros and Pawel Chmielewski
• Security and Stability Fixes:
Fixed multiple critical issues, including heap-buffer-overflows, use-after-free, NULL pointer dereferences, integer overflows, and out-of-bounds accesses across AML parsing, interpretation, and table handling code paths. — ikaros and Weiming Shi
• Resource and Register Refactoring:
Corrected I2C LVR resource descriptor handling and refactored TPR Base/Limit registers to use compatible bitmask representations, with additional validation and cleanup across DTPR-related code. — Akhil R and Michal Camacho Romero
• General Cleanup and Build Fixes:
Fixed a syntax error caused by a stray character, corrected spelling issues, improved comment alignment and formatting, updated dummy compiler metadata, and disabled excessive MSVC bitfield warnings (C4214) to improve build clarity. — Colin Ian King and Saket Dumbre
---------------------------------------- ----------------------------------------
12 December 2025. Summary of changes for version 20251212: 12 December 2025. Summary of changes for version 20251212:
+10 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
@@ -452,6 +452,15 @@ AcGetOneTableFromFile (
TableLength = TableHeader.Length; TableLength = TableHeader.Length;
} }
/* Table length must be at least large enough to hold the header */
if (TableLength < HeaderLength)
{
fprintf (stderr, "Table length too small for header: 0x%.2X\n",
TableLength);
return (AE_BAD_HEADER);
}
/* Allocate a buffer for the entire table */ /* Allocate a buffer for the entire table */
Table = AcpiOsAllocate ((ACPI_SIZE) TableLength); Table = AcpiOsAllocate ((ACPI_SIZE) TableLength);
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+9 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
@@ -202,6 +202,14 @@ const AH_DEVICE_ID AslDeviceIds[] =
{"CPLM3218", "Capella Micro CM3218x Ambient Light Sensor"}, {"CPLM3218", "Capella Micro CM3218x Ambient Light Sensor"},
{"DELLABCE", "Dell Airplane Mode Switch Driver"}, {"DELLABCE", "Dell Airplane Mode Switch Driver"},
{"DLAC3002", "Qualcomm Atheros Bluetooth UART Transport"}, {"DLAC3002", "Qualcomm Atheros Bluetooth UART Transport"},
{"FRMW0001", "Framework I2C HID from EC (Laptop 13 Intel 11-13th Gen)"},
{"FRMW0002", "Framework PS2 Touchpad Emulation"},
{"FRMW0003", "Framework I2C HID from EC (Laptop 16 AMD Ryzen 7040)"},
{"FRMW0004", "Framework I2C HID from EC for keyboard media ikeys"},
{"FRMW0005", "Framework I2C HID from EC for ALS Sensor"},
{"FRMW0006", "Framework Desktop ARGB HID Interface (Chrome EC RGBKBD)"},
{"FRMWC004", "Framework EC Controller"},
{"FRMWC006", "Framework EC Sensor Hub"},
{"FTTH5506", "FocalTech 5506 Touch Controller"}, {"FTTH5506", "FocalTech 5506 Touch Controller"},
{"HAD0F28", "Intel HDMI Audio Driver"}, {"HAD0F28", "Intel HDMI Audio Driver"},
{"INBC0000", "GPIO Expander"}, {"INBC0000", "GPIO Expander"},
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+2 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
@@ -216,6 +216,7 @@ const AH_TABLE AcpiGbl_SupportedTables[] =
{ACPI_SIG_DBGP, "Debug Port Table"}, {ACPI_SIG_DBGP, "Debug Port Table"},
{ACPI_SIG_DMAR, "DMA Remapping Table"}, {ACPI_SIG_DMAR, "DMA Remapping Table"},
{ACPI_SIG_DRTM, "Dynamic Root of Trust for Measurement Table"}, {ACPI_SIG_DRTM, "Dynamic Root of Trust for Measurement Table"},
{ACPI_SIG_DTPR, "DMA TXT Protection Ranges Table"},
{ACPI_SIG_DSDT, "Differentiated System Description Table (AML table)"}, {ACPI_SIG_DSDT, "Differentiated System Description Table (AML table)"},
{ACPI_SIG_ECDT, "Embedded Controller Boot Resources Table"}, {ACPI_SIG_ECDT, "Embedded Controller Boot Resources Table"},
{ACPI_SIG_EINJ, "Error Injection Table"}, {ACPI_SIG_EINJ, "Error Injection Table"},
+6 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
@@ -204,6 +204,11 @@ const AH_UUID Gbl_AcpiUuids[] =
{"Cache Properties", UUID_CACHE_PROPERTIES}, {"Cache Properties", UUID_CACHE_PROPERTIES},
{"Physical Package Property", UUID_PHYSICAL_PROPERTY}, {"Physical Package Property", UUID_PHYSICAL_PROPERTY},
{"[Modern Standby]", NULL},
{"Modern Standby Microsoft", UUID_LPS0_MICROSOFT},
{"Modern Standby Intel", UUID_LPS0_INTEL},
{"Modern Standby AMD", UUID_LPS0_AMD},
{"[Miscellaneous]", NULL}, {"[Miscellaneous]", NULL},
{"Platform-wide Capabilities", UUID_PLATFORM_CAPABILITIES}, {"Platform-wide Capabilities", UUID_PLATFORM_CAPABILITIES},
{"Dynamic Enumeration", UUID_DYNAMIC_ENUMERATION}, {"Dynamic Enumeration", UUID_DYNAMIC_ENUMERATION},
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+6 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
@@ -568,6 +568,10 @@ static const char *AcpiDmTpm2Subnames[] =
"Reserved", "Reserved",
"Reserved", "Reserved",
"Command Response Buffer with ARM SMC", "Command Response Buffer with ARM SMC",
"FIFO over I2C",
"Command Response Buffer with AMD Mailbox",
"Reserved",
"Command Response Buffer with ARM Framework-A",
"Unknown Subtable Type" /* Reserved */ "Unknown Subtable Type" /* Reserved */
}; };
@@ -700,6 +704,7 @@ const ACPI_DMTABLE_DATA AcpiDmTableData[] =
{ACPI_SIG_DBGP, AcpiDmTableInfoDbgp, NULL, NULL, TemplateDbgp}, {ACPI_SIG_DBGP, AcpiDmTableInfoDbgp, NULL, NULL, TemplateDbgp},
{ACPI_SIG_DMAR, NULL, AcpiDmDumpDmar, DtCompileDmar, TemplateDmar}, {ACPI_SIG_DMAR, NULL, AcpiDmDumpDmar, DtCompileDmar, TemplateDmar},
{ACPI_SIG_DRTM, NULL, AcpiDmDumpDrtm, DtCompileDrtm, TemplateDrtm}, {ACPI_SIG_DRTM, NULL, AcpiDmDumpDrtm, DtCompileDrtm, TemplateDrtm},
{ACPI_SIG_DTPR, NULL, AcpiDmDumpDtpr, DtCompileDtpr, TemplateDtpr},
{ACPI_SIG_ECDT, AcpiDmTableInfoEcdt, NULL, NULL, TemplateEcdt}, {ACPI_SIG_ECDT, AcpiDmTableInfoEcdt, NULL, NULL, TemplateEcdt},
{ACPI_SIG_EINJ, NULL, AcpiDmDumpEinj, DtCompileEinj, TemplateEinj}, {ACPI_SIG_EINJ, NULL, AcpiDmDumpEinj, DtCompileEinj, TemplateEinj},
{ACPI_SIG_ERDT, NULL, AcpiDmDumpErdt, DtCompileErdt, TemplateErdt}, {ACPI_SIG_ERDT, NULL, AcpiDmDumpErdt, DtCompileErdt, TemplateErdt},
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+110 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
@@ -1670,6 +1670,115 @@ AcpiDmDumpDrtm (
} }
/*******************************************************************************
*
* FUNCTION: AcpiDmDumpDtpr
*
* PARAMETERS: Table - A DTPR table
*
* RETURN: None
*
* DESCRIPTION: Format the contents of a DTPR.
*
******************************************************************************/
void
AcpiDmDumpDtpr (
ACPI_TABLE_HEADER *Table)
{
ACPI_STATUS Status;
ACPI_TPR_ARRAY *TprArr;
ACPI_TPR_INSTANCE *TprInstance;
ACPI_TPR_AUX_SR *TprAuxSr;
ACPI_TPR_SERIALIZE_REQUEST *TprSerializeRequest;
UINT32 i = 0, j, InsCnt, TprRefCnt;
UINT32 Offset = sizeof(ACPI_TABLE_DTPR);
/* Main table */
Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoDtpr);
if (ACPI_FAILURE (Status))
{
return;
}
/* Subtables */
while (Offset < Table->Length)
{
InsCnt = ((ACPI_TABLE_DTPR*) Table)->InsCnt;
for (i = 0; i < InsCnt; i++)
{
TprInstance = ACPI_ADD_PTR(ACPI_TPR_INSTANCE, Table, Offset);
Status = AcpiDmDumpTable(Table->Length, Offset, TprInstance,
sizeof(ACPI_TPR_INSTANCE), AcpiDmTableInfoDtprInstance);
if (ACPI_FAILURE (Status))
{
return;
}
/* Each of the TPR instances must have the same number of TPRs*/
TprRefCnt = TprInstance->TprCnt;
Offset += sizeof(ACPI_TPR_INSTANCE);
if (TprInstance->TprCnt < 2)
{
AcpiOsPrintf("TPR Instance No.%d has invalid number of TPRs.\n"
"There should be at least 2 of them, but there is %d.",
i, TprInstance->TprCnt);
return;
}
else
{
if (TprInstance->TprCnt != TprRefCnt)
{
AcpiOsPrintf("Each of TPR instances should have equal\n"
"number of TPRs. TprInstance No.%d has %d TPRs"
", while the reference TPR instance has %d.\n",
i, TprInstance->TprCnt, TprRefCnt);
return;
}
}
for (j = 0; j < TprInstance->TprCnt; j++)
{
TprArr = ACPI_ADD_PTR(ACPI_TPR_ARRAY, Table, Offset);
Status = AcpiDmDumpTable(Table->Length, Offset, TprArr,
sizeof(ACPI_TPR_ARRAY), AcpiDmTableInfoDtprArr);
if (ACPI_FAILURE (Status))
{
return;
}
Offset += sizeof(ACPI_TPR_ARRAY);
}
}
TprAuxSr = ACPI_ADD_PTR(ACPI_TPR_AUX_SR, Table, Offset);
Status = AcpiDmDumpTable(Table->Length, Offset, TprAuxSr,
sizeof(ACPI_TPR_AUX_SR), AcpiDmTableInfoDtprSerializeReq0);
Offset += sizeof(ACPI_TPR_AUX_SR);
for (i = 0; i < TprAuxSr->SrlCnt; i++)
{
TprSerializeRequest = ACPI_ADD_PTR(ACPI_TPR_SERIALIZE_REQUEST,
Table, Offset);
Status = AcpiDmDumpTable(Table->Length, Offset, TprSerializeRequest,
sizeof(ACPI_TPR_SERIALIZE_REQUEST), AcpiDmTableInfoDtprSerializeReq1);
if (ACPI_FAILURE (Status))
{
return;
}
Offset += sizeof(ACPI_TPR_SERIALIZE_REQUEST);
}
}
}
/******************************************************************************* /*******************************************************************************
* *
* FUNCTION: AcpiDmDumpEinj * FUNCTION: AcpiDmDumpEinj
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+39 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
@@ -1153,6 +1153,44 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoDrtm2[] =
}; };
/*******************************************************************************
*
* DTPR - DMA TXT Protection Ranges Table
*
******************************************************************************/
ACPI_DMTABLE_INFO AcpiDmTableInfoDtpr[] =
{
{ACPI_DMT_UINT32, ACPI_DTPR_OFFSET (Flags), "Flags (reserved)", 0},
{ACPI_DMT_UINT32, ACPI_DTPR_OFFSET (InsCnt), "Instance Count", 0},
ACPI_DMT_TERMINATOR
};
ACPI_DMTABLE_INFO AcpiDmTableInfoDtprInstance[] =
{
{ACPI_DMT_UINT32, ACPI_DTPR_INST_OFFSET (Flags), "Instance control flags (reserved)", 0},
{ACPI_DMT_UINT32, ACPI_DTPR_INST_OFFSET (TprCnt), "Number of TPR ranges in instance", 0},
ACPI_DMT_TERMINATOR
};
ACPI_DMTABLE_INFO AcpiDmTableInfoDtprArr[] =
{
{ACPI_DMT_UINT64, ACPI_DTPR_ARR_OFFSET (Base), "TPR Base Address", 0},
ACPI_DMT_TERMINATOR
};
ACPI_DMTABLE_INFO AcpiDmTableInfoDtprSerializeReq0[] =
{
{ACPI_DMT_UINT32, ACPI_DTPR_AUX_SR_OFFSET (SrlCnt), "Number of serialization registers", 0},
ACPI_DMT_TERMINATOR
};
ACPI_DMTABLE_INFO AcpiDmTableInfoDtprSerializeReq1[] =
{
{ACPI_DMT_UINT64, ACPI_DTPR_SR_OFFSET (SrRegister), "Serialize Request register", 0},
ACPI_DMT_TERMINATOR
};
/******************************************************************************* /*******************************************************************************
* *
* ECDT - Embedded Controller Boot Resources Table * ECDT - Embedded Controller Boot Resources Table
+2 -2
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
@@ -1243,7 +1243,7 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoMadt30[] =
{ {
{ACPI_DMT_UINT16, ACPI_MADT30_OFFSET (Reserved), "Reserved", 0}, {ACPI_DMT_UINT16, ACPI_MADT30_OFFSET (Reserved), "Reserved", 0},
{ACPI_DMT_UINT32, ACPI_MADT30_OFFSET (LinkedTranslatorId), "Linked Its Id", 0}, {ACPI_DMT_UINT32, ACPI_MADT30_OFFSET (LinkedTranslatorId), "Linked Its Id", 0},
{ACPI_DMT_UINT32, ACPI_MADT30_OFFSET (TranslateFrameId), "Its Transalte Id", 0}, {ACPI_DMT_UINT32, ACPI_MADT30_OFFSET (TranslateFrameId), "Its Translate Id", 0},
{ACPI_DMT_UINT32, ACPI_MADT30_OFFSET (Reserved2), "Reserved", 0}, {ACPI_DMT_UINT32, ACPI_MADT30_OFFSET (Reserved2), "Reserved", 0},
{ACPI_DMT_UINT64, ACPI_MADT30_OFFSET (BaseAddress), "Its Translate Frame Physical Base Address", 0}, {ACPI_DMT_UINT64, ACPI_MADT30_OFFSET (BaseAddress), "Its Translate Frame Physical Base Address", 0},
ACPI_DMT_TERMINATOR ACPI_DMT_TERMINATOR
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+7 -5
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
@@ -586,14 +586,16 @@ CgWriteTableHeader (
/* OEMID */ /* OEMID */
Child = Child->Asl.Next; Child = Child->Asl.Next;
memcpy (AslGbl_TableHeader.OemId, Child->Asl.Value.String, /* Bound copy to header field size to avoid overflow on malformed input */
strlen (Child->Asl.Value.String)); strncpy (AslGbl_TableHeader.OemId, Child->Asl.Value.String,
ACPI_OEM_ID_SIZE);
/* OEM TableID */ /* OEM TableID */
Child = Child->Asl.Next; Child = Child->Asl.Next;
memcpy (AslGbl_TableHeader.OemTableId, Child->Asl.Value.String, /* Bound copy to header field size to avoid overflow on malformed input */
strlen (Child->Asl.Value.String)); strncpy (AslGbl_TableHeader.OemTableId, Child->Asl.Value.String,
ACPI_OEM_TABLE_ID_SIZE);
/* OEM Revision */ /* OEM Revision */
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -9,7 +9,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -9,7 +9,7 @@ NoEcho('
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+104 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
@@ -170,6 +170,10 @@ static void
ExMoveExternals ( ExMoveExternals (
ACPI_PARSE_OBJECT *DefinitionBlockOp); ACPI_PARSE_OBJECT *DefinitionBlockOp);
static void
ExRemoveOpFromTree (
ACPI_PARSE_OBJECT *Op);
/******************************************************************************* /*******************************************************************************
* *
@@ -194,9 +198,14 @@ ExDoExternal (
ACPI_PARSE_OBJECT *ArgCountOp; ACPI_PARSE_OBJECT *ArgCountOp;
ACPI_PARSE_OBJECT *TypeOp; ACPI_PARSE_OBJECT *TypeOp;
ACPI_PARSE_OBJECT *ExternTypeOp = Op->Asl.Child->Asl.Next; ACPI_PARSE_OBJECT *ExternTypeOp = Op->Asl.Child->Asl.Next;
ACPI_PARSE_OBJECT *Existing;
ACPI_PARSE_OBJECT *NameOp = Op->Asl.Child;
ACPI_PARSE_OBJECT *ExistingNameOp;
UINT32 ExternType; UINT32 ExternType;
UINT8 ParamCount = ASL_EXTERNAL_METHOD_UNKNOWN_PARAMS; UINT8 ParamCount = ASL_EXTERNAL_METHOD_UNKNOWN_PARAMS;
UINT32 ParamTypes[ACPI_METHOD_NUM_ARGS]; UINT32 ParamTypes[ACPI_METHOD_NUM_ARGS];
char *NewPath = NULL;
char *ExistingPath;
ExternType = AnMapObjTypeToBtype (ExternTypeOp); ExternType = AnMapObjTypeToBtype (ExternTypeOp);
@@ -250,6 +259,53 @@ ExDoExternal (
ArgCountOp->Asl.Value.Integer = ParamCount; ArgCountOp->Asl.Value.Integer = ParamCount;
UtSetParseOpName (ArgCountOp); UtSetParseOpName (ArgCountOp);
/*
* Deduplicate identical External() declarations. The disassembler
* already collapses duplicates; mirror that behavior in the compiler
* so duplicate externals do not bloat emitted AML.
*/
NewPath = NameOp->Asl.Namepath;
if (!NewPath && NameOp->Asl.Value.String)
{
(void) UtInternalizeName (NameOp->Asl.Value.String, &NewPath);
NameOp->Asl.Namepath = NewPath;
}
Existing = AslGbl_ExternalsListHead;
while (Existing && NewPath)
{
ExistingNameOp = Existing->Asl.Child->Asl.Child;
ExistingPath = ExistingNameOp->Asl.Namepath;
if (!ExistingPath && ExistingNameOp->Asl.Value.String)
{
(void) UtInternalizeName (ExistingNameOp->Asl.Value.String,
&ExistingPath);
ExistingNameOp->Asl.Namepath = ExistingPath;
}
if (ExistingPath && !strcmp (NewPath, ExistingPath))
{
ACPI_PARSE_OBJECT *ExistingArgCount;
/* Update arg count if this instance is more specific */
ExistingArgCount = Existing->Asl.Child->Asl.Child->Asl.Next->Asl.Next;
if ((ExternType == ACPI_BTYPE_METHOD) &&
(ParamCount < ExistingArgCount->Asl.Value.Integer))
{
ExistingArgCount->Asl.Value.Integer = ParamCount;
}
/* Remove duplicate External node from the parse tree */
ExRemoveOpFromTree (Op);
return;
}
Existing = Existing->Asl.Next;
}
/* Create new list node of arbitrary type */ /* Create new list node of arbitrary type */
ListOp = TrAllocateOp (PARSEOP_DEFAULT_ARG); ListOp = TrAllocateOp (PARSEOP_DEFAULT_ARG);
@@ -280,6 +336,53 @@ ExDoExternal (
} }
/*******************************************************************************
*
* FUNCTION: ExRemoveOpFromTree
*
* PARAMETERS: Op - Parse op to remove from the tree
*
* RETURN: None
*
* DESCRIPTION: Unlink a parse op from its parent sibling list. Used to drop
* duplicate External() declarations before AML emission.
*
******************************************************************************/
static void
ExRemoveOpFromTree (
ACPI_PARSE_OBJECT *Op)
{
ACPI_PARSE_OBJECT *Parent;
ACPI_PARSE_OBJECT *Child;
if (!Op || !Op->Asl.Parent)
{
return;
}
Parent = Op->Asl.Parent;
Child = Parent->Asl.Child;
if (Child == Op)
{
Parent->Asl.Child = Op->Asl.Next;
return;
}
while (Child && Child->Asl.Next != Op)
{
Child = Child->Asl.Next;
}
if (Child)
{
Child->Asl.Next = Op->Asl.Next;
}
}
/******************************************************************************* /*******************************************************************************
* *
* FUNCTION: ExInsertArgCount * FUNCTION: ExInsertArgCount
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+2 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
@@ -252,6 +252,7 @@ extern FILE *AslCompilerin;
extern int DtParserdebug; extern int DtParserdebug;
extern int PrParserdebug; extern int PrParserdebug;
extern const ASL_MAPPING_ENTRY AslKeywordMapping[]; extern const ASL_MAPPING_ENTRY AslKeywordMapping[];
extern const UINT32 AslKeywordMappingCount;
extern char *AslCompilertext; extern char *AslCompilertext;
extern char *DtCompilerParsertext; extern char *DtCompilerParsertext;
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -9,7 +9,7 @@ NoEcho('
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -9,7 +9,7 @@ NoEcho('
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+3 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
@@ -1406,6 +1406,8 @@ LdNamespace2Begin (
/* Save the target node within the alias node as well as type information */ /* Save the target node within the alias node as well as type information */
/* Mark as alias node and store target namespace node */
Node->Flags |= ANOBJ_IS_ALIAS;
Node->Object = ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, TargetNode); Node->Object = ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, TargetNode);
Node->Type = TargetNode->Type; Node->Type = TargetNode->Type;
if (Node->Type == ACPI_TYPE_METHOD) if (Node->Type == ACPI_TYPE_METHOD)
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+3 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
@@ -611,3 +611,5 @@ const ASL_MAPPING_ENTRY AslKeywordMapping [] =
/*! [End] no source code translation !*/ /*! [End] no source code translation !*/
}; };
const UINT32 AslKeywordMappingCount = ACPI_ARRAY_LENGTH (AslKeywordMapping);
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+3 -2
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
@@ -412,7 +412,8 @@ const char *AslTableCompilerMsgs [] =
/* ASL_MSG_UNKNOWN_FORMAT */ "Unknown format value", /* ASL_MSG_UNKNOWN_FORMAT */ "Unknown format value",
/* ASL_MSG_RESERVED_VALUE */ "Value for field is reserved or unknown", /* ASL_MSG_RESERVED_VALUE */ "Value for field is reserved or unknown",
/* ASL_MSG_TWO_ZERO_VALUES */ "32-bit DSDT Address and 64-bit X_DSDT Address cannot both be zero", /* ASL_MSG_TWO_ZERO_VALUES */ "32-bit DSDT Address and 64-bit X_DSDT Address cannot both be zero",
/* ASL_MSG_BAD_PARSE_TREE */ "Parse tree appears to be ill-defined" /* ASL_MSG_BAD_PARSE_TREE */ "Parse tree appears to be ill-defined",
/* ASL_MSG_MALFORMED_HEADER */ "Malformed ACPI table header detected"
}; };
/* Preprocessor */ /* Preprocessor */
+2 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
@@ -414,6 +414,7 @@ typedef enum
ASL_MSG_RESERVED_VALUE, ASL_MSG_RESERVED_VALUE,
ASL_MSG_TWO_ZERO_VALUES, ASL_MSG_TWO_ZERO_VALUES,
ASL_MSG_BAD_PARSE_TREE, ASL_MSG_BAD_PARSE_TREE,
ASL_MSG_MALFORMED_HEADER,
/* These messages are used by the Preprocessor only */ /* These messages are used by the Preprocessor only */
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+9 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
@@ -863,6 +863,14 @@ OpcGenerateAmlOpcode (
Index = (UINT16) (Op->Asl.ParseOpcode - ASL_PARSE_OPCODE_BASE); Index = (UINT16) (Op->Asl.ParseOpcode - ASL_PARSE_OPCODE_BASE);
if ((Op->Asl.ParseOpcode < ASL_PARSE_OPCODE_BASE) ||
(Index >= AslKeywordMappingCount))
{
AslError (ASL_ERROR, ASL_MSG_COMPILER_INTERNAL, Op,
"Invalid parse opcode in OpcGenerateAmlOpcode");
return;
}
Op->Asl.AmlOpcode = AslKeywordMapping[Index].AmlOpcode; Op->Asl.AmlOpcode = AslKeywordMapping[Index].AmlOpcode;
Op->Asl.AcpiBtype = AslKeywordMapping[Index].AcpiBtype; Op->Asl.AcpiBtype = AslKeywordMapping[Index].AcpiBtype;
Op->Asl.CompileFlags |= AslKeywordMapping[Index].Flags; Op->Asl.CompileFlags |= AslKeywordMapping[Index].Flags;
+26 -6
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
@@ -851,7 +851,9 @@ OpnDoPackage (
{ {
ACPI_PARSE_OBJECT *InitializerOp; ACPI_PARSE_OBJECT *InitializerOp;
ACPI_PARSE_OBJECT *PackageLengthOp; ACPI_PARSE_OBJECT *PackageLengthOp;
UINT64 DeclaredLength;
UINT32 PackageLength = 0; UINT32 PackageLength = 0;
UINT32 MaxEncodedLength = 0x0FFFFFFF; /* Max AML package length encoding (28 bits) */
/* Opcode and package length first, followed by the initializer list */ /* Opcode and package length first, followed by the initializer list */
@@ -875,9 +877,21 @@ OpnDoPackage (
/* If package length is a constant, compare to the initializer list */ /* If package length is a constant, compare to the initializer list */
if ((PackageLengthOp->Asl.ParseOpcode == PARSEOP_INTEGER) || if ((PackageLengthOp->Asl.ParseOpcode == PARSEOP_INTEGER) ||
(PackageLengthOp->Asl.ParseOpcode == PARSEOP_QWORDCONST)) (PackageLengthOp->Asl.ParseOpcode == PARSEOP_QWORDCONST) ||
(PackageLengthOp->Asl.ParseOpcode == PARSEOP_PACKAGE_LENGTH))
{ {
if (PackageLengthOp->Asl.Value.Integer > PackageLength) DeclaredLength = PackageLengthOp->Asl.Value.Integer;
/* Guard against values that cannot be encoded in AML package length format */
if (DeclaredLength > MaxEncodedLength)
{
AslError (ASL_ERROR, ASL_MSG_ENCODING_LENGTH, PackageLengthOp, NULL);
DeclaredLength = MaxEncodedLength;
PackageLengthOp->Asl.Value.Integer = DeclaredLength;
}
if (DeclaredLength > PackageLength)
{ {
/* /*
* Allow package length to be longer than the initializer * Allow package length to be longer than the initializer
@@ -891,9 +905,9 @@ OpnDoPackage (
PackageLengthOp, NULL); PackageLengthOp, NULL);
} }
PackageLength = (UINT32) PackageLengthOp->Asl.Value.Integer; PackageLength = (UINT32) DeclaredLength;
} }
else if (PackageLengthOp->Asl.Value.Integer < PackageLength) else if (DeclaredLength < PackageLength)
{ {
/* /*
* The package length is smaller than the length of the * The package length is smaller than the length of the
@@ -999,7 +1013,13 @@ OpnDoLoadTable (
/* Fourth child is the RootPath string */ /* Fourth child is the RootPath string */
Next = Next->Asl.Next; Next = Next->Asl.Next;
if (Next->Asl.ParseOpcode == PARSEOP_ZERO) if ((Next->Asl.ParseOpcode == PARSEOP_ZERO) ||
((Next->Asl.Value.Integer == 0) &&
((Next->Asl.ParseOpcode == PARSEOP_INTEGER) ||
(Next->Asl.ParseOpcode == PARSEOP_BYTECONST) ||
(Next->Asl.ParseOpcode == PARSEOP_WORDCONST) ||
(Next->Asl.ParseOpcode == PARSEOP_DWORDCONST)||
(Next->Asl.ParseOpcode == PARSEOP_QWORDCONST))))
{ {
Next->Asl.ParseOpcode = PARSEOP_STRING_LITERAL; Next->Asl.ParseOpcode = PARSEOP_STRING_LITERAL;
Next->Asl.Value.String = "\\"; Next->Asl.Value.String = "\\";
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -9,7 +9,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -11,7 +11,7 @@ NoEcho('
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -11,7 +11,7 @@ NoEcho('
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -11,7 +11,7 @@ NoEcho('
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -9,7 +9,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -9,7 +9,7 @@ NoEcho('
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -9,7 +9,7 @@ NoEcho('
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -9,7 +9,7 @@ NoEcho('
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+15 -2
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
@@ -197,6 +197,7 @@ AnMethodTypingWalkEnd (
void *Context) void *Context)
{ {
UINT32 ThisOpBtype; UINT32 ThisOpBtype;
ACPI_PARSE_OBJECT *TargetMethodOp;
switch (Op->Asl.ParseOpcode) switch (Op->Asl.ParseOpcode)
@@ -227,12 +228,24 @@ AnMethodTypingWalkEnd (
if (Op->Asl.Child->Asl.Node && if (Op->Asl.Child->Asl.Node &&
(Op->Asl.ParentMethod != Op->Asl.Child->Asl.Node->Op)) (Op->Asl.ParentMethod != Op->Asl.Child->Asl.Node->Op))
{ {
TargetMethodOp = Op->Asl.Child->Asl.Node->Op;
/* Break mutual-recursion loops during typing */
if (TargetMethodOp->Asl.CompileFlags & OP_VISITED)
{
break;
}
TargetMethodOp->Asl.CompileFlags |= OP_VISITED;
/* We must type the method here */ /* We must type the method here */
TrWalkParseTree (Op->Asl.Child->Asl.Node->Op, TrWalkParseTree (TargetMethodOp,
ASL_WALK_VISIT_UPWARD, NULL, ASL_WALK_VISIT_UPWARD, NULL,
AnMethodTypingWalkEnd, NULL); AnMethodTypingWalkEnd, NULL);
TargetMethodOp->Asl.CompileFlags &= ~OP_VISITED;
ThisOpBtype = AnGetBtype (Op->Asl.Child); ThisOpBtype = AnGetBtype (Op->Asl.Child);
} }
} }
+13 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
@@ -558,11 +558,23 @@ XfNamespaceLocateBegin (
Node = NextOp->Asl.Node; Node = NextOp->Asl.Node;
/* Malformed tree: parent method has no namespace node */
if (!Node)
{
return_ACPI_STATUS (AE_OK);
}
/* Get Arg # */ /* Get Arg # */
RegisterNumber = Op->Asl.AmlOpcode - AML_ARG0; /* 0x68 through 0x6F */ RegisterNumber = Op->Asl.AmlOpcode - AML_ARG0; /* 0x68 through 0x6F */
MethodArgs = Node->MethodArgs; MethodArgs = Node->MethodArgs;
/* Gracefully handle malformed trees where method args were not set up */
if (!MethodArgs)
{
return_ACPI_STATUS (AE_OK);
}
/* Mark this Arg as referenced */ /* Mark this Arg as referenced */
MethodArgs[RegisterNumber].Flags |= ASL_ARG_REFERENCED; MethodArgs[RegisterNumber].Flags |= ASL_ARG_REFERENCED;
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License
+1 -1
View File
@@ -8,7 +8,7 @@
* *
* 1. Copyright Notice * 1. Copyright Notice
* *
* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * Some or all of this work - Copyright (c) 1999 - 2026, Intel Corp.
* All rights reserved. * All rights reserved.
* *
* 2. License * 2. License

Some files were not shown because too many files have changed in this diff Show More