123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809 |
- /*
- * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * Redistribution of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * Redistribution in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * Neither the name of Sun Microsystems, Inc. or the names of
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * This software is provided "AS IS," without a warranty of any kind.
- * ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
- * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
- * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED.
- * SUN MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE
- * FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING
- * OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL
- * SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA,
- * OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR
- * PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF
- * LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,
- * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- */
- #ifndef IPMI_HPMFWUPG_H
- #define IPMI_HPMFWUPG_H
- #include <inttypes.h>
- #include <ipmitool/ipmi.h>
- int ipmi_hpmfwupg_main(struct ipmi_intf *, int, char **);
- /* Agent version */
- #define HPMFWUPG_VERSION_MAJOR 1
- #define HPMFWUPG_VERSION_MINOR 0
- #define HPMFWUPG_VERSION_SUBMINOR 9
- /* HPM.1 FIRMWARE UPGRADE COMMANDS (part of PICMG) */
- #define HPMFWUPG_GET_TARGET_UPG_CAPABILITIES 0x2E
- #define HPMFWUPG_GET_COMPONENT_PROPERTIES 0x2F
- #define HPMFWUPG_ABORT_UPGRADE 0x30
- #define HPMFWUPG_INITIATE_UPGRADE_ACTION 0x31
- #define HPMFWUPG_UPLOAD_FIRMWARE_BLOCK 0x32
- #define HPMFWUPG_FINISH_FIRMWARE_UPLOAD 0x33
- #define HPMFWUPG_GET_UPGRADE_STATUS 0x34
- #define HPMFWUPG_ACTIVATE_FIRMWARE 0x35
- #define HPMFWUPG_QUERY_SELFTEST_RESULT 0x36
- #define HPMFWUPG_QUERY_ROLLBACK_STATUS 0x37
- #define HPMFWUPG_MANUAL_FIRMWARE_ROLLBACK 0x38
- /* HPM.1 SPECIFIC COMPLETION CODES */
- #define HPMFWUPG_ROLLBACK_COMPLETED 0x00
- #define HPMFWUPG_COMMAND_IN_PROGRESS 0x80
- #define HPMFWUPG_NOT_SUPPORTED 0x81
- #define HPMFWUPG_SIZE_MISMATCH 0x81
- #define HPMFWUPG_ROLLBACK_FAILURE 0x81
- #define HPMFWUPG_INV_COMP_MASK 0x81
- #define HPMFWUPG__ABORT_FAILURE 0x81
- #define HPMFWUPG_INV_COMP_ID 0x82
- #define HPMFWUPG_INT_CHECKSUM_ERROR 0x82
- #define HPMFWUPG_INV_UPLOAD_MODE 0x82
- #define HPMFWUPG_ROLLBACK_OVERRIDE 0x82
- #define HPMFWUPG_INV_COMP_PROP 0x83
- #define HPMFWUPG_FW_MISMATCH 0x83
- #define HPMFWUPG_ROLLBACK_DENIED 0x83
- /*
- * This error code is used as a temporary PATCH to
- * the latest Open ipmi driver. This PATCH
- * will be removed once a new Open IPMI driver is released.
- * (Buggy version = 39)
- */
- #define ENABLE_OPENIPMI_V39_PATCH
- #ifdef ENABLE_OPENIPMI_V39_PATCH
- # define RETRY_COUNT_MAX 3
- static int errorCount;
- # define HPMFWUPG_IS_RETRYABLE(error) \
- ((((error==0x83)||(error==0x82)||(error==0x80)) && (errorCount++<RETRY_COUNT_MAX))?TRUE:FALSE)
- #else
- # define HPMFWUPG_IS_RETRYABLE(error) FALSE
- #endif
- /* HPM FIRMWARE UPGRADE GENERAL DEFINITIONS */
- #define HPMFWUPG_PICMG_IDENTIFIER 0
- #define HPMFWUPG_VERSION_SIZE 6
- #define HPMFWUPG_DESC_STRING_LENGTH 12
- #define HPMFWUPG_DEFAULT_INACCESS_TIMEOUT 60 /* sec */
- #define HPMFWUPG_DEFAULT_UPGRADE_TIMEOUT 60 /* sec */
- #define HPMFWUPG_MD5_SIGNATURE_LENGTH 16
- /* Component IDs */
- typedef enum eHpmfwupgComponentId {
- HPMFWUPG_COMPONENT_ID_0 = 0,
- HPMFWUPG_COMPONENT_ID_1,
- HPMFWUPG_COMPONENT_ID_2,
- HPMFWUPG_COMPONENT_ID_3,
- HPMFWUPG_COMPONENT_ID_4,
- HPMFWUPG_COMPONENT_ID_5,
- HPMFWUPG_COMPONENT_ID_6,
- HPMFWUPG_COMPONENT_ID_7,
- HPMFWUPG_COMPONENT_ID_MAX
- } tHpmfwupgComponentId;
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(1)
- #endif
- struct HpmfwupgComponentBitMask {
- union {
- unsigned char byte;
- struct {
- #ifdef WORDS_BIGENDIAN
- unsigned char component7 : 1;
- unsigned char component6 : 1;
- unsigned char component5 : 1;
- unsigned char component4 : 1;
- unsigned char component3 : 1;
- unsigned char component2 : 1;
- unsigned char component1 : 1;
- unsigned char component0 : 1;
- #else
- unsigned char component0 : 1;
- unsigned char component1 : 1;
- unsigned char component2 : 1;
- unsigned char component3 : 1;
- unsigned char component4 : 1;
- unsigned char component5 : 1;
- unsigned char component6 : 1;
- unsigned char component7 : 1;
- #endif
- } ATTRIBUTE_PACKING bitField;
- } ATTRIBUTE_PACKING ComponentBits;
- } ATTRIBUTE_PACKING;
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(0)
- #endif
- static const int HPMFWUPG_SUCCESS = 0;
- static const int HPMFWUPG_ERROR = -1;
- /* Upload firmware specific error codes */
- static const int HPMFWUPG_UPLOAD_BLOCK_LENGTH = 1;
- static const int HPMFWUPG_UPLOAD_RETRY = 2;
- /* TARGET UPGRADE CAPABILITIES DEFINITIONS */
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(1)
- #endif
- struct HpmfwupgGetTargetUpgCapabilitiesReq {
- unsigned char picmgId;
- } ATTRIBUTE_PACKING;
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(0)
- #endif
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(1)
- #endif
- struct HpmfwupgGetTargetUpgCapabilitiesResp {
- unsigned char picmgId;
- unsigned char hpmVersion;
- union {
- unsigned char byte;
- struct {
- #if WORDS_BIGENDIAN
- unsigned char fwUpgUndesirable : 1;
- unsigned char autRollbackOverride : 1;
- unsigned char ipmcDegradedDurinUpg: 1;
- unsigned char deferActivation : 1;
- unsigned char servAffectDuringUpg : 1;
- unsigned char manualRollback : 1;
- unsigned char autRollback : 1;
- unsigned char ipmcSelftestCap : 1;
- #else
- unsigned char ipmcSelftestCap : 1;
- unsigned char autRollback : 1;
- unsigned char manualRollback : 1;
- unsigned char servAffectDuringUpg : 1;
- unsigned char deferActivation : 1;
- unsigned char ipmcDegradedDurinUpg: 1;
- unsigned char autRollbackOverride : 1;
- unsigned char fwUpgUndesirable : 1;
- #endif
- } ATTRIBUTE_PACKING bitField;
- } ATTRIBUTE_PACKING GlobalCapabilities;
- unsigned char upgradeTimeout;
- unsigned char selftestTimeout;
- unsigned char rollbackTimeout;
- unsigned char inaccessTimeout;
- struct HpmfwupgComponentBitMask componentsPresent;
- } ATTRIBUTE_PACKING;
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(0)
- #endif
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(1)
- #endif
- struct HpmfwupgGetTargetUpgCapabilitiesCtx {
- struct HpmfwupgGetTargetUpgCapabilitiesReq req;
- struct HpmfwupgGetTargetUpgCapabilitiesResp resp;
- } ATTRIBUTE_PACKING;
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(0)
- #endif
- /* COMPONENT PROPERTIES DEFINITIONS */
- typedef enum eHpmfwupgCompPropertiesSelect {
- HPMFWUPG_COMP_GEN_PROPERTIES = 0,
- HPMFWUPG_COMP_CURRENT_VERSION,
- HPMFWUPG_COMP_DESCRIPTION_STRING,
- HPMFWUPG_COMP_ROLLBACK_FIRMWARE_VERSION,
- HPMFWUPG_COMP_DEFERRED_FIRMWARE_VERSION,
- HPMFWUPG_COMP_RESERVED,
- HPMFWUPG_COMP_OEM_PROPERTIES = 192
- } tHpmfwupgCompPropertiesSelect;
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(1)
- #endif
- struct HpmfwupgGetComponentPropertiesReq {
- unsigned char picmgId;
- unsigned char componentId;
- unsigned char selector;
- } ATTRIBUTE_PACKING;
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(0)
- #endif
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(1)
- #endif
- struct HpmfwupgGetGeneralPropResp {
- unsigned char picmgId;
- union {
- unsigned char byte;
- struct {
- #if WORDS_BIGENDIAN
- unsigned char reserved : 2;
- unsigned char payloadColdReset : 1;
- unsigned char deferredActivation : 1;
- unsigned char comparisonSupport : 1;
- unsigned char preparationSupport : 1;
- unsigned char rollbackBackup : 2;
- #else
- unsigned char rollbackBackup : 2;
- unsigned char preparationSupport : 1;
- unsigned char comparisonSupport : 1;
- unsigned char deferredActivation : 1;
- unsigned char payloadColdReset : 1;
- unsigned char reserved : 2;
- #endif
- } ATTRIBUTE_PACKING bitfield;
- } ATTRIBUTE_PACKING GeneralCompProperties;
- } ATTRIBUTE_PACKING;
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(0)
- #endif
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(1)
- #endif
- struct HpmfwupgGetCurrentVersionResp {
- unsigned char picmgId;
- unsigned char currentVersion[HPMFWUPG_VERSION_SIZE];
- } ATTRIBUTE_PACKING;
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(0)
- #endif
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(1)
- #endif
- struct HpmfwupgGetDescStringResp {
- unsigned char picmgId;
- char descString[HPMFWUPG_DESC_STRING_LENGTH];
- } ATTRIBUTE_PACKING;
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(0)
- #endif
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(1)
- #endif
- struct HpmfwupgGetRollbackFwVersionResp {
- unsigned char picmgId;
- unsigned char rollbackFwVersion[HPMFWUPG_VERSION_SIZE];
- } ATTRIBUTE_PACKING;
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(0)
- #endif
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(1)
- #endif
- struct HpmfwupgGetDeferredFwVersionResp {
- unsigned char picmgId;
- unsigned char deferredFwVersion[HPMFWUPG_VERSION_SIZE];
- } ATTRIBUTE_PACKING;
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(0)
- #endif
- /* GetComponentProperties - OEM properties (192) */
- #define HPMFWUPG_OEM_LENGTH 4
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(1)
- #endif
- struct HpmfwupgGetOemProperties {
- unsigned char picmgId;
- unsigned char oemRspData[HPMFWUPG_OEM_LENGTH];
- } ATTRIBUTE_PACKING;
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(0)
- #endif
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(1)
- #endif
- struct HpmfwupgGetComponentPropertiesResp {
- union {
- struct HpmfwupgGetGeneralPropResp generalPropResp;
- struct HpmfwupgGetCurrentVersionResp currentVersionResp;
- struct HpmfwupgGetDescStringResp descStringResp;
- struct HpmfwupgGetRollbackFwVersionResp rollbackFwVersionResp;
- struct HpmfwupgGetDeferredFwVersionResp deferredFwVersionResp;
- struct HpmfwupgGetOemProperties oemProperties;
- } ATTRIBUTE_PACKING Response;
- } ATTRIBUTE_PACKING;
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(0)
- #endif
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(1)
- #endif
- struct HpmfwupgGetComponentPropertiesCtx {
- struct HpmfwupgGetComponentPropertiesReq req;
- struct HpmfwupgGetComponentPropertiesResp resp;
- } ATTRIBUTE_PACKING;
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(0)
- #endif
- /* ABORT UPGRADE DEFINITIONS */
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(1)
- #endif
- struct HpmfwupgAbortUpgradeReq {
- unsigned char picmgId;
- } ATTRIBUTE_PACKING;
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(0)
- #endif
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(1)
- #endif
- struct HpmfwupgAbortUpgradeResp {
- unsigned char picmgId;
- } ATTRIBUTE_PACKING;
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(0)
- #endif
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(1)
- #endif
- struct HpmfwupgAbortUpgradeCtx {
- struct HpmfwupgAbortUpgradeReq req;
- struct HpmfwupgAbortUpgradeResp resp;
- } ATTRIBUTE_PACKING;
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(0)
- #endif
- /* UPGRADE ACTIONS DEFINITIONS */
- typedef enum eHpmfwupgUpgradeAction {
- HPMFWUPG_UPGRADE_ACTION_BACKUP = 0,
- HPMFWUPG_UPGRADE_ACTION_PREPARE,
- HPMFWUPG_UPGRADE_ACTION_UPGRADE,
- HPMFWUPG_UPGRADE_ACTION_COMPARE,
- HPMFWUPG_UPGRADE_ACTION_INVALID = 0xff
- } tHpmfwupgUpgradeAction;
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(1)
- #endif
- struct HpmfwupgInitiateUpgradeActionReq {
- unsigned char picmgId;
- struct HpmfwupgComponentBitMask componentsMask;
- unsigned char upgradeAction;
- } ATTRIBUTE_PACKING;
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(0)
- #endif
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(1)
- #endif
- struct HpmfwupgInitiateUpgradeActionResp {
- unsigned char picmgId;
- } ATTRIBUTE_PACKING;
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(0)
- #endif
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(1)
- #endif
- struct HpmfwupgInitiateUpgradeActionCtx {
- struct HpmfwupgInitiateUpgradeActionReq req;
- struct HpmfwupgInitiateUpgradeActionResp resp;
- } ATTRIBUTE_PACKING;
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(0)
- #endif
- /* UPLOAD FIRMWARE BLOCK DEFINITIONS */
- #define HPMFWUPG_SEND_DATA_COUNT_KCS 30
- #define HPMFWUPG_SEND_DATA_COUNT_LAN 25
- #define HPMFWUPG_SEND_DATA_COUNT_IPMB 26
- #define HPMFWUPG_SEND_DATA_COUNT_IPMBL 26
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(1)
- #endif
- struct HpmfwupgUploadFirmwareBlockReq {
- unsigned char picmgId;
- unsigned char blockNumber;
- unsigned char data[];
- } ATTRIBUTE_PACKING;
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(0)
- #endif
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(1)
- #endif
- struct HpmfwupgUploadFirmwareBlockResp {
- unsigned char picmgId;
- } ATTRIBUTE_PACKING;
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(0)
- #endif
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(1)
- #endif
- struct HpmfwupgUploadFirmwareBlockCtx {
- struct HpmfwupgUploadFirmwareBlockReq * req;
- struct HpmfwupgUploadFirmwareBlockResp resp;
- } ATTRIBUTE_PACKING;
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(0)
- #endif
- /* FINISH FIRMWARE UPLOAD DEFINITIONS */
- #define HPMFWUPG_IMAGE_SIZE_BYTE_COUNT 4
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(1)
- #endif
- struct HpmfwupgFinishFirmwareUploadReq {
- unsigned char picmgId;
- unsigned char componentId;
- unsigned char imageLength[HPMFWUPG_IMAGE_SIZE_BYTE_COUNT];
- } ATTRIBUTE_PACKING;
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(0)
- #endif
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(1)
- #endif
- struct HpmfwupgFinishFirmwareUploadResp {
- unsigned char picmgId;
- } ATTRIBUTE_PACKING;
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(0)
- #endif
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(1)
- #endif
- struct HpmfwupgFinishFirmwareUploadCtx {
- struct HpmfwupgFinishFirmwareUploadReq req;
- struct HpmfwupgFinishFirmwareUploadResp resp;
- } ATTRIBUTE_PACKING;
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(0)
- #endif
- /* ACTIVATE FW DEFINITIONS */
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(1)
- #endif
- struct HpmfwupgActivateFirmwareReq {
- unsigned char picmgId;
- unsigned char rollback_override;
- } ATTRIBUTE_PACKING;
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(0)
- #endif
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(1)
- #endif
- struct HpmfwupgActivateFirmwareResp {
- unsigned char picmgId;
- } ATTRIBUTE_PACKING;
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(0)
- #endif
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(1)
- #endif
- struct HpmfwupgActivateFirmwareCtx {
- struct HpmfwupgActivateFirmwareReq req;
- struct HpmfwupgActivateFirmwareResp resp;
- } ATTRIBUTE_PACKING;
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(0)
- #endif
- /* GET UPGRADE STATUS DEFINITIONS */
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(1)
- #endif
- struct HpmfwupgGetUpgradeStatusReq {
- unsigned char picmgId;
- } ATTRIBUTE_PACKING;
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(0)
- #endif
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(1)
- #endif
- struct HpmfwupgGetUpgradeStatusResp {
- unsigned char picmgId;
- unsigned char cmdInProcess;
- unsigned char lastCmdCompCode;
- } ATTRIBUTE_PACKING;
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(0)
- #endif
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(1)
- #endif
- struct HpmfwupgGetUpgradeStatusCtx {
- struct HpmfwupgGetUpgradeStatusReq req;
- struct HpmfwupgGetUpgradeStatusResp resp;
- } ATTRIBUTE_PACKING;
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(0)
- #endif
- /* MANUAL FW ROLLBACK DEFINITIONS */
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(1)
- #endif
- struct HpmfwupgManualFirmwareRollbackReq {
- unsigned char picmgId;
- } ATTRIBUTE_PACKING;
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(0)
- #endif
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(1)
- #endif
- struct HpmfwupgManualFirmwareRollbackResp {
- unsigned char picmgId;
- } ATTRIBUTE_PACKING;
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(0)
- #endif
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(0)
- #endif
- struct HpmfwupgManualFirmwareRollbackCtx {
- struct HpmfwupgManualFirmwareRollbackReq req;
- struct HpmfwupgManualFirmwareRollbackResp resp;
- } ATTRIBUTE_PACKING;
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(0)
- #endif
- /* QUERY ROLLBACK STATUS DEFINITIONS */
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(1)
- #endif
- struct HpmfwupgQueryRollbackStatusReq {
- unsigned char picmgId;
- } ATTRIBUTE_PACKING;
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(0)
- #endif
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(1)
- #endif
- struct HpmfwupgQueryRollbackStatusResp {
- unsigned char picmgId;
- struct HpmfwupgComponentBitMask rollbackComp;
- } ATTRIBUTE_PACKING;
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(0)
- #endif
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(1)
- #endif
- struct HpmfwupgQueryRollbackStatusCtx {
- struct HpmfwupgQueryRollbackStatusReq req;
- struct HpmfwupgQueryRollbackStatusResp resp;
- } ATTRIBUTE_PACKING;
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(0)
- #endif
- /* QUERY SELF TEST RESULT DEFINITIONS */
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(1)
- #endif
- struct HpmfwupgQuerySelftestResultReq {
- unsigned char picmgId;
- } ATTRIBUTE_PACKING;
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(0)
- #endif
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(1)
- #endif
- struct HpmfwupgQuerySelftestResultResp {
- unsigned char picmgId;
- unsigned char result1;
- unsigned char result2;
- } ATTRIBUTE_PACKING;
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(0)
- #endif
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(1)
- #endif
- struct HpmfwupgQuerySelftestResultCtx {
- struct HpmfwupgQuerySelftestResultReq req;
- struct HpmfwupgQuerySelftestResultResp resp;
- } ATTRIBUTE_PACKING;
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(0)
- #endif
- /* HPM.1 IMAGE DEFINITIONS */
- #define HPMFWUPG_HEADER_SIGNATURE_LENGTH 8
- #define HPMFWUPG_MANUFATURER_ID_LENGTH 3
- #define HPMFWUPG_PRODUCT_ID_LENGTH 2
- #define HPMFWUPG_TIME_LENGTH 4
- #define HPMFWUPG_TIMEOUT_LENGTH 1
- #define HPMFWUPG_COMP_REVISION_LENGTH 2
- #define HPMFWUPG_FIRM_REVISION_LENGTH 6
- #define HPMFWUPG_IMAGE_HEADER_VERSION 0
- #define HPMFWUPG_IMAGE_SIGNATURE "PICMGFWU"
- #ifdef HAVE_PRAGMA_PACK
- #pragma pack(1)
- #endif
- struct HpmfwupgImageHeader {
- char signature[HPMFWUPG_HEADER_SIGNATURE_LENGTH];
- unsigned char formatVersion;
- unsigned char deviceId;
- unsigned char manId[HPMFWUPG_MANUFATURER_ID_LENGTH];
- unsigned char prodId[HPMFWUPG_PRODUCT_ID_LENGTH];
- unsigned char time[HPMFWUPG_TIME_LENGTH];
- union {
- struct {
- #if WORDS_BIGENDIAN
- unsigned char imageSelfTest : 1;
- unsigned char autRollback : 1;
- unsigned char manRollback : 1;
- unsigned char servAffected : 1;
- unsigned char reserved : 4;
- #else
- unsigned char reserved : 4;
- unsigned char servAffected : 1;
- unsigned char manRollback : 1;
- unsigned char autRollback : 1;
- unsigned char imageSelfTest : 1;
- #endif
- } ATTRIBUTE_PACKING bitField;
- unsigned char byte;
- }ATTRIBUTE_PACKING imageCapabilities;
- struct HpmfwupgComponentBitMask components;
- unsigned char selfTestTimeout;
- unsigned char rollbackTimeout;
- unsigned char inaccessTimeout;
- unsigned char compRevision[HPMFWUPG_COMP_REVISION_LENGTH];
- unsigned char firmRevision[HPMFWUPG_FIRM_REVISION_LENGTH];
- unsigned short oemDataLength;
- } ATTRIBUTE_PACKING;
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(0)
- #endif
- #define HPMFWUPG_DESCRIPTION_LENGTH 21
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(1)
- #endif
- struct HpmfwupgActionRecord {
- unsigned char actionType;
- struct HpmfwupgComponentBitMask components;
- unsigned char checksum;
- } ATTRIBUTE_PACKING;
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(0)
- #endif
- #define HPMFWUPG_FIRMWARE_SIZE_LENGTH 4
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(1)
- #endif
- struct HpmfwupgFirmwareImage {
- unsigned char version[HPMFWUPG_FIRM_REVISION_LENGTH];
- char desc[HPMFWUPG_DESCRIPTION_LENGTH];
- unsigned char length[HPMFWUPG_FIRMWARE_SIZE_LENGTH];
- } ATTRIBUTE_PACKING;
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(0)
- #endif
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(1)
- #endif
- struct HpmfwupgUpgradeCtx {
- struct HpmfwupgComponentBitMask compUpdateMask;
- unsigned int imageSize;
- unsigned char* pImageData;
- unsigned char componentId;
- struct HpmfwupgGetTargetUpgCapabilitiesResp targetCap;
- struct HpmfwupgGetGeneralPropResp genCompProp[HPMFWUPG_COMPONENT_ID_MAX];
- struct ipm_devid_rsp devId;
- } ATTRIBUTE_PACKING;
- #ifdef HAVE_PRAGMA_PACK
- # pragma pack(0)
- #endif
- typedef enum eHpmfwupgActionType {
- HPMFWUPG_ACTION_BACKUP_COMPONENTS = 0,
- HPMFWUPG_ACTION_PREPARE_COMPONENTS,
- HPMFWUPG_ACTION_UPLOAD_FIRMWARE,
- HPMFWUPG_ACTION_RESERVED = 0xFF
- } tHpmfwupgActionType;
- /* FUNCTIONS PROTOTYPES */
- #define HPMFWUPG_MAJORMINOR_VERSION_SIZE 2
- /* Options added for user to check the version and to view both the FILE and
- * TARGET Version
- */
- #define VIEW_MODE 0x01
- #define DEBUG_MODE 0x02
- #define FORCE_MODE 0x04
- #define COMPARE_MODE 0x08
- typedef struct _VERSIONINFO {
- unsigned char componentId;
- unsigned char targetMajor;
- unsigned char targetMinor;
- unsigned char targetAux[4];
- unsigned char rollbackMajor;
- unsigned char rollbackMinor;
- unsigned char rollbackAux[4];
- unsigned char deferredMajor;
- unsigned char deferredMinor;
- unsigned char deferredAux[4];
- unsigned char imageMajor;
- unsigned char imageMinor;
- unsigned char imageAux[4];
- unsigned char coldResetRequired;
- unsigned char rollbackSupported;
- unsigned char deferredActivationSupported;
- char descString[HPMFWUPG_DESC_STRING_LENGTH + 1];
- }VERSIONINFO, *PVERSIONINFO;
- VERSIONINFO gVersionInfo[HPMFWUPG_COMPONENT_ID_MAX];
- #define TARGET_VER (0x01)
- #define ROLLBACK_VER (0x02)
- #define IMAGE_VER (0x04)
- #endif /* IPMI_KFWUM_H */
|