def METHOD_NAME(self):
    ret = E.OK
    pn_list = []
    vendor_list = []
    status, out = run_command("dmidecode -t 17")
    if status != 0 or len(out) <= 0:
        self.fail_reason.append("dmidecode exec failed.")
        ret = E.EMEM4001
    else:
        for item in out.splitlines():
            self.logger.log_info(item)
            if ":" in item:
                key = item.split(":")[0].strip()
                value = item.split(":")[1].strip()
                if key == 'Part Number' and value != 'NO DIMM':
                    pn_list.append(value)
                if key == 'Manufacturer' and value != 'NO DIMM':
                    vendor_list.append(value)
        # memory bom check
        if self.memory_bom_list:
            memory_matched = False
            for memory_bom in self.memory_bom_list:
                if memory_bom["manufacturer"] in vendor_list and memory_bom["pn"] in pn_list:
                    memory_matched = True
                    break
            if not memory_matched:
                ret = E.EMEM4001
                self.fail_reason.append("memory not matched")
    return ret