X-Git-Url: http://git.ozlabs.org/?p=petitboot;a=blobdiff_plain;f=discover%2Fplatform-powerpc.c;h=a4b955ef6fd48e3c2daa72cf2696b4e6f9f8159d;hp=3723ebf824df6fcee31c4571d900f5159f410165;hb=8ed97667e4c602ef37cb2a870a198cfbf008b29a;hpb=722e64564e436a0491563c9f57a49dfee5c50dd9 diff --git a/discover/platform-powerpc.c b/discover/platform-powerpc.c index 3723ebf..a4b955e 100644 --- a/discover/platform-powerpc.c +++ b/discover/platform-powerpc.c @@ -1050,7 +1050,7 @@ static void get_ipmi_bmc_versions(struct platform *p, struct system_info *info) pb_debug("\n"); } - if (rc == 0 && resp_len == 16) { + if (rc == 0 && (resp_len == 12 || resp_len == 16)) { info->bmc_current = talloc_array(info, char *, 4); info->n_bmc_current = 4; @@ -1062,9 +1062,14 @@ static void get_ipmi_bmc_versions(struct platform *p, struct system_info *info) bcd += 10 * (resp[4] >> 4); /* rev1.rev2.aux_revision */ info->bmc_current[2] = talloc_asprintf(info, - "Firmware version: %u.%02u.%02x%02x%02x%02x", - resp[3], bcd, resp[12], - resp[13], resp[14], resp[15]); + "Firmware version: %u.%02u", + resp[3], bcd); + if (resp_len == 16) { + info->bmc_current[2] = talloc_asprintf_append( + info->bmc_current[2], + ".%02x%02x%02x%02x", + resp[12], resp[13], resp[14], resp[15]); + } bcd = resp[5] & 0x0f; bcd += 10 * (resp[5] >> 4); info->bmc_current[3] = talloc_asprintf(info, "IPMI version: %u", @@ -1089,7 +1094,7 @@ static void get_ipmi_bmc_versions(struct platform *p, struct system_info *info) pb_debug("\n"); } - if (rc == 0 && resp_len == 16) { + if (rc == 0 && (resp_len == 12 || resp_len == 16)) { info->bmc_golden = talloc_array(info, char *, 4); info->n_bmc_golden = 4; @@ -1101,9 +1106,14 @@ static void get_ipmi_bmc_versions(struct platform *p, struct system_info *info) bcd += 10 * (resp[4] >> 4); /* rev1.rev2.aux_revision */ info->bmc_golden[2] = talloc_asprintf(info, - "Firmware version: %u.%02u.%02x%02x%02x%02x", - resp[3], bcd, resp[12], - resp[13], resp[14], resp[15]); + "Firmware version: %u.%02u", + resp[3], bcd); + if (resp_len == 16) { + info->bmc_golden[2] = talloc_asprintf_append( + info->bmc_golden[2], + ".%02x%02x%02x%02x", + resp[12], resp[13], resp[14], resp[15]); + } bcd = resp[5] & 0x0f; bcd += 10 * (resp[5] >> 4); info->bmc_golden[3] = talloc_asprintf(info, "IPMI version: %u",