TianoCore EDK2 master
Loading...
Searching...
No Matches
HestParser.c
Go to the documentation of this file.
1
12#include <Library/UefiLib.h>
13
14#include "AcpiParser.h"
15#include "AcpiTableParser.h"
16#include "AcpiView.h"
17
19STATIC UINT32 *mHestErrorSourceCount;
20STATIC UINT16 *mHestErrorSourceType;
21STATIC UINT8 *mHestIA32HardwareBankCount;
22
28 L"Polled",
29 L"External Interrupt",
30 L"Local Interrupt",
31 L"SCI",
32 L"NMI",
33 L"CMCI",
34 L"MCE",
35 L"GPIO-Signal",
36 L"ARMv8 SEA",
37 L"ARMv8 SEI",
38 L"External Interrupt - GSIV",
39 L"Software Delegated Exception",
40};
41
46 PARSE_ACPI_HEADER (&mAcpiHdrInfo),
47 { L"Error Source Count", 4, 36, L"%d", NULL,
48 (VOID **)&mHestErrorSourceCount,NULL, NULL },
49 // Error Source Descriptor 1
50 // Error Source Descriptor Type
51 // Error Source Descriptor Data
52 // ...
53 // Error Source Descriptor 2
54 // Error Source Descriptor Type
55 // Error Source Descriptor Data
56 // ...
57 // ....
58 // Error Source Descriptor n
59 // Error Source Descriptor Type
60 // Error Source Descriptor Data
61 // ...
62};
63
68 { L"Type", 2, 0, L"%d", NULL, (VOID **)&mHestErrorSourceType, NULL, NULL },
69};
70
75 { L"Type", 1, 0, L"%d", NULL, NULL, NULL, NULL },
76 { L"Global", 1, 1, L"%d", NULL, NULL, NULL, NULL },
77 { L"GHES Assist", 1, 2, L"%d", NULL, NULL, NULL, NULL },
78 { L"Reserved", 5, 3, NULL, NULL, NULL, NULL, NULL }
79};
80
86 { L"Bank Number", 1, 0, L"%d", NULL, NULL, NULL, NULL },
87 { L"Clear Status On Initialization", 1, 1, L"%d", NULL, NULL, NULL, NULL },
88 { L"Status Data Format", 1, 2, L"%d", NULL, NULL, NULL, NULL },
89 { L"Reserved", 1, 3, NULL, NULL, NULL, NULL, NULL },
90 { L"Control Register MSR Address", 4, 4, L"0x%lx", NULL, NULL, NULL, NULL },
91 { L"Control Init Data", 8, 8, L"0x%llx", NULL, NULL, NULL, NULL },
92 { L"Status Register MSR Address", 4, 16, L"0x%lx", NULL, NULL, NULL, NULL },
93 { L"Address Register MSR Address", 4, 20, L"0x%lx", NULL, NULL, NULL, NULL },
94 { L"Misc Register MSR Address", 4, 24, L"0x%lx", NULL, NULL, NULL, NULL },
95};
96
103 { L"Type", 1, 0, L"%d", NULL, NULL, NULL, NULL },
104 { L"Poll Interval", 1, 1, L"%d", NULL, NULL, NULL, NULL },
105 { L"Switch To Polling Threshold Value", 1, 2, L"%d", NULL, NULL, NULL, NULL },
106 { L"Switch To Polling Threshold Window", 1, 3, L"%d", NULL, NULL, NULL, NULL },
107 { L"Error Threshold Value", 1, 4, L"%d", NULL, NULL, NULL, NULL },
108 { L"Error Threshold Window", 1, 5, L"%d", NULL, NULL, NULL, NULL },
109 { L"Reserved", 10, 6, L"0x%x", NULL, NULL, NULL, NULL },
110};
111
120STATIC
121VOID
122EFIAPI
124 IN UINT8 *Ptr,
125 IN UINT32 Length,
126 IN VOID *Context
127 )
128{
129 UINT8 Type;
130
131 Type = *(UINT8 *)Ptr;
132
133 if (Type >
134 EFI_ACPI_6_5_HARDWARE_ERROR_NOTIFICATION_SOFTWARE_DELEGATED_EXCEPTION)
135 {
137 Print (
138 L"\nERROR: Notification Structure Type must be <= 0x%x.",
139 EFI_ACPI_6_5_HARDWARE_ERROR_NOTIFICATION_SOFTWARE_DELEGATED_EXCEPTION
140 );
141 }
142}
143
151STATIC
152VOID
153EFIAPI
155 IN CONST CHAR16 *Format OPTIONAL,
156 IN UINT8 *Ptr,
157 IN UINT32 Length
158 )
159{
160 if (Format != NULL) {
161 Print (Format, *(UINT32 *)Ptr);
162 return;
163 }
164
165 Print (L"0x%x\n", *Ptr);
167 TRUE,
168 2,
169 NULL,
170 Ptr,
171 1,
173 );
174}
175
183STATIC
184VOID
185EFIAPI
187 IN CONST CHAR16 *Format OPTIONAL,
188 IN UINT8 *Ptr,
189 IN UINT32 Length
190 )
191{
192 if (Format != NULL) {
193 Print (Format, *Ptr);
194 return;
195 }
196
197 if (*Ptr <= EFI_ACPI_6_5_HARDWARE_ERROR_NOTIFICATION_SOFTWARE_DELEGATED_EXCEPTION) {
198 Print (L"%s(0x%x)", HestErrorNotificationStructureTypeStr[*Ptr]);
199 } else {
200 Print (L"UNKNOWN(0x%x)", HestErrorNotificationStructureTypeStr[*Ptr]);
201 }
202}
203
211STATIC
212VOID
213EFIAPI
215 IN CONST CHAR16 *Format OPTIONAL,
216 IN UINT8 *Ptr,
217 IN UINT32 Length
218 )
219{
220 if (Format != NULL) {
221 Print (Format, *(UINT32 *)Ptr);
222 return;
223 }
224
225 Print (L"0x%x\n", *Ptr);
227 TRUE,
228 2,
229 NULL,
230 Ptr,
231 1,
233 );
234}
235
242 { L"Length", 1, 1, L"%d", NULL, NULL, NULL, NULL },
243 { L"Configuration Write Enable", 2, 2, NULL, DumpErrorNotificationCwe, NULL, NULL, NULL },
244 { L"Pull Interval", 4, 4, L"%d ms", NULL, NULL, NULL, NULL },
245 { L"Vector", 4, 8, L"%d", NULL, NULL, NULL, NULL },
246 { L"Switch To Polling Threshold Value", 4, 12, L"%d", NULL, NULL, NULL, NULL },
247 { L"Switch To Polling Threshold Window", 4, 16, L"%d ms", NULL, NULL, NULL, NULL },
248 { L"Error Threshold Value", 4, 20, L"%d", NULL, NULL, NULL, NULL },
249 { L"Error Threshold Window", 4, 24, L"%d ms", NULL, NULL, NULL, NULL },
250};
251
261STATIC
262VOID
263EFIAPI
265 IN UINT8 *Ptr,
266 IN UINT32 Length,
267 IN VOID *Context
268 )
269{
270 if (*Ptr != 0x00) {
272 Print (L"\nERROR: bits[31:24] should must be zero...");
273 }
274}
275
280 { L"Bus", 8, 0, L"%d", NULL, NULL, NULL, NULL },
281 { L"Segment Number", 16, 8, L"%d", NULL, NULL, NULL, NULL },
282 { L"Reserved", 8, 24, L"0x%x", NULL, NULL, ValidatePciBusReservedBits, NULL },
283};
284
294STATIC
295VOID
296EFIAPI
298 IN UINT8 *Ptr,
299 IN UINT32 Length,
300 IN VOID *Context
301 )
302{
303 UINT8 SourceFlags;
304
305 SourceFlags = *(UINT8 *)Ptr;
306
307 if ((SourceFlags &
308 ~(EFI_ACPI_6_5_ERROR_SOURCE_FLAG_FIRMWARE_FIRST |
309 EFI_ACPI_6_5_ERROR_SOURCE_FLAG_GHES_ASSIST)) != 0)
310 {
312 Print (L"\nERROR: Invalid IA32 source flags field value...");
313 }
314
315 if (((SourceFlags & EFI_ACPI_6_5_ERROR_SOURCE_FLAG_FIRMWARE_FIRST) != 0) &&
316 ((SourceFlags & EFI_ACPI_6_5_ERROR_SOURCE_FLAG_GHES_ASSIST) != 0))
317 {
319 Print (L"\nERROR: GHES_ASSIST should be reserved if FIRMWARE_FIRST is set...");
320 }
321}
322
332STATIC
333VOID
334EFIAPI
336 IN UINT8 *Ptr,
337 IN UINT32 Length,
338 IN VOID *Context
339 )
340{
341 UINT8 SourceFlags;
342
343 SourceFlags = *(UINT8 *)Ptr;
344
345 if ((SourceFlags &
346 ~(EFI_ACPI_6_5_ERROR_SOURCE_FLAG_FIRMWARE_FIRST |
347 EFI_ACPI_6_5_ERROR_SOURCE_FLAG_GLOBAL)) != 0)
348 {
350 Print (L"\nERROR: Invalid PCI source flags field value...");
351 }
352}
353
363STATIC
364VOID
365EFIAPI
367 IN UINT8 *Ptr,
368 IN UINT32 Length,
369 IN VOID *Context
370 )
371{
372 UINT8 SourceFlags;
373
374 SourceFlags = *(UINT8 *)Ptr;
375
376 if (SourceFlags != 0) {
378 Print (L"\nERROR: Ghes'source flags should be reserved...");
379 }
380}
381
391STATIC
392VOID
393EFIAPI
395 IN UINT8 *Ptr,
396 IN UINT32 Length,
397 IN VOID *Context
398 )
399{
400 if (*(UINT8 *)Ptr > 1) {
402 Print (L"\nERROR: Invalid Enabled field value must be either 0 or 1.");
403 }
404}
405
416STATIC
417VOID
418EFIAPI
420 IN UINT8 *Ptr,
421 IN UINT32 Length,
422 IN VOID *Context
423 )
424{
425 UINT8 RecordCount;
426 BOOLEAN CheckRecordCount;
427
428 RecordCount = *Ptr;
429 CheckRecordCount = ((BOOLEAN)(UINTN)Context);
430
431 if ((CheckRecordCount) && (RecordCount == 0)) {
433 Print (L"\nERROR: Record count must be >= 1...");
434 }
435}
436
444STATIC
445VOID
446EFIAPI
448 IN CONST CHAR16 *Format OPTIONAL,
449 IN UINT8 *Ptr,
450 IN UINT32 Length
451 )
452{
453 UINT32 Offset;
454 UINT32 Size;
455
457 Print (L"\n");
458 Offset = ParseAcpi (
459 TRUE,
460 2,
461 NULL,
462 Ptr,
463 Size,
465 );
466 if (Offset != Size) {
468 Print (L"ERROR: Failed to parse Hardware Error Notification Structure!\n");
469 }
470}
471
479STATIC
480VOID
481EFIAPI
483 IN CONST CHAR16 *Format OPTIONAL,
484 IN UINT8 *Ptr,
485 IN UINT32 Length
486 )
487{
488 if (Format != NULL) {
489 Print (Format, *(UINT32 *)Ptr);
490 return;
491 }
492
493 Print (L"0x%x\n", *Ptr);
495 TRUE,
496 2,
497 NULL,
498 Ptr,
499 1,
501 );
502}
503
515STATIC
517EFIAPI
519 IN UINT8 *HestTable,
520 UINT32 AcpiTableLength,
521 UINT32 *Offset
522 )
523{
524 UINT8 Idx;
525 UINT8 *IA32BankStructPtr;
526 UINT32 TotalBankStructSize;
527
528 TotalBankStructSize = *mHestIA32HardwareBankCount *
530
531 if ((*Offset + TotalBankStructSize) > AcpiTableLength) {
533 Print (
534 L"ERROR: Not enough data for "
535 "IA-32 Architecture Machine Check Exception Error source.\n"
536 );
537 return EFI_INVALID_PARAMETER;
538 }
539
540 for (Idx = 0; Idx < *mHestIA32HardwareBankCount; Idx++) {
541 IA32BankStructPtr = HestTable + *Offset;
542 ParseAcpi (
543 TRUE,
544 4,
545 "IA-32 Architecture Machine Check Bank Structure",
546 IA32BankStructPtr,
549 );
550 *Offset +=
552 }
553
554 *mHestIA32HardwareBankCount = 0;
555
556 return EFI_SUCCESS;
557}
558
563#define PARSE_HEST_ERROR_SOURCE_COMMON_HEADER(FlagsValidateFunc, CheckRecordCount) \
564 { L"Type", 2, 0, L"%d", NULL, NULL, NULL, NULL }, \
565 { L"Source Id", 2, 2, L"%d", NULL, NULL, NULL, NULL }, \
566 { L"Reserved", 2, 4, NULL, NULL, NULL, NULL, NULL }, \
567 { L"Flags", 1, 6, NULL, DumpSourceFlags, NULL, \
568 FlagsValidateFunc, NULL }, \
569 { L"Enabled", 1, 7, L"%d", NULL, NULL, ValidateEnabledField, NULL }, \
570 { L"Number of Records to Pre-allocate", 4, 8, L"%d", NULL, NULL, \
571 ValidateRecordCount, (VOID *) ((UINTN) CheckRecordCount) }, \
572 { L"Max Sections Per Record", 4, 12, L"%d", NULL, NULL, \
573 ValidateRecordCount, (VOID *) ((UINTN) CheckRecordCount) }
574
579#define PARSE_HEST_PCI_ERROR_SOURCE_COMMON_HEADER() \
580 PARSE_HEST_ERROR_SOURCE_COMMON_HEADER(ValidatePciErrorSourceFlags, TRUE), \
581 { L"Bus", 4, 16, NULL, DumpPciBus, NULL, NULL, NULL }, \
582 { L"Device", 2, 20, L"%d", NULL, NULL, NULL, NULL }, \
583 { L"Function", 2, 22, L"%d", NULL, NULL, NULL, NULL }, \
584 { L"Device Control", 2, 24, L"%d", NULL, NULL, NULL, NULL }, \
585 { L"Reserved", 2, 26, NULL, NULL, NULL, NULL, NULL }, \
586 { L"Uncorrectable Error Mask", 4, 28, L"0x%lx", NULL, NULL, NULL, NULL }, \
587 { L"Uncorrectable Error Severity", 4, 32, L"%d", NULL, NULL, NULL, NULL }, \
588 { L"Correctable Error Mask", 4, 36, L"0x%lx", NULL, NULL, NULL, NULL }, \
589 { L"Advanced Error Capabilities and Control", 4, 40, L"%d", NULL, NULL, \
590 NULL, NULL }
591
596#define PARSE_HEST_GHES_ERROR_SOURCE() \
597 { L"Type", 2, 0, L"%d", NULL, NULL, NULL, NULL }, \
598 { L"Source Id", 2, 2, L"%d", NULL, NULL, NULL, NULL }, \
599 { L"Related Source Id", 2, 4, L"0x%x", NULL, NULL, NULL, NULL }, \
600 { L"Flags", 1, 6, L"0x%x", NULL, NULL, ValidateGhesSourceFlags, NULL }, \
601 { L"Enabled", 1, 7, L"%d", NULL, NULL, ValidateEnabledField, NULL }, \
602 { L"Number of Records to Pre-allocate", 4, 8, L"%d", NULL, NULL, \
603 ValidateRecordCount, (VOID *) ((UINTN) TRUE) }, \
604 { L"Max Sections Per Record", 4, 12, L"%d", NULL, NULL, \
605 ValidateRecordCount, (VOID *) ((UINTN) TRUE) }, \
606 { L"Max Raw Data Length", 4, 16, L"%d", NULL, NULL, NULL, NULL }, \
607 { L"Error Status Address", 12, 20, NULL, DumpGas, NULL, NULL, NULL }, \
608 { L"Notification Structure", 28, 32, NULL, DumpNotificationStructure, \
609 NULL, NULL, NULL }, \
610 { L"Error Status Block Length", 4, 60, L"%d", NULL, NULL, NULL, NULL }
611
619 { L"Global Capability Init Data",
620 8, 16, L"0x%llx", NULL, NULL, NULL, NULL },
621 { L"Global Control Init Data",
622 8, 24, L"0x%llx", NULL, NULL, NULL, NULL },
623 { L"Number of Hardware Banks",
624 1, 32, L"%d", NULL, (VOID **)&mHestIA32HardwareBankCount, NULL, NULL },
625 { L"Reserved",
626 7, 33, NULL, NULL, NULL, NULL, NULL },
629};
630
638 { L"Notification Structure",
640 { L"Number of Hardware Banks",
641 1, 44, L"%d", NULL, (VOID **)&mHestIA32HardwareBankCount, NULL, NULL },
642 { L"Reserved",
643 3, 45, NULL, NULL, NULL, NULL, NULL },
646};
647
654 { L"Type", 2, 0, L"%d", NULL, NULL, NULL, NULL },
655 { L"Source Id", 2, 2, L"%d", NULL, NULL, NULL, NULL },
656 { L"Reserved", 4, 4, NULL, NULL, NULL, NULL, NULL },
657 { L"Number of Records to Pre-allocate", 4, 8, L"%d", NULL, NULL,
658 ValidateRecordCount, (VOID *)((UINTN)TRUE) },
659 { L"Max Sections Per Record", 4, 12, L"%d", NULL, NULL,
660 ValidateRecordCount, (VOID *)((UINTN)TRUE) },
661 { L"Max Raw Data Length", 4, 16, L"%d", NULL, NULL, NULL, NULL },
662};
663
671 { L"Root Error Command",
672 4, 44,L"%d", NULL, NULL, NULL, NULL },
673};
674
682};
683
691 { L"Secondary Uncorrectable Error Mask",
692 4, 44, L"0x%lx", NULL, NULL, NULL, NULL },
693 { L"Secondary Uncorrectable Error Severity",
694 4, 48, L"%d", NULL, NULL, NULL, NULL },
695 { L"Secondary Advanced Error Capabilities and Control",
696 4, 52, L"%d", NULL, NULL, NULL, NULL },
697};
698
705};
706
713 { L"Read Ack Register", 12, 64, NULL, DumpGas, NULL, NULL, NULL },
714 { L"Read Ack Preserve", 8, 76, L"%llx", NULL, NULL, NULL, NULL },
715 { L"Read Ack Write", 8, 84, L"%llx", NULL, NULL, NULL, NULL },
716};
717
725 { L"Notification Structure", 28, 16, NULL, DumpNotificationStructure,
726 NULL, NULL, NULL },
727 { L"Number of Hardware Banks", 1, 44, L"%d", NULL,
728 (VOID **)&mHestIA32HardwareBankCount, NULL, NULL },
729 { L"Reserved", 3, 45, NULL, NULL, NULL,NULL, NULL },
732};
733
746VOID
747EFIAPI
749 IN BOOLEAN Trace,
750 IN UINT8 *Ptr,
751 IN UINT32 AcpiTableLength,
752 IN UINT8 AcpiTableRevision
753 )
754{
755 EFI_STATUS Status;
756 UINT32 Offset;
757 UINT8 *ErrorSourcePtr;
758 UINT32 ParsedErrorSourceCount;
759 UINT32 CurErrorSourceType;
760
761 if (Trace != TRUE) {
762 return;
763 }
764
765 Offset = ParseAcpi (
766 TRUE,
767 0,
768 "HEST",
769 Ptr,
770 AcpiTableLength,
772 );
773
774 // Validate Error Source Descriptors Count.
775 if (mHestErrorSourceCount == NULL) {
777 Print (L"ERROR: Invalid Hardware Error Source Table Header...\n");
778 return;
779 }
780
781 ParsedErrorSourceCount = 0;
782 CurErrorSourceType = EFI_ACPI_6_5_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION;
783
784 while ((Offset < AcpiTableLength) && (ParsedErrorSourceCount < *mHestErrorSourceCount)) {
785 ErrorSourcePtr = Ptr + Offset;
786
787 // Get Type of Error Source Descriptor.
788 ParseAcpi (
789 FALSE,
790 0,
791 NULL,
792 ErrorSourcePtr,
793 AcpiTableLength - Offset,
795 );
796
797 // Validate Error Source Descriptors Type.
798 if (mHestErrorSourceType == NULL) {
800 Print (L"ERROR: Invalid Error Source Structure...\n");
801 return;
802 }
803
804 if (CurErrorSourceType > *mHestErrorSourceType) {
806 Print (L"ERROR: Error Source Structure must be sorted in Type with ascending order...\n");
807 return;
808 }
809
810 switch (*mHestErrorSourceType) {
811 case EFI_ACPI_6_5_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION:
812 ParseAcpi (
813 TRUE,
814 2,
815 "IA-32 Architecture Machine Check Exception",
816 ErrorSourcePtr,
819 );
820
821 Offset +=
823
825 Ptr,
826 AcpiTableLength,
827 &Offset
828 );
829 if (EFI_ERROR (Status)) {
830 return;
831 }
832
833 break;
834 case EFI_ACPI_6_5_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK:
835 ParseAcpi (
836 TRUE,
837 2,
838 "IA-32 Architecture Corrected Machine Check",
839 ErrorSourcePtr,
842 );
843
844 Offset +=
846
848 Ptr,
849 AcpiTableLength,
850 &Offset
851 );
852 if (EFI_ERROR (Status)) {
853 return;
854 }
855
856 break;
857 case EFI_ACPI_6_5_IA32_ARCHITECTURE_NMI_ERROR:
858 ParseAcpi (
859 TRUE,
860 2,
861 "IA-32 Architecture Non-Maskable Interrupt",
862 ErrorSourcePtr,
865 );
866
867 Offset +=
869 break;
870 case EFI_ACPI_6_5_PCI_EXPRESS_ROOT_PORT_AER:
871 ParseAcpi (
872 TRUE,
873 2,
874 "PCI Express RootPort AER Structure",
875 ErrorSourcePtr,
878 );
879
881 break;
882 case EFI_ACPI_6_5_PCI_EXPRESS_DEVICE_AER:
883 ParseAcpi (
884 TRUE,
885 2,
886 "PCI Express Device AER Structure",
887 ErrorSourcePtr,
890 );
891
893 break;
894 case EFI_ACPI_6_5_PCI_EXPRESS_BRIDGE_AER:
895 ParseAcpi (
896 TRUE,
897 2,
898 "PCI Express Bridge AER Structure",
899 ErrorSourcePtr,
902 );
903
905 break;
906 case EFI_ACPI_6_5_GENERIC_HARDWARE_ERROR:
907 ParseAcpi (
908 TRUE,
909 2,
910 "Generic Hardware Error Source Structure",
911 ErrorSourcePtr,
914 );
915
917 break;
918 case EFI_ACPI_6_5_GENERIC_HARDWARE_ERROR_VERSION_2:
919 ParseAcpi (
920 TRUE,
921 2,
922 "Generic Hardware Error Source V2 Structure",
923 ErrorSourcePtr,
924 sizeof (
926 ),
928 );
929
930 Offset +=
931 sizeof (
933 );
934 break;
935 case EFI_ACPI_6_5_IA32_ARCHITECTURE_DEFERRED_MACHINE_CHECK:
936 ParseAcpi (
937 TRUE,
938 2,
939 "IA-32 Architecture Deferred Machine Check",
940 ErrorSourcePtr,
943 );
944
945 Offset +=
947
949 Ptr,
950 AcpiTableLength,
951 &Offset
952 );
953 if (EFI_ERROR (Status)) {
954 return;
955 }
956
957 break;
958 default:
960 Print (L"ERROR: Invalid Error Source Descriptor Type(%d).\n", *mHestErrorSourceType);
961 return;
962 } // switch
963
964 ParsedErrorSourceCount++;
965 } // while
966
967 if (ParsedErrorSourceCount < *mHestErrorSourceCount) {
969 Print (
970 L"ERROR: Invalid Error Source Count... Real:%d, ErrorSourceCount:%d\n",
971 ParsedErrorSourceCount,
972 *mHestErrorSourceCount
973 );
974 return;
975 }
976
977 if (Offset < AcpiTableLength) {
979 Print (L"ERROR: Invalid Error Source Count, There's more data...\n");
980 return;
981 }
982}
UINT64 UINTN
VOID EFIAPI DumpGas(IN CONST CHAR16 *Format OPTIONAL, IN UINT8 *Ptr, IN UINT32 Length)
Definition: AcpiParser.c:867
VOID EFIAPI IncrementErrorCount(VOID)
Definition: AcpiParser.c:83
UINT32 EFIAPI ParseAcpi(IN BOOLEAN Trace, IN UINT32 Indent, IN CONST CHAR8 *AsciiName OPTIONAL, IN UINT8 *Ptr, IN UINT32 Length, IN CONST ACPI_PARSER *Parser, IN UINT32 ParserItems)
Definition: AcpiParser.c:683
UINT32 EFIAPI ParseAcpiBitFields(IN BOOLEAN Trace, IN UINT32 Indent, IN CONST CHAR8 *AsciiName OPTIONAL, IN UINT8 *Ptr, IN UINT32 Length, IN CONST ACPI_PARSER *Parser, IN UINT32 ParserItems)
Definition: AcpiParser.c:968
#define PARSER_PARAMS(Parser)
Definition: AcpiParser.h:494
#define PARSE_ACPI_HEADER(Info)
Definition: AcpiParser.h:501
STATIC CONST ACPI_PARSER HestErrorSourcePciCommonBusParser[]
Definition: HestParser.c:279
#define PARSE_HEST_GHES_ERROR_SOURCE()
Definition: HestParser.c:596
STATIC CONST ACPI_PARSER HestErrorNotificationParser[]
Definition: HestParser.c:240
#define PARSE_HEST_ERROR_SOURCE_COMMON_HEADER(FlagsValidateFunc, CheckRecordCount)
Definition: HestParser.c:563
STATIC CONST ACPI_PARSER HestErrorSourcePciExpressBridgeAerParser[]
Definition: HestParser.c:689
STATIC CONST ACPI_PARSER HestErrorNotificationCweParser[]
Definition: HestParser.c:102
STATIC CONST ACPI_PARSER HestParser[]
Definition: HestParser.c:45
STATIC VOID EFIAPI ValidateGhesSourceFlags(IN UINT8 *Ptr, IN UINT32 Length, IN VOID *Context)
Definition: HestParser.c:366
STATIC VOID EFIAPI ValidatePciErrorSourceFlags(IN UINT8 *Ptr, IN UINT32 Length, IN VOID *Context)
Definition: HestParser.c:335
STATIC CONST ACPI_PARSER HestErrorSourceTypeParser[]
Definition: HestParser.c:67
STATIC CONST ACPI_PARSER HestErrorSourcePciExpressRootPortAerParser[]
Definition: HestParser.c:669
STATIC VOID EFIAPI DumpErrorNotificationCwe(IN CONST CHAR16 *Format OPTIONAL, IN UINT8 *Ptr, IN UINT32 Length)
Definition: HestParser.c:214
STATIC CONST ACPI_PARSER HestErrorSourcePciExpressDeviceAerParser[]
Definition: HestParser.c:680
STATIC VOID EFIAPI DumpPciBus(IN CONST CHAR16 *Format OPTIONAL, IN UINT8 *Ptr, IN UINT32 Length)
Definition: HestParser.c:482
STATIC CONST ACPI_PARSER HestErrorSourceIA32ArchDeferredMachineCheckParser[]
Definition: HestParser.c:723
STATIC CONST CHAR16 * HestErrorNotificationStructureTypeStr[]
Definition: HestParser.c:27
#define PARSE_HEST_PCI_ERROR_SOURCE_COMMON_HEADER()
Definition: HestParser.c:579
STATIC VOID EFIAPI DumpSourceFlags(IN CONST CHAR16 *Format OPTIONAL, IN UINT8 *Ptr, IN UINT32 Length)
Definition: HestParser.c:154
STATIC CONST ACPI_PARSER HestErrorIA32ArchMachineCheckBankStructureParser[]
Definition: HestParser.c:85
STATIC VOID EFIAPI ValidateIA32ErrorSourceFlags(IN UINT8 *Ptr, IN UINT32 Length, IN VOID *Context)
Definition: HestParser.c:297
STATIC CONST ACPI_PARSER HestErrorSourceIA32ArchNonMaskableInterruptParser[]
Definition: HestParser.c:653
STATIC CONST ACPI_PARSER HestErrorSourceGhesv2Parser[]
Definition: HestParser.c:711
STATIC CONST ACPI_PARSER HestErrorSourceIA32ArchCorrectedMachineCheckParser[]
Definition: HestParser.c:636
STATIC CONST ACPI_PARSER HestErrorSourceFlags[]
Definition: HestParser.c:74
STATIC CONST ACPI_PARSER HestErrorSourceGhesParser[]
Definition: HestParser.c:703
STATIC VOID EFIAPI ValidateEnabledField(IN UINT8 *Ptr, IN UINT32 Length, IN VOID *Context)
Definition: HestParser.c:394
STATIC EFI_STATUS EFIAPI DumpIA32ArchMachineCheckErrorBankStructure(IN UINT8 *HestTable, UINT32 AcpiTableLength, UINT32 *Offset)
Definition: HestParser.c:518
VOID EFIAPI ParseAcpiHest(IN BOOLEAN Trace, IN UINT8 *Ptr, IN UINT32 AcpiTableLength, IN UINT8 AcpiTableRevision)
Definition: HestParser.c:748
STATIC VOID EFIAPI ValidateErrorNotificationType(IN UINT8 *Ptr, IN UINT32 Length, IN VOID *Context)
Definition: HestParser.c:123
STATIC VOID EFIAPI ValidatePciBusReservedBits(IN UINT8 *Ptr, IN UINT32 Length, IN VOID *Context)
Definition: HestParser.c:264
STATIC VOID EFIAPI DumpNotificationStructure(IN CONST CHAR16 *Format OPTIONAL, IN UINT8 *Ptr, IN UINT32 Length)
Definition: HestParser.c:447
STATIC VOID EFIAPI ValidateRecordCount(IN UINT8 *Ptr, IN UINT32 Length, IN VOID *Context)
Definition: HestParser.c:419
STATIC CONST ACPI_PARSER HestErrorSourceIA32ArchMachineCheckExceptionParser[]
Definition: HestParser.c:617
STATIC VOID EFIAPI DumpErrorNotificationType(IN CONST CHAR16 *Format OPTIONAL, IN UINT8 *Ptr, IN UINT32 Length)
Definition: HestParser.c:186
#define NULL
Definition: Base.h:319
#define CONST
Definition: Base.h:259
#define STATIC
Definition: Base.h:264
#define TRUE
Definition: Base.h:301
#define FALSE
Definition: Base.h:307
#define IN
Definition: Base.h:279
RETURN_STATUS EFI_STATUS
Definition: UefiBaseType.h:29
#define EFI_SUCCESS
Definition: UefiBaseType.h:112
UINTN EFIAPI Print(IN CONST CHAR16 *Format,...)
Definition: UefiLibPrint.c:113