Subversion Repositories Kolibri OS

Rev

Rev 1498 | Go to most recent revision | Show entire file | Regard 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
 
433
 
533
        AcpiOsPrintf ("\n%s: Length %d (0x%X)\n\n",
-
 
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
    }
436
}
537
}
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);
Line 489... Line 639...
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);
492
    }
642
    }
493
}
643
    }
-
 
644
}
Line 494... Line 645...
494
 
645
 
495
 
646
 
496
/*******************************************************************************
647
/*******************************************************************************
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]);
701
            /* Buffer of length 16 */
875
                if ((UINT32) (Temp16 + 1) < ByteLength)
-
 
876
                {
-
 
877
                    if ((Temp16 > 0) && (!((Temp16+1) % 16)))
-
 
878
                    {
-
 
879
                        AcpiOsPrintf (" \\\n"); /* Line continuation */
-
 
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 ("\n");
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