diff --git a/generator/sections/gen-section-cxl-protocol.c b/generator/sections/gen-section-cxl-protocol.c
index 64326f9..85457ce 100644
--- a/generator/sections/gen-section-cxl-protocol.c
+++ b/generator/sections/gen-section-cxl-protocol.c
@@ -45,6 +45,13 @@
     reserved = (UINT32*)(bytes + 112);
     *reserved = 0; //Reserved bytes 112-115.
 
+    //If the device is a host downstream port, serial/capability structure is invalid.
+    if (cxl_agent_type != 0)
+    {
+        for (int i=0; i<68; i++)
+            *(bytes + 40 + i) = 0; //Device serial & capability structure.
+    }
+
     //Set expected values.
     UINT16* dvsec_length_field = (UINT16*)(bytes + 108);
     UINT16* error_log_len_field = (UINT16*)(bytes + 110);
diff --git a/generator/sections/gen-section-dmar.c b/generator/sections/gen-section-dmar.c
index d0bbb5e..cb732cc 100644
--- a/generator/sections/gen-section-dmar.c
+++ b/generator/sections/gen-section-dmar.c
@@ -44,6 +44,12 @@
     //Set reserved areas to zero.
     for (int i=0; i<12; i++)
         *(bytes + 36 + i) = 0; //Reserved bytes 36-47.
+    UINT8* fault_record = bytes + 48;
+    UINT32* reserved = (UINT32*)(fault_record);
+    *reserved &= ~0xFFF; //First 12 bits of fault record.
+    reserved = (UINT32*)(fault_record + 10);
+    *reserved &= ~0x1FFF; //Bits 80-92 of fault record.
+    *(fault_record + 15) &= 0x7; //Very last bit of fault record.
 
     //Set return values, exit.
     *location = bytes;
@@ -60,7 +66,7 @@
     
     //Set reserved areas to zero.
     for (int i=0; i<7; i++)
-        *(bytes + 1 + i) + 0; //Reserved bytes 1 to 7.
+        *(bytes + 1 + i) = 0; //Reserved bytes 1 to 7.
     UINT64* reserved = (UINT64*)(bytes + 24);
     *reserved = 0; //Reserved bytes 24-31.
     for (int i=0; i<16; i++)
diff --git a/generator/sections/gen-section-firmware.c b/generator/sections/gen-section-firmware.c
index 09c47ff..5b39fa1 100644
--- a/generator/sections/gen-section-firmware.c
+++ b/generator/sections/gen-section-firmware.c
@@ -18,8 +18,8 @@
     UINT8* bytes = generate_random_bytes(size);
     
     //Set reserved areas to zero.
-    for (int i=0; i<7; i++)
-        *(bytes + 2 + i) = 0; //Reserved bytes 2-9.
+    for (int i=0; i<6; i++)
+        *(bytes + 2 + i) = 0; //Reserved bytes 2-7.
 
     //Set expected values.
     *(bytes + 1) = 2; //Revision, referenced version of spec is 2.
diff --git a/generator/sections/gen-section-pci-bus.c b/generator/sections/gen-section-pci-bus.c
index 9afd9ad..cbe5b81 100644
--- a/generator/sections/gen-section-pci-bus.c
+++ b/generator/sections/gen-section-pci-bus.c
@@ -14,7 +14,7 @@
 size_t generate_section_pci_bus(void** location)
 {
     //Create random bytes.
-    int size = 208;
+    int size = 72;
     UINT8* bytes = generate_random_bytes(size);
     
     //Set reserved areas to zero.
diff --git a/sections/cper-section-ccix-per.c b/sections/cper-section-ccix-per.c
index 072c5d2..d295017 100644
--- a/sections/cper-section-ccix-per.c
+++ b/sections/cper-section-ccix-per.c
@@ -32,7 +32,7 @@
     //CCIX PER Log.
     //This is formatted as described in Section 7.3.2 of CCIX Base Specification (Rev 1.0).
     unsigned char* cur_pos = (unsigned char*)(ccix_error + 1);
-    int remaining_length = ccix_error->Length - sizeof(ccix_error);
+    int remaining_length = ccix_error->Length - sizeof(EFI_CCIX_PER_LOG_DATA);
     if (remaining_length > 0)
     {
         char* encoded = b64_encode(cur_pos, remaining_length);
@@ -67,7 +67,7 @@
     //Write CCIX PER log itself to stream.
     json_object* encoded = json_object_object_get(section, "ccixPERLog");
     UINT8* decoded = b64_decode(json_object_get_string(encoded), json_object_get_string_len(encoded));
-    fwrite(decoded, section_cper->Length - sizeof(section_cper), 1, out);
+    fwrite(decoded, section_cper->Length - sizeof(EFI_CCIX_PER_LOG_DATA), 1, out);
     fflush(out);
 
     //Free resources.
diff --git a/sections/cper-section-ccix-per.h b/sections/cper-section-ccix-per.h
index 0fbefe5..f74f952 100644
--- a/sections/cper-section-ccix-per.h
+++ b/sections/cper-section-ccix-per.h
@@ -15,7 +15,7 @@
     UINT8 CcixSourceId;
     UINT8 CcixPortId;
     UINT16 Reserved;
-} EFI_CCIX_PER_LOG_DATA;
+} __attribute__((packed, aligned(1))) EFI_CCIX_PER_LOG_DATA;
 
 json_object* cper_section_ccix_per_to_ir(void* section, EFI_ERROR_SECTION_DESCRIPTOR* descriptor);
 void ir_section_ccix_per_to_cper(json_object* section, FILE* out);
diff --git a/sections/cper-section-cxl-component.c b/sections/cper-section-cxl-component.c
index 934a1cf..15454a2 100644
--- a/sections/cper-section-cxl-component.c
+++ b/sections/cper-section-cxl-component.c
@@ -90,8 +90,9 @@
     fflush(out);
 
     //CXL component event log, decoded from base64.
-    json_object* encoded = json_object_object_get(section, "cxlComponentEventLog");
-    int log_length = section_cper->Length - sizeof(section_cper);
+    json_object* event_log = json_object_object_get(section, "cxlComponentEventLog");
+    json_object* encoded = json_object_object_get(event_log, "data");
+    int log_length = section_cper->Length - sizeof(EFI_CXL_COMPONENT_EVENT_HEADER);
     char* decoded = b64_decode(json_object_get_string(encoded), json_object_get_string_len(encoded));
     fwrite(decoded, log_length, 1, out);
     fflush(out);
diff --git a/sections/cper-section-cxl-component.h b/sections/cper-section-cxl-component.h
index e9cbfd5..e0a585e 100644
--- a/sections/cper-section-cxl-component.h
+++ b/sections/cper-section-cxl-component.h
@@ -20,14 +20,14 @@
   UINT64 Resv1 : 3;
   UINT64 SlotNumber : 13;
   UINT64 Resv2 : 8;
-} EFI_CXL_DEVICE_ID_INFO;
+} __attribute__((packed, aligned(1))) EFI_CXL_DEVICE_ID_INFO;
 
 typedef struct {
     UINT32 Length;
     UINT64 ValidBits;
     EFI_CXL_DEVICE_ID_INFO DeviceId;
     UINT64 DeviceSerial;
-} EFI_CXL_COMPONENT_EVENT_HEADER;
+} __attribute__((packed, aligned(1))) EFI_CXL_COMPONENT_EVENT_HEADER;
 
 json_object* cper_section_cxl_component_to_ir(void* section, EFI_ERROR_SECTION_DESCRIPTOR* descriptor);
 void ir_section_cxl_component_to_cper(json_object* section, FILE* out);
diff --git a/sections/cper-section-cxl-protocol.c b/sections/cper-section-cxl-protocol.c
index f9b0550..b3334a3 100644
--- a/sections/cper-section-cxl-protocol.c
+++ b/sections/cper-section-cxl-protocol.c
@@ -107,7 +107,7 @@
 {
     EFI_CXL_PROTOCOL_ERROR_DATA* section_cper =
         (EFI_CXL_PROTOCOL_ERROR_DATA*)calloc(1, sizeof(EFI_CXL_PROTOCOL_ERROR_DATA));
-
+        
     //Validation bits.
     section_cper->ValidBits = ir_to_bitfield(json_object_object_get(section, "validationBits"), 
         7, CXL_PROTOCOL_ERROR_VALID_BITFIELD_NAMES);
diff --git a/sections/cper-section-cxl-protocol.h b/sections/cper-section-cxl-protocol.h
index 33b45d9..a64b83e 100644
--- a/sections/cper-section-cxl-protocol.h
+++ b/sections/cper-section-cxl-protocol.h
@@ -48,7 +48,7 @@
     UINT16 CxlDvsecLength;
     UINT16 CxlErrorLogLength;
     UINT32 Reserved;
-} EFI_CXL_PROTOCOL_ERROR_DATA;
+} __attribute__((packed, aligned(1))) EFI_CXL_PROTOCOL_ERROR_DATA;
 
 json_object* cper_section_cxl_protocol_to_ir(void* section, EFI_ERROR_SECTION_DESCRIPTOR* descriptor);
 void ir_section_cxl_protocol_to_cper(json_object* section, FILE* out);
diff --git a/sections/cper-section-dmar-generic.c b/sections/cper-section-dmar-generic.c
index 58e002c..faeefa8 100644
--- a/sections/cper-section-dmar-generic.c
+++ b/sections/cper-section-dmar-generic.c
@@ -67,7 +67,7 @@
     section_cper->FaultReason = (UINT8)readable_pair_to_integer(json_object_object_get(section, "faultReason"));
     section_cper->AccessType = (UINT8)readable_pair_to_integer(json_object_object_get(section, "accessType"));
     section_cper->AddressType = (UINT8)readable_pair_to_integer(json_object_object_get(section, "addressType"));
-    section_cper->ArchType = (UINT8)readable_pair_to_integer(json_object_object_get(section, "archType"));
+    section_cper->ArchType = (UINT8)readable_pair_to_integer(json_object_object_get(section, "architectureType"));
     section_cper->DeviceAddr = json_object_get_uint64(json_object_object_get(section, "deviceAddress"));
 
     //Write to stream, free resources.
diff --git a/sections/cper-section-dmar-vtd.c b/sections/cper-section-dmar-vtd.c
index b57d1ba..cfaace7 100644
--- a/sections/cper-section-dmar-vtd.c
+++ b/sections/cper-section-dmar-vtd.c
@@ -19,7 +19,9 @@
     json_object* section_ir = json_object_new_object();
 
     //Version, revision and OEM ID, as defined in the VT-d architecture.
-    UINT64 oem_id = (vtd_error->OemId[0] << 16) + (vtd_error->OemId[1] << 8) + vtd_error->OemId[2];
+    UINT64 oem_id = 0;
+    for (int i=0; i<6; i++)
+        oem_id |= (UINT64)vtd_error->OemId[i] << (i * 8);
     json_object_object_add(section_ir, "version", json_object_new_int(vtd_error->Version));
     json_object_object_add(section_ir, "revision", json_object_new_int(vtd_error->Revision));
     json_object_object_add(section_ir, "oemID", json_object_new_uint64(oem_id));
@@ -82,15 +84,17 @@
 
     //OEM ID.
     UINT64 oem_id = json_object_get_uint64(json_object_object_get(section, "oemID"));
-    section_cper->OemId[0] = oem_id >> 16;
-    section_cper->OemId[1] = (oem_id >> 8) & 0xFF;
-    section_cper->OemId[1] = oem_id & 0xFF;
+    for (int i=0; i<6; i++)
+        section_cper->OemId[i] = (oem_id >> (i * 8)) & 0xFF;
 
     //Registers & basic numeric fields.
     section_cper->Version = (UINT8)json_object_get_int(json_object_object_get(section, "version"));
     section_cper->Revision = (UINT8)json_object_get_int(json_object_object_get(section, "revision"));
     section_cper->Capability = json_object_get_uint64(json_object_object_get(section, "capabilityRegister"));
     section_cper->CapabilityEx = json_object_get_uint64(json_object_object_get(section, "extendedCapabilityRegister"));
+    section_cper->GlobalCommand = json_object_get_uint64(json_object_object_get(section, "globalCommandRegister"));
+    section_cper->GlobalStatus = json_object_get_uint64(json_object_object_get(section, "globalStatusRegister"));
+    section_cper->FaultStatus = json_object_get_uint64(json_object_object_get(section, "faultStatusRegister"));
 
     //Fault record.
     json_object* fault_record = json_object_object_get(section, "faultRecord");
diff --git a/sections/cper-section-firmware.c b/sections/cper-section-firmware.c
index c7c91f5..5e17e90 100644
--- a/sections/cper-section-firmware.c
+++ b/sections/cper-section-firmware.c
@@ -44,7 +44,7 @@
     //Record fields.
     section_cper->ErrorType = readable_pair_to_integer(json_object_object_get(section, "errorRecordType"));
     section_cper->Revision = json_object_get_int(json_object_object_get(section, "revision"));
-    section_cper->RecordId = json_object_get_uint64(json_object_object_get(section, "revision"));
+    section_cper->RecordId = json_object_get_uint64(json_object_object_get(section, "recordID"));
     string_to_guid(&section_cper->RecordIdGuid, 
         json_object_get_string(json_object_object_get(section, "recordIDGUID")));
 
diff --git a/sections/cper-section-pci-bus.c b/sections/cper-section-pci-bus.c
index 0b0c297..0065192 100644
--- a/sections/cper-section-pci-bus.c
+++ b/sections/cper-section-pci-bus.c
@@ -5,6 +5,7 @@
  * Author: Lawrence.Tang@arm.com
  **/
 #include <stdio.h>
+#include <string.h>
 #include "json.h"
 #include "../edk/Cper.h"
 #include "../cper-utils.h"
@@ -70,12 +71,14 @@
     section_cper->BusId = bus_number + (segment_number << 8);
 
     //Remaining fields.
+    UINT64 pcix_command = (UINT64)0x1 << 56;
+    const char* bus_command = json_object_get_string(json_object_object_get(section, "busCommandType"));
     section_cper->Type = (UINT16)readable_pair_to_integer(json_object_object_get(section, "errorType"));
     section_cper->BusAddress = json_object_get_uint64(json_object_object_get(section, "busAddress"));
     section_cper->BusData = json_object_get_uint64(json_object_object_get(section, "busData"));
-    section_cper->BusCommand = json_object_get_string(json_object_object_get(section, "busCommand")) == "PCI" ? 0 : 1;
-    section_cper->RequestorId = json_object_get_uint64(json_object_object_get(section, "requestorID"));
-    section_cper->ResponderId = json_object_get_uint64(json_object_object_get(section, "responderID"));
+    section_cper->BusCommand = strcmp(bus_command, "PCI") == 0 ? 0 : pcix_command;
+    section_cper->RequestorId = json_object_get_uint64(json_object_object_get(section, "busRequestorID"));
+    section_cper->ResponderId = json_object_get_uint64(json_object_object_get(section, "busCompleterID"));
     section_cper->TargetId = json_object_get_uint64(json_object_object_get(section, "targetID"));
 
     //Write to stream, free resources.
diff --git a/sections/cper-section-pci-dev.c b/sections/cper-section-pci-dev.c
index cac363d..cae0c2b 100644
--- a/sections/cper-section-pci-dev.c
+++ b/sections/cper-section-pci-dev.c
@@ -88,7 +88,7 @@
     section_cper->IoNumber = (UINT32)json_object_get_uint64(json_object_object_get(section, "ioNumber"));
 
     //Write header out to stream, free it.
-    fwrite(&section_cper, sizeof(section_cper), 1, out);
+    fwrite(section_cper, sizeof(EFI_PCI_PCIX_DEVICE_ERROR_DATA), 1, out);
     fflush(out);
     free(section_cper);
 
