Lines Matching full:fmp
107 struct cper_sec_fru_mem_poison fmp; member
184 if (rec->fmp.fru_id == fru_id) in get_fru_record()
200 static u32 do_fmp_checksum(struct cper_sec_fru_mem_poison *fmp, u32 len) in do_fmp_checksum() argument
206 buf = (u8 *)fmp + sizeof(u32); in do_fmp_checksum()
224 checksum = do_fmp_checksum(&rec->fmp, len); in update_record_on_storage()
227 rec->fmp.checksum = -checksum; in update_record_on_storage()
233 pr_warn("Storage update failed for FRU 0x%016llx\n", rec->fmp.fru_id); in update_record_on_storage()
244 if (!(rec->fmp.validation_bits & FMP_VALID_LIST_ENTRIES)) in rec_has_valid_entries()
247 if (!(rec->fmp.validation_bits & FMP_VALID_LIST)) in rec_has_valid_entries()
287 for (i = 0; i < rec->fmp.nr_entries; i++) { in rec_has_fpd()
349 struct cper_sec_fru_mem_poison *fmp = &rec->fmp; in update_fru_record() local
371 if (rec->fmp.nr_entries >= max_nr_entries) { in update_fru_record()
372 pr_warn("Exceeded number of entries for FRU 0x%016llx\n", rec->fmp.fru_id); in update_fru_record()
376 entry = fmp->nr_entries; in update_fru_record()
383 fmp->nr_entries = entry + 1; in update_fru_record()
384 fmp->validation_bits |= FMP_VALID_LIST_ENTRIES; in update_fru_record()
385 fmp->validation_bits |= FMP_VALID_LIST; in update_fru_record()
387 pr_debug("Updated FRU 0x%016llx entry #%u\n", fmp->fru_id, entry); in update_fru_record()
438 struct cper_sec_fru_mem_poison *fmp = &rec->fmp; in retire_mem_fmp() local
441 for (i = 0; i < fmp->nr_entries; i++) { in retire_mem_fmp()
453 if (topology_ppin(cpu) == fmp->fru_id) { in retire_mem_fmp()
566 struct cper_sec_fru_mem_poison *fmp = &rec->fmp; in fmp_is_usable() local
569 pr_debug("Validation bits: 0x%016llx\n", fmp->validation_bits); in fmp_is_usable()
571 if (!(fmp->validation_bits & FMP_VALID_ARCH_TYPE)) { in fmp_is_usable()
576 if (fmp->fru_arch_type != FMP_ARCH_TYPE_X86_CPUID_1_EAX) { in fmp_is_usable()
581 if (!(fmp->validation_bits & FMP_VALID_ARCH)) { in fmp_is_usable()
587 if (fmp->fru_arch != cpuid) { in fmp_is_usable()
589 fmp->fru_arch, cpuid); in fmp_is_usable()
593 if (!(fmp->validation_bits & FMP_VALID_ID_TYPE)) { in fmp_is_usable()
598 if (fmp->fru_id_type != FMP_ID_TYPE_X86_PPIN) { in fmp_is_usable()
603 if (!(fmp->validation_bits & FMP_VALID_ID)) { in fmp_is_usable()
613 struct cper_sec_fru_mem_poison *fmp = &rec->fmp; in fmp_is_valid() local
618 pr_debug("fmp length is too small\n"); in fmp_is_valid()
623 checksum = do_fmp_checksum(fmp, len) + fmp->checksum; in fmp_is_valid()
625 pr_debug("fmp checksum failed: sum = 0x%x\n", checksum); in fmp_is_valid()
626 print_hex_dump_debug("fmp record: ", DUMP_PREFIX_NONE, 16, 1, fmp, len, false); in fmp_is_valid()
645 new = get_fru_record(old->fmp.fru_id); in get_valid_record()
723 struct cper_sec_fru_mem_poison *fmp = &rec->fmp; in set_fmp_fields() local
725 fmp->fru_arch_type = FMP_ARCH_TYPE_X86_CPUID_1_EAX; in set_fmp_fields()
726 fmp->validation_bits |= FMP_VALID_ARCH_TYPE; in set_fmp_fields()
729 fmp->fru_arch = cpuid_eax(1); in set_fmp_fields()
730 fmp->validation_bits |= FMP_VALID_ARCH; in set_fmp_fields()
732 fmp->fru_id_type = FMP_ID_TYPE_X86_PPIN; in set_fmp_fields()
733 fmp->validation_bits |= FMP_VALID_ID_TYPE; in set_fmp_fields()
735 fmp->fru_id = topology_ppin(cpu); in set_fmp_fields()
736 fmp->validation_bits |= FMP_VALID_ID; in set_fmp_fields()
907 seq_printf(f, "0x%016llx%-*s", rec->fmp.fru_id, U64_PAD, ""); in fmpm_show()
912 if (entry >= rec->fmp.nr_entries) { in fmpm_show()