ID: 70 - Fixes and updates for ipmitool hpm

Added a new field to show the Deferred firmware version value as part
of the 'hpm check' subcommand.

The deferred firmware version is the version of the firmware which has
been loaded with the 'hpm upgrade' command, but not yet activated.

Commit for Dan Gora
This commit is contained in:
Zdenek Styblik 2013-07-17 10:36:07 +00:00
parent 25fa0f80ae
commit cee8fc659a

View File

@ -1014,6 +1014,9 @@ typedef struct _VERSIONINFO
unsigned char rollbackMajor; unsigned char rollbackMajor;
unsigned char rollbackMinor; unsigned char rollbackMinor;
unsigned char rollbackAux[4]; unsigned char rollbackAux[4];
unsigned char deferredMajor;
unsigned char deferredMinor;
unsigned char deferredAux[4];
unsigned char imageMajor; unsigned char imageMajor;
unsigned char imageMinor; unsigned char imageMinor;
unsigned char imageAux[4]; unsigned char imageAux[4];
@ -1192,16 +1195,20 @@ void HpmDisplayVersionHeader(int mode)
if ( mode & IMAGE_VER) if ( mode & IMAGE_VER)
{ {
HpmDisplayLine("-",74 ); HpmDisplayLine("-",74 );
printf("|ID | Name | Versions |\n"); printf(
printf("| | | Active | Backup | File |\n"); "|ID | Name | Versions |\n");
printf(
"| | | Active | Backup | File |\n");
HpmDisplayLine("-",74 ); HpmDisplayLine("-",74 );
} }
else else
{ {
HpmDisplayLine("-",56 ); HpmDisplayLine("-",74 );
printf("|ID | Name | Versions |\n"); printf(
printf("| | | Active | Backup |\n"); "|ID | Name | Versions |\n");
HpmDisplayLine("-",56 ); printf(
"| | | Active | Backup | Deferred |\n");
HpmDisplayLine("-",74 );
} }
} }
@ -1222,6 +1229,7 @@ void HpmDisplayVersion(int mode, VERSIONINFO *pVersion, int upgradable)
* is more than required it does not give problem in displaying it * is more than required it does not give problem in displaying it
*/ */
strncpy(descString,pVersion->descString,13); strncpy(descString,pVersion->descString,13);
/* /*
* If the cold reset is required then we can display * on it * If the cold reset is required then we can display * on it
* so that user is aware that he needs to do payload power * so that user is aware that he needs to do payload power
@ -1234,7 +1242,9 @@ void HpmDisplayVersion(int mode, VERSIONINFO *pVersion, int upgradable)
if (mode & TARGET_VER) if (mode & TARGET_VER)
{ {
if (pVersion->targetMajor == 0xFF && pVersion->targetMinor == 0xFF) if ((pVersion->targetMajor == 0xFF ||
(pVersion->targetMajor == 0x7F)) &&
pVersion->targetMinor == 0xFF)
printf(" ---.-- -------- |"); printf(" ---.-- -------- |");
else else
printf(" %3d.%02x %02X%02X%02X%02X |", printf(" %3d.%02x %02X%02X%02X%02X |",
@ -1243,12 +1253,13 @@ void HpmDisplayVersion(int mode, VERSIONINFO *pVersion, int upgradable)
pVersion->targetAux[0], pVersion->targetAux[0],
pVersion->targetAux[1], pVersion->targetAux[1],
pVersion->targetAux[2], pVersion->targetAux[2],
pVersion->targetAux[3] pVersion->targetAux[3]);
);
if (mode & ROLLBACK_VER) if (mode & ROLLBACK_VER)
{ {
if (pVersion->rollbackMajor == 0xFF && pVersion->rollbackMinor == 0xFF) if ((pVersion->rollbackMajor == 0xFF ||
(pVersion->rollbackMajor == 0x7F)) &&
pVersion->rollbackMinor == 0xFF)
printf(" ---.-- -------- |"); printf(" ---.-- -------- |");
else else
printf(" %3d.%02x %02X%02X%02X%02X |", printf(" %3d.%02x %02X%02X%02X%02X |",
@ -1260,14 +1271,14 @@ void HpmDisplayVersion(int mode, VERSIONINFO *pVersion, int upgradable)
pVersion->rollbackAux[3]); pVersion->rollbackAux[3]);
} }
else else
{
printf(" ---.-- -------- |"); printf(" ---.-- -------- |");
} }
}
if (mode & IMAGE_VER) if (mode & IMAGE_VER)
{ {
if (pVersion->imageMajor == 0xFF && pVersion->imageMinor == 0xFF) if ((pVersion->imageMajor == 0xFF ||
(pVersion->imageMajor == 0x7F)) &&
pVersion->imageMinor == 0xFF)
printf(" ---.-- |"); printf(" ---.-- |");
else else
printf(" %3d.%02x %02X%02X%02X%02X |", printf(" %3d.%02x %02X%02X%02X%02X |",
@ -1278,6 +1289,21 @@ void HpmDisplayVersion(int mode, VERSIONINFO *pVersion, int upgradable)
pVersion->imageAux[2], pVersion->imageAux[2],
pVersion->imageAux[3]); pVersion->imageAux[3]);
} }
else
{
if ((pVersion->deferredMajor == 0xFF ||
(pVersion->deferredMajor == 0x7F)) &&
pVersion->deferredMinor == 0xFF)
printf(" ---.-- -------- |");
else
printf(" %3d.%02x %02X%02X%02X%02X |",
pVersion->deferredMajor,
pVersion->deferredMinor,
pVersion->deferredAux[0],
pVersion->deferredAux[1],
pVersion->deferredAux[2],
pVersion->deferredAux[3]);
}
} }
@ -1397,17 +1423,45 @@ int HpmfwupgTargetCheck(struct ipmi_intf * intf, int option)
.Response.rollbackFwVersionResp.rollbackFwVersion[0]; .Response.rollbackFwVersionResp.rollbackFwVersion[0];
gVersionInfo[componentId].rollbackMinor = getCompProp.resp gVersionInfo[componentId].rollbackMinor = getCompProp.resp
.Response.rollbackFwVersionResp.rollbackFwVersion[1]; .Response.rollbackFwVersionResp.rollbackFwVersion[1];
gVersionInfo[componentId].rollbackAux[0] = getCompProp.resp.Response. gVersionInfo[componentId].rollbackAux[0] = getCompProp.resp.Response.rollbackFwVersionResp.rollbackFwVersion[2];
rollbackFwVersionResp.rollbackFwVersion[2]; gVersionInfo[componentId].rollbackAux[1] = getCompProp.resp.Response.rollbackFwVersionResp.rollbackFwVersion[3];
gVersionInfo[componentId].rollbackAux[1] = getCompProp.resp.Response. gVersionInfo[componentId].rollbackAux[2] = getCompProp.resp.Response.rollbackFwVersionResp.rollbackFwVersion[4];
rollbackFwVersionResp.rollbackFwVersion[3]; gVersionInfo[componentId].rollbackAux[3] = getCompProp.resp.Response.rollbackFwVersionResp.rollbackFwVersion[5];
gVersionInfo[componentId].rollbackAux[2] = getCompProp.resp.Response. }
rollbackFwVersionResp.rollbackFwVersion[4];
gVersionInfo[componentId].rollbackAux[3] = getCompProp.resp.Response. getCompProp.req.selector = HPMFWUPG_COMP_DEFERRED_FIRMWARE_VERSION;
rollbackFwVersionResp.rollbackFwVersion[5]; rc = HpmfwupgGetComponentProperties(intf, &getCompProp);
if (rc != HPMFWUPG_SUCCESS)
{
lprintf(LOG_NOTICE,"Get CompRollbackVersion Failed for component Id %d\n",componentId);
} else {
gVersionInfo[componentId].deferredMajor = getCompProp.resp
.Response.deferredFwVersionResp.deferredFwVersion[0];
gVersionInfo[componentId].deferredMinor = getCompProp.resp
.Response.deferredFwVersionResp.deferredFwVersion[1];
gVersionInfo[componentId].deferredAux[0] = getCompProp.resp.Response.deferredFwVersionResp.deferredFwVersion[2];
gVersionInfo[componentId].deferredAux[1] = getCompProp.resp.Response.deferredFwVersionResp.deferredFwVersion[3];
gVersionInfo[componentId].deferredAux[2] = getCompProp.resp.Response.deferredFwVersionResp.deferredFwVersion[4];
gVersionInfo[componentId].deferredAux[3] = getCompProp.resp.Response.deferredFwVersionResp.deferredFwVersion[5];
} }
mode |= ROLLBACK_VER; mode |= ROLLBACK_VER;
} }
else
{
gVersionInfo[componentId].rollbackMajor = 0xff;
gVersionInfo[componentId].rollbackMinor = 0xff;
gVersionInfo[componentId].rollbackAux[0] = 0xff;
gVersionInfo[componentId].rollbackAux[1] = 0xff;
gVersionInfo[componentId].rollbackAux[2] = 0xff;
gVersionInfo[componentId].rollbackAux[3] = 0xff;
gVersionInfo[componentId].deferredMajor = 0xff;
gVersionInfo[componentId].deferredMinor = 0xff;
gVersionInfo[componentId].deferredAux[0] = 0xff;
gVersionInfo[componentId].deferredAux[1] = 0xff;
gVersionInfo[componentId].deferredAux[2] = 0xff;
gVersionInfo[componentId].deferredAux[3] = 0xff;
}
if (gVersionInfo[componentId].coldResetRequired) if (gVersionInfo[componentId].coldResetRequired)
{ {
@ -1427,7 +1481,7 @@ int HpmfwupgTargetCheck(struct ipmi_intf * intf, int option)
if (option & VIEW_MODE) if (option & VIEW_MODE)
{ {
HpmDisplayLine("-",56 ); HpmDisplayLine("-",74 );
fflush(stdout); fflush(stdout);
lprintf(LOG_NOTICE,"(*) Component requires Payload Cold Reset"); lprintf(LOG_NOTICE,"(*) Component requires Payload Cold Reset");
printf("\n\n"); printf("\n\n");