diff options
Diffstat (limited to 'src/usr/isteps/pm/runtime/test/firmwareRequestTest.H')
| -rw-r--r-- | src/usr/isteps/pm/runtime/test/firmwareRequestTest.H | 185 |
1 files changed, 128 insertions, 57 deletions
diff --git a/src/usr/isteps/pm/runtime/test/firmwareRequestTest.H b/src/usr/isteps/pm/runtime/test/firmwareRequestTest.H index 2ac57ddd5..73ae4b0a2 100644 --- a/src/usr/isteps/pm/runtime/test/firmwareRequestTest.H +++ b/src/usr/isteps/pm/runtime/test/firmwareRequestTest.H @@ -32,63 +32,134 @@ class FirmwareRequestTest : public CxxTest::TestSuite { public: /** - * @brief: testFirmwareRequest - * tests that the firmware_request is being accessed properly + * @brief: testFirmwareRequestHcodeUpdate + * test the firmware_request's HCODE update call */ - void testFirmwareRequest (void) + void testFirmwareRequestHcodeUpdate (void) { - TRACFCOMP(g_trac_pnor, ENTER_MRK - "FirmwareRequestTest::testFirmwareRequest" ); - - if (g_hostInterfaces == NULL || - g_hostInterfaces->firmware_request == NULL) - { - TS_FAIL("FirmwareRequestTest::testFirmwareRequest: " - "Hypervisor firmware_request interface not linked"); - } - else - { - hostInterfaces::hbrt_fw_msg l_req_fw_msg; - l_req_fw_msg.io_type = - hostInterfaces::HBRT_FW_MSG_TYPE_REQ_HCODE_UPDATE; - l_req_fw_msg.req_hcode_update.i_chipId = 0; - l_req_fw_msg.req_hcode_update.i_section = 0; - l_req_fw_msg.req_hcode_update.i_operation = 0; - l_req_fw_msg.req_hcode_update.i_scomAddr = 0; - l_req_fw_msg.req_hcode_update.i_scomData = 0; - - - hostInterfaces::hbrt_fw_msg l_resp_fw_msg; - uint64_t l_resp_fw_msg_size = sizeof(l_resp_fw_msg); - int rc = g_hostInterfaces->firmware_request(sizeof(l_resp_fw_msg), - &l_req_fw_msg, &l_resp_fw_msg_size, &l_resp_fw_msg); - - TRACFCOMP(g_trac_pnor, "FirmwareRequestTest::testFirmwareRequest: " - "rc:%d, type:%d, resp:%d", - rc, l_resp_fw_msg.io_type, - l_resp_fw_msg.resp_generic.o_status); - - if (rc != 1) - { - TS_FAIL("FirmwareRequestTest::testFirmwareRequest: " - "firware_request failed - returned wrong value"); - } - - if (l_resp_fw_msg.io_type != + TRACFCOMP(g_trac_pnor, ENTER_MRK + "FirmwareRequestTest::testFirmwareRequestHcodeUpdate"); + + if (g_hostInterfaces == NULL || + g_hostInterfaces->firmware_request == NULL) + { + TS_FAIL("FirmwareRequestTest::testFirmwareRequestHcodeUpdate: " + "Hypervisor firmware_request interface not linked"); + } + else + { + // Test HCODE Update + // populate the firmware_request structure with arbitrary data + hostInterfaces::hbrt_fw_msg l_req_fw_msg; + l_req_fw_msg.io_type = + hostInterfaces::HBRT_FW_MSG_TYPE_REQ_HCODE_UPDATE; + l_req_fw_msg.req_hcode_update.i_chipId = 0x100; + l_req_fw_msg.req_hcode_update.i_section = 20; + l_req_fw_msg.req_hcode_update.i_operation = 30; + l_req_fw_msg.req_hcode_update.i_scomAddr = 0x400; + l_req_fw_msg.req_hcode_update.i_scomData = 0x500; + + + hostInterfaces::hbrt_fw_msg l_resp_fw_msg; + uint64_t l_resp_fw_msg_size = sizeof(l_resp_fw_msg); + size_t rc = g_hostInterfaces->firmware_request( + sizeof(l_req_fw_msg), &l_req_fw_msg, + &l_resp_fw_msg_size, &l_resp_fw_msg); + + TRACFCOMP(g_trac_pnor, + "FirmwareRequestTest::testFirmwareRequestHcodeUpdate: " + "rc:%d, type:%d, resp:%d", + rc, l_resp_fw_msg.io_type, + l_resp_fw_msg.resp_generic.o_status); + + if (rc != 1) + { + TS_FAIL("FirmwareRequestTest::testFirmwareRequestHcodeUpdate: " + "firware_request - hcode update failed - " + "returned wrong value"); + } + + if (l_resp_fw_msg.io_type != + hostInterfaces::HBRT_FW_MSG_TYPE_RESP_GENERIC) + { + TS_FAIL("FirmwareRequestTest::testFirmwareRequestHcodeUpdate: " + "firware_request - hcode update failed - " + "received incorrect msg_type"); + } + + if (l_resp_fw_msg.resp_generic.o_status != 264) + { + TS_FAIL("FirmwareRequestTest::testFirmwareRequestHcodeUpdate: " + "firware_request - hcode update failed - " + "received incorrect resp"); + } + } // end else + TRACFCOMP(g_trac_pnor, EXIT_MRK + "FirmwareRequestTest::testFirmwareRequestHcodeUpdate"); + + } // end testFirmwareRequestHcodeUpdate + + /** + * @brief: testFirmwareRequestErrLogToFsp + * test the firmware_request's error log to FSP + */ + void testFirmwareRequestErrLogToFsp (void) + { + TRACFCOMP(g_trac_pnor, ENTER_MRK + "FirmwareRequestTest::testFirmwareRequestErrLogToFsp"); + + if (g_hostInterfaces == NULL || + g_hostInterfaces->firmware_request == NULL) + { + TS_FAIL("FirmwareRequestTest::testFirmwareRequestErrLogToFsp: " + "Hypervisor firmware_request interface not linked"); + } + else + { + // Test error log to FSP + // populate the firmware_request structure with arbitrary data + hostInterfaces::hbrt_fw_msg l_req_fw_msg; + l_req_fw_msg.io_type =hostInterfaces::HBRT_FW_MSG_TYPE_ERROR_LOG; + l_req_fw_msg.error_log.i_plid = 0x300; + l_req_fw_msg.error_log.i_errlSize = 1; + l_req_fw_msg.error_log.i_data = 0xAA; + + hostInterfaces::hbrt_fw_msg l_resp_fw_msg; + uint64_t l_resp_fw_msg_size = sizeof(l_resp_fw_msg); + size_t rc = g_hostInterfaces->firmware_request( + sizeof(l_req_fw_msg), &l_req_fw_msg, + &l_resp_fw_msg_size, &l_resp_fw_msg); + + TRACFCOMP(g_trac_pnor, + "FirmwareRequestTest::testFirmwareRequestErrLogToFsp: " + "rc:%d, type:%d, resp:%d", + rc, l_resp_fw_msg.io_type, + l_resp_fw_msg.resp_generic.o_status); + + if (rc != 0) + { + TS_FAIL("FirmwareRequestTest::testFirmwareRequestErrLogToFsp: " + "firware_request - error log failed - " + "returned wrong value"); + } + + if (l_resp_fw_msg.io_type != hostInterfaces::HBRT_FW_MSG_TYPE_RESP_GENERIC) - { - TS_FAIL("FirmwareRequestTest::testFirmwareRequest: " - "firware_request failed - received incorrect msg_type"); - } - - if (l_resp_fw_msg.resp_generic.o_status != 264) - { - TS_FAIL("FirmwareRequestTest::testFirmwareRequest: " - "firware_request failed - received incorrect resp"); - } - - TRACFCOMP(g_trac_pnor, EXIT_MRK - "FirmwareRequestTest::testFirmwareRequest"); - } - } -}; + { + TS_FAIL("FirmwareRequestTest::testFirmwareRequestErrLogToFsp: " + "firware_request - error log failed - " + "received incorrect msg_type"); + } + + if (l_resp_fw_msg.resp_generic.o_status != 20) + { + TS_FAIL("FirmwareRequestTest::testFirmwareRequestErrLogToFsp: " + "firware_request - error log failed - " + "received incorrect resp"); + } + } // end else + TRACFCOMP(g_trac_pnor, EXIT_MRK + "FirmwareRequestTest::testFirmwareRequestErrLogToFsp"); + + } // end testFirmwareRequestErrLogToFsp +}; // end class FirmwareRequestTest |

