diff options
-rw-r--r-- | src/include/runtime/generic_hbrt_fsp_message.H | 9 | ||||
-rw-r--r-- | src/usr/util/runtime/rt_fwnotify.C | 15 |
2 files changed, 17 insertions, 7 deletions
diff --git a/src/include/runtime/generic_hbrt_fsp_message.H b/src/include/runtime/generic_hbrt_fsp_message.H index 9a3ecfdb4..01c972880 100644 --- a/src/include/runtime/generic_hbrt_fsp_message.H +++ b/src/include/runtime/generic_hbrt_fsp_message.H @@ -84,10 +84,18 @@ struct SbeRetryReqData_t */ struct HbrtAttrSyncData_t { + // HUID of target on which we want to update the attribute uint32_t huid; + + // Attribute ID of attribute to update TARGETING::ATTRIBUTE_ID attrID; + + // size of attribute data in bytes uint32_t sizeOfAttrData; + + // first byte of <sizeOfAttrData> bytes of attribute data uint8_t attrDataStart; + } PACKED ; /** @@ -172,6 +180,7 @@ struct GenericFspMboxMessage_t // to do casting to other types: // MyDataType_t* mydatatype = // (MyDataType_t*)&(l_generic_msg.data); + // more than 8 bytes of data is possible // A method to set the local vars to a default state void initialize() diff --git a/src/usr/util/runtime/rt_fwnotify.C b/src/usr/util/runtime/rt_fwnotify.C index 612720edf..f8b8d6fe2 100644 --- a/src/usr/util/runtime/rt_fwnotify.C +++ b/src/usr/util/runtime/rt_fwnotify.C @@ -342,22 +342,23 @@ void firmware_notify( uint64_t i_len, void *i_data ) static_cast<hostInterfaces::hbrt_fw_msg*>(i_data); switch (l_hbrt_fw_msg->io_type) { - case hostInterfaces::HBRT_FW_MSG_HBRT_FSP_REQ: { // Distinguish based on msgType and msgq - if (l_hbrt_fw_msg->generic_msg.msgType == - GenericFspMboxMessage_t::MSG_SBE_ERROR) - { - sbeAttemptRecovery(l_hbrt_fw_msg->generic_msg.data); - } - else if ( (l_hbrt_fw_msg->generic_msg.msgType == + if ( (l_hbrt_fw_msg->generic_msg.msgType == GenericFspMboxMessage_t::MSG_ATTR_SYNC_REQUEST) && (l_hbrt_fw_msg->generic_msg.msgq == MBOX::HB_ATTR_SYNC_MSGQ) ) { attrSyncRequest((void*)&(l_hbrt_fw_msg->generic_msg.data)); } + // Placing this at end as it does not have a msgq specified + // Want to match msgType & msgq combos first + else if (l_hbrt_fw_msg->generic_msg.msgType == + GenericFspMboxMessage_t::MSG_SBE_ERROR) + { + sbeAttemptRecovery(l_hbrt_fw_msg->generic_msg.data); + } else { l_badMessage = true; |