Rev 1498 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1498 | Rev 2216 | ||
---|---|---|---|
Line 6... | Line 6... | ||
6 | 6 | ||
7 | /****************************************************************************** |
7 | /****************************************************************************** |
8 | * |
8 | * |
9 | * 1. Copyright Notice |
9 | * 1. Copyright Notice |
10 | * |
10 | * |
11 | * Some or all of this work - Copyright (c) 1999 - 2010, Intel Corp. |
11 | * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp. |
12 | * All rights reserved. |
12 | * All rights reserved. |
13 | * |
13 | * |
14 | * 2. License |
14 | * 2. License |
15 | * |
15 | * |
Line 115... | Line 115... | ||
115 | 115 | ||
116 | #include "acpi.h" |
116 | #include "acpi.h" |
117 | #include "accommon.h" |
117 | #include "accommon.h" |
118 | #include "acdisasm.h" |
118 | #include "acdisasm.h" |
- | 119 | #include "actables.h" |
|
119 | #include "actables.h" |
120 | #include "aslcompiler.h" |
Line 120... | Line 121... | ||
120 | #include "dtcompiler.h" |
121 | #include "dtcompiler.h" |
Line 121... | Line 122... | ||
121 | 122 | ||
Line 130... | Line 131... | ||
130 | AcpiDmCheckAscii ( |
131 | AcpiDmCheckAscii ( |
131 | UINT8 *Target, |
132 | UINT8 *Target, |
132 | char *RepairedName, |
133 | char *RepairedName, |
133 | UINT32 Count); |
134 | UINT32 Count); |
Line 134... | Line -... | ||
134 | - | ||
135 | UINT8 |
- | |
136 | AcpiTbGenerateChecksum ( |
- | |
Line -... | Line 135... | ||
- | 135 | ||
- | 136 | ||
- | 137 | /* Common format strings for commented values */ |
|
- | 138 | ||
- | 139 | #define UINT8_FORMAT "%2.2X [%s]\n" |
|
- | 140 | #define UINT16_FORMAT "%4.4X [%s]\n" |
|
Line 137... | Line 141... | ||
137 | ACPI_TABLE_HEADER *Table); |
141 | #define UINT32_FORMAT "%8.8X [%s]\n" |
Line 138... | Line 142... | ||
138 | 142 | #define STRING_FORMAT "[%s]\n" |
|
139 | 143 | ||
Line 156... | Line 160... | ||
156 | "Root Port ATS Capability", |
160 | "Root Port ATS Capability", |
157 | "Remapping Hardware Static Affinity", |
161 | "Remapping Hardware Static Affinity", |
158 | "Unknown SubTable Type" /* Reserved */ |
162 | "Unknown SubTable Type" /* Reserved */ |
159 | }; |
163 | }; |
Line -... | Line 164... | ||
- | 164 | ||
- | 165 | static const char *AcpiDmEinjActions[] = |
|
- | 166 | { |
|
- | 167 | "Begin Operation", |
|
- | 168 | "Get Trigger Table", |
|
- | 169 | "Set Error Type", |
|
- | 170 | "Get Error Type", |
|
- | 171 | "End Operation", |
|
- | 172 | "Execute Operation", |
|
- | 173 | "Check Busy Status", |
|
- | 174 | "Get Command Status", |
|
- | 175 | "Unknown Action" |
|
- | 176 | }; |
|
- | 177 | ||
- | 178 | static const char *AcpiDmEinjInstructions[] = |
|
- | 179 | { |
|
- | 180 | "Read Register", |
|
- | 181 | "Read Register Value", |
|
- | 182 | "Write Register", |
|
- | 183 | "Write Register Value", |
|
- | 184 | "Noop", |
|
- | 185 | "Unknown Instruction" |
|
- | 186 | }; |
|
- | 187 | ||
- | 188 | static const char *AcpiDmErstActions[] = |
|
- | 189 | { |
|
- | 190 | "Begin Write Operation", |
|
- | 191 | "Begin Read Operation", |
|
- | 192 | "Begin Clear Operation", |
|
- | 193 | "End Operation", |
|
- | 194 | "Set Record Offset", |
|
- | 195 | "Execute Operation", |
|
- | 196 | "Check Busy Status", |
|
- | 197 | "Get Command Status", |
|
- | 198 | "Get Record Identifier", |
|
- | 199 | "Set Record Identifier", |
|
- | 200 | "Get Record Count", |
|
- | 201 | "Begin Dummy Write", |
|
- | 202 | "Unused/Unknown Action", |
|
- | 203 | "Get Error Address Range", |
|
- | 204 | "Get Error Address Length", |
|
- | 205 | "Get Error Attributes", |
|
- | 206 | "Unknown Action" |
|
- | 207 | }; |
|
- | 208 | ||
- | 209 | static const char *AcpiDmErstInstructions[] = |
|
- | 210 | { |
|
- | 211 | "Read Register", |
|
- | 212 | "Read Register Value", |
|
- | 213 | "Write Register", |
|
- | 214 | "Write Register Value", |
|
- | 215 | "Noop", |
|
- | 216 | "Load Var1", |
|
- | 217 | "Load Var2", |
|
- | 218 | "Store Var1", |
|
- | 219 | "Add", |
|
- | 220 | "Subtract", |
|
- | 221 | "Add Value", |
|
- | 222 | "Subtract Value", |
|
- | 223 | "Stall", |
|
- | 224 | "Stall While True", |
|
- | 225 | "Skip Next If True", |
|
- | 226 | "GoTo", |
|
- | 227 | "Set Source Address", |
|
- | 228 | "Set Destination Address", |
|
- | 229 | "Move Data", |
|
- | 230 | "Unknown Instruction" |
|
- | 231 | }; |
|
160 | 232 | ||
161 | static const char *AcpiDmHestSubnames[] = |
233 | static const char *AcpiDmHestSubnames[] = |
162 | { |
234 | { |
163 | "IA-32 Machine Check Exception", |
235 | "IA-32 Machine Check Exception", |
164 | "IA-32 Corrected Machine Check", |
236 | "IA-32 Corrected Machine Check", |
Line 197... | Line 269... | ||
197 | "Processor Local x2APIC", /* ACPI_MADT_TYPE_LOCAL_X2APIC */ |
269 | "Processor Local x2APIC", /* ACPI_MADT_TYPE_LOCAL_X2APIC */ |
198 | "Local x2APIC NMI", /* ACPI_MADT_TYPE_LOCAL_X2APIC_NMI */ |
270 | "Local x2APIC NMI", /* ACPI_MADT_TYPE_LOCAL_X2APIC_NMI */ |
199 | "Unknown SubTable Type" /* Reserved */ |
271 | "Unknown SubTable Type" /* Reserved */ |
200 | }; |
272 | }; |
Line -... | Line 273... | ||
- | 273 | ||
- | 274 | static const char *AcpiDmSlicSubnames[] = |
|
- | 275 | { |
|
- | 276 | "Public Key Structure", |
|
- | 277 | "Windows Marker Structure", |
|
- | 278 | "Unknown SubTable Type" /* Reserved */ |
|
- | 279 | }; |
|
201 | 280 | ||
202 | static const char *AcpiDmSratSubnames[] = |
281 | static const char *AcpiDmSratSubnames[] = |
203 | { |
282 | { |
204 | "Processor Local APIC/SAPIC Affinity", |
283 | "Processor Local APIC/SAPIC Affinity", |
205 | "Memory Affinity", |
284 | "Memory Affinity", |
Line 228... | Line 307... | ||
228 | "Appliance PC", |
307 | "Appliance PC", |
229 | "Performance Server", |
308 | "Performance Server", |
230 | "Unknown Profile Type" |
309 | "Unknown Profile Type" |
231 | }; |
310 | }; |
Line -... | Line 311... | ||
- | 311 | ||
- | 312 | #define ACPI_GAS_WIDTH_RESERVED 5 |
|
- | 313 | ||
- | 314 | static const char *AcpiDmGasAccessWidth[] = |
|
- | 315 | { |
|
- | 316 | "Undefined/Legacy", |
|
- | 317 | "Byte Access:8", |
|
- | 318 | "Word Access:16", |
|
- | 319 | "DWord Access:32", |
|
- | 320 | "QWord Access:64", |
|
- | 321 | "Unknown Width Encoding" |
|
- | 322 | }; |
|
- | 323 | ||
232 | 324 | ||
233 | /******************************************************************************* |
325 | /******************************************************************************* |
234 | * |
326 | * |
235 | * ACPI Table Data, indexed by signature. |
327 | * ACPI Table Data, indexed by signature. |
236 | * |
328 | * |
- | 329 | * Each entry contains: Signature, Table Info, Handler, DtHandler, |
|
237 | * Each entry contains: Signature, Table Info, Handler, Description |
330 | * Template, Description |
238 | * |
331 | * |
239 | * Simple tables have only a TableInfo structure, complex tables have a handler. |
332 | * Simple tables have only a TableInfo structure, complex tables have a |
240 | * This table must be NULL terminated. RSDP and FACS are special-cased |
333 | * handler. This table must be NULL terminated. RSDP and FACS are |
241 | * elsewhere. |
334 | * special-cased elsewhere. |
242 | * |
335 | * |
Line 243... | Line 336... | ||
243 | ******************************************************************************/ |
336 | ******************************************************************************/ |
244 | 337 | ||
245 | static ACPI_DMTABLE_DATA AcpiDmTableData[] = |
338 | ACPI_DMTABLE_DATA AcpiDmTableData[] = |
246 | { |
339 | { |
247 | {ACPI_SIG_ASF, NULL, AcpiDmDumpAsf, DtCompileAsf, "Alert Standard Format table"}, |
340 | {ACPI_SIG_ASF, NULL, AcpiDmDumpAsf, DtCompileAsf, TemplateAsf, "Alert Standard Format table"}, |
248 | {ACPI_SIG_BOOT, AcpiDmTableInfoBoot, NULL, NULL, "Simple Boot Flag Table"}, |
341 | {ACPI_SIG_BOOT, AcpiDmTableInfoBoot, NULL, NULL, TemplateBoot, "Simple Boot Flag Table"}, |
249 | {ACPI_SIG_BERT, AcpiDmTableInfoBert, NULL, NULL, "Boot Error Record Table"}, |
342 | {ACPI_SIG_BERT, AcpiDmTableInfoBert, NULL, NULL, TemplateBert, "Boot Error Record Table"}, |
250 | {ACPI_SIG_CPEP, NULL, AcpiDmDumpCpep, DtCompileCpep, "Corrected Platform Error Polling table"}, |
343 | {ACPI_SIG_CPEP, NULL, AcpiDmDumpCpep, DtCompileCpep, TemplateCpep, "Corrected Platform Error Polling table"}, |
251 | {ACPI_SIG_DBGP, AcpiDmTableInfoDbgp, NULL, NULL, "Debug Port table"}, |
344 | {ACPI_SIG_DBGP, AcpiDmTableInfoDbgp, NULL, NULL, TemplateDbgp, "Debug Port table"}, |
252 | {ACPI_SIG_DMAR, NULL, AcpiDmDumpDmar, DtCompileDmar, "DMA Remapping table"}, |
345 | {ACPI_SIG_DMAR, NULL, AcpiDmDumpDmar, DtCompileDmar, TemplateDmar, "DMA Remapping table"}, |
253 | {ACPI_SIG_ECDT, AcpiDmTableInfoEcdt, NULL, NULL, "Embedded Controller Boot Resources Table"}, |
346 | {ACPI_SIG_ECDT, AcpiDmTableInfoEcdt, NULL, NULL, TemplateEcdt, "Embedded Controller Boot Resources Table"}, |
254 | {ACPI_SIG_EINJ, NULL, AcpiDmDumpEinj, DtCompileEinj, "Error Injection table"}, |
347 | {ACPI_SIG_EINJ, NULL, AcpiDmDumpEinj, DtCompileEinj, TemplateEinj, "Error Injection table"}, |
255 | {ACPI_SIG_ERST, NULL, AcpiDmDumpErst, DtCompileErst, "Error Record Serialization Table"}, |
348 | {ACPI_SIG_ERST, NULL, AcpiDmDumpErst, DtCompileErst, TemplateErst, "Error Record Serialization Table"}, |
256 | {ACPI_SIG_FADT, NULL, AcpiDmDumpFadt, DtCompileFadt, "Fixed ACPI Description Table"}, |
349 | {ACPI_SIG_FADT, NULL, AcpiDmDumpFadt, DtCompileFadt, TemplateFadt, "Fixed ACPI Description Table"}, |
257 | {ACPI_SIG_HEST, NULL, AcpiDmDumpHest, DtCompileHest, "Hardware Error Source Table"}, |
350 | {ACPI_SIG_HEST, NULL, AcpiDmDumpHest, DtCompileHest, TemplateHest, "Hardware Error Source Table"}, |
258 | {ACPI_SIG_HPET, AcpiDmTableInfoHpet, NULL, NULL, "High Precision Event Timer table"}, |
351 | {ACPI_SIG_HPET, AcpiDmTableInfoHpet, NULL, NULL, TemplateHpet, "High Precision Event Timer table"}, |
259 | {ACPI_SIG_IVRS, NULL, AcpiDmDumpIvrs, DtCompileIvrs, "I/O Virtualization Reporting Structure"}, |
352 | {ACPI_SIG_IVRS, NULL, AcpiDmDumpIvrs, DtCompileIvrs, TemplateIvrs, "I/O Virtualization Reporting Structure"}, |
260 | {ACPI_SIG_MADT, NULL, AcpiDmDumpMadt, DtCompileMadt, "Multiple APIC Description Table"}, |
353 | {ACPI_SIG_MADT, NULL, AcpiDmDumpMadt, DtCompileMadt, TemplateMadt, "Multiple APIC Description Table"}, |
261 | {ACPI_SIG_MCFG, NULL, AcpiDmDumpMcfg, DtCompileMcfg, "Memory Mapped Configuration table"}, |
354 | {ACPI_SIG_MCFG, NULL, AcpiDmDumpMcfg, DtCompileMcfg, TemplateMcfg, "Memory Mapped Configuration table"}, |
262 | {ACPI_SIG_MCHI, AcpiDmTableInfoMchi, NULL, NULL, "Management Controller Host Interface table"}, |
355 | {ACPI_SIG_MCHI, AcpiDmTableInfoMchi, NULL, NULL, TemplateMchi, "Management Controller Host Interface table"}, |
263 | {ACPI_SIG_MSCT, NULL, AcpiDmDumpMsct, DtCompileMsct, "Maximum System Characteristics Table"}, |
356 | {ACPI_SIG_MSCT, NULL, AcpiDmDumpMsct, DtCompileMsct, TemplateMsct, "Maximum System Characteristics Table"}, |
264 | {ACPI_SIG_RSDT, NULL, AcpiDmDumpRsdt, DtCompileRsdt, "Root System Description Table"}, |
357 | {ACPI_SIG_RSDT, NULL, AcpiDmDumpRsdt, DtCompileRsdt, TemplateRsdt, "Root System Description Table"}, |
265 | {ACPI_SIG_SBST, AcpiDmTableInfoSbst, NULL, NULL, "Smart Battery Specification Table"}, |
358 | {ACPI_SIG_SBST, AcpiDmTableInfoSbst, NULL, NULL, TemplateSbst, "Smart Battery Specification Table"}, |
266 | {ACPI_SIG_SLIC, AcpiDmTableInfoSlic, NULL, NULL, "Software Licensing Description Table"}, |
359 | {ACPI_SIG_SLIC, NULL, AcpiDmDumpSlic, DtCompileSlic, TemplateSlic, "Software Licensing Description Table"}, |
267 | {ACPI_SIG_SLIT, NULL, AcpiDmDumpSlit, DtCompileSlit, "System Locality Information Table"}, |
360 | {ACPI_SIG_SLIT, NULL, AcpiDmDumpSlit, DtCompileSlit, TemplateSlit, "System Locality Information Table"}, |
268 | {ACPI_SIG_SPCR, AcpiDmTableInfoSpcr, NULL, NULL, "Serial Port Console Redirection table"}, |
361 | {ACPI_SIG_SPCR, AcpiDmTableInfoSpcr, NULL, NULL, TemplateSpcr, "Serial Port Console Redirection table"}, |
269 | {ACPI_SIG_SPMI, AcpiDmTableInfoSpmi, NULL, NULL, "Server Platform Management Interface table"}, |
362 | {ACPI_SIG_SPMI, AcpiDmTableInfoSpmi, NULL, NULL, TemplateSpmi, "Server Platform Management Interface table"}, |
270 | {ACPI_SIG_SRAT, NULL, AcpiDmDumpSrat, DtCompileSrat, "System Resource Affinity Table"}, |
363 | {ACPI_SIG_SRAT, NULL, AcpiDmDumpSrat, DtCompileSrat, TemplateSrat, "System Resource Affinity Table"}, |
271 | {ACPI_SIG_TCPA, AcpiDmTableInfoTcpa, NULL, NULL, "Trusted Computing Platform Alliance table"}, |
364 | {ACPI_SIG_TCPA, AcpiDmTableInfoTcpa, NULL, NULL, TemplateTcpa, "Trusted Computing Platform Alliance table"}, |
272 | {ACPI_SIG_UEFI, AcpiDmTableInfoUefi, NULL, NULL, "UEFI Boot Optimization Table"}, |
365 | {ACPI_SIG_UEFI, AcpiDmTableInfoUefi, NULL, DtCompileUefi, TemplateUefi, "UEFI Boot Optimization Table"}, |
- | 366 | {ACPI_SIG_WAET, AcpiDmTableInfoWaet, NULL, NULL, TemplateWaet, "Windows ACPI Emulated Devices Table"}, |
|
273 | {ACPI_SIG_WAET, AcpiDmTableInfoWaet, NULL, NULL, "Windows ACPI Emulated Devices Table"}, |
367 | {ACPI_SIG_WDAT, NULL, AcpiDmDumpWdat, DtCompileWdat, TemplateWdat, "Watchdog Action Table"}, |
274 | {ACPI_SIG_WDAT, NULL, AcpiDmDumpWdat, DtCompileWdat, "Watchdog Action Table"}, |
368 | {ACPI_SIG_WDDT, AcpiDmTableInfoWddt, NULL, NULL, TemplateWddt, "Watchdog Description Table"}, |
275 | {ACPI_SIG_WDRT, AcpiDmTableInfoWdrt, NULL, NULL, "Watchdog Resource Table"}, |
369 | {ACPI_SIG_WDRT, AcpiDmTableInfoWdrt, NULL, NULL, TemplateWdrt, "Watchdog Resource Table"}, |
276 | {ACPI_SIG_XSDT, NULL, AcpiDmDumpXsdt, DtCompileXsdt, "Extended System Description Table"}, |
370 | {ACPI_SIG_XSDT, NULL, AcpiDmDumpXsdt, DtCompileXsdt, TemplateXsdt, "Extended System Description Table"}, |
Line 277... | Line 371... | ||
277 | {NULL, NULL, NULL, NULL, NULL} |
371 | {NULL, NULL, NULL, NULL, NULL, NULL} |
278 | }; |
372 | }; |
279 | 373 | ||
280 | 374 | ||
281 | /******************************************************************************* |
375 | /******************************************************************************* |
282 | * |
376 | * |
- | 377 | * FUNCTION: AcpiDmGenerateChecksum |
|
283 | * FUNCTION: AcpiTbGenerateChecksum |
378 | * |
284 | * |
379 | * PARAMETERS: Table - Pointer to table to be checksummed |
285 | * PARAMETERS: Table - Pointer to a valid ACPI table (with a |
380 | * Length - Length of the table |
286 | * standard ACPI header) |
381 | * OriginalChecksum - Value of the checksum field |
287 | * |
382 | * |
288 | * RETURN: 8 bit checksum of buffer |
383 | * RETURN: 8 bit checksum of buffer |
Line 289... | Line 384... | ||
289 | * |
384 | * |
290 | * DESCRIPTION: Computes an 8 bit checksum of the table. |
385 | * DESCRIPTION: Computes an 8 bit checksum of the table. |
291 | * |
386 | * |
- | 387 | ******************************************************************************/ |
|
- | 388 | ||
292 | ******************************************************************************/ |
389 | UINT8 |
293 | 390 | AcpiDmGenerateChecksum ( |
|
Line 294... | Line 391... | ||
294 | UINT8 |
391 | void *Table, |
Line 295... | Line 392... | ||
295 | AcpiTbGenerateChecksum ( |
392 | UINT32 Length, |
Line 296... | Line 393... | ||
296 | ACPI_TABLE_HEADER *Table) |
393 | UINT8 OriginalChecksum) |
Line 297... | Line 394... | ||
297 | { |
394 | { |
Line 298... | Line 395... | ||
298 | UINT8 Checksum; |
395 | UINT8 Checksum; |
Line 299... | Line 396... | ||
299 | 396 | ||
300 | 397 | ||
Line 427... | Line 524... | ||
427 | 524 | ||
428 | AcpiDmDumpTable (Length, 0, Table, 0, TableData->TableInfo); |
525 | AcpiDmDumpTable (Length, 0, Table, 0, TableData->TableInfo); |
429 | } |
526 | } |
Line -... | Line 527... | ||
- | 527 | } |
|
- | 528 | ||
430 | } |
529 | if (!Gbl_DoTemplates || Gbl_VerboseTemplates) |
Line 431... | Line 530... | ||
431 | 530 | { |
|
- | 531 | /* Dump the raw table data */ |
|
432 | /* Always dump the raw table data */ |
532 | |
- | 533 | AcpiOsPrintf ("\n%s: Length %d (0x%X)\n\n", |
|
433 | 534 | ACPI_RAW_TABLE_DATA_HEADER, Length, Length); |
|
Line 434... | Line 535... | ||
434 | AcpiOsPrintf ("\nRaw Table Data\n\n"); |
535 | AcpiUtDumpBuffer2 (ACPI_CAST_PTR (UINT8, Table), Length, DB_BYTE_DISPLAY); |
435 | AcpiUtDumpBuffer2 (ACPI_CAST_PTR (UINT8, Table), Length, DB_BYTE_DISPLAY); |
536 | } |
Line 458... | Line 559... | ||
458 | UINT32 Offset, |
559 | UINT32 Offset, |
459 | UINT32 ByteLength, |
560 | UINT32 ByteLength, |
460 | char *Name) |
561 | char *Name) |
461 | { |
562 | { |
Line -... | Line 563... | ||
- | 563 | ||
- | 564 | /* Allow a null name for fields that span multiple lines (large buffers) */ |
|
- | 565 | ||
- | 566 | if (!Name) |
|
- | 567 | { |
|
- | 568 | Name = ""; |
|
- | 569 | } |
|
- | 570 | ||
- | 571 | if (Gbl_DoTemplates && !Gbl_VerboseTemplates) /* Terse template */ |
|
462 | 572 | { |
|
463 | if (ByteLength) |
573 | if (ByteLength) |
- | 574 | { |
|
- | 575 | AcpiOsPrintf ("[%.4d] %34s : ", ByteLength, Name); |
|
- | 576 | } |
|
- | 577 | else |
|
- | 578 | { |
|
- | 579 | if (*Name) |
|
- | 580 | { |
|
- | 581 | AcpiOsPrintf ("%41s : ", Name); |
|
- | 582 | } |
|
- | 583 | else |
|
- | 584 | { |
|
- | 585 | AcpiOsPrintf ("%41s ", Name); |
|
- | 586 | } |
|
- | 587 | } |
|
- | 588 | } |
|
- | 589 | else /* Normal disassembler or verbose template */ |
|
- | 590 | { |
|
- | 591 | if (ByteLength) |
|
464 | { |
592 | { |
465 | AcpiOsPrintf ("[%3.3Xh %4.4d% 3d] %28s : ", |
593 | AcpiOsPrintf ("[%3.3Xh %4.4d% 4d] %28s : ", |
466 | Offset, Offset, ByteLength, Name); |
594 | Offset, Offset, ByteLength, Name); |
467 | } |
595 | } |
468 | else |
596 | else |
- | 597 | { |
|
- | 598 | if (*Name) |
|
469 | { |
599 | { |
- | 600 | AcpiOsPrintf ("%44s : ", Name); |
|
470 | AcpiOsPrintf ("%43s : ", |
601 | } |
- | 602 | else |
|
- | 603 | { |
|
- | 604 | AcpiOsPrintf ("%44s ", Name); |
|
- | 605 | } |
|
471 | Name); |
606 | } |
472 | } |
607 | } |
Line 473... | Line 608... | ||
473 | } |
608 | } |
474 | 609 | ||
Line 478... | Line 613... | ||
478 | UINT32 ByteLength, |
613 | UINT32 ByteLength, |
479 | char *Name, |
614 | char *Name, |
480 | UINT32 Value) |
615 | UINT32 Value) |
481 | { |
616 | { |
Line -... | Line 617... | ||
- | 617 | ||
- | 618 | if (Gbl_DoTemplates && !Gbl_VerboseTemplates) /* Terse template */ |
|
- | 619 | { |
|
- | 620 | if (ByteLength) |
|
- | 621 | { |
|
- | 622 | AcpiOsPrintf ("[%.4d] %30s %3d : ", |
|
- | 623 | ByteLength, Name, Value); |
|
- | 624 | } |
|
- | 625 | else |
|
- | 626 | { |
|
- | 627 | AcpiOsPrintf ("%36s % 3d : ", |
|
- | 628 | Name, Value); |
|
- | 629 | } |
|
- | 630 | } |
|
- | 631 | else /* Normal disassembler or verbose template */ |
|
482 | 632 | { |
|
483 | if (ByteLength) |
633 | if (ByteLength) |
484 | { |
634 | { |
485 | AcpiOsPrintf ("[%3.3Xh %4.4d% 3d] %24s % 3d : ", |
635 | AcpiOsPrintf ("[%3.3Xh %4.4d %3d] %24s %3d : ", |
486 | Offset, Offset, ByteLength, Name, Value); |
636 | Offset, Offset, ByteLength, Name, Value); |
487 | } |
637 | } |
488 | else |
638 | else |
489 | { |
639 | { |
490 | AcpiOsPrintf ("[%3.3Xh %4.4d ] %24s % 3d : ", |
640 | AcpiOsPrintf ("[%3.3Xh %4.4d ] %24s %3d : ", |
491 | Offset, Offset, Name, Value); |
641 | Offset, Offset, Name, Value); |
- | 642 | } |
|
492 | } |
643 | } |
Line 493... | Line 644... | ||
493 | } |
644 | } |
494 | 645 | ||
Line 506... | Line 657... | ||
506 | * |
657 | * |
507 | * RETURN: None |
658 | * RETURN: None |
508 | * |
659 | * |
509 | * DESCRIPTION: Display ACPI table contents by walking the Info table. |
660 | * DESCRIPTION: Display ACPI table contents by walking the Info table. |
510 | * |
661 | * |
- | 662 | * Note: This function must remain in sync with DtGetFieldLength. |
|
- | 663 | * |
|
511 | ******************************************************************************/ |
664 | ******************************************************************************/ |
Line 512... | Line 665... | ||
512 | 665 | ||
513 | ACPI_STATUS |
666 | ACPI_STATUS |
514 | AcpiDmDumpTable ( |
667 | AcpiDmDumpTable ( |
Line 560... | Line 713... | ||
560 | switch (Info->Opcode) |
713 | switch (Info->Opcode) |
561 | { |
714 | { |
562 | case ACPI_DMT_UINT8: |
715 | case ACPI_DMT_UINT8: |
563 | case ACPI_DMT_CHKSUM: |
716 | case ACPI_DMT_CHKSUM: |
564 | case ACPI_DMT_SPACEID: |
717 | case ACPI_DMT_SPACEID: |
- | 718 | case ACPI_DMT_ACCWIDTH: |
|
565 | case ACPI_DMT_IVRS: |
719 | case ACPI_DMT_IVRS: |
566 | case ACPI_DMT_MADT: |
720 | case ACPI_DMT_MADT: |
567 | case ACPI_DMT_SRAT: |
721 | case ACPI_DMT_SRAT: |
568 | case ACPI_DMT_ASF: |
722 | case ACPI_DMT_ASF: |
569 | case ACPI_DMT_HESTNTYP: |
723 | case ACPI_DMT_HESTNTYP: |
570 | case ACPI_DMT_FADTPM: |
724 | case ACPI_DMT_FADTPM: |
- | 725 | case ACPI_DMT_EINJACT: |
|
- | 726 | case ACPI_DMT_EINJINST: |
|
- | 727 | case ACPI_DMT_ERSTACT: |
|
- | 728 | case ACPI_DMT_ERSTINST: |
|
571 | ByteLength = 1; |
729 | ByteLength = 1; |
572 | break; |
730 | break; |
573 | case ACPI_DMT_UINT16: |
731 | case ACPI_DMT_UINT16: |
574 | case ACPI_DMT_DMAR: |
732 | case ACPI_DMT_DMAR: |
575 | case ACPI_DMT_HEST: |
733 | case ACPI_DMT_HEST: |
Line 579... | Line 737... | ||
579 | ByteLength = 3; |
737 | ByteLength = 3; |
580 | break; |
738 | break; |
581 | case ACPI_DMT_UINT32: |
739 | case ACPI_DMT_UINT32: |
582 | case ACPI_DMT_NAME4: |
740 | case ACPI_DMT_NAME4: |
583 | case ACPI_DMT_SIG: |
741 | case ACPI_DMT_SIG: |
- | 742 | case ACPI_DMT_SLIC: |
|
584 | ByteLength = 4; |
743 | ByteLength = 4; |
585 | break; |
744 | break; |
586 | case ACPI_DMT_NAME6: |
745 | case ACPI_DMT_NAME6: |
587 | ByteLength = 6; |
746 | ByteLength = 6; |
588 | break; |
747 | break; |
589 | case ACPI_DMT_UINT56: |
748 | case ACPI_DMT_UINT56: |
- | 749 | case ACPI_DMT_BUF7: |
|
590 | ByteLength = 7; |
750 | ByteLength = 7; |
591 | break; |
751 | break; |
592 | case ACPI_DMT_UINT64: |
752 | case ACPI_DMT_UINT64: |
593 | case ACPI_DMT_NAME8: |
753 | case ACPI_DMT_NAME8: |
594 | ByteLength = 8; |
754 | ByteLength = 8; |
595 | break; |
755 | break; |
596 | case ACPI_DMT_BUF16: |
756 | case ACPI_DMT_BUF16: |
- | 757 | case ACPI_DMT_UUID: |
|
597 | ByteLength = 16; |
758 | ByteLength = 16; |
598 | break; |
759 | break; |
- | 760 | case ACPI_DMT_BUF128: |
|
- | 761 | ByteLength = 128; |
|
- | 762 | break; |
|
599 | case ACPI_DMT_STRING: |
763 | case ACPI_DMT_STRING: |
600 | ByteLength = ACPI_STRLEN (ACPI_CAST_PTR (char, Target)) + 1; |
764 | ByteLength = ACPI_STRLEN (ACPI_CAST_PTR (char, Target)) + 1; |
601 | break; |
765 | break; |
602 | case ACPI_DMT_GAS: |
766 | case ACPI_DMT_GAS: |
603 | if (!LastOutputBlankLine) |
767 | if (!LastOutputBlankLine) |
Line 694... | Line 858... | ||
694 | 858 | ||
695 | AcpiOsPrintf ("%8.8X%8.8X\n", |
859 | AcpiOsPrintf ("%8.8X%8.8X\n", |
696 | ACPI_FORMAT_UINT64 (ACPI_GET64 (Target))); |
860 | ACPI_FORMAT_UINT64 (ACPI_GET64 (Target))); |
Line -... | Line 861... | ||
- | 861 | break; |
|
697 | break; |
862 | |
- | 863 | case ACPI_DMT_BUF7: |
|
Line -... | Line 864... | ||
- | 864 | case ACPI_DMT_BUF16: |
|
- | 865 | case ACPI_DMT_BUF128: |
|
698 | 866 | ||
- | 867 | /* |
|
699 | case ACPI_DMT_BUF16: |
868 | * Buffer: Size depends on the opcode and was set above. |
700 | 869 | * Each hex byte is separated with a space. |
|
- | 870 | * Multiple lines are separated by line continuation char. |
|
- | 871 | */ |
|
- | 872 | for (Temp16 = 0; Temp16 < ByteLength; Temp16++) |
|
- | 873 | { |
|
- | 874 | AcpiOsPrintf ("%2.2X", Target[Temp16]); |
|
- | 875 | if ((UINT32) (Temp16 + 1) < ByteLength) |
|
- | 876 | { |
|
- | 877 | if ((Temp16 > 0) && (!((Temp16+1) % 16))) |
|
- | 878 | { |
|
- | 879 | AcpiOsPrintf (" \\\n"); /* Line continuation */ |
|
701 | /* Buffer of length 16 */ |
880 | AcpiDmLineHeader (0, 0, NULL); |
702 | 881 | } |
|
- | 882 | else |
|
- | 883 | { |
|
703 | for (Temp8 = 0; Temp8 < 16; Temp8++) |
884 | AcpiOsPrintf (" "); |
704 | { |
885 | } |
705 | AcpiOsPrintf ("%2.2X,", Target[Temp8]); |
886 | } |
Line -... | Line 887... | ||
- | 887 | } |
|
- | 888 | AcpiOsPrintf ("\n"); |
|
- | 889 | break; |
|
- | 890 | ||
- | 891 | case ACPI_DMT_UUID: |
|
- | 892 | ||
- | 893 | /* Convert 16-byte UUID buffer to 36-byte formatted UUID string */ |
|
- | 894 | ||
- | 895 | (void) AuConvertUuidToString ((char *) Target, MsgBuffer); |
|
706 | } |
896 | |
Line 707... | Line 897... | ||
707 | AcpiOsPrintf ("\n"); |
897 | AcpiOsPrintf ("%s\n", MsgBuffer); |
708 | break; |
898 | break; |
Line 719... | Line 909... | ||
719 | AcpiDmCheckAscii (Target, RepairedName, 4); |
909 | AcpiDmCheckAscii (Target, RepairedName, 4); |
720 | AcpiOsPrintf ("\"%.4s\" ", RepairedName); |
910 | AcpiOsPrintf ("\"%.4s\" ", RepairedName); |
721 | TableData = AcpiDmGetTableData (ACPI_CAST_PTR (char, Target)); |
911 | TableData = AcpiDmGetTableData (ACPI_CAST_PTR (char, Target)); |
722 | if (TableData) |
912 | if (TableData) |
723 | { |
913 | { |
724 | AcpiOsPrintf ("/* %s */", TableData->Name); |
914 | AcpiOsPrintf (STRING_FORMAT, TableData->Name); |
725 | } |
915 | } |
- | 916 | else |
|
- | 917 | { |
|
726 | AcpiOsPrintf ("\n"); |
918 | AcpiOsPrintf ("\n"); |
- | 919 | } |
|
727 | break; |
920 | break; |
Line 728... | Line 921... | ||
728 | 921 | ||
Line 729... | Line 922... | ||
729 | case ACPI_DMT_NAME4: |
922 | case ACPI_DMT_NAME4: |
Line 749... | Line 942... | ||
749 | case ACPI_DMT_CHKSUM: |
942 | case ACPI_DMT_CHKSUM: |
Line 750... | Line 943... | ||
750 | 943 | ||
Line 751... | Line 944... | ||
751 | /* Checksum, display and validate */ |
944 | /* Checksum, display and validate */ |
752 | 945 | ||
- | 946 | AcpiOsPrintf ("%2.2X", *Target); |
|
- | 947 | Temp8 = AcpiDmGenerateChecksum (Table, |
|
753 | AcpiOsPrintf ("%2.2X", *Target); |
948 | ACPI_CAST_PTR (ACPI_TABLE_HEADER, Table)->Length, |
754 | Temp8 = AcpiTbGenerateChecksum (Table); |
949 | ACPI_CAST_PTR (ACPI_TABLE_HEADER, Table)->Checksum); |
755 | if (Temp8 != ACPI_CAST_PTR (ACPI_TABLE_HEADER, Table)->Checksum) |
950 | if (Temp8 != ACPI_CAST_PTR (ACPI_TABLE_HEADER, Table)->Checksum) |
756 | { |
951 | { |
757 | AcpiOsPrintf ( |
952 | AcpiOsPrintf ( |
Line 762... | Line 957... | ||
762 | 957 | ||
Line 763... | Line 958... | ||
763 | case ACPI_DMT_SPACEID: |
958 | case ACPI_DMT_SPACEID: |
Line 764... | Line 959... | ||
764 | 959 | ||
- | 960 | /* Address Space ID */ |
|
- | 961 | ||
- | 962 | AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiUtGetRegionName (*Target)); |
|
- | 963 | break; |
|
- | 964 | ||
- | 965 | case ACPI_DMT_ACCWIDTH: |
|
- | 966 | ||
- | 967 | /* Encoded Access Width */ |
|
- | 968 | ||
- | 969 | Temp8 = *Target; |
|
- | 970 | if (Temp8 > ACPI_GAS_WIDTH_RESERVED) |
|
- | 971 | { |
|
- | 972 | Temp8 = ACPI_GAS_WIDTH_RESERVED; |
|
765 | /* Address Space ID */ |
973 | } |
Line 766... | Line 974... | ||
766 | 974 | ||
Line 767... | Line 975... | ||
767 | AcpiOsPrintf ("%2.2X (%s)\n", *Target, AcpiUtGetRegionName (*Target)); |
975 | AcpiOsPrintf (UINT8_FORMAT, Temp8, AcpiDmGasAccessWidth[Temp8]); |
Line 768... | Line 976... | ||
768 | break; |
976 | break; |
769 | 977 | ||
770 | case ACPI_DMT_GAS: |
978 | case ACPI_DMT_GAS: |
771 | 979 | ||
772 | /* Generic Address Structure */ |
980 | /* Generic Address Structure */ |
773 | 981 | ||
Line 786... | Line 994... | ||
786 | if (Temp16 > ACPI_ASF_TYPE_RESERVED) |
994 | if (Temp16 > ACPI_ASF_TYPE_RESERVED) |
787 | { |
995 | { |
788 | Temp16 = ACPI_ASF_TYPE_RESERVED; |
996 | Temp16 = ACPI_ASF_TYPE_RESERVED; |
789 | } |
997 | } |
Line 790... | Line 998... | ||
790 | 998 | ||
791 | AcpiOsPrintf ("%2.2X <%s>\n", *Target, AcpiDmAsfSubnames[Temp16]); |
999 | AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmAsfSubnames[Temp16]); |
Line 792... | Line 1000... | ||
792 | break; |
1000 | break; |
Line 793... | Line 1001... | ||
793 | 1001 | ||
Line 799... | Line 1007... | ||
799 | if (Temp16 > ACPI_DMAR_TYPE_RESERVED) |
1007 | if (Temp16 > ACPI_DMAR_TYPE_RESERVED) |
800 | { |
1008 | { |
801 | Temp16 = ACPI_DMAR_TYPE_RESERVED; |
1009 | Temp16 = ACPI_DMAR_TYPE_RESERVED; |
802 | } |
1010 | } |
Line 803... | Line 1011... | ||
803 | 1011 | ||
- | 1012 | AcpiOsPrintf (UINT16_FORMAT, ACPI_GET16 (Target), AcpiDmDmarSubnames[Temp16]); |
|
- | 1013 | break; |
|
- | 1014 | ||
- | 1015 | case ACPI_DMT_EINJACT: |
|
- | 1016 | ||
- | 1017 | /* EINJ Action types */ |
|
- | 1018 | ||
- | 1019 | Temp8 = *Target; |
|
- | 1020 | if (Temp8 > ACPI_EINJ_ACTION_RESERVED) |
|
- | 1021 | { |
|
- | 1022 | Temp8 = ACPI_EINJ_ACTION_RESERVED; |
|
- | 1023 | } |
|
- | 1024 | ||
- | 1025 | AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmEinjActions[Temp8]); |
|
- | 1026 | break; |
|
- | 1027 | ||
- | 1028 | case ACPI_DMT_EINJINST: |
|
- | 1029 | ||
- | 1030 | /* EINJ Instruction types */ |
|
- | 1031 | ||
- | 1032 | Temp8 = *Target; |
|
- | 1033 | if (Temp8 > ACPI_EINJ_INSTRUCTION_RESERVED) |
|
- | 1034 | { |
|
- | 1035 | Temp8 = ACPI_EINJ_INSTRUCTION_RESERVED; |
|
- | 1036 | } |
|
- | 1037 | ||
- | 1038 | AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmEinjInstructions[Temp8]); |
|
- | 1039 | break; |
|
- | 1040 | ||
- | 1041 | case ACPI_DMT_ERSTACT: |
|
- | 1042 | ||
- | 1043 | /* ERST Action types */ |
|
- | 1044 | ||
- | 1045 | Temp8 = *Target; |
|
- | 1046 | if (Temp8 > ACPI_ERST_ACTION_RESERVED) |
|
- | 1047 | { |
|
- | 1048 | Temp8 = ACPI_ERST_ACTION_RESERVED; |
|
- | 1049 | } |
|
- | 1050 | ||
- | 1051 | AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmErstActions[Temp8]); |
|
- | 1052 | break; |
|
- | 1053 | ||
- | 1054 | case ACPI_DMT_ERSTINST: |
|
- | 1055 | ||
- | 1056 | /* ERST Instruction types */ |
|
- | 1057 | ||
- | 1058 | Temp8 = *Target; |
|
- | 1059 | if (Temp8 > ACPI_ERST_INSTRUCTION_RESERVED) |
|
- | 1060 | { |
|
- | 1061 | Temp8 = ACPI_ERST_INSTRUCTION_RESERVED; |
|
- | 1062 | } |
|
- | 1063 | ||
804 | AcpiOsPrintf ("%4.4X <%s>\n", ACPI_GET16 (Target), AcpiDmDmarSubnames[Temp16]); |
1064 | AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmErstInstructions[Temp8]); |
Line 805... | Line 1065... | ||
805 | break; |
1065 | break; |
Line 806... | Line 1066... | ||
806 | 1066 | ||
Line 812... | Line 1072... | ||
812 | if (Temp16 > ACPI_HEST_TYPE_RESERVED) |
1072 | if (Temp16 > ACPI_HEST_TYPE_RESERVED) |
813 | { |
1073 | { |
814 | Temp16 = ACPI_HEST_TYPE_RESERVED; |
1074 | Temp16 = ACPI_HEST_TYPE_RESERVED; |
815 | } |
1075 | } |
Line 816... | Line 1076... | ||
816 | 1076 | ||
817 | AcpiOsPrintf ("%4.4X (%s)\n", ACPI_GET16 (Target), AcpiDmHestSubnames[Temp16]); |
1077 | AcpiOsPrintf (UINT16_FORMAT, ACPI_GET16 (Target), AcpiDmHestSubnames[Temp16]); |
Line 818... | Line 1078... | ||
818 | break; |
1078 | break; |
Line 819... | Line 1079... | ||
819 | 1079 | ||
820 | case ACPI_DMT_HESTNTFY: |
1080 | case ACPI_DMT_HESTNTFY: |
821 | 1081 | ||
822 | AcpiOsPrintf (" |
1082 | AcpiOsPrintf (STRING_FORMAT, "Hardware Error Notification Structure"); |
823 | AcpiDmDumpTable (TableLength, CurrentOffset, Target, |
1083 | AcpiDmDumpTable (TableLength, CurrentOffset, Target, |
824 | sizeof (ACPI_HEST_NOTIFY), AcpiDmTableInfoHestNotify); |
1084 | sizeof (ACPI_HEST_NOTIFY), AcpiDmTableInfoHestNotify); |
Line 834... | Line 1094... | ||
834 | if (Temp8 > ACPI_HEST_NOTIFY_RESERVED) |
1094 | if (Temp8 > ACPI_HEST_NOTIFY_RESERVED) |
835 | { |
1095 | { |
836 | Temp8 = ACPI_HEST_NOTIFY_RESERVED; |
1096 | Temp8 = ACPI_HEST_NOTIFY_RESERVED; |
837 | } |
1097 | } |
Line 838... | Line 1098... | ||
838 | 1098 | ||
839 | AcpiOsPrintf ("%2.2X (%s)\n", *Target, AcpiDmHestNotifySubnames[Temp8]); |
1099 | AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmHestNotifySubnames[Temp8]); |
Line 840... | Line -... | ||
840 | break; |
- | |
841 | 1100 | break; |
|
Line 842... | Line 1101... | ||
842 | 1101 | ||
Line 843... | Line 1102... | ||
843 | case ACPI_DMT_MADT: |
1102 | case ACPI_DMT_MADT: |
844 | 1103 | ||
845 | /* MADT subtable types */ |
1104 | /* MADT subtable types */ |
846 | 1105 | ||
847 | Temp8 = *Target; |
1106 | Temp8 = *Target; |
Line 848... | Line 1107... | ||
848 | if (Temp8 > ACPI_MADT_TYPE_RESERVED) |
1107 | if (Temp8 > ACPI_MADT_TYPE_RESERVED) |
- | 1108 | { |
|
- | 1109 | Temp8 = ACPI_MADT_TYPE_RESERVED; |
|
- | 1110 | } |
|
- | 1111 | ||
- | 1112 | AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmMadtSubnames[Temp8]); |
|
- | 1113 | break; |
|
- | 1114 | ||
- | 1115 | case ACPI_DMT_SLIC: |
|
- | 1116 | ||
- | 1117 | /* SLIC subtable types */ |
|
- | 1118 | ||
- | 1119 | Temp8 = *Target; |
|
- | 1120 | if (Temp8 > ACPI_SLIC_TYPE_RESERVED) |
|
849 | { |
1121 | { |
Line 850... | Line 1122... | ||
850 | Temp8 = ACPI_MADT_TYPE_RESERVED; |
1122 | Temp8 = ACPI_SLIC_TYPE_RESERVED; |
Line 851... | Line 1123... | ||
851 | } |
1123 | } |
Line 861... | Line 1133... | ||
861 | if (Temp8 > ACPI_SRAT_TYPE_RESERVED) |
1133 | if (Temp8 > ACPI_SRAT_TYPE_RESERVED) |
862 | { |
1134 | { |
863 | Temp8 = ACPI_SRAT_TYPE_RESERVED; |
1135 | Temp8 = ACPI_SRAT_TYPE_RESERVED; |
864 | } |
1136 | } |
Line 865... | Line 1137... | ||
865 | 1137 | ||
866 | AcpiOsPrintf ("%2.2X <%s>\n", *Target, AcpiDmSratSubnames[Temp8]); |
1138 | AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmSratSubnames[Temp8]); |
Line 867... | Line 1139... | ||
867 | break; |
1139 | break; |
Line 868... | Line 1140... | ||
868 | 1140 | ||
Line 874... | Line 1146... | ||
874 | if (Temp8 > ACPI_FADT_PM_RESERVED) |
1146 | if (Temp8 > ACPI_FADT_PM_RESERVED) |
875 | { |
1147 | { |
876 | Temp8 = ACPI_FADT_PM_RESERVED; |
1148 | Temp8 = ACPI_FADT_PM_RESERVED; |
877 | } |
1149 | } |
Line 878... | Line 1150... | ||
878 | 1150 | ||
879 | AcpiOsPrintf ("%2.2X (%s)\n", *Target, AcpiDmFadtProfiles[Temp8]); |
1151 | AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmFadtProfiles[Temp8]); |
Line 880... | Line 1152... | ||
880 | break; |
1152 | break; |
Line 881... | Line 1153... | ||
881 | 1153 | ||
Line 899... | Line 1171... | ||
899 | default: |
1171 | default: |
900 | Name = AcpiDmIvrsSubnames[2]; |
1172 | Name = AcpiDmIvrsSubnames[2]; |
901 | break; |
1173 | break; |
902 | } |
1174 | } |
Line 903... | Line 1175... | ||
903 | 1175 | ||
904 | AcpiOsPrintf ("%2.2X <%s>\n", *Target, Name); |
1176 | AcpiOsPrintf (UINT8_FORMAT, *Target, Name); |
Line 905... | Line 1177... | ||
905 | break; |
1177 | break; |
906 | 1178 |