static u32 vendor_flags;
 static struct debugfs_blob_wrapper vendor_blob;
+static struct debugfs_blob_wrapper vendor_errors;
 static char vendor_dev[64];
 
 /*
        return 0;
 }
 
+static void get_oem_vendor_struct(u64 paddr, int offset,
+                                 struct vendor_error_type_extension *v)
+{
+       unsigned long vendor_size;
+       u64 target_pa = paddr + offset + sizeof(struct vendor_error_type_extension);
+
+       vendor_size = v->length - sizeof(struct vendor_error_type_extension);
+
+       if (vendor_size)
+               vendor_errors.data = acpi_os_map_memory(target_pa, vendor_size);
+
+       if (vendor_errors.data)
+               vendor_errors.size = vendor_size;
+}
+
 static void check_vendor_extension(u64 paddr,
                                   struct set_error_type_with_address *v5param)
 {
        v = acpi_os_map_iomem(paddr + offset, sizeof(*v));
        if (!v)
                return;
+       get_oem_vendor_struct(paddr, offset, v);
        sbdf = v->pcie_sbdf;
        sprintf(vendor_dev, "%x:%x:%x.%x vendor_id=%x device_id=%x rev_id=%x\n",
                sbdf >> 24, (sbdf >> 16) & 0xff,
        { BIT(15), "CXL.mem Protocol Correctable" },
        { BIT(16), "CXL.mem Protocol Uncorrectable non-fatal" },
        { BIT(17), "CXL.mem Protocol Uncorrectable fatal" },
+       { BIT(31), "Vendor Defined Error Types" },
 };
 
 static int available_error_type_show(struct seq_file *m, void *v)
                                   einj_debug_dir, &vendor_flags);
        }
 
+       if (vendor_errors.size)
+               debugfs_create_blob("oem_error", 0600, einj_debug_dir,
+                                   &vendor_errors);
+
        pr_info("Error INJection is initialized.\n");
 
        return 0;
                        sizeof(struct einj_parameter);
 
                acpi_os_unmap_iomem(einj_param, size);
+               if (vendor_errors.size)
+                       acpi_os_unmap_memory(vendor_errors.data, vendor_errors.size);
        }
        einj_exec_ctx_init(&ctx);
        apei_exec_post_unmap_gars(&ctx);