Update to ACPICA 20121018.

This is an update from 20120711 and A LOT has happened since then. See
    https://acpica.org/download/changes.txt for all the changes.
This commit is contained in:
Fredrik Holmqvist
2012-11-03 22:46:22 +01:00
parent 54391a5df2
commit 9b0d045c59
191 changed files with 4590 additions and 3465 deletions
+1 -1
View File
@@ -255,7 +255,7 @@ struct acpi_module_info {
status_t (*prepare_sleep_state)(uint8 state, void (*wakeFunc)(void), status_t (*prepare_sleep_state)(uint8 state, void (*wakeFunc)(void),
size_t size); size_t size);
status_t (*enter_sleep_state)(uint8 state, uint8 flags); status_t (*enter_sleep_state)(uint8 state);
status_t (*reboot)(void); status_t (*reboot)(void);
/* Table Access */ /* Table Access */
@@ -135,7 +135,7 @@ typedef struct acpi_root_info {
status_t (*prepare_sleep_state)(uint8 state, void (*wakeFunc)(void), status_t (*prepare_sleep_state)(uint8 state, void (*wakeFunc)(void),
size_t size); size_t size);
status_t (*enter_sleep_state)(uint8 state, uint8 flags); status_t (*enter_sleep_state)(uint8 state);
status_t (*reboot)(void); status_t (*reboot)(void);
/* Table Access */ /* Table Access */
@@ -218,7 +218,7 @@ status_t set_current_resources(acpi_handle busDeviceHandle,
acpi_data* buffer); acpi_data* buffer);
status_t prepare_sleep_state(uint8 state, void (*wakeFunc)(void), size_t size); status_t prepare_sleep_state(uint8 state, void (*wakeFunc)(void), size_t size);
status_t enter_sleep_state(uint8 state, uint8 flags); status_t enter_sleep_state(uint8 state);
status_t reboot(void); status_t reboot(void);
@@ -664,14 +664,14 @@ prepare_sleep_state(uint8 state, void (*wakeFunc)(void), size_t size)
status_t status_t
enter_sleep_state(uint8 state, uint8 flags) enter_sleep_state(uint8 state)
{ {
ACPI_STATUS status; ACPI_STATUS status;
TRACE("enter_sleep_state %d with flags %d\n", state, flags); TRACE("enter_sleep_state %d\n", state);
cpu_status cpu = disable_interrupts(); cpu_status cpu = disable_interrupts();
status = AcpiEnterSleepState(state, flags); status = AcpiEnterSleepState(state);
restore_interrupts(cpu); restore_interrupts(cpu);
panic("AcpiEnterSleepState should not return."); panic("AcpiEnterSleepState should not return.");
if (status != AE_OK) if (status != AE_OK)
@@ -171,6 +171,7 @@ local utilities_src =
uttrack.c uttrack.c
utxface.c utxface.c
utxferror.c utxferror.c
utxfinit.c
utxfmutex.c utxfmutex.c
; ;
@@ -172,7 +172,7 @@ AdGenerateFilename (
FilenameBuf[i] = 0; FilenameBuf[i] = 0;
strcat (FilenameBuf, ACPI_TABLE_FILE_SUFFIX); strcat (FilenameBuf, ACPI_TABLE_FILE_SUFFIX);
return FilenameBuf; return (FilenameBuf);
} }
@@ -295,7 +295,7 @@ FlGenerateFilename (
strcat (NewFilename, Suffix); strcat (NewFilename, Suffix);
} }
return NewFilename; return (NewFilename);
} }
@@ -404,5 +404,3 @@ FlSplitInputPathname (
*OutFilename = Filename; *OutFilename = Filename;
return (AE_OK); return (AE_OK);
} }
@@ -132,9 +132,13 @@
#define _COMPONENT ACPI_TOOLS #define _COMPONENT ACPI_TOOLS
ACPI_MODULE_NAME ("adisasm") ACPI_MODULE_NAME ("adisasm")
/*
* Older versions of Bison won't emit this external in the generated header.
* Newer versions do emit the external, so we don't need to do it.
*/
#ifndef ASLCOMPILER_ASLCOMPILERPARSE_H
extern int AslCompilerdebug; extern int AslCompilerdebug;
#endif
ACPI_STATUS ACPI_STATUS
LsDisplayNamespace ( LsDisplayNamespace (
@@ -364,7 +368,7 @@ AdAmlDisassemble (
Status = AcpiDbGetTableFromFile (Filename, &Table); Status = AcpiDbGetTableFromFile (Filename, &Table);
if (ACPI_FAILURE (Status)) if (ACPI_FAILURE (Status))
{ {
return Status; return (Status);
} }
/* /*
@@ -379,14 +383,13 @@ AdAmlDisassemble (
/* Next external file */ /* Next external file */
ExternalFileList = ExternalFileList->Next; ExternalFileList = ExternalFileList->Next;
continue; continue;
} }
Status = AcpiDbGetTableFromFile (ExternalFilename, &ExternalTable); Status = AcpiDbGetTableFromFile (ExternalFilename, &ExternalTable);
if (ACPI_FAILURE (Status)) if (ACPI_FAILURE (Status))
{ {
return Status; return (Status);
} }
/* Load external table for symbol resolution */ /* Load external table for symbol resolution */
@@ -398,7 +401,7 @@ AdAmlDisassemble (
{ {
AcpiOsPrintf ("Could not parse external ACPI tables, %s\n", AcpiOsPrintf ("Could not parse external ACPI tables, %s\n",
AcpiFormatException (Status)); AcpiFormatException (Status));
return Status; return (Status);
} }
/* /*
@@ -429,12 +432,12 @@ AdAmlDisassemble (
{ {
AcpiOsPrintf ("Could not get ACPI tables, %s\n", AcpiOsPrintf ("Could not get ACPI tables, %s\n",
AcpiFormatException (Status)); AcpiFormatException (Status));
return Status; return (Status);
} }
if (!AcpiGbl_DbOpt_disasm) if (!AcpiGbl_DbOpt_disasm)
{ {
return AE_OK; return (AE_OK);
} }
/* Obtained the local tables, just disassemble the DSDT */ /* Obtained the local tables, just disassemble the DSDT */
@@ -444,7 +447,7 @@ AdAmlDisassemble (
{ {
AcpiOsPrintf ("Could not get DSDT, %s\n", AcpiOsPrintf ("Could not get DSDT, %s\n",
AcpiFormatException (Status)); AcpiFormatException (Status));
return Status; return (Status);
} }
AcpiOsPrintf ("\nDisassembly of DSDT\n"); AcpiOsPrintf ("\nDisassembly of DSDT\n");
@@ -599,7 +602,14 @@ AdAmlDisassemble (
if (AcpiGbl_DbOpt_disasm) if (AcpiGbl_DbOpt_disasm)
{ {
/* This is the real disassembly */
AdDisplayTables (Filename, Table); AdDisplayTables (Filename, Table);
/* Dump hex table if requested (-vt) */
AcpiDmDumpDataTable (Table);
fprintf (stderr, "Disassembly completed\n"); fprintf (stderr, "Disassembly completed\n");
fprintf (stderr, "ASL Output: %s - %u bytes\n", fprintf (stderr, "ASL Output: %s - %u bytes\n",
DisasmFilename, AdGetFileSize (File)); DisasmFilename, AdGetFileSize (File));
@@ -788,7 +798,7 @@ AdDisplayTables (
if (!AcpiGbl_ParseOpRoot) if (!AcpiGbl_ParseOpRoot)
{ {
return AE_NOT_EXIST; return (AE_NOT_EXIST);
} }
if (!AcpiGbl_DbOpt_verbose) if (!AcpiGbl_DbOpt_verbose)
@@ -801,15 +811,15 @@ AdDisplayTables (
if (AcpiGbl_DbOpt_verbose) if (AcpiGbl_DbOpt_verbose)
{ {
AcpiOsPrintf ("\n\nTable Header:\n"); AcpiOsPrintf ("\n\nTable Header:\n");
AcpiUtDumpBuffer ((UINT8 *) Table, sizeof (ACPI_TABLE_HEADER), AcpiUtDebugDumpBuffer ((UINT8 *) Table, sizeof (ACPI_TABLE_HEADER),
DB_BYTE_DISPLAY, ACPI_UINT32_MAX); DB_BYTE_DISPLAY, ACPI_UINT32_MAX);
AcpiOsPrintf ("Table Body (Length 0x%X)\n", Table->Length); AcpiOsPrintf ("Table Body (Length 0x%X)\n", Table->Length);
AcpiUtDumpBuffer (((UINT8 *) Table + sizeof (ACPI_TABLE_HEADER)), Table->Length, AcpiUtDebugDumpBuffer (((UINT8 *) Table + sizeof (ACPI_TABLE_HEADER)),
DB_BYTE_DISPLAY, ACPI_UINT32_MAX); Table->Length, DB_BYTE_DISPLAY, ACPI_UINT32_MAX);
} }
return AE_OK; return (AE_OK);
} }
@@ -982,7 +992,7 @@ AdParseDeferredOps (
Status = AdDeferredParse (Op, Op->Named.Data, Op->Named.Length); Status = AdDeferredParse (Op, Op->Named.Data, Op->Named.Length);
if (ACPI_FAILURE (Status)) if (ACPI_FAILURE (Status))
{ {
return_ACPI_STATUS (Status); return (Status);
} }
break; break;
@@ -1010,7 +1020,7 @@ AdParseDeferredOps (
} }
fprintf (stderr, "\n"); fprintf (stderr, "\n");
return Status; return (Status);
} }
@@ -1047,7 +1057,7 @@ AdGetLocalTables (
if (!NewTable) if (!NewTable)
{ {
fprintf (stderr, "Could not obtain RSDT\n"); fprintf (stderr, "Could not obtain RSDT\n");
return AE_NO_ACPI_TABLES; return (AE_NO_ACPI_TABLES);
} }
else else
{ {
@@ -1104,13 +1114,13 @@ AdGetLocalTables (
if (ACPI_FAILURE (Status)) if (ACPI_FAILURE (Status))
{ {
fprintf (stderr, "Could not store DSDT\n"); fprintf (stderr, "Could not store DSDT\n");
return AE_NO_ACPI_TABLES; return (AE_NO_ACPI_TABLES);
} }
} }
else else
{ {
fprintf (stderr, "Could not obtain DSDT\n"); fprintf (stderr, "Could not obtain DSDT\n");
return AE_NO_ACPI_TABLES; return (AE_NO_ACPI_TABLES);
} }
#if 0 #if 0
@@ -1129,7 +1139,7 @@ AdGetLocalTables (
} while (NewTable); } while (NewTable);
#endif #endif
return AE_OK; return (AE_OK);
} }
@@ -1164,7 +1174,7 @@ AdParseTable (
if (!Table) if (!Table)
{ {
return AE_NOT_EXIST; return (AE_NOT_EXIST);
} }
/* Pass 1: Parse everything except control method bodies */ /* Pass 1: Parse everything except control method bodies */
@@ -1179,7 +1189,7 @@ AdParseTable (
AcpiGbl_ParseOpRoot = AcpiPsCreateScopeOp (); AcpiGbl_ParseOpRoot = AcpiPsCreateScopeOp ();
if (!AcpiGbl_ParseOpRoot) if (!AcpiGbl_ParseOpRoot)
{ {
return AE_NO_MEMORY; return (AE_NO_MEMORY);
} }
/* Create and initialize a new walk state */ /* Create and initialize a new walk state */
@@ -1204,7 +1214,7 @@ AdParseTable (
Status = AcpiPsParseAml (WalkState); Status = AcpiPsParseAml (WalkState);
if (ACPI_FAILURE (Status)) if (ACPI_FAILURE (Status))
{ {
return Status; return (Status);
} }
/* If LoadTable is FALSE, we are parsing the last loaded table */ /* If LoadTable is FALSE, we are parsing the last loaded table */
@@ -1219,19 +1229,19 @@ AdParseTable (
Table->Length, ACPI_TABLE_ORIGIN_ALLOCATED, &TableIndex); Table->Length, ACPI_TABLE_ORIGIN_ALLOCATED, &TableIndex);
if (ACPI_FAILURE (Status)) if (ACPI_FAILURE (Status))
{ {
return Status; return (Status);
} }
Status = AcpiTbAllocateOwnerId (TableIndex); Status = AcpiTbAllocateOwnerId (TableIndex);
if (ACPI_FAILURE (Status)) if (ACPI_FAILURE (Status))
{ {
return Status; return (Status);
} }
if (OwnerId) if (OwnerId)
{ {
Status = AcpiTbGetOwnerId (TableIndex, OwnerId); Status = AcpiTbGetOwnerId (TableIndex, OwnerId);
if (ACPI_FAILURE (Status)) if (ACPI_FAILURE (Status))
{ {
return Status; return (Status);
} }
} }
} }
@@ -1248,7 +1258,7 @@ AdParseTable (
if (External) if (External)
{ {
return AE_OK; return (AE_OK);
} }
/* Pass 3: Parse control methods and link their parse trees into the main parse tree */ /* Pass 3: Parse control methods and link their parse trees into the main parse tree */
@@ -1260,7 +1270,5 @@ AdParseTable (
AcpiDmFindResources (AcpiGbl_ParseOpRoot); AcpiDmFindResources (AcpiGbl_ParseOpRoot);
fprintf (stderr, "Parsing completed\n"); fprintf (stderr, "Parsing completed\n");
return AE_OK; return (AE_OK);
} }
@@ -726,8 +726,8 @@ AcpiDmLoadDescendingOp (
while (AcpiGbl_PreDefinedNames[PreDefineIndex].Name) while (AcpiGbl_PreDefinedNames[PreDefineIndex].Name)
{ {
if (!ACPI_STRNCMP (Node->Name.Ascii, if (ACPI_COMPARE_NAME (Node->Name.Ascii,
AcpiGbl_PreDefinedNames[PreDefineIndex].Name, 4)) AcpiGbl_PreDefinedNames[PreDefineIndex].Name))
{ {
PreDefined = TRUE; PreDefined = TRUE;
break; break;
@@ -1090,5 +1090,3 @@ AcpiDmInspectPossibleArgs (
return (Last); return (Last);
} }
@@ -270,7 +270,7 @@ const AH_PREDEFINED_NAME AslPredefinedInfo[] =
AH_PREDEF ("_PIC", "Interrupt Model", "Inform AML of the interrupt model in use"), AH_PREDEF ("_PIC", "Interrupt Model", "Inform AML of the interrupt model in use"),
AH_PREDEF ("_PIF", "Power Source Information", "Returns a Power Source information block"), AH_PREDEF ("_PIF", "Power Source Information", "Returns a Power Source information block"),
AH_PREDEF ("_PIN", "Pin List", "Pin list, Resource Descriptor field"), AH_PREDEF ("_PIN", "Pin List", "Pin list, Resource Descriptor field"),
AH_PREDEF ("_PLD", "Physical Device Location", "Returns a device's physical location information"), AH_PREDEF ("_PLD", "Physical Location of Device", "Returns a device's physical location information"),
AH_PREDEF ("_PMC", "Power Meter Capabilities", "Returns a list of Power Meter capabilities info"), AH_PREDEF ("_PMC", "Power Meter Capabilities", "Returns a list of Power Meter capabilities info"),
AH_PREDEF ("_PMD", "Power Metered Devices", "Returns a list of devices that are measured by the power meter device"), AH_PREDEF ("_PMD", "Power Metered Devices", "Returns a list of devices that are measured by the power meter device"),
AH_PREDEF ("_PMM", "Power Meter Measurement", "Returns the current value of the Power Meter"), AH_PREDEF ("_PMM", "Power Meter Measurement", "Returns the current value of the Power Meter"),
@@ -759,4 +759,3 @@ AcpiDmEmitExternals (
AcpiOsPrintf ("\n"); AcpiOsPrintf ("\n");
} }
@@ -541,6 +541,11 @@ AcpiDmCheckResourceReference (
/* Get the Index term, must be an integer constant to convert */ /* Get the Index term, must be an integer constant to convert */
IndexOp = BufferNameOp->Common.Next; IndexOp = BufferNameOp->Common.Next;
/* Major cheat: The Node field is also used for the Tag ptr. Clear it now */
IndexOp->Common.Node = NULL;
OpInfo = AcpiPsGetOpcodeInfo (IndexOp->Common.AmlOpcode); OpInfo = AcpiPsGetOpcodeInfo (IndexOp->Common.AmlOpcode);
if (OpInfo->ObjectType != ACPI_TYPE_INTEGER) if (OpInfo->ObjectType != ACPI_TYPE_INTEGER)
{ {
@@ -1117,4 +1122,3 @@ AcpiDmAddResourceToNamespace (
Node->Length = Length; Node->Length = Length;
return (AE_OK); return (AE_OK);
} }
@@ -349,22 +349,24 @@ static const char *AcpiDmGasAccessWidth[] =
ACPI_DMTABLE_DATA AcpiDmTableData[] = ACPI_DMTABLE_DATA AcpiDmTableData[] =
{ {
{ACPI_SIG_ASF, NULL, AcpiDmDumpAsf, DtCompileAsf, TemplateAsf, "Alert Standard Format table"}, {ACPI_SIG_ASF, NULL, AcpiDmDumpAsf, DtCompileAsf, TemplateAsf, "Alert Standard Format table"},
{ACPI_SIG_BOOT, AcpiDmTableInfoBoot, NULL, NULL, TemplateBoot, "Simple Boot Flag Table"},
{ACPI_SIG_BERT, AcpiDmTableInfoBert, NULL, NULL, TemplateBert, "Boot Error Record Table"}, {ACPI_SIG_BERT, AcpiDmTableInfoBert, NULL, NULL, TemplateBert, "Boot Error Record Table"},
{ACPI_SIG_BGRT, AcpiDmTableInfoBgrt, NULL, NULL, TemplateBgrt, "Boot Graphics Resource Table"}, {ACPI_SIG_BGRT, AcpiDmTableInfoBgrt, NULL, NULL, TemplateBgrt, "Boot Graphics Resource Table"},
{ACPI_SIG_BOOT, AcpiDmTableInfoBoot, NULL, NULL, TemplateBoot, "Simple Boot Flag Table"},
{ACPI_SIG_CPEP, NULL, AcpiDmDumpCpep, DtCompileCpep, TemplateCpep, "Corrected Platform Error Polling table"}, {ACPI_SIG_CPEP, NULL, AcpiDmDumpCpep, DtCompileCpep, TemplateCpep, "Corrected Platform Error Polling table"},
{ACPI_SIG_CSRT, NULL, AcpiDmDumpCsrt, NULL, NULL, "Core System Resource Table"},
{ACPI_SIG_DBG2, NULL, AcpiDmDumpDbg2, NULL, NULL, "Debug Port table type 2"},
{ACPI_SIG_DBGP, AcpiDmTableInfoDbgp, NULL, NULL, TemplateDbgp, "Debug Port table"}, {ACPI_SIG_DBGP, AcpiDmTableInfoDbgp, NULL, NULL, TemplateDbgp, "Debug Port table"},
{ACPI_SIG_DMAR, NULL, AcpiDmDumpDmar, DtCompileDmar, TemplateDmar, "DMA Remapping table"}, {ACPI_SIG_DMAR, NULL, AcpiDmDumpDmar, DtCompileDmar, TemplateDmar, "DMA Remapping table"},
{ACPI_SIG_ECDT, AcpiDmTableInfoEcdt, NULL, NULL, TemplateEcdt, "Embedded Controller Boot Resources Table"}, {ACPI_SIG_ECDT, AcpiDmTableInfoEcdt, NULL, NULL, TemplateEcdt, "Embedded Controller Boot Resources Table"},
{ACPI_SIG_EINJ, NULL, AcpiDmDumpEinj, DtCompileEinj, TemplateEinj, "Error Injection table"}, {ACPI_SIG_EINJ, NULL, AcpiDmDumpEinj, DtCompileEinj, TemplateEinj, "Error Injection table"},
{ACPI_SIG_ERST, NULL, AcpiDmDumpErst, DtCompileErst, TemplateErst, "Error Record Serialization Table"}, {ACPI_SIG_ERST, NULL, AcpiDmDumpErst, DtCompileErst, TemplateErst, "Error Record Serialization Table"},
{ACPI_SIG_FADT, NULL, AcpiDmDumpFadt, DtCompileFadt, TemplateFadt, "Fixed ACPI Description Table"}, {ACPI_SIG_FADT, NULL, AcpiDmDumpFadt, DtCompileFadt, TemplateFadt, "Fixed ACPI Description Table (FADT)"},
{ACPI_SIG_FPDT, NULL, AcpiDmDumpFpdt, DtCompileFpdt, TemplateFpdt, "Firmware Performance Data Table"}, {ACPI_SIG_FPDT, NULL, AcpiDmDumpFpdt, DtCompileFpdt, TemplateFpdt, "Firmware Performance Data Table"},
{ACPI_SIG_GTDT, AcpiDmTableInfoGtdt, NULL, NULL, TemplateGtdt, "Generic Timer Description Table"}, {ACPI_SIG_GTDT, AcpiDmTableInfoGtdt, NULL, NULL, TemplateGtdt, "Generic Timer Description Table"},
{ACPI_SIG_HEST, NULL, AcpiDmDumpHest, DtCompileHest, TemplateHest, "Hardware Error Source Table"}, {ACPI_SIG_HEST, NULL, AcpiDmDumpHest, DtCompileHest, TemplateHest, "Hardware Error Source Table"},
{ACPI_SIG_HPET, AcpiDmTableInfoHpet, NULL, NULL, TemplateHpet, "High Precision Event Timer table"}, {ACPI_SIG_HPET, AcpiDmTableInfoHpet, NULL, NULL, TemplateHpet, "High Precision Event Timer table"},
{ACPI_SIG_IVRS, NULL, AcpiDmDumpIvrs, DtCompileIvrs, TemplateIvrs, "I/O Virtualization Reporting Structure"}, {ACPI_SIG_IVRS, NULL, AcpiDmDumpIvrs, DtCompileIvrs, TemplateIvrs, "I/O Virtualization Reporting Structure"},
{ACPI_SIG_MADT, NULL, AcpiDmDumpMadt, DtCompileMadt, TemplateMadt, "Multiple APIC Description Table"}, {ACPI_SIG_MADT, NULL, AcpiDmDumpMadt, DtCompileMadt, TemplateMadt, "Multiple APIC Description Table (MADT)"},
{ACPI_SIG_MCFG, NULL, AcpiDmDumpMcfg, DtCompileMcfg, TemplateMcfg, "Memory Mapped Configuration table"}, {ACPI_SIG_MCFG, NULL, AcpiDmDumpMcfg, DtCompileMcfg, TemplateMcfg, "Memory Mapped Configuration table"},
{ACPI_SIG_MCHI, AcpiDmTableInfoMchi, NULL, NULL, TemplateMchi, "Management Controller Host Interface table"}, {ACPI_SIG_MCHI, AcpiDmTableInfoMchi, NULL, NULL, TemplateMchi, "Management Controller Host Interface table"},
{ACPI_SIG_MPST, AcpiDmTableInfoMpst, AcpiDmDumpMpst, DtCompileMpst, TemplateMpst, "Memory Power State Table"}, {ACPI_SIG_MPST, AcpiDmTableInfoMpst, AcpiDmDumpMpst, DtCompileMpst, TemplateMpst, "Memory Power State Table"},
@@ -485,6 +487,18 @@ AcpiDmDumpDataTable (
if (AcpiUtIsAmlTable (Table)) if (AcpiUtIsAmlTable (Table))
{ {
if (Gbl_VerboseTemplates)
{
/* Dump the raw table data */
Length = Table->Length;
AcpiOsPrintf ("\n/*\n%s: Length %d (0x%X)\n\n",
ACPI_RAW_TABLE_DATA_HEADER, Length, Length);
AcpiUtDumpBuffer (ACPI_CAST_PTR (UINT8, Table),
Length, DB_BYTE_DISPLAY, 0);
AcpiOsPrintf (" */\n");
}
return; return;
} }
@@ -554,7 +568,8 @@ AcpiDmDumpDataTable (
AcpiOsPrintf ("\n%s: Length %d (0x%X)\n\n", AcpiOsPrintf ("\n%s: Length %d (0x%X)\n\n",
ACPI_RAW_TABLE_DATA_HEADER, Length, Length); ACPI_RAW_TABLE_DATA_HEADER, Length, Length);
AcpiUtDumpBuffer2 (ACPI_CAST_PTR (UINT8, Table), Length, DB_BYTE_DISPLAY); AcpiUtDumpBuffer (ACPI_CAST_PTR (UINT8, Table),
Length, DB_BYTE_DISPLAY, 0);
} }
} }
@@ -124,11 +124,79 @@
ACPI_MODULE_NAME ("dmtbdump") ACPI_MODULE_NAME ("dmtbdump")
/* Local prototypes */
static void static void
AcpiDmValidateFadtLength ( AcpiDmValidateFadtLength (
UINT32 Revision, UINT32 Revision,
UINT32 Length); UINT32 Length);
static void
AcpiDmDumpBuffer (
void *Table,
UINT32 BufferOffset,
UINT32 Length,
UINT32 AbsoluteOffset,
char *Header);
/*******************************************************************************
*
* FUNCTION: AcpiDmDumpBuffer
*
* PARAMETERS: Table - ACPI Table or subtable
* BufferOffset - Offset of buffer from Table above
* Length - Length of the buffer
* AbsoluteOffset - Offset of buffer in the main ACPI table
* Header - Name of the buffer field (printed on the
* first line only.)
*
* RETURN: None
*
* DESCRIPTION: Format the contents of an arbitrary length data buffer (in the
* disassembler output format.)
*
******************************************************************************/
static void
AcpiDmDumpBuffer (
void *Table,
UINT32 BufferOffset,
UINT32 Length,
UINT32 AbsoluteOffset,
char *Header)
{
UINT8 *Buffer;
UINT32 i;
if (!Length)
{
return;
}
Buffer = ACPI_CAST_PTR (UINT8, Table) + BufferOffset;
i = 0;
while (i < Length)
{
if (!(i % 16))
{
AcpiOsPrintf ("\n");
AcpiDmLineHeader (AbsoluteOffset,
((Length - i) > 16) ? 16 : (Length - i), Header);
Header = NULL;
}
AcpiOsPrintf ("%.02X ", *Buffer);
i++;
Buffer++;
AbsoluteOffset++;
}
AcpiOsPrintf ("\n");
}
/******************************************************************************* /*******************************************************************************
* *
@@ -599,6 +667,208 @@ AcpiDmDumpCpep (
} }
/*******************************************************************************
*
* FUNCTION: AcpiDmDumpCsrt
*
* PARAMETERS: Table - A CSRT table
*
* RETURN: None
*
* DESCRIPTION: Format the contents of a CSRT. This table type consists
* of an open-ended number of subtables.
*
******************************************************************************/
void
AcpiDmDumpCsrt (
ACPI_TABLE_HEADER *Table)
{
ACPI_STATUS Status;
ACPI_CSRT_GROUP *SubTable;
ACPI_CSRT_DESCRIPTOR *SubSubTable;
UINT32 Length = Table->Length;
UINT32 Offset = sizeof (ACPI_TABLE_CSRT);
UINT32 SubOffset;
UINT32 SubSubOffset;
UINT32 InfoLength;
/* The main table only contains the ACPI header, thus already handled */
/* Sub-tables (Resource Groups) */
SubTable = ACPI_ADD_PTR (ACPI_CSRT_GROUP, Table, Offset);
while (Offset < Table->Length)
{
AcpiOsPrintf ("\n");
Status = AcpiDmDumpTable (Length, Offset, SubTable,
SubTable->Length, AcpiDmTableInfoCsrt0);
if (ACPI_FAILURE (Status))
{
return;
}
SubOffset = sizeof (ACPI_CSRT_GROUP);
/* Shared resource group info buffer */
AcpiDmDumpBuffer (SubTable, SubOffset, SubTable->InfoLength,
Offset+SubOffset, "Shared Data");
SubOffset += SubTable->InfoLength;
/* Sub-Sub-tables (Resource Descriptors) */
SubSubTable = ACPI_ADD_PTR (ACPI_CSRT_DESCRIPTOR, Table,
Offset + SubOffset);
while ((SubOffset < SubTable->Length) &&
((Offset + SubOffset) < Table->Length))
{
AcpiOsPrintf ("\n");
Status = AcpiDmDumpTable (Length, Offset + SubOffset, SubSubTable,
SubSubTable->Length, AcpiDmTableInfoCsrt1);
if (ACPI_FAILURE (Status))
{
return;
}
SubSubOffset = sizeof (ACPI_CSRT_DESCRIPTOR);
/* Resource-specific info buffer */
InfoLength = SubSubTable->Length - SubSubOffset;
AcpiDmDumpBuffer (SubSubTable, SubSubOffset, InfoLength,
Offset + SubOffset + SubSubOffset, "ResourceInfo");
SubSubOffset += InfoLength;
/* Point to next sub-sub-table */
SubOffset += SubSubTable->Length;
SubSubTable = ACPI_ADD_PTR (ACPI_CSRT_DESCRIPTOR, SubSubTable,
SubSubTable->Length);
}
/* Point to next sub-table */
Offset += SubTable->Length;
SubTable = ACPI_ADD_PTR (ACPI_CSRT_GROUP, SubTable,
SubTable->Length);
}
}
/*******************************************************************************
*
* FUNCTION: AcpiDmDumpDbg2
*
* PARAMETERS: Table - A DBG2 table
*
* RETURN: None
*
* DESCRIPTION: Format the contents of a DBG2. This table type consists
* of an open-ended number of subtables.
*
******************************************************************************/
void
AcpiDmDumpDbg2 (
ACPI_TABLE_HEADER *Table)
{
ACPI_STATUS Status;
ACPI_DBG2_DEVICE *SubTable;
UINT32 Length = Table->Length;
UINT32 Offset = sizeof (ACPI_TABLE_DBG2);
UINT32 i;
UINT32 ArrayOffset;
UINT32 AbsoluteOffset;
UINT8 *Array;
/* Main table */
Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoDbg2);
if (ACPI_FAILURE (Status))
{
return;
}
/* Sub-tables */
SubTable = ACPI_ADD_PTR (ACPI_DBG2_DEVICE, Table, Offset);
while (Offset < Table->Length)
{
AcpiOsPrintf ("\n");
Status = AcpiDmDumpTable (Length, Offset, SubTable,
SubTable->Length, AcpiDmTableInfoDbg2Device);
if (ACPI_FAILURE (Status))
{
return;
}
/* Dump the BaseAddress array */
for (i = 0; i < SubTable->RegisterCount; i++)
{
ArrayOffset = SubTable->BaseAddressOffset +
(sizeof (ACPI_GENERIC_ADDRESS) * i);
AbsoluteOffset = Offset + ArrayOffset;
Array = (UINT8 *) SubTable + ArrayOffset;
Status = AcpiDmDumpTable (Length, AbsoluteOffset, Array,
SubTable->Length, AcpiDmTableInfoDbg2Addr);
if (ACPI_FAILURE (Status))
{
return;
}
}
/* Dump the AddressSize array */
for (i = 0; i < SubTable->RegisterCount; i++)
{
ArrayOffset = SubTable->AddressSizeOffset +
(sizeof (UINT32) * i);
AbsoluteOffset = Offset + ArrayOffset;
Array = (UINT8 *) SubTable + ArrayOffset;
Status = AcpiDmDumpTable (Length, AbsoluteOffset, Array,
SubTable->Length, AcpiDmTableInfoDbg2Size);
if (ACPI_FAILURE (Status))
{
return;
}
}
/* Dump the Namestring (required) */
AcpiOsPrintf ("\n");
ArrayOffset = SubTable->NamepathOffset;
AbsoluteOffset = Offset + ArrayOffset;
Array = (UINT8 *) SubTable + ArrayOffset;
Status = AcpiDmDumpTable (Length, AbsoluteOffset, Array,
SubTable->Length, AcpiDmTableInfoDbg2Name);
if (ACPI_FAILURE (Status))
{
return;
}
/* Dump the OemData (optional) */
AcpiDmDumpBuffer (SubTable, SubTable->OemDataOffset, SubTable->OemDataLength,
Offset + SubTable->OemDataOffset, "OEM Data");
/* Point to next sub-table */
Offset += SubTable->Length;
SubTable = ACPI_ADD_PTR (ACPI_DBG2_DEVICE, SubTable,
SubTable->Length);
}
}
/******************************************************************************* /*******************************************************************************
* *
* FUNCTION: AcpiDmDumpDmar * FUNCTION: AcpiDmDumpDmar
@@ -612,6 +882,7 @@ AcpiDmDumpCpep (
* *
******************************************************************************/ ******************************************************************************/
void void
AcpiDmDumpDmar ( AcpiDmDumpDmar (
ACPI_TABLE_HEADER *Table) ACPI_TABLE_HEADER *Table)
@@ -1412,8 +1683,8 @@ AcpiDmDumpMpst (
ACPI_MPST_DATA_HDR *SubTable1; ACPI_MPST_DATA_HDR *SubTable1;
ACPI_MPST_POWER_DATA *SubTable2; ACPI_MPST_POWER_DATA *SubTable2;
UINT16 SubtableCount; UINT16 SubtableCount;
UINT8 PowerStateCount; UINT32 PowerStateCount;
UINT8 ComponentCount; UINT32 ComponentCount;
/* Main table */ /* Main table */
@@ -158,6 +158,7 @@
#define ACPI_BGRT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_BGRT,f) #define ACPI_BGRT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_BGRT,f)
#define ACPI_BOOT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_BOOT,f) #define ACPI_BOOT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_BOOT,f)
#define ACPI_CPEP_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_CPEP,f) #define ACPI_CPEP_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_CPEP,f)
#define ACPI_DBG2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_DBG2,f)
#define ACPI_DBGP_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_DBGP,f) #define ACPI_DBGP_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_DBGP,f)
#define ACPI_DMAR_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_DMAR,f) #define ACPI_DMAR_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_DMAR,f)
#define ACPI_DRTM_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_DRTM,f) #define ACPI_DRTM_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_DRTM,f)
@@ -198,6 +199,9 @@
#define ACPI_ASF3_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_ASF_RMCP,f) #define ACPI_ASF3_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_ASF_RMCP,f)
#define ACPI_ASF4_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_ASF_ADDRESS,f) #define ACPI_ASF4_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_ASF_ADDRESS,f)
#define ACPI_CPEP0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_CPEP_POLLING,f) #define ACPI_CPEP0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_CPEP_POLLING,f)
#define ACPI_CSRT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_CSRT_GROUP,f)
#define ACPI_CSRT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_CSRT_DESCRIPTOR,f)
#define ACPI_DBG20_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_DBG2_DEVICE,f)
#define ACPI_DMARS_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_DMAR_DEVICE_SCOPE,f) #define ACPI_DMARS_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_DMAR_DEVICE_SCOPE,f)
#define ACPI_DMAR0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_DMAR_HARDWARE_UNIT,f) #define ACPI_DMAR0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_DMAR_HARDWARE_UNIT,f)
#define ACPI_DMAR1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_DMAR_RESERVED_MEMORY,f) #define ACPI_DMAR1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_DMAR_RESERVED_MEMORY,f)
@@ -711,6 +715,94 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoCpep0[] =
}; };
/*******************************************************************************
*
* CSRT - Core System Resource Table
*
******************************************************************************/
/* Main table consists only of the standard ACPI table header */
/* Resource Group subtable */
ACPI_DMTABLE_INFO AcpiDmTableInfoCsrt0[] =
{
{ACPI_DMT_UINT32, ACPI_CSRT0_OFFSET (Length), "Length", 0},
{ACPI_DMT_UINT32, ACPI_CSRT0_OFFSET (VendorId), "Vendor ID", 0},
{ACPI_DMT_UINT32, ACPI_CSRT0_OFFSET (SubvendorId), "Subvendor ID", 0},
{ACPI_DMT_UINT16, ACPI_CSRT0_OFFSET (DeviceId), "Device ID", 0},
{ACPI_DMT_UINT16, ACPI_CSRT0_OFFSET (SubdeviceId), "Subdevice ID", 0},
{ACPI_DMT_UINT16, ACPI_CSRT0_OFFSET (Revision), "Revision", 0},
{ACPI_DMT_UINT16, ACPI_CSRT0_OFFSET (Reserved), "Reserved", 0},
{ACPI_DMT_UINT32, ACPI_CSRT0_OFFSET (InfoLength), "InfoLength", 0},
ACPI_DMT_TERMINATOR
};
/* Resource Descriptor subtable */
ACPI_DMTABLE_INFO AcpiDmTableInfoCsrt1[] =
{
{ACPI_DMT_UINT32, ACPI_CSRT1_OFFSET (Length), "Length", 0},
{ACPI_DMT_UINT16, ACPI_CSRT1_OFFSET (Type), "Type", 0},
{ACPI_DMT_UINT16, ACPI_CSRT1_OFFSET (Subtype), "Subtype", 0},
{ACPI_DMT_UINT32, ACPI_CSRT1_OFFSET (Uid), "UID", 0},
ACPI_DMT_TERMINATOR
};
/*******************************************************************************
*
* DBG2 - Debug Port Table 2
*
******************************************************************************/
ACPI_DMTABLE_INFO AcpiDmTableInfoDbg2[] =
{
{ACPI_DMT_UINT32, ACPI_DBG2_OFFSET (InfoOffset), "Info Offset", 0},
{ACPI_DMT_UINT32, ACPI_DBG2_OFFSET (InfoCount), "Info Count", 0},
ACPI_DMT_TERMINATOR
};
/* Debug Device Information Subtable */
ACPI_DMTABLE_INFO AcpiDmTableInfoDbg2Device[] =
{
{ACPI_DMT_UINT8, ACPI_DBG20_OFFSET (Revision), "Revision", 0},
{ACPI_DMT_UINT16, ACPI_DBG20_OFFSET (Length), "Length", 0},
{ACPI_DMT_UINT8, ACPI_DBG20_OFFSET (RegisterCount), "Register Count", 0},
{ACPI_DMT_UINT16, ACPI_DBG20_OFFSET (NamepathLength), "Namepath Length", 0},
{ACPI_DMT_UINT16, ACPI_DBG20_OFFSET (NamepathOffset), "Namepath Offset", 0},
{ACPI_DMT_UINT16, ACPI_DBG20_OFFSET (OemDataLength), "OEM Data Length", 0},
{ACPI_DMT_UINT16, ACPI_DBG20_OFFSET (OemDataOffset), "OEM Data Offset", 0},
{ACPI_DMT_UINT16, ACPI_DBG20_OFFSET (PortType), "Port Type", 0},
{ACPI_DMT_UINT16, ACPI_DBG20_OFFSET (PortSubtype), "Port Subtype", 0},
{ACPI_DMT_UINT16, ACPI_DBG20_OFFSET (Reserved), "Reserved", 0},
{ACPI_DMT_UINT16, ACPI_DBG20_OFFSET (BaseAddressOffset), "Base Address Offset", 0},
{ACPI_DMT_UINT16, ACPI_DBG20_OFFSET (AddressSizeOffset), "Address Size Offset", 0},
ACPI_DMT_TERMINATOR
};
/* Variable-length data for the subtable */
ACPI_DMTABLE_INFO AcpiDmTableInfoDbg2Addr[] =
{
{ACPI_DMT_GAS, 0, "Base Address Register", 0},
ACPI_DMT_TERMINATOR
};
ACPI_DMTABLE_INFO AcpiDmTableInfoDbg2Size[] =
{
{ACPI_DMT_UINT32, 0, "Address Size", 0},
ACPI_DMT_TERMINATOR
};
ACPI_DMTABLE_INFO AcpiDmTableInfoDbg2Name[] =
{
{ACPI_DMT_STRING, 0, "Namepath", 0},
ACPI_DMT_TERMINATOR
};
/******************************************************************************* /*******************************************************************************
* *
* DBGP - Debug Port * DBGP - Debug Port
@@ -1498,10 +1590,10 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoMchi[] =
ACPI_DMTABLE_INFO AcpiDmTableInfoMpst[] = ACPI_DMTABLE_INFO AcpiDmTableInfoMpst[] =
{ {
{ACPI_DMT_UINT16, ACPI_MPST_OFFSET (Reserved1), "Reserved", 0},
{ACPI_DMT_UINT8, ACPI_MPST_OFFSET (ChannelId), "Channel ID", 0}, {ACPI_DMT_UINT8, ACPI_MPST_OFFSET (ChannelId), "Channel ID", 0},
{ACPI_DMT_UINT8, ACPI_MPST_OFFSET (Reserved2), "Reserved", 0}, {ACPI_DMT_UINT24, ACPI_MPST_OFFSET (Reserved1[0]), "Reserved", 0},
{ACPI_DMT_UINT16, ACPI_MPST_OFFSET (PowerNodeCount), "Power Node Count", 0}, {ACPI_DMT_UINT16, ACPI_MPST_OFFSET (PowerNodeCount), "Power Node Count", 0},
{ACPI_DMT_UINT16, ACPI_MPST_OFFSET (Reserved2), "Reserved", 0},
ACPI_DMT_TERMINATOR ACPI_DMT_TERMINATOR
}; };
@@ -1518,12 +1610,11 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoMpst0[] =
{ACPI_DMT_UINT8, ACPI_MPST0_OFFSET (Reserved1), "Reserved", 0}, {ACPI_DMT_UINT8, ACPI_MPST0_OFFSET (Reserved1), "Reserved", 0},
{ACPI_DMT_UINT16, ACPI_MPST0_OFFSET (NodeId), "Node ID", 0}, {ACPI_DMT_UINT16, ACPI_MPST0_OFFSET (NodeId), "Node ID", 0},
{ACPI_DMT_UINT32, ACPI_MPST0_OFFSET (Length), "Length", DT_LENGTH}, {ACPI_DMT_UINT32, ACPI_MPST0_OFFSET (Length), "Length", 0},
{ACPI_DMT_UINT64, ACPI_MPST0_OFFSET (RangeAddress), "Range Address", 0}, {ACPI_DMT_UINT64, ACPI_MPST0_OFFSET (RangeAddress), "Range Address", 0},
{ACPI_DMT_UINT64, ACPI_MPST0_OFFSET (RangeLength), "Range Length", 0}, {ACPI_DMT_UINT64, ACPI_MPST0_OFFSET (RangeLength), "Range Length", 0},
{ACPI_DMT_UINT8, ACPI_MPST0_OFFSET (NumPowerStates), "Num Power States", 0}, {ACPI_DMT_UINT32, ACPI_MPST0_OFFSET (NumPowerStates), "Num Power States", 0},
{ACPI_DMT_UINT8, ACPI_MPST0_OFFSET (NumPhysicalComponents), "Num Physical Components", 0}, {ACPI_DMT_UINT32, ACPI_MPST0_OFFSET (NumPhysicalComponents), "Num Physical Components", 0},
{ACPI_DMT_UINT16, ACPI_MPST0_OFFSET (Reserved2), "Reserved", 0},
ACPI_DMT_TERMINATOR ACPI_DMT_TERMINATOR
}; };
@@ -1549,6 +1640,7 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoMpst0B[] =
ACPI_DMTABLE_INFO AcpiDmTableInfoMpst1[] = ACPI_DMTABLE_INFO AcpiDmTableInfoMpst1[] =
{ {
{ACPI_DMT_UINT16, ACPI_MPST1_OFFSET (CharacteristicsCount), "Characteristics Count", 0}, {ACPI_DMT_UINT16, ACPI_MPST1_OFFSET (CharacteristicsCount), "Characteristics Count", 0},
{ACPI_DMT_UINT16, ACPI_MPST1_OFFSET (Reserved), "Reserved", 0},
ACPI_DMT_TERMINATOR ACPI_DMT_TERMINATOR
}; };
@@ -1556,7 +1648,7 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoMpst1[] =
ACPI_DMTABLE_INFO AcpiDmTableInfoMpst2[] = ACPI_DMTABLE_INFO AcpiDmTableInfoMpst2[] =
{ {
{ACPI_DMT_UINT8, ACPI_MPST2_OFFSET (Revision), "Revision", 0}, {ACPI_DMT_UINT8, ACPI_MPST2_OFFSET (StructureId), "Structure ID", 0},
{ACPI_DMT_UINT8, ACPI_MPST2_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, {ACPI_DMT_UINT8, ACPI_MPST2_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
{ACPI_DMT_FLAG0, ACPI_MPST2_FLAG_OFFSET (Flags,0), "Memory Preserved", 0}, {ACPI_DMT_FLAG0, ACPI_MPST2_FLAG_OFFSET (Flags,0), "Memory Preserved", 0},
{ACPI_DMT_FLAG1, ACPI_MPST2_FLAG_OFFSET (Flags,0), "Auto Entry", 0}, {ACPI_DMT_FLAG1, ACPI_MPST2_FLAG_OFFSET (Flags,0), "Auto Entry", 0},
@@ -1,4 +1,3 @@
/****************************************************************************** /******************************************************************************
* *
* Module Name: getopt * Module Name: getopt
@@ -900,5 +900,3 @@ AcpiDsCreateIndexField (
Status = AcpiDsGetFieldNames (&Info, WalkState, Arg->Common.Next); Status = AcpiDsGetFieldNames (&Info, WalkState, Arg->Common.Next);
return_ACPI_STATUS (Status); return_ACPI_STATUS (Status);
} }
@@ -306,5 +306,3 @@ AcpiDsInitializeObjects (
return_ACPI_STATUS (AE_OK); return_ACPI_STATUS (AE_OK);
} }
@@ -794,5 +794,3 @@ AcpiDsTerminateControlMethod (
return_VOID; return_VOID;
} }
@@ -840,5 +840,3 @@ AcpiDsMethodDataGetType (
return_VALUE (Object->Type); return_VALUE (Object->Type);
} }
#endif #endif
@@ -935,5 +935,3 @@ AcpiDsInitObjectFromOp (
return_ACPI_STATUS (Status); return_ACPI_STATUS (Status);
} }
@@ -878,4 +878,3 @@ AcpiDsEvalBankFieldOperands (
AcpiUtRemoveReference (OperandDesc); AcpiUtRemoveReference (OperandDesc);
return_ACPI_STATUS (Status); return_ACPI_STATUS (Status);
} }
@@ -865,5 +865,3 @@ Cleanup:
WalkState->NumOperands = 0; WalkState->NumOperands = 0;
return_ACPI_STATUS (Status); return_ACPI_STATUS (Status);
} }
@@ -313,6 +313,20 @@ AcpiDsLoad1BeginOp (
WalkState->ScopeInfo->Common.Value = ACPI_TYPE_ANY; WalkState->ScopeInfo->Common.Value = ACPI_TYPE_ANY;
break; break;
case ACPI_TYPE_METHOD:
/*
* Allow scope change to root during execution of module-level
* code. Root is typed METHOD during this time.
*/
if ((Node == AcpiGbl_RootNode) &&
(WalkState->ParseFlags & ACPI_PARSE_MODULE_LEVEL))
{
break;
}
/*lint -fallthrough */
default: default:
/* All other types are an error */ /* All other types are an error */
@@ -315,6 +315,20 @@ AcpiDsLoad2BeginOp (
WalkState->ScopeInfo->Common.Value = ACPI_TYPE_ANY; WalkState->ScopeInfo->Common.Value = ACPI_TYPE_ANY;
break; break;
case ACPI_TYPE_METHOD:
/*
* Allow scope change to root during execution of module-level
* code. Root is typed METHOD during this time.
*/
if ((Node == AcpiGbl_RootNode) &&
(WalkState->ParseFlags & ACPI_PARSE_MODULE_LEVEL))
{
break;
}
/*lint -fallthrough */
default: default:
/* All other types are an error */ /* All other types are an error */
@@ -324,7 +338,7 @@ AcpiDsLoad2BeginOp (
"Scope operator [%4.4s] (Cannot override)", "Scope operator [%4.4s] (Cannot override)",
AcpiUtGetTypeName (Node->Type), AcpiUtGetNodeName (Node))); AcpiUtGetTypeName (Node->Type), AcpiUtGetNodeName (Node)));
return (AE_AML_OPERAND_TYPE); return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
} }
break; break;
@@ -683,7 +697,7 @@ AcpiDsLoad2EndOp (
RegionSpace, WalkState); RegionSpace, WalkState);
if (ACPI_FAILURE (Status)) if (ACPI_FAILURE (Status))
{ {
return (Status); return_ACPI_STATUS (Status);
} }
AcpiExExitInterpreter (); AcpiExExitInterpreter ();
@@ -816,4 +830,3 @@ Cleanup:
WalkState->NumOperands = 0; WalkState->NumOperands = 0;
return_ACPI_STATUS (Status); return_ACPI_STATUS (Status);
} }
@@ -307,5 +307,3 @@ AcpiDsScopeStackPop (
AcpiUtDeleteGenericState (ScopeInfo); AcpiUtDeleteGenericState (ScopeInfo);
return_ACPI_STATUS (AE_OK); return_ACPI_STATUS (AE_OK);
} }
@@ -862,14 +862,14 @@ AcpiDsDeleteWalkState (
if (!WalkState) if (!WalkState)
{ {
return; return_VOID;
} }
if (WalkState->DescriptorType != ACPI_DESC_TYPE_WALK) if (WalkState->DescriptorType != ACPI_DESC_TYPE_WALK)
{ {
ACPI_ERROR ((AE_INFO, "%p is not a valid walk state", ACPI_ERROR ((AE_INFO, "%p is not a valid walk state",
WalkState)); WalkState));
return; return_VOID;
} }
/* There should not be any open scopes */ /* There should not be any open scopes */
@@ -914,5 +914,3 @@ AcpiDsDeleteWalkState (
ACPI_FREE (WalkState); ACPI_FREE (WalkState);
return_VOID; return_VOID;
} }
@@ -404,5 +404,3 @@ AcpiEvFixedEventDispatch (
} }
#endif /* !ACPI_REDUCED_HARDWARE */ #endif /* !ACPI_REDUCED_HARDWARE */
@@ -164,7 +164,7 @@ AcpiEvUpdateGpeEnableMask (
return_ACPI_STATUS (AE_NOT_EXIST); return_ACPI_STATUS (AE_NOT_EXIST);
} }
RegisterBit = AcpiHwGetGpeRegisterBit (GpeEventInfo, GpeRegisterInfo); RegisterBit = AcpiHwGetGpeRegisterBit (GpeEventInfo);
/* Clear the run bit up front */ /* Clear the run bit up front */
@@ -503,6 +503,13 @@ AcpiEvGpeDetect (
if (!(GpeRegisterInfo->EnableForRun | if (!(GpeRegisterInfo->EnableForRun |
GpeRegisterInfo->EnableForWake)) GpeRegisterInfo->EnableForWake))
{ {
ACPI_DEBUG_PRINT ((ACPI_DB_INTERRUPTS,
"Ignore disabled registers for GPE%02X-GPE%02X: "
"RunEnable=%02X, WakeEnable=%02X\n",
GpeRegisterInfo->BaseGpeNumber,
GpeRegisterInfo->BaseGpeNumber + (ACPI_GPE_REGISTER_WIDTH - 1),
GpeRegisterInfo->EnableForRun,
GpeRegisterInfo->EnableForWake));
continue; continue;
} }
@@ -523,8 +530,13 @@ AcpiEvGpeDetect (
} }
ACPI_DEBUG_PRINT ((ACPI_DB_INTERRUPTS, ACPI_DEBUG_PRINT ((ACPI_DB_INTERRUPTS,
"Read GPE Register at GPE%02X: Status=%02X, Enable=%02X\n", "Read registers for GPE%02X-GPE%02X: Status=%02X, Enable=%02X, "
GpeRegisterInfo->BaseGpeNumber, StatusReg, EnableReg)); "RunEnable=%02X, WakeEnable=%02X\n",
GpeRegisterInfo->BaseGpeNumber,
GpeRegisterInfo->BaseGpeNumber + (ACPI_GPE_REGISTER_WIDTH - 1),
StatusReg, EnableReg,
GpeRegisterInfo->EnableForRun,
GpeRegisterInfo->EnableForWake));
/* Check if there is anything active at all in this register */ /* Check if there is anything active at all in this register */
@@ -461,8 +461,8 @@ AcpiEvIsPciRootBridge (
ACPI_NAMESPACE_NODE *Node) ACPI_NAMESPACE_NODE *Node)
{ {
ACPI_STATUS Status; ACPI_STATUS Status;
ACPI_DEVICE_ID *Hid; ACPI_PNP_DEVICE_ID *Hid;
ACPI_DEVICE_ID_LIST *Cid; ACPI_PNP_DEVICE_ID_LIST *Cid;
UINT32 i; UINT32 i;
BOOLEAN Match; BOOLEAN Match;
@@ -801,4 +801,3 @@ AcpiEvInitializeRegion (
return_ACPI_STATUS (AE_NOT_EXIST); return_ACPI_STATUS (AE_NOT_EXIST);
} }
@@ -552,7 +552,7 @@ AcpiSetGpeWakeMask (
goto UnlockAndExit; goto UnlockAndExit;
} }
RegisterBit = AcpiHwGetGpeRegisterBit (GpeEventInfo, GpeRegisterInfo); RegisterBit = AcpiHwGetGpeRegisterBit (GpeEventInfo);
/* Perform the action */ /* Perform the action */
@@ -846,7 +846,7 @@ AcpiInstallGpeBlock (
Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE);
if (ACPI_FAILURE (Status)) if (ACPI_FAILURE (Status))
{ {
return (Status); return_ACPI_STATUS (Status);
} }
Node = AcpiNsValidateHandle (GpeDevice); Node = AcpiNsValidateHandle (GpeDevice);
@@ -939,7 +939,7 @@ AcpiRemoveGpeBlock (
Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE);
if (ACPI_FAILURE (Status)) if (ACPI_FAILURE (Status))
{ {
return (Status); return_ACPI_STATUS (Status);
} }
Node = AcpiNsValidateHandle (GpeDevice); Node = AcpiNsValidateHandle (GpeDevice);
@@ -382,4 +382,3 @@ UnlockAndExit:
} }
ACPI_EXPORT_SYMBOL (AcpiRemoveAddressSpaceHandler) ACPI_EXPORT_SYMBOL (AcpiRemoveAddressSpaceHandler)
@@ -758,4 +758,3 @@ AcpiExUnloadTable (
DdbHandle->Common.Flags &= ~AOPOBJ_DATA_VALID; DdbHandle->Common.Flags &= ~AOPOBJ_DATA_VALID;
return_ACPI_STATUS (AE_OK); return_ACPI_STATUS (AE_OK);
} }
@@ -822,5 +822,3 @@ AcpiExConvertToTargetType (
return_ACPI_STATUS (Status); return_ACPI_STATUS (Status);
} }
@@ -643,5 +643,3 @@ Exit:
AcpiUtRemoveReference (Operand[1]); AcpiUtRemoveReference (Operand[1]);
return_ACPI_STATUS (Status); return_ACPI_STATUS (Status);
} }
@@ -234,9 +234,9 @@ AcpiExDoDebugObject (
case ACPI_TYPE_BUFFER: case ACPI_TYPE_BUFFER:
AcpiOsPrintf ("[0x%.2X]\n", (UINT32) SourceDesc->Buffer.Length); AcpiOsPrintf ("[0x%.2X]\n", (UINT32) SourceDesc->Buffer.Length);
AcpiUtDumpBuffer2 (SourceDesc->Buffer.Pointer, AcpiUtDumpBuffer (SourceDesc->Buffer.Pointer,
(SourceDesc->Buffer.Length < 256) ? (SourceDesc->Buffer.Length < 256) ?
SourceDesc->Buffer.Length : 256, DB_BYTE_DISPLAY); SourceDesc->Buffer.Length : 256, DB_BYTE_DISPLAY, 0);
break; break;
case ACPI_TYPE_STRING: case ACPI_TYPE_STRING:
@@ -277,7 +277,7 @@ AcpiExDoDebugObject (
/* Case for DdbHandle */ /* Case for DdbHandle */
AcpiOsPrintf ("Table Index 0x%X\n", SourceDesc->Reference.Value); AcpiOsPrintf ("Table Index 0x%X\n", SourceDesc->Reference.Value);
return; return_VOID;
default: default:
break; break;
@@ -346,5 +346,3 @@ AcpiExDoDebugObject (
return_VOID; return_VOID;
} }
#endif #endif
@@ -1087,7 +1087,7 @@ AcpiExDumpPackageObj (
AcpiOsPrintf ("[Buffer] Length %.2X = ", ObjDesc->Buffer.Length); AcpiOsPrintf ("[Buffer] Length %.2X = ", ObjDesc->Buffer.Length);
if (ObjDesc->Buffer.Length) if (ObjDesc->Buffer.Length)
{ {
AcpiUtDumpBuffer (ACPI_CAST_PTR (UINT8, ObjDesc->Buffer.Pointer), AcpiUtDebugDumpBuffer (ACPI_CAST_PTR (UINT8, ObjDesc->Buffer.Pointer),
ObjDesc->Buffer.Length, DB_DWORD_DISPLAY, _COMPONENT); ObjDesc->Buffer.Length, DB_DWORD_DISPLAY, _COMPONENT);
} }
else else
@@ -1194,4 +1194,3 @@ AcpiExDumpObjectDescriptor (
} }
#endif #endif
@@ -474,5 +474,3 @@ AcpiExWriteDataToField (
return_ACPI_STATUS (Status); return_ACPI_STATUS (Status);
} }
@@ -1123,5 +1123,3 @@ Exit:
} }
return_ACPI_STATUS (Status); return_ACPI_STATUS (Status);
} }
@@ -1,4 +1,3 @@
/****************************************************************************** /******************************************************************************
* *
* Module Name: exmisc - ACPI AML (p-code) execution - specific opcodes * Module Name: exmisc - ACPI AML (p-code) execution - specific opcodes
@@ -869,5 +868,3 @@ Cleanup:
*LogicalResult = LocalResult; *LogicalResult = LocalResult;
return_ACPI_STATUS (Status); return_ACPI_STATUS (Status);
} }
@@ -1,4 +1,3 @@
/****************************************************************************** /******************************************************************************
* *
* Module Name: exmutex - ASL Mutex Acquire/Release functions * Module Name: exmutex - ASL Mutex Acquire/Release functions
@@ -413,7 +412,7 @@ AcpiExReleaseMutexObject (
if (ObjDesc->Mutex.AcquisitionDepth == 0) if (ObjDesc->Mutex.AcquisitionDepth == 0)
{ {
return (AE_NOT_ACQUIRED); return_ACPI_STATUS (AE_NOT_ACQUIRED);
} }
/* Match multiple Acquires with multiple Releases */ /* Match multiple Acquires with multiple Releases */
@@ -587,7 +586,7 @@ AcpiExReleaseAllMutexes (
ACPI_OPERAND_OBJECT *ObjDesc; ACPI_OPERAND_OBJECT *ObjDesc;
ACPI_FUNCTION_ENTRY (); ACPI_FUNCTION_NAME (ExReleaseAllMutexes);
/* Traverse the list of owned mutexes, releasing each one */ /* Traverse the list of owned mutexes, releasing each one */
@@ -601,6 +600,9 @@ AcpiExReleaseAllMutexes (
ObjDesc->Mutex.Next = NULL; ObjDesc->Mutex.Next = NULL;
ObjDesc->Mutex.AcquisitionDepth = 0; ObjDesc->Mutex.AcquisitionDepth = 0;
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
"Force-releasing held mutex: %p\n", ObjDesc));
/* Release the mutex, special case for Global Lock */ /* Release the mutex, special case for Global Lock */
if (ObjDesc == AcpiGbl_GlobalLockMutex) if (ObjDesc == AcpiGbl_GlobalLockMutex)
@@ -1,4 +1,3 @@
/****************************************************************************** /******************************************************************************
* *
* Module Name: exnames - interpreter/scanner name load/execute * Module Name: exnames - interpreter/scanner name load/execute
@@ -556,5 +555,3 @@ AcpiExGetNameString (
return_ACPI_STATUS (Status); return_ACPI_STATUS (Status);
} }
@@ -1,4 +1,3 @@
/****************************************************************************** /******************************************************************************
* *
* Module Name: exoparg1 - AML execution - opcodes with 1 argument * Module Name: exoparg1 - AML execution - opcodes with 1 argument
@@ -1180,4 +1179,3 @@ Cleanup:
return_ACPI_STATUS (Status); return_ACPI_STATUS (Status);
} }
@@ -710,5 +710,3 @@ Cleanup:
return_ACPI_STATUS (Status); return_ACPI_STATUS (Status);
} }
@@ -1,4 +1,3 @@
/****************************************************************************** /******************************************************************************
* *
* Module Name: exoparg3 - AML execution - opcodes with 3 arguments * Module Name: exoparg3 - AML execution - opcodes with 3 arguments
@@ -373,5 +372,3 @@ Cleanup:
} }
return_ACPI_STATUS (Status); return_ACPI_STATUS (Status);
} }
@@ -1,4 +1,3 @@
/****************************************************************************** /******************************************************************************
* *
* Module Name: exoparg6 - AML execution - opcodes with 6 arguments * Module Name: exoparg6 - AML execution - opcodes with 6 arguments
@@ -282,7 +281,7 @@ AcpiExDoMatch (
return (FALSE); return (FALSE);
} }
return LogicalResult; return (LogicalResult);
} }
@@ -1,4 +1,3 @@
/****************************************************************************** /******************************************************************************
* *
* Module Name: exprep - ACPI AML (p-code) execution - field prep utilities * Module Name: exprep - ACPI AML (p-code) execution - field prep utilities
@@ -717,4 +716,3 @@ AcpiExPrepFieldValue (
AcpiUtRemoveReference (ObjDesc); AcpiUtRemoveReference (ObjDesc);
return_ACPI_STATUS (Status); return_ACPI_STATUS (Status);
} }
@@ -1,4 +1,3 @@
/****************************************************************************** /******************************************************************************
* *
* Module Name: exregion - ACPI default OpRegion (address space) handlers * Module Name: exregion - ACPI default OpRegion (address space) handlers
@@ -633,5 +632,3 @@ AcpiExDataTableSpaceHandler (
return_ACPI_STATUS (AE_OK); return_ACPI_STATUS (AE_OK);
} }
@@ -1,4 +1,3 @@
/****************************************************************************** /******************************************************************************
* *
* Module Name: exresnte - AML Interpreter object resolution * Module Name: exresnte - AML Interpreter object resolution
@@ -370,5 +369,3 @@ AcpiExResolveNodeToValue (
*ObjectPtr = (void *) ObjDesc; *ObjectPtr = (void *) ObjDesc;
return_ACPI_STATUS (Status); return_ACPI_STATUS (Status);
} }
@@ -1,4 +1,3 @@
/****************************************************************************** /******************************************************************************
* *
* Module Name: exresolv - AML Interpreter object resolution * Module Name: exresolv - AML Interpreter object resolution
@@ -648,5 +647,3 @@ Exit:
} }
return_ACPI_STATUS (AE_OK); return_ACPI_STATUS (AE_OK);
} }
@@ -1,4 +1,3 @@
/****************************************************************************** /******************************************************************************
* *
* Module Name: exresop - AML Interpreter operand/object resolution * Module Name: exresop - AML Interpreter operand/object resolution
@@ -806,5 +805,3 @@ NextOperand:
return_ACPI_STATUS (Status); return_ACPI_STATUS (Status);
} }
@@ -599,5 +599,3 @@ AcpiExStoreObjectToNode (
return_ACPI_STATUS (Status); return_ACPI_STATUS (Status);
} }
@@ -1,4 +1,3 @@
/****************************************************************************** /******************************************************************************
* *
* Module Name: exstoren - AML Interpreter object store support, * Module Name: exstoren - AML Interpreter object store support,
@@ -382,5 +381,3 @@ AcpiExStoreObjectToObject (
*NewDesc = DestDesc; *NewDesc = DestDesc;
return_ACPI_STATUS (Status); return_ACPI_STATUS (Status);
} }
@@ -1,4 +1,3 @@
/****************************************************************************** /******************************************************************************
* *
* Module Name: exstorob - AML Interpreter object store support, store to object * Module Name: exstorob - AML Interpreter object store support, store to object
@@ -312,5 +311,3 @@ AcpiExStoreStringToString (
TargetDesc->String.Length = Length; TargetDesc->String.Length = Length;
return_ACPI_STATUS (AE_OK); return_ACPI_STATUS (AE_OK);
} }
@@ -1,4 +1,3 @@
/****************************************************************************** /******************************************************************************
* *
* Module Name: exsystem - Interface to OS services * Module Name: exsystem - Interface to OS services
@@ -424,4 +423,3 @@ AcpiExSystemResetEvent (
return (Status); return (Status);
} }
@@ -1,4 +1,3 @@
/****************************************************************************** /******************************************************************************
* *
* Module Name: exutils - interpreter/scanner utilities * Module Name: exutils - interpreter/scanner utilities
@@ -1,4 +1,3 @@
/****************************************************************************** /******************************************************************************
* *
* Module Name: hwacpi - ACPI Hardware Initialization/Mode Interface * Module Name: hwacpi - ACPI Hardware Initialization/Mode Interface
@@ -171,7 +171,6 @@ AcpiHwExecuteSleepMethod (
* FUNCTION: AcpiHwExtendedSleep * FUNCTION: AcpiHwExtendedSleep
* *
* PARAMETERS: SleepState - Which sleep state to enter * PARAMETERS: SleepState - Which sleep state to enter
* Flags - ACPI_EXECUTE_GTS to run optional method
* *
* RETURN: Status * RETURN: Status
* *
@@ -183,8 +182,7 @@ AcpiHwExecuteSleepMethod (
ACPI_STATUS ACPI_STATUS
AcpiHwExtendedSleep ( AcpiHwExtendedSleep (
UINT8 SleepState, UINT8 SleepState)
UINT8 Flags)
{ {
ACPI_STATUS Status; ACPI_STATUS Status;
UINT8 SleepTypeValue; UINT8 SleepTypeValue;
@@ -212,13 +210,6 @@ AcpiHwExtendedSleep (
AcpiGbl_SystemAwakeAndRunning = FALSE; AcpiGbl_SystemAwakeAndRunning = FALSE;
/* Optionally execute _GTS (Going To Sleep) */
if (Flags & ACPI_EXECUTE_GTS)
{
AcpiHwExecuteSleepMethod (METHOD_PATHNAME__GTS, SleepState);
}
/* Flush caches, as per ACPI specification */ /* Flush caches, as per ACPI specification */
ACPI_FLUSH_CPU_CACHE (); ACPI_FLUSH_CPU_CACHE ();
@@ -263,7 +254,6 @@ AcpiHwExtendedSleep (
* FUNCTION: AcpiHwExtendedWakePrep * FUNCTION: AcpiHwExtendedWakePrep
* *
* PARAMETERS: SleepState - Which sleep state we just exited * PARAMETERS: SleepState - Which sleep state we just exited
* Flags - ACPI_EXECUTE_BFS to run optional method
* *
* RETURN: Status * RETURN: Status
* *
@@ -274,8 +264,7 @@ AcpiHwExtendedSleep (
ACPI_STATUS ACPI_STATUS
AcpiHwExtendedWakePrep ( AcpiHwExtendedWakePrep (
UINT8 SleepState, UINT8 SleepState)
UINT8 Flags)
{ {
ACPI_STATUS Status; ACPI_STATUS Status;
UINT8 SleepTypeValue; UINT8 SleepTypeValue;
@@ -295,12 +284,6 @@ AcpiHwExtendedWakePrep (
&AcpiGbl_FADT.SleepControl); &AcpiGbl_FADT.SleepControl);
} }
/* Optionally execute _BFS (Back From Sleep) */
if (Flags & ACPI_EXECUTE_BFS)
{
AcpiHwExecuteSleepMethod (METHOD_PATHNAME__BFS, SleepState);
}
return_ACPI_STATUS (AE_OK); return_ACPI_STATUS (AE_OK);
} }
@@ -310,7 +293,6 @@ AcpiHwExtendedWakePrep (
* FUNCTION: AcpiHwExtendedWake * FUNCTION: AcpiHwExtendedWake
* *
* PARAMETERS: SleepState - Which sleep state we just exited * PARAMETERS: SleepState - Which sleep state we just exited
* Flags - Reserved, set to zero
* *
* RETURN: Status * RETURN: Status
* *
@@ -321,8 +303,7 @@ AcpiHwExtendedWakePrep (
ACPI_STATUS ACPI_STATUS
AcpiHwExtendedWake ( AcpiHwExtendedWake (
UINT8 SleepState, UINT8 SleepState)
UINT8 Flags)
{ {
ACPI_FUNCTION_TRACE (HwExtendedWake); ACPI_FUNCTION_TRACE (HwExtendedWake);
@@ -1,4 +1,3 @@
/****************************************************************************** /******************************************************************************
* *
* Module Name: hwgpe - Low level GPE enable/disable/clear functions * Module Name: hwgpe - Low level GPE enable/disable/clear functions
@@ -137,7 +136,6 @@ AcpiHwEnableWakeupGpeBlock (
* FUNCTION: AcpiHwGetGpeRegisterBit * FUNCTION: AcpiHwGetGpeRegisterBit
* *
* PARAMETERS: GpeEventInfo - Info block for the GPE * PARAMETERS: GpeEventInfo - Info block for the GPE
* GpeRegisterInfo - Info block for the GPE register
* *
* RETURN: Register mask with a one in the GPE bit position * RETURN: Register mask with a one in the GPE bit position
* *
@@ -148,12 +146,11 @@ AcpiHwEnableWakeupGpeBlock (
UINT32 UINT32
AcpiHwGetGpeRegisterBit ( AcpiHwGetGpeRegisterBit (
ACPI_GPE_EVENT_INFO *GpeEventInfo, ACPI_GPE_EVENT_INFO *GpeEventInfo)
ACPI_GPE_REGISTER_INFO *GpeRegisterInfo)
{ {
return ((UINT32) 1 << return ((UINT32) 1 <<
(GpeEventInfo->GpeNumber - GpeRegisterInfo->BaseGpeNumber)); (GpeEventInfo->GpeNumber - GpeEventInfo->RegisterInfo->BaseGpeNumber));
} }
@@ -202,7 +199,7 @@ AcpiHwLowSetGpe (
/* Set or clear just the bit that corresponds to this GPE */ /* Set or clear just the bit that corresponds to this GPE */
RegisterBit = AcpiHwGetGpeRegisterBit (GpeEventInfo, GpeRegisterInfo); RegisterBit = AcpiHwGetGpeRegisterBit (GpeEventInfo);
switch (Action) switch (Action)
{ {
case ACPI_GPE_CONDITIONAL_ENABLE: case ACPI_GPE_CONDITIONAL_ENABLE:
@@ -271,7 +268,7 @@ AcpiHwClearGpe (
* Write a one to the appropriate bit in the status register to * Write a one to the appropriate bit in the status register to
* clear this GPE. * clear this GPE.
*/ */
RegisterBit = AcpiHwGetGpeRegisterBit (GpeEventInfo, GpeRegisterInfo); RegisterBit = AcpiHwGetGpeRegisterBit (GpeEventInfo);
Status = AcpiHwWrite (RegisterBit, Status = AcpiHwWrite (RegisterBit,
&GpeRegisterInfo->StatusAddress); &GpeRegisterInfo->StatusAddress);
@@ -319,7 +316,7 @@ AcpiHwGetGpeStatus (
/* Get the register bitmask for this GPE */ /* Get the register bitmask for this GPE */
RegisterBit = AcpiHwGetGpeRegisterBit (GpeEventInfo, GpeRegisterInfo); RegisterBit = AcpiHwGetGpeRegisterBit (GpeEventInfo);
/* GPE currently enabled? (enabled for runtime?) */ /* GPE currently enabled? (enabled for runtime?) */
@@ -364,7 +364,7 @@ AcpiHwProcessPciList (
&BusNumber, &IsBridge); &BusNumber, &IsBridge);
if (ACPI_FAILURE (Status)) if (ACPI_FAILURE (Status))
{ {
return_ACPI_STATUS (Status); return (Status);
} }
Info = Info->Next; Info = Info->Next;
@@ -376,7 +376,7 @@ AcpiHwProcessPciList (
PciId->Segment, PciId->Bus, PciId->Device, PciId->Function, PciId->Segment, PciId->Bus, PciId->Device, PciId->Function,
Status, BusNumber, IsBridge)); Status, BusNumber, IsBridge));
return_ACPI_STATUS (AE_OK); return (AE_OK);
} }
@@ -1,4 +1,3 @@
/******************************************************************************* /*******************************************************************************
* *
* Module Name: hwregs - Read/write access functions for the various ACPI * Module Name: hwregs - Read/write access functions for the various ACPI
@@ -127,7 +127,6 @@
* FUNCTION: AcpiHwLegacySleep * FUNCTION: AcpiHwLegacySleep
* *
* PARAMETERS: SleepState - Which sleep state to enter * PARAMETERS: SleepState - Which sleep state to enter
* Flags - ACPI_EXECUTE_GTS to run optional method
* *
* RETURN: Status * RETURN: Status
* *
@@ -138,8 +137,7 @@
ACPI_STATUS ACPI_STATUS
AcpiHwLegacySleep ( AcpiHwLegacySleep (
UINT8 SleepState, UINT8 SleepState)
UINT8 Flags)
{ {
ACPI_BIT_REGISTER_INFO *SleepTypeRegInfo; ACPI_BIT_REGISTER_INFO *SleepTypeRegInfo;
ACPI_BIT_REGISTER_INFO *SleepEnableRegInfo; ACPI_BIT_REGISTER_INFO *SleepEnableRegInfo;
@@ -188,13 +186,6 @@ AcpiHwLegacySleep (
return_ACPI_STATUS (Status); return_ACPI_STATUS (Status);
} }
/* Optionally execute _GTS (Going To Sleep) */
if (Flags & ACPI_EXECUTE_GTS)
{
AcpiHwExecuteSleepMethod (METHOD_PATHNAME__GTS, SleepState);
}
/* Get current value of PM1A control */ /* Get current value of PM1A control */
Status = AcpiHwRegisterRead (ACPI_REGISTER_PM1_CONTROL, Status = AcpiHwRegisterRead (ACPI_REGISTER_PM1_CONTROL,
@@ -291,7 +282,6 @@ AcpiHwLegacySleep (
* FUNCTION: AcpiHwLegacyWakePrep * FUNCTION: AcpiHwLegacyWakePrep
* *
* PARAMETERS: SleepState - Which sleep state we just exited * PARAMETERS: SleepState - Which sleep state we just exited
* Flags - ACPI_EXECUTE_BFS to run optional method
* *
* RETURN: Status * RETURN: Status
* *
@@ -303,8 +293,7 @@ AcpiHwLegacySleep (
ACPI_STATUS ACPI_STATUS
AcpiHwLegacyWakePrep ( AcpiHwLegacyWakePrep (
UINT8 SleepState, UINT8 SleepState)
UINT8 Flags)
{ {
ACPI_STATUS Status; ACPI_STATUS Status;
ACPI_BIT_REGISTER_INFO *SleepTypeRegInfo; ACPI_BIT_REGISTER_INFO *SleepTypeRegInfo;
@@ -354,12 +343,6 @@ AcpiHwLegacyWakePrep (
} }
} }
/* Optionally execute _BFS (Back From Sleep) */
if (Flags & ACPI_EXECUTE_BFS)
{
AcpiHwExecuteSleepMethod (METHOD_PATHNAME__BFS, SleepState);
}
return_ACPI_STATUS (Status); return_ACPI_STATUS (Status);
} }
@@ -369,7 +352,6 @@ AcpiHwLegacyWakePrep (
* FUNCTION: AcpiHwLegacyWake * FUNCTION: AcpiHwLegacyWake
* *
* PARAMETERS: SleepState - Which sleep state we just exited * PARAMETERS: SleepState - Which sleep state we just exited
* Flags - Reserved, set to zero
* *
* RETURN: Status * RETURN: Status
* *
@@ -380,8 +362,7 @@ AcpiHwLegacyWakePrep (
ACPI_STATUS ACPI_STATUS
AcpiHwLegacyWake ( AcpiHwLegacyWake (
UINT8 SleepState, UINT8 SleepState)
UINT8 Flags)
{ {
ACPI_STATUS Status; ACPI_STATUS Status;
@@ -1,4 +1,3 @@
/****************************************************************************** /******************************************************************************
* *
* Name: hwtimer.c - ACPI Power Management Timer Interface * Name: hwtimer.c - ACPI Power Management Timer Interface
@@ -1,4 +1,3 @@
/****************************************************************************** /******************************************************************************
* *
* Module Name: hwvalid - I/O request validation * Module Name: hwvalid - I/O request validation
@@ -436,5 +435,3 @@ AcpiHwWritePort (
return (AE_OK); return (AE_OK);
} }
@@ -1,4 +1,3 @@
/****************************************************************************** /******************************************************************************
* *
* Module Name: hwxface - Public ACPICA hardware interfaces * Module Name: hwxface - Public ACPICA hardware interfaces
@@ -124,7 +124,6 @@
static ACPI_STATUS static ACPI_STATUS
AcpiHwSleepDispatch ( AcpiHwSleepDispatch (
UINT8 SleepState, UINT8 SleepState,
UINT8 Flags,
UINT32 FunctionId); UINT32 FunctionId);
/* /*
@@ -333,7 +332,6 @@ ACPI_EXPORT_SYMBOL (AcpiEnterSleepStateS4bios)
static ACPI_STATUS static ACPI_STATUS
AcpiHwSleepDispatch ( AcpiHwSleepDispatch (
UINT8 SleepState, UINT8 SleepState,
UINT8 Flags,
UINT32 FunctionId) UINT32 FunctionId)
{ {
ACPI_STATUS Status; ACPI_STATUS Status;
@@ -349,13 +347,13 @@ AcpiHwSleepDispatch (
if (AcpiGbl_ReducedHardware || if (AcpiGbl_ReducedHardware ||
AcpiGbl_FADT.SleepControl.Address) AcpiGbl_FADT.SleepControl.Address)
{ {
Status = SleepFunctions->ExtendedFunction (SleepState, Flags); Status = SleepFunctions->ExtendedFunction (SleepState);
} }
else else
{ {
/* Legacy sleep */ /* Legacy sleep */
Status = SleepFunctions->LegacyFunction (SleepState, Flags); Status = SleepFunctions->LegacyFunction (SleepState);
} }
return (Status); return (Status);
@@ -365,7 +363,7 @@ AcpiHwSleepDispatch (
* For the case where reduced-hardware-only code is being generated, * For the case where reduced-hardware-only code is being generated,
* we know that only the extended sleep registers are available * we know that only the extended sleep registers are available
*/ */
Status = SleepFunctions->ExtendedFunction (SleepState, Flags); Status = SleepFunctions->ExtendedFunction (SleepState);
return (Status); return (Status);
#endif /* !ACPI_REDUCED_HARDWARE */ #endif /* !ACPI_REDUCED_HARDWARE */
@@ -459,7 +457,6 @@ ACPI_EXPORT_SYMBOL (AcpiEnterSleepStatePrep)
* FUNCTION: AcpiEnterSleepState * FUNCTION: AcpiEnterSleepState
* *
* PARAMETERS: SleepState - Which sleep state to enter * PARAMETERS: SleepState - Which sleep state to enter
* Flags - ACPI_EXECUTE_GTS to run optional method
* *
* RETURN: Status * RETURN: Status
* *
@@ -470,8 +467,7 @@ ACPI_EXPORT_SYMBOL (AcpiEnterSleepStatePrep)
ACPI_STATUS ACPI_STATUS
AcpiEnterSleepState ( AcpiEnterSleepState (
UINT8 SleepState, UINT8 SleepState)
UINT8 Flags)
{ {
ACPI_STATUS Status; ACPI_STATUS Status;
@@ -487,7 +483,7 @@ AcpiEnterSleepState (
return_ACPI_STATUS (AE_AML_OPERAND_VALUE); return_ACPI_STATUS (AE_AML_OPERAND_VALUE);
} }
Status = AcpiHwSleepDispatch (SleepState, Flags, ACPI_SLEEP_FUNCTION_ID); Status = AcpiHwSleepDispatch (SleepState, ACPI_SLEEP_FUNCTION_ID);
return_ACPI_STATUS (Status); return_ACPI_STATUS (Status);
} }
@@ -499,7 +495,6 @@ ACPI_EXPORT_SYMBOL (AcpiEnterSleepState)
* FUNCTION: AcpiLeaveSleepStatePrep * FUNCTION: AcpiLeaveSleepStatePrep
* *
* PARAMETERS: SleepState - Which sleep state we are exiting * PARAMETERS: SleepState - Which sleep state we are exiting
* Flags - ACPI_EXECUTE_BFS to run optional method
* *
* RETURN: Status * RETURN: Status
* *
@@ -512,8 +507,7 @@ ACPI_EXPORT_SYMBOL (AcpiEnterSleepState)
ACPI_STATUS ACPI_STATUS
AcpiLeaveSleepStatePrep ( AcpiLeaveSleepStatePrep (
UINT8 SleepState, UINT8 SleepState)
UINT8 Flags)
{ {
ACPI_STATUS Status; ACPI_STATUS Status;
@@ -521,7 +515,7 @@ AcpiLeaveSleepStatePrep (
ACPI_FUNCTION_TRACE (AcpiLeaveSleepStatePrep); ACPI_FUNCTION_TRACE (AcpiLeaveSleepStatePrep);
Status = AcpiHwSleepDispatch (SleepState, Flags, ACPI_WAKE_PREP_FUNCTION_ID); Status = AcpiHwSleepDispatch (SleepState, ACPI_WAKE_PREP_FUNCTION_ID);
return_ACPI_STATUS (Status); return_ACPI_STATUS (Status);
} }
@@ -551,7 +545,7 @@ AcpiLeaveSleepState (
ACPI_FUNCTION_TRACE (AcpiLeaveSleepState); ACPI_FUNCTION_TRACE (AcpiLeaveSleepState);
Status = AcpiHwSleepDispatch (SleepState, 0, ACPI_WAKE_FUNCTION_ID); Status = AcpiHwSleepDispatch (SleepState, ACPI_WAKE_FUNCTION_ID);
return_ACPI_STATUS (Status); return_ACPI_STATUS (Status);
} }
@@ -193,12 +193,12 @@ AcpiNsRootInitialize (
Status = AcpiNsLookup (NULL, InitVal->Name, InitVal->Type, Status = AcpiNsLookup (NULL, InitVal->Name, InitVal->Type,
ACPI_IMODE_LOAD_PASS2, ACPI_NS_NO_UPSEARCH, ACPI_IMODE_LOAD_PASS2, ACPI_NS_NO_UPSEARCH,
NULL, &NewNode); NULL, &NewNode);
if (ACPI_FAILURE (Status))
if (ACPI_FAILURE (Status) || (!NewNode)) /* Must be on same line for code converter */
{ {
ACPI_EXCEPTION ((AE_INFO, Status, ACPI_EXCEPTION ((AE_INFO, Status,
"Could not create predefined name %s", "Could not create predefined name %s",
InitVal->Name)); InitVal->Name));
continue;
} }
/* /*
@@ -769,4 +769,3 @@ AcpiNsLookup (
*ReturnNode = ThisNode; *ReturnNode = ThisNode;
return_ACPI_STATUS (AE_OK); return_ACPI_STATUS (AE_OK);
} }
@@ -656,5 +656,3 @@ AcpiNsDeleteNamespaceByOwner (
(void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE);
return_VOID; return_VOID;
} }
@@ -367,7 +367,7 @@ AcpiNsDumpOneObject (
{ {
case ACPI_TYPE_PROCESSOR: case ACPI_TYPE_PROCESSOR:
AcpiOsPrintf ("ID %X Len %.4X Addr %p\n", AcpiOsPrintf ("ID %02X Len %02X Addr %p\n",
ObjDesc->Processor.ProcId, ObjDesc->Processor.Length, ObjDesc->Processor.ProcId, ObjDesc->Processor.Length,
ACPI_CAST_PTR (void, ObjDesc->Processor.Address)); ACPI_CAST_PTR (void, ObjDesc->Processor.Address));
break; break;
@@ -853,4 +853,3 @@ AcpiNsDumpTables (
} }
#endif #endif
#endif #endif
@@ -230,5 +230,3 @@ AcpiNsDumpRootDevices (
#endif #endif
#endif #endif
@@ -555,4 +555,3 @@ Exit:
} }
return_VOID; return_VOID;
} }
@@ -425,4 +425,3 @@ AcpiNsUnloadNamespace (
} }
#endif #endif
#endif #endif
@@ -295,7 +295,7 @@ AcpiNsGetPathnameLength (
ACPI_ERROR ((AE_INFO, ACPI_ERROR ((AE_INFO,
"Invalid Namespace Node (%p) while traversing namespace", "Invalid Namespace Node (%p) while traversing namespace",
NextNode)); NextNode));
return 0; return (0);
} }
Size += ACPI_PATH_SEGMENT_LENGTH; Size += ACPI_PATH_SEGMENT_LENGTH;
NextNode = NextNode->Parent; NextNode = NextNode->Parent;
@@ -371,5 +371,3 @@ AcpiNsHandleToPathname (
(char *) Buffer->Pointer, (UINT32) RequiredSize)); (char *) Buffer->Pointer, (UINT32) RequiredSize));
return_ACPI_STATUS (AE_OK); return_ACPI_STATUS (AE_OK);
} }
@@ -573,5 +573,3 @@ AcpiNsGetAttachedData (
return (AE_NOT_FOUND); return (AE_NOT_FOUND);
} }
@@ -293,5 +293,3 @@ AcpiNsParseTable (
return_ACPI_STATUS (Status); return_ACPI_STATUS (Status);
} }
@@ -493,4 +493,3 @@ AcpiNsSearchAndEnter (
*ReturnNode = NewNode; *ReturnNode = NewNode;
return_ACPI_STATUS (AE_OK); return_ACPI_STATUS (AE_OK);
} }
@@ -727,10 +727,13 @@ AcpiNsExternalizeName (
(*ConvertedName)[j++] = '.'; (*ConvertedName)[j++] = '.';
} }
(*ConvertedName)[j++] = InternalName[NamesIndex++]; /* Copy and validate the 4-char name segment */
(*ConvertedName)[j++] = InternalName[NamesIndex++];
(*ConvertedName)[j++] = InternalName[NamesIndex++]; ACPI_MOVE_NAME (&(*ConvertedName)[j], &InternalName[NamesIndex]);
(*ConvertedName)[j++] = InternalName[NamesIndex++]; AcpiUtRepairName (&(*ConvertedName)[j]);
j += ACPI_NAME_SIZE;
NamesIndex += ACPI_NAME_SIZE;
} }
} }
@@ -454,5 +454,3 @@ AcpiNsWalkNamespace (
return_ACPI_STATUS (AE_OK); return_ACPI_STATUS (AE_OK);
} }
@@ -609,7 +609,7 @@ AcpiWalkNamespace (
Status = AcpiUtAcquireReadLock (&AcpiGbl_NamespaceRwLock); Status = AcpiUtAcquireReadLock (&AcpiGbl_NamespaceRwLock);
if (ACPI_FAILURE (Status)) if (ACPI_FAILURE (Status))
{ {
return (Status); return_ACPI_STATUS (Status);
} }
/* /*
@@ -663,8 +663,8 @@ AcpiNsGetDeviceCallback (
ACPI_STATUS Status; ACPI_STATUS Status;
ACPI_NAMESPACE_NODE *Node; ACPI_NAMESPACE_NODE *Node;
UINT32 Flags; UINT32 Flags;
ACPI_DEVICE_ID *Hid; ACPI_PNP_DEVICE_ID *Hid;
ACPI_DEVICE_ID_LIST *Cid; ACPI_PNP_DEVICE_ID_LIST *Cid;
UINT32 i; UINT32 i;
BOOLEAN Found; BOOLEAN Found;
int NoMatch; int NoMatch;
@@ -1028,5 +1028,3 @@ UnlockAndExit:
} }
ACPI_EXPORT_SYMBOL (AcpiGetData) ACPI_EXPORT_SYMBOL (AcpiGetData)
@@ -130,8 +130,8 @@
static char * static char *
AcpiNsCopyDeviceId ( AcpiNsCopyDeviceId (
ACPI_DEVICE_ID *Dest, ACPI_PNP_DEVICE_ID *Dest,
ACPI_DEVICE_ID *Source, ACPI_PNP_DEVICE_ID *Source,
char *StringArea); char *StringArea);
@@ -299,8 +299,7 @@ AcpiGetName (
/* Just copy the ACPI name from the Node and zero terminate it */ /* Just copy the ACPI name from the Node and zero terminate it */
ACPI_STRNCPY (Buffer->Pointer, AcpiUtGetNodeName (Node), ACPI_MOVE_NAME (Buffer->Pointer, AcpiUtGetNodeName (Node));
ACPI_NAME_SIZE);
((char *) Buffer->Pointer) [ACPI_NAME_SIZE] = 0; ((char *) Buffer->Pointer) [ACPI_NAME_SIZE] = 0;
Status = AE_OK; Status = AE_OK;
@@ -318,23 +317,24 @@ ACPI_EXPORT_SYMBOL (AcpiGetName)
* *
* FUNCTION: AcpiNsCopyDeviceId * FUNCTION: AcpiNsCopyDeviceId
* *
* PARAMETERS: Dest - Pointer to the destination DEVICE_ID * PARAMETERS: Dest - Pointer to the destination PNP_DEVICE_ID
* Source - Pointer to the source DEVICE_ID * Source - Pointer to the source PNP_DEVICE_ID
* StringArea - Pointer to where to copy the dest string * StringArea - Pointer to where to copy the dest string
* *
* RETURN: Pointer to the next string area * RETURN: Pointer to the next string area
* *
* DESCRIPTION: Copy a single DEVICE_ID, including the string data. * DESCRIPTION: Copy a single PNP_DEVICE_ID, including the string data.
* *
******************************************************************************/ ******************************************************************************/
static char * static char *
AcpiNsCopyDeviceId ( AcpiNsCopyDeviceId (
ACPI_DEVICE_ID *Dest, ACPI_PNP_DEVICE_ID *Dest,
ACPI_DEVICE_ID *Source, ACPI_PNP_DEVICE_ID *Source,
char *StringArea) char *StringArea)
{ {
/* Create the destination DEVICE_ID */
/* Create the destination PNP_DEVICE_ID */
Dest->String = StringArea; Dest->String = StringArea;
Dest->Length = Source->Length; Dest->Length = Source->Length;
@@ -359,8 +359,8 @@ AcpiNsCopyDeviceId (
* namespace node and possibly by running several standard * namespace node and possibly by running several standard
* control methods (Such as in the case of a device.) * control methods (Such as in the case of a device.)
* *
* For Device and Processor objects, run the Device _HID, _UID, _CID, _STA, * For Device and Processor objects, run the Device _HID, _UID, _CID, _SUB,
* _ADR, _SxW, and _SxD methods. * _STA, _ADR, _SxW, and _SxD methods.
* *
* Note: Allocates the return buffer, must be freed by the caller. * Note: Allocates the return buffer, must be freed by the caller.
* *
@@ -373,9 +373,10 @@ AcpiGetObjectInfo (
{ {
ACPI_NAMESPACE_NODE *Node; ACPI_NAMESPACE_NODE *Node;
ACPI_DEVICE_INFO *Info; ACPI_DEVICE_INFO *Info;
ACPI_DEVICE_ID_LIST *CidList = NULL; ACPI_PNP_DEVICE_ID_LIST *CidList = NULL;
ACPI_DEVICE_ID *Hid = NULL; ACPI_PNP_DEVICE_ID *Hid = NULL;
ACPI_DEVICE_ID *Uid = NULL; ACPI_PNP_DEVICE_ID *Uid = NULL;
ACPI_PNP_DEVICE_ID *Sub = NULL;
char *NextIdString; char *NextIdString;
ACPI_OBJECT_TYPE Type; ACPI_OBJECT_TYPE Type;
ACPI_NAME Name; ACPI_NAME Name;
@@ -428,7 +429,7 @@ AcpiGetObjectInfo (
{ {
/* /*
* Get extra info for ACPI Device/Processor objects only: * Get extra info for ACPI Device/Processor objects only:
* Run the Device _HID, _UID, and _CID methods. * Run the Device _HID, _UID, _SUB, and _CID methods.
* *
* Note: none of these methods are required, so they may or may * Note: none of these methods are required, so they may or may
* not be present for this device. The Info->Valid bitfield is used * not be present for this device. The Info->Valid bitfield is used
@@ -453,6 +454,15 @@ AcpiGetObjectInfo (
Valid |= ACPI_VALID_UID; Valid |= ACPI_VALID_UID;
} }
/* Execute the Device._SUB method */
Status = AcpiUtExecute_SUB (Node, &Sub);
if (ACPI_SUCCESS (Status))
{
InfoSize += Sub->Length;
Valid |= ACPI_VALID_SUB;
}
/* Execute the Device._CID method */ /* Execute the Device._CID method */
Status = AcpiUtExecute_CID (Node, &CidList); Status = AcpiUtExecute_CID (Node, &CidList);
@@ -460,7 +470,7 @@ AcpiGetObjectInfo (
{ {
/* Add size of CID strings and CID pointer array */ /* Add size of CID strings and CID pointer array */
InfoSize += (CidList->ListSize - sizeof (ACPI_DEVICE_ID_LIST)); InfoSize += (CidList->ListSize - sizeof (ACPI_PNP_DEVICE_ID_LIST));
Valid |= ACPI_VALID_CID; Valid |= ACPI_VALID_CID;
} }
} }
@@ -535,14 +545,15 @@ AcpiGetObjectInfo (
NextIdString = ACPI_CAST_PTR (char, Info->CompatibleIdList.Ids); NextIdString = ACPI_CAST_PTR (char, Info->CompatibleIdList.Ids);
if (CidList) if (CidList)
{ {
/* Point past the CID DEVICE_ID array */ /* Point past the CID PNP_DEVICE_ID array */
NextIdString += ((ACPI_SIZE) CidList->Count * sizeof (ACPI_DEVICE_ID)); NextIdString += ((ACPI_SIZE) CidList->Count * sizeof (ACPI_PNP_DEVICE_ID));
} }
/* /*
* Copy the HID, UID, and CIDs to the return buffer. The variable-length * Copy the HID, UID, SUB, and CIDs to the return buffer.
* strings are copied to the reserved area at the end of the buffer. * The variable-length strings are copied to the reserved area
* at the end of the buffer.
* *
* For HID and CID, check if the ID is a PCI Root Bridge. * For HID and CID, check if the ID is a PCI Root Bridge.
*/ */
@@ -563,6 +574,12 @@ AcpiGetObjectInfo (
Uid, NextIdString); Uid, NextIdString);
} }
if (Sub)
{
NextIdString = AcpiNsCopyDeviceId (&Info->SubsystemId,
Sub, NextIdString);
}
if (CidList) if (CidList)
{ {
Info->CompatibleIdList.Count = CidList->Count; Info->CompatibleIdList.Count = CidList->Count;
@@ -603,6 +620,10 @@ Cleanup:
{ {
ACPI_FREE (Uid); ACPI_FREE (Uid);
} }
if (Sub)
{
ACPI_FREE (Sub);
}
if (CidList) if (CidList)
{ {
ACPI_FREE (CidList); ACPI_FREE (CidList);
@@ -354,4 +354,3 @@ UnlockAndExit:
} }
ACPI_EXPORT_SYMBOL (AcpiGetNextObject) ACPI_EXPORT_SYMBOL (AcpiGetNextObject)
@@ -225,17 +225,44 @@ AcpiPsGetAmlOpcode (
case AML_CLASS_UNKNOWN: case AML_CLASS_UNKNOWN:
/* The opcode is unrecognized. Just skip unknown opcodes */ /* The opcode is unrecognized. Complain and skip unknown opcodes */
if (WalkState->PassNumber == 2)
{
ACPI_ERROR ((AE_INFO, ACPI_ERROR ((AE_INFO,
"Found unknown opcode 0x%X at AML address %p offset 0x%X, ignoring", "Unknown opcode 0x%.2X at table offset 0x%.4X, ignoring",
WalkState->Opcode, WalkState->ParserState.Aml, WalkState->AmlOffset)); WalkState->Opcode,
(UINT32) (WalkState->AmlOffset + sizeof (ACPI_TABLE_HEADER))));
ACPI_DUMP_BUFFER (WalkState->ParserState.Aml, 128); ACPI_DUMP_BUFFER (WalkState->ParserState.Aml - 16, 48);
/* Assume one-byte bad opcode */ #ifdef ACPI_ASL_COMPILER
/*
* This is executed for the disassembler only. Output goes
* to the disassembled ASL output file.
*/
AcpiOsPrintf (
"/*\nError: Unknown opcode 0x%.2X at table offset 0x%.4X, context:\n",
WalkState->Opcode,
(UINT32) (WalkState->AmlOffset + sizeof (ACPI_TABLE_HEADER)));
/* Dump the context surrounding the invalid opcode */
AcpiUtDumpBuffer (((UINT8 *) WalkState->ParserState.Aml - 16),
48, DB_BYTE_DISPLAY,
WalkState->AmlOffset + sizeof (ACPI_TABLE_HEADER) - 16);
AcpiOsPrintf (" */\n");
#endif
}
/* Increment past one-byte or two-byte opcode */
WalkState->ParserState.Aml++; WalkState->ParserState.Aml++;
if (WalkState->Opcode > 0xFF) /* Can only happen if first byte is 0x5B */
{
WalkState->ParserState.Aml++;
}
return_ACPI_STATUS (AE_CTRL_PARSE_CONTINUE); return_ACPI_STATUS (AE_CTRL_PARSE_CONTINUE);
default: default:
@@ -623,8 +650,8 @@ AcpiPsGetArguments (
(!Arg)) (!Arg))
{ {
ACPI_WARNING ((AE_INFO, ACPI_WARNING ((AE_INFO,
"Detected an unsupported executable opcode " "Unsupported module-level executable opcode "
"at module-level: [0x%.4X] at table offset 0x%.4X", "0x%.2X at table offset 0x%.4X",
Op->Common.AmlOpcode, Op->Common.AmlOpcode,
(UINT32) (ACPI_PTR_DIFF (AmlOpStart, (UINT32) (ACPI_PTR_DIFF (AmlOpStart,
WalkState->ParserState.AmlStart) + WalkState->ParserState.AmlStart) +
@@ -1337,4 +1364,3 @@ AcpiPsParseLoop (
Status = AcpiPsCompleteFinalOp (WalkState, Op, Status); Status = AcpiPsCompleteFinalOp (WalkState, Op, Status);
return_ACPI_STATUS (Status); return_ACPI_STATUS (Status);
} }
@@ -779,5 +779,3 @@ AcpiPsParseAml (
AcpiGbl_CurrentWalkList = PrevWalkList; AcpiGbl_CurrentWalkList = PrevWalkList;
return_ACPI_STATUS (Status); return_ACPI_STATUS (Status);
} }
@@ -371,4 +371,3 @@ AcpiPsCleanupScope (
return_VOID; return_VOID;
} }
@@ -428,5 +428,3 @@ AcpiPsGetChild (
return (Child); return (Child);
} }
#endif #endif
@@ -359,4 +359,3 @@ AcpiPsSetName (
Op->Named.Name = name; Op->Named.Name = name;
} }
@@ -510,5 +510,3 @@ AcpiPsUpdateParameterList (
} }
} }
} }
@@ -475,5 +475,3 @@ AcpiRsSetAddressCommon (
Aml->Address.SpecificFlags = Resource->Data.Address.Info.TypeSpecific; Aml->Address.SpecificFlags = Resource->Data.Address.Info.TypeSpecific;
} }
} }
@@ -554,6 +554,16 @@ AcpiRsGetListLength (
* Get the number of vendor data bytes * Get the number of vendor data bytes
*/ */
ExtraStructBytes = ResourceLength; ExtraStructBytes = ResourceLength;
/*
* There is already one byte included in the minimum
* descriptor size. If there are extra struct bytes,
* subtract one from the count.
*/
if (ExtraStructBytes)
{
ExtraStructBytes--;
}
break; break;
@@ -603,4 +603,3 @@ AcpiRsCreateAmlResources (
OutputBuffer->Pointer, (UINT32) OutputBuffer->Length)); OutputBuffer->Pointer, (UINT32) OutputBuffer->Length));
return_ACPI_STATUS (AE_OK); return_ACPI_STATUS (AE_OK);
} }
@@ -1015,4 +1015,3 @@ AcpiRsDumpWordList (
} }
#endif #endif
@@ -372,5 +372,3 @@ ACPI_RSCONVERT_INFO AcpiRsSetStartDpf[10] =
{ACPI_RSC_LENGTH, 0, 0, sizeof (AML_RESOURCE_START_DEPENDENT_NOPRIO)} {ACPI_RSC_LENGTH, 0, 0, sizeof (AML_RESOURCE_START_DEPENDENT_NOPRIO)}
}; };
@@ -197,7 +197,7 @@ AcpiRsConvertAmlToResources (
ACPI_ERROR ((AE_INFO, ACPI_ERROR ((AE_INFO,
"Invalid/unsupported resource descriptor: Type 0x%2.2X", "Invalid/unsupported resource descriptor: Type 0x%2.2X",
ResourceIndex)); ResourceIndex));
return (AE_AML_INVALID_RESOURCE_TYPE); return_ACPI_STATUS (AE_AML_INVALID_RESOURCE_TYPE);
} }
/* Convert the AML byte stream resource to a local resource struct */ /* Convert the AML byte stream resource to a local resource struct */
@@ -297,7 +297,7 @@ AcpiRsConvertResourcesToAml (
ACPI_ERROR ((AE_INFO, ACPI_ERROR ((AE_INFO,
"Invalid/unsupported resource descriptor: Type 0x%2.2X", "Invalid/unsupported resource descriptor: Type 0x%2.2X",
Resource->Type)); Resource->Type));
return (AE_AML_INVALID_RESOURCE_TYPE); return_ACPI_STATUS (AE_AML_INVALID_RESOURCE_TYPE);
} }
Status = AcpiRsConvertResourceToAml (Resource, Status = AcpiRsConvertResourceToAml (Resource,
@@ -344,4 +344,3 @@ AcpiRsConvertResourcesToAml (
return_ACPI_STATUS (AE_AML_NO_RESOURCE_END_TAG); return_ACPI_STATUS (AE_AML_NO_RESOURCE_END_TAG);
} }
@@ -319,5 +319,3 @@ ACPI_RSCONVERT_INFO AcpiRsSetVendor[7] =
sizeof (AML_RESOURCE_LARGE_HEADER), sizeof (AML_RESOURCE_LARGE_HEADER),
0} 0}
}; };
@@ -937,5 +937,3 @@ Exit:
return_ACPI_STATUS (AE_BAD_DATA); return_ACPI_STATUS (AE_BAD_DATA);
} }
#endif #endif
@@ -930,4 +930,3 @@ Cleanup:
ACPI_FREE (Info); ACPI_FREE (Info);
return_ACPI_STATUS (Status); return_ACPI_STATUS (Status);
} }
@@ -796,4 +796,3 @@ AcpiTbSetupFadtRegisters (
} }
} }
} }
@@ -158,7 +158,7 @@ AcpiTbFindTable (
/* Normalize the input strings */ /* Normalize the input strings */
ACPI_MEMSET (&Header, 0, sizeof (ACPI_TABLE_HEADER)); ACPI_MEMSET (&Header, 0, sizeof (ACPI_TABLE_HEADER));
ACPI_STRNCPY (Header.Signature, Signature, ACPI_NAME_SIZE); ACPI_MOVE_NAME (Header.Signature, Signature);
ACPI_STRNCPY (Header.OemId, OemId, ACPI_OEM_ID_SIZE); ACPI_STRNCPY (Header.OemId, OemId, ACPI_OEM_ID_SIZE);
ACPI_STRNCPY (Header.OemTableId, OemTableId, ACPI_OEM_TABLE_ID_SIZE); ACPI_STRNCPY (Header.OemTableId, OemTableId, ACPI_OEM_TABLE_ID_SIZE);
@@ -446,6 +446,7 @@ AcpiTbResizeRootTableList (
void) void)
{ {
ACPI_TABLE_DESC *Tables; ACPI_TABLE_DESC *Tables;
UINT32 TableCount;
ACPI_FUNCTION_TRACE (TbResizeRootTableList); ACPI_FUNCTION_TRACE (TbResizeRootTableList);
@@ -461,9 +462,17 @@ AcpiTbResizeRootTableList (
/* Increase the Table Array size */ /* Increase the Table Array size */
if (AcpiGbl_RootTableList.Flags & ACPI_ROOT_ORIGIN_ALLOCATED)
{
TableCount = AcpiGbl_RootTableList.MaxTableCount;
}
else
{
TableCount = AcpiGbl_RootTableList.CurrentTableCount;
}
Tables = ACPI_ALLOCATE_ZEROED ( Tables = ACPI_ALLOCATE_ZEROED (
((ACPI_SIZE) AcpiGbl_RootTableList.MaxTableCount + ((ACPI_SIZE) TableCount + ACPI_ROOT_TABLE_SIZE_INCREMENT) *
ACPI_ROOT_TABLE_SIZE_INCREMENT) *
sizeof (ACPI_TABLE_DESC)); sizeof (ACPI_TABLE_DESC));
if (!Tables) if (!Tables)
{ {
@@ -476,7 +485,7 @@ AcpiTbResizeRootTableList (
if (AcpiGbl_RootTableList.Tables) if (AcpiGbl_RootTableList.Tables)
{ {
ACPI_MEMCPY (Tables, AcpiGbl_RootTableList.Tables, ACPI_MEMCPY (Tables, AcpiGbl_RootTableList.Tables,
(ACPI_SIZE) AcpiGbl_RootTableList.MaxTableCount * sizeof (ACPI_TABLE_DESC)); (ACPI_SIZE) TableCount * sizeof (ACPI_TABLE_DESC));
if (AcpiGbl_RootTableList.Flags & ACPI_ROOT_ORIGIN_ALLOCATED) if (AcpiGbl_RootTableList.Flags & ACPI_ROOT_ORIGIN_ALLOCATED)
{ {
@@ -485,8 +494,9 @@ AcpiTbResizeRootTableList (
} }
AcpiGbl_RootTableList.Tables = Tables; AcpiGbl_RootTableList.Tables = Tables;
AcpiGbl_RootTableList.MaxTableCount += ACPI_ROOT_TABLE_SIZE_INCREMENT; AcpiGbl_RootTableList.MaxTableCount =
AcpiGbl_RootTableList.Flags |= (UINT8) ACPI_ROOT_ORIGIN_ALLOCATED; TableCount + ACPI_ROOT_TABLE_SIZE_INCREMENT;
AcpiGbl_RootTableList.Flags |= ACPI_ROOT_ORIGIN_ALLOCATED;
return_ACPI_STATUS (AE_OK); return_ACPI_STATUS (AE_OK);
} }
@@ -639,6 +649,8 @@ AcpiTbTerminate (
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "ACPI Tables freed\n")); ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "ACPI Tables freed\n"));
(void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES);
return_VOID;
} }
@@ -878,4 +890,3 @@ AcpiTbSetTableLoadedFlag (
(void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES);
} }
@@ -401,7 +401,7 @@ AcpiTbChecksum (
Sum = (UINT8) (Sum + *(Buffer++)); Sum = (UINT8) (Sum + *(Buffer++));
} }
return Sum; return (Sum);
} }
@@ -247,7 +247,7 @@ ACPI_EXPORT_SYMBOL (AcpiInitializeTables)
* DESCRIPTION: Reallocate Root Table List into dynamic memory. Copies the * DESCRIPTION: Reallocate Root Table List into dynamic memory. Copies the
* root list from the previously provided scratch area. Should * root list from the previously provided scratch area. Should
* be called once dynamic memory allocation is available in the * be called once dynamic memory allocation is available in the
* kernel * kernel.
* *
******************************************************************************/ ******************************************************************************/
@@ -255,9 +255,7 @@ ACPI_STATUS
AcpiReallocateRootTable ( AcpiReallocateRootTable (
void) void)
{ {
ACPI_TABLE_DESC *Tables; ACPI_STATUS Status;
ACPI_SIZE NewSize;
ACPI_SIZE CurrentSize;
ACPI_FUNCTION_TRACE (AcpiReallocateRootTable); ACPI_FUNCTION_TRACE (AcpiReallocateRootTable);
@@ -272,38 +270,10 @@ AcpiReallocateRootTable (
return_ACPI_STATUS (AE_SUPPORT); return_ACPI_STATUS (AE_SUPPORT);
} }
/* AcpiGbl_RootTableList.Flags |= ACPI_ROOT_ALLOW_RESIZE;
* Get the current size of the root table and add the default
* increment to create the new table size.
*/
CurrentSize = (ACPI_SIZE)
AcpiGbl_RootTableList.CurrentTableCount * sizeof (ACPI_TABLE_DESC);
NewSize = CurrentSize + Status = AcpiTbResizeRootTableList ();
(ACPI_ROOT_TABLE_SIZE_INCREMENT * sizeof (ACPI_TABLE_DESC)); return_ACPI_STATUS (Status);
/* Create new array and copy the old array */
Tables = ACPI_ALLOCATE_ZEROED (NewSize);
if (!Tables)
{
return_ACPI_STATUS (AE_NO_MEMORY);
}
ACPI_MEMCPY (Tables, AcpiGbl_RootTableList.Tables, CurrentSize);
/*
* Update the root table descriptor. The new size will be the current
* number of tables plus the increment, independent of the reserved
* size of the original table list.
*/
AcpiGbl_RootTableList.Tables = Tables;
AcpiGbl_RootTableList.MaxTableCount =
AcpiGbl_RootTableList.CurrentTableCount + ACPI_ROOT_TABLE_SIZE_INCREMENT;
AcpiGbl_RootTableList.Flags =
ACPI_ROOT_ORIGIN_ALLOCATED | ACPI_ROOT_ALLOW_RESIZE;
return_ACPI_STATUS (AE_OK);
} }
ACPI_EXPORT_SYMBOL (AcpiReallocateRootTable) ACPI_EXPORT_SYMBOL (AcpiReallocateRootTable)
@@ -370,22 +340,23 @@ AcpiGetTableHeader (
sizeof (ACPI_TABLE_HEADER)); sizeof (ACPI_TABLE_HEADER));
if (!Header) if (!Header)
{ {
return AE_NO_MEMORY; return (AE_NO_MEMORY);
} }
ACPI_MEMCPY (OutTableHeader, Header, sizeof(ACPI_TABLE_HEADER)); ACPI_MEMCPY (OutTableHeader, Header,
AcpiOsUnmapMemory (Header, sizeof(ACPI_TABLE_HEADER)); sizeof (ACPI_TABLE_HEADER));
AcpiOsUnmapMemory (Header, sizeof (ACPI_TABLE_HEADER));
} }
else else
{ {
return AE_NOT_FOUND; return (AE_NOT_FOUND);
} }
} }
else else
{ {
ACPI_MEMCPY (OutTableHeader, ACPI_MEMCPY (OutTableHeader,
AcpiGbl_RootTableList.Tables[i].Pointer, AcpiGbl_RootTableList.Tables[i].Pointer,
sizeof(ACPI_TABLE_HEADER)); sizeof (ACPI_TABLE_HEADER));
} }
return (AE_OK); return (AE_OK);
@@ -624,4 +595,3 @@ Cleanup:
} }
ACPI_EXPORT_SYMBOL (AcpiRemoveTableHandler) ACPI_EXPORT_SYMBOL (AcpiRemoveTableHandler)
@@ -291,7 +291,7 @@ UnlockAndExit:
* DESCRIPTION: Dynamically load an ACPI table from the caller's buffer. Must * DESCRIPTION: Dynamically load an ACPI table from the caller's buffer. Must
* be a valid ACPI table with a valid ACPI table header. * be a valid ACPI table with a valid ACPI table header.
* Note1: Mainly intended to support hotplug addition of SSDTs. * Note1: Mainly intended to support hotplug addition of SSDTs.
* Note2: Does not copy the incoming table. User is reponsible * Note2: Does not copy the incoming table. User is responsible
* to ensure that the table is not deleted or unmapped. * to ensure that the table is not deleted or unmapped.
* *
******************************************************************************/ ******************************************************************************/

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