int print_src_scn(const struct opal_src_scn *src, void *cookie) { if (src->v6hdr.id[0] == 'P') print_header("Primary System Reference Code"); else print_header("Secondary System Reference Code"); print_opal_v6_hdr(src->v6hdr); print_line("SRC Format", "0x%x", src->flags); print_line("SRC Version", "0x%x", src->version); print_line("Valid Word Count", "0x%x", src->wordcount); print_line("SRC Length", "%x", src->srclength); print_src_refcode(src); if(src->fru_count) { print_center(" "); print_center("Callout Section"); print_center(" "); /* Hardcode this to look like FSP, not what what they want here... */ print_line("Additional Sections", "Disabled"); print_line("Callout Count", "%d", src->fru_count); int i; for (i = 0; i < src->fru_count; i++) print_fru_scn(src->fru[i]); } print_center(" "); return 0; }
/** * print_re_src_scn * @brief print the contents of a SRC section * * @param res rtas_event_scn pointer for SRC section * @param verbosity verbose level of output * @return number of bytes written */ int print_re_src_scn(struct scn_header *shdr, int verbosity) { struct rtas_src_scn *src; struct rtas_fru_scn *fru; int len = 0; int count = 1; if ((shdr->scn_id != RTAS_PSRC_SCN) && (shdr->scn_id != RTAS_SSRC_SCN)) { errno = EFAULT; return 0; } src = (struct rtas_src_scn *)shdr; if (strncmp(src->v6hdr.id, RTAS_PSRC_SCN_ID, 2) == 0) len += print_v6_hdr("Primary SRC Section", (struct rtas_v6_hdr *)&src->v6hdr, verbosity); else len += print_v6_hdr("Secondary SRC Section", (struct rtas_v6_hdr *)&src->v6hdr, verbosity); if (verbosity >= 2) { len += rtas_print(PRNT_FMT_2"\n", "SRC Version:", src->version, "Subsections:", src_subscns_included(src)); } len += rtas_print("Platform Data:\n"); len += print_raw_data((char*)src->src_platform_data, sizeof(src->src_platform_data)); len += rtas_print("\n"); len += rtas_print("Extended Reference Codes:\n"); len += rtas_print("2: %08x 3: %08x 4: %08x 5: %08x\n", src->ext_refcode2, src->ext_refcode3, src->ext_refcode4, src->ext_refcode5); len += rtas_print("6: %08x 7: %08x 8: %08x 9: %08x\n\n", src->ext_refcode6, src->ext_refcode7, src->ext_refcode8, src->ext_refcode9); len += print_src_refcode(src); if (src_subscns_included(src)) { if (verbosity >= 2) { len += rtas_print(PRNT_FMT_2, "Sub-Section ID:", src->subscn_id, "Platform Data:", src->subscn_platform_data); len += rtas_print(PRNT_FMT_R, "Length:", src->subscn_length); } } len += rtas_print("\n"); for (fru = src->fru_scns; fru != NULL; fru = fru->next) { len += print_re_fru_scn(fru, verbosity, count); count++; } return len; }