Add support for IOMMU/VT-d specific sections.
diff --git a/cper-parse.c b/cper-parse.c
index c357c7d..6c743a1 100644
--- a/cper-parse.c
+++ b/cper-parse.c
@@ -19,6 +19,8 @@
 #include "sections/cper-section-pci-dev.h"
 #include "sections/cper-section-firmware.h"
 #include "sections/cper-section-dmar-generic.h"
+#include "sections/cper-section-dmar-vtd.h"
+#include "sections/cper-section-dmar-iommu.h"
 
 //Private pre-definitions.
 json_object* cper_header_to_ir(EFI_COMMON_ERROR_RECORD_HEADER* header);
@@ -303,6 +305,7 @@
             descriptor->SectionOffset);
     }
 
+    //Parse section to IR based on GUID.
     json_object* result = NULL;
     if (guid_equal(&descriptor->SectionType, &gEfiProcessorGenericErrorSectionGuid))
         result = cper_section_generic_to_ir(section, descriptor);
@@ -326,10 +329,15 @@
         result = cper_section_pci_dev_to_ir(section, descriptor);
     else if (guid_equal(&descriptor->SectionType, &gEfiDMArGenericErrorSectionGuid))
         result = cper_section_dmar_generic_to_ir(section, descriptor);
-    // if (guid_equal(&descriptor->SectionType, &gEfiDirectedIoDMArErrorSectionGuid))
-    //     result = cper_section_intel_io_dma_to_ir(section);
-    // if (guid_equal(&descriptor->SectionType, &gEfiIommuDMArErrorSectionGuid))
-    //     result = cper_section_iommu_dma_to_ir(section);
+    else if (guid_equal(&descriptor->SectionType, &gEfiDirectedIoDMArErrorSectionGuid))
+        result = cper_section_dmar_vtd_to_ir(section, descriptor);
+    else if (guid_equal(&descriptor->SectionType, &gEfiIommuDMArErrorSectionGuid))
+        result = cper_section_dmar_iommu_to_ir(section, descriptor);
+    else
+    {
+        //Failed read, unknown GUID.
+        //todo: dump the binary data out to b64.
+    }
 
     //Free section memory, return result.
     free(section);