]> git.proxmox.com Git - mirror_edk2.git/commitdiff
ShellPkg: Parse I/O APIC and x2APIC structure
authorAbdul Lateef Attar <AbdulLateef.Attar@amd.com>
Tue, 24 Aug 2021 15:30:13 +0000 (23:30 +0800)
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Thu, 21 Oct 2021 05:46:17 +0000 (05:46 +0000)
Parse and print the below interrupt structures
  - I/O APIC Structure
  - Interrupt Source Override Structure
  - Processor Local x2APIC Structure
  - Local x2APIC NMI Structure

Signed-off-by: Abdul Lateef Attar <AbdulLateef.Attar@amd.com>
Reviewed-by: Zhichao Gao <zhichao.gao@intel.com>
ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Madt/MadtParser.c

index 15aa2392b60cee9e3843c7c560b0ab84e0be4174..2ba8c9ae521ac84b8742e23f30682050f27743e9 100644 (file)
@@ -181,6 +181,57 @@ STATIC CONST ACPI_PARSER GicITSParser[] = {
   {L"Reserved", 4, 16, L"0x%x", NULL, NULL, NULL, NULL}\r
 };\r
 \r
+/**\r
+  An ACPI_PARSER array describing the IO APIC Structure.\r
+**/\r
+STATIC CONST ACPI_PARSER IoApic[] = {\r
+  {L"Type", 1, 0, L"0x%x", NULL, NULL, NULL, NULL},\r
+  {L"Length", 1, 1, L"%d", NULL, NULL, NULL, NULL},\r
+  {L"I/O APIC ID", 1, 2, L"0x%x", NULL, NULL, NULL, NULL},\r
+  {L"Reserved", 1, 3, L"0x%x", NULL, NULL, NULL, NULL},\r
+  {L"I/O APIC Address", 4, 4, L"0x%x", NULL, NULL, NULL, NULL},\r
+  {L"Global System Interrupt Base", 4, 8, L"0x%x", NULL, NULL, NULL, NULL}\r
+};\r
+\r
+/**\r
+  An ACPI_PARSER array describing the Interrupt Source Override Structure.\r
+**/\r
+STATIC CONST ACPI_PARSER InterruptSourceOverride[] = {\r
+  {L"Type", 1, 0, L"0x%x", NULL, NULL, NULL, NULL},\r
+  {L"Length", 1, 1, L"%d", NULL, NULL, NULL, NULL},\r
+  {L"Bus", 1, 2, L"0x%x", NULL, NULL, NULL, NULL},\r
+  {L"Source", 1, 3, L"0x%x", NULL, NULL, NULL, NULL},\r
+  {L"Global System Interrupt", 4, 4, L"0x%x", NULL, NULL, NULL, NULL},\r
+  {L"Flags", 2, 8, L"0x%x", NULL, NULL, NULL, NULL}\r
+};\r
+\r
+\r
+/**\r
+  An ACPI_PARSER array describing the Processor Local x2APIC Structure.\r
+**/\r
+STATIC CONST ACPI_PARSER ProcessorLocalX2Apic[] = {\r
+  {L"Type", 1, 0, L"0x%x", NULL, NULL, NULL, NULL},\r
+  {L"Length", 1, 1, L"%d", NULL, NULL, NULL, NULL},\r
+  {L"Reserved", 2, 2, L"0x%x", NULL, NULL, NULL, NULL},\r
+\r
+  {L"X2APIC ID", 4, 4, L"0x%x", NULL, NULL, NULL, NULL},\r
+  {L"Flags", 4, 8, L"0x%x", NULL, NULL, NULL, NULL},\r
+  {L"ACPI Processor UID", 4, 12, L"0x%x", NULL, NULL, NULL, NULL}\r
+};\r
+\r
+/**\r
+  An ACPI_PARSER array describing the Local x2APIC NMI Structure.\r
+**/\r
+STATIC CONST ACPI_PARSER LocalX2ApicNmi[] = {\r
+  {L"Type", 1, 0, L"0x%x", NULL, NULL, NULL, NULL},\r
+  {L"Length", 1, 1, L"%d", NULL, NULL, NULL, NULL},\r
+  {L"Flags", 2, 2, L"0x%x", NULL, NULL, NULL, NULL},\r
+\r
+  {L"ACPI Processor UID", 4, 4, L"0x%x", NULL, NULL, NULL, NULL},\r
+  {L"Local x2APIC LINT#", 1, 8, L"0x%x", NULL, NULL, NULL, NULL},\r
+  {L"Reserved", 3, 9, L"0x%x%x%x", Dump3Chars, NULL, NULL, NULL}\r
+};\r
+\r
 /**\r
   An ACPI_PARSER array describing the ACPI MADT Table.\r
 **/\r
@@ -357,6 +408,54 @@ ParseAcpiMadt (
         break;\r
       }\r
 \r
+      case EFI_ACPI_6_3_IO_APIC: {\r
+        ParseAcpi (\r
+          TRUE,\r
+          2,\r
+          "IO APIC",\r
+          InterruptContollerPtr,\r
+          *MadtInterruptControllerLength,\r
+          PARSER_PARAMS (IoApic)\r
+          );\r
+        break;\r
+      }\r
+\r
+      case EFI_ACPI_6_3_INTERRUPT_SOURCE_OVERRIDE: {\r
+        ParseAcpi (\r
+          TRUE,\r
+          2,\r
+          "INTERRUPT SOURCE OVERRIDE",\r
+          InterruptContollerPtr,\r
+          *MadtInterruptControllerLength,\r
+          PARSER_PARAMS (InterruptSourceOverride)\r
+          );\r
+        break;\r
+      }\r
+\r
+      case EFI_ACPI_6_3_PROCESSOR_LOCAL_X2APIC: {\r
+        ParseAcpi (\r
+          TRUE,\r
+          2,\r
+          "PROCESSOR LOCAL X2APIC",\r
+          InterruptContollerPtr,\r
+          *MadtInterruptControllerLength,\r
+          PARSER_PARAMS (ProcessorLocalX2Apic)\r
+          );\r
+        break;\r
+      }\r
+\r
+      case EFI_ACPI_6_3_LOCAL_X2APIC_NMI: {\r
+        ParseAcpi (\r
+          TRUE,\r
+          2,\r
+          "LOCAL x2APIC NMI",\r
+          InterruptContollerPtr,\r
+          *MadtInterruptControllerLength,\r
+          PARSER_PARAMS (LocalX2ApicNmi)\r
+          );\r
+        break;\r
+      }\r
+\r
       default: {\r
         IncrementErrorCount ();\r
         Print (\r