summaryrefslogtreecommitdiffstats
path: root/src/usr/isteps/pm/runtime/test/firmwareRequestTest.H
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/isteps/pm/runtime/test/firmwareRequestTest.H')
-rw-r--r--src/usr/isteps/pm/runtime/test/firmwareRequestTest.H150
1 files changed, 86 insertions, 64 deletions
diff --git a/src/usr/isteps/pm/runtime/test/firmwareRequestTest.H b/src/usr/isteps/pm/runtime/test/firmwareRequestTest.H
index 2e2abe25e..152b9f197 100644
--- a/src/usr/isteps/pm/runtime/test/firmwareRequestTest.H
+++ b/src/usr/isteps/pm/runtime/test/firmwareRequestTest.H
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2014,2017 */
+/* Contributors Listed Below - COPYRIGHT 2014,2018 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -25,6 +25,7 @@
#include <cxxtest/TestSuite.H>
#include <runtime/interface.h>
+#include <runtime/hbrt_utilities.H>
#include <errl/hberrltypes.H>
#include <string.h>
@@ -183,77 +184,95 @@ class FirmwareRequestTest : public CxxTest::TestSuite
else
{
// Test HBRT to FSP
- // populate the firmware_request structure with arbitrary data
- hostInterfaces::hbrt_fw_msg l_req_fw_msg;
- l_req_fw_msg.generic_msg.initialize();
- if (l_req_fw_msg.generic_msg.magic !=
+ // Handles to the firmware messages
+ hostInterfaces::hbrt_fw_msg *l_req_fw_msg = nullptr;
+ hostInterfaces::hbrt_fw_msg *l_resp_fw_msg = nullptr;
+
+ // Create and initialize to zero a few needed variables
+ uint32_t l_fsp_data_size(0);
+ uint64_t l_req_fw_msg_size(0), l_resp_fw_msg_size(0);
+
+ // Create the dynamic firmware messages
+ createGenericFspMsg(sizeof(HbrtFspData_t),
+ l_fsp_data_size,
+ l_req_fw_msg_size,
+ l_req_fw_msg,
+ l_resp_fw_msg_size,
+ l_resp_fw_msg);
+
+ // Populate the firmware_request request struct with given data
+ l_req_fw_msg->generic_msg.msgq = 0x300;
+ l_req_fw_msg->generic_msg.msgType =
+ GenericFspMboxMessage_t::MSG_DECONFIG_TARGET;
+
+ // Create a useful struct to populate the generic_msg::data field
+ // Setting the PLID and userData
+ HbrtFspData_t* l_fspData =
+ reinterpret_cast<HbrtFspData_t*>
+ (&(l_req_fw_msg->generic_msg.data));
+ l_fspData->plid = 0x600;
+ l_fspData->userData = 0x700;
+
+ if (l_req_fw_msg->generic_msg.magic !=
GenericFspMboxMessage_t::MAGIC_NUMBER)
{
TS_FAIL("FirmwareRequestTest::testFirmwareRequestHbrtToFsp: "
"magic was not properly initialized");
}
- if (l_req_fw_msg.generic_msg.dataSize !=
- sizeof(l_req_fw_msg.generic_msg))
+ if (l_req_fw_msg->generic_msg.dataSize != l_fsp_data_size)
{
TS_FAIL("FirmwareRequestTest::testFirmwareRequestHbrtToFsp: "
"dataSize was not properly initialized");
}
- if (l_req_fw_msg.generic_msg.structVer !=
+ if (l_req_fw_msg->generic_msg.structVer !=
GenericFspMboxMessage_t::STRUCT_VERSION_LATEST)
{
TS_FAIL("FirmwareRequestTest::testFirmwareRequestHbrtToFsp: "
"structVer was not properly initialized");
}
- if (l_req_fw_msg.generic_msg.seqnum != SeqId_t::getCurrentSeqId())
+ if (l_req_fw_msg->generic_msg.seqnum != SeqId_t::getCurrentSeqId())
{
TS_FAIL("FirmwareRequestTest::testFirmwareRequestHbrtToFsp: "
"seqnum was not properly initialized");
}
- l_req_fw_msg.io_type = hostInterfaces::HBRT_FW_MSG_HBRT_FSP_REQ;
- l_req_fw_msg.generic_msg.magic = 0x100;
- l_req_fw_msg.generic_msg.dataSize =
- sizeof(l_req_fw_msg.generic_msg);
- l_req_fw_msg.generic_msg.structVer = 0x20;
- l_req_fw_msg.generic_msg.seqnum = 0x300;
- l_req_fw_msg.generic_msg.msgq = 0x400;
- l_req_fw_msg.generic_msg.msgType = 0x500;
- l_req_fw_msg.generic_msg.__req = GenericFspMboxMessage_t::REQUEST;
- l_req_fw_msg.generic_msg.__onlyError =
+ l_req_fw_msg->io_type = hostInterfaces::HBRT_FW_MSG_HBRT_FSP_REQ;
+ l_req_fw_msg->generic_msg.magic = 0x100;
+ l_req_fw_msg->generic_msg.dataSize = l_fsp_data_size;
+ l_req_fw_msg->generic_msg.structVer = 0x20;
+ l_req_fw_msg->generic_msg.seqnum = 0x300;
+ l_req_fw_msg->generic_msg.msgq = 0x400;
+ l_req_fw_msg->generic_msg.msgType = 0x500;
+ l_req_fw_msg->generic_msg.__req = GenericFspMboxMessage_t::REQUEST;
+ l_req_fw_msg->generic_msg.__onlyError =
GenericFspMboxMessage_t::ERROR_ONLY;
- uint32_t l_plid = 0x600;
- uint32_t l_huid = 0x700;
- l_req_fw_msg.generic_msg.data =
- TWO_UINT32_TO_UINT64(l_plid, l_huid);
TRACFCOMP(g_trac_pnor,
"FirmwareRequestTest::testFirmwareRequestHbrtToFsp req: "
"type:%d, magic:0x%.8X, dataSize:%d, structVer:0x%.8X, "
"seqnum:%.8X, msgq:0x%.8X, msgType:0x%.8X, __req:%d, "
"__onlyError:%d, data:0x%.8X, plid:0x%.8X, huid:0x%.8X",
- l_req_fw_msg.io_type,
- l_req_fw_msg.generic_msg.magic,
- l_req_fw_msg.generic_msg.dataSize,
- l_req_fw_msg.generic_msg.structVer,
- l_req_fw_msg.generic_msg.seqnum,
- l_req_fw_msg.generic_msg.msgq,
- l_req_fw_msg.generic_msg.msgType,
- l_req_fw_msg.generic_msg.__req,
- l_req_fw_msg.generic_msg.__onlyError,
- l_req_fw_msg.generic_msg.data,
- l_req_fw_msg.generic_msg.data >> 32,
- 0x0000FFFF & l_req_fw_msg.generic_msg.data);
-
- hostInterfaces::hbrt_fw_msg l_resp_fw_msg;
- uint64_t l_resp_fw_msg_size = sizeof(l_resp_fw_msg);
- memset(&l_resp_fw_msg, 0, l_resp_fw_msg_size);
- 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);
+ l_req_fw_msg->io_type,
+ l_req_fw_msg->generic_msg.magic,
+ l_req_fw_msg->generic_msg.dataSize,
+ l_req_fw_msg->generic_msg.structVer,
+ l_req_fw_msg->generic_msg.seqnum,
+ l_req_fw_msg->generic_msg.msgq,
+ l_req_fw_msg->generic_msg.msgType,
+ l_req_fw_msg->generic_msg.__req,
+ l_req_fw_msg->generic_msg.__onlyError,
+ l_req_fw_msg->generic_msg.data,
+ l_req_fw_msg->generic_msg.data >> 32,
+ 0x0000FFFF & l_req_fw_msg->generic_msg.data);
+
+ size_t rc = g_hostInterfaces->firmware_request(l_req_fw_msg_size,
+ l_req_fw_msg,
+ &l_resp_fw_msg_size,
+ l_resp_fw_msg);
TRACFCOMP(g_trac_pnor,
"FirmwareRequestTest::testFirmwareRequestHbrtToFsp resp: "
@@ -261,18 +280,18 @@ class FirmwareRequestTest : public CxxTest::TestSuite
"seqnum:%.8X, msgq:0x%.8X, msgType:0x%.8X, __req:%d, "
"__onlyError:%d, data:0x%.8X, plid:0x%.8X, huid:0x%.8X, "
"rc=%d",
- l_resp_fw_msg.io_type,
- l_resp_fw_msg.generic_msg.magic,
- l_resp_fw_msg.generic_msg.dataSize,
- l_resp_fw_msg.generic_msg.structVer,
- l_resp_fw_msg.generic_msg.seqnum,
- l_resp_fw_msg.generic_msg.msgq,
- l_resp_fw_msg.generic_msg.msgType,
- l_resp_fw_msg.generic_msg.__req,
- l_resp_fw_msg.generic_msg.__onlyError,
- l_resp_fw_msg.generic_msg.data,
- l_resp_fw_msg.generic_msg.data >> 32,
- 0x0000FFFF & l_resp_fw_msg.generic_msg.data,
+ l_resp_fw_msg->io_type,
+ l_resp_fw_msg->generic_msg.magic,
+ l_resp_fw_msg->generic_msg.dataSize,
+ l_resp_fw_msg->generic_msg.structVer,
+ l_resp_fw_msg->generic_msg.seqnum,
+ l_resp_fw_msg->generic_msg.msgq,
+ l_resp_fw_msg->generic_msg.msgType,
+ l_resp_fw_msg->generic_msg.__req,
+ l_resp_fw_msg->generic_msg.__onlyError,
+ l_resp_fw_msg->generic_msg.data,
+ l_resp_fw_msg->generic_msg.data >> 32,
+ 0x0000FFFF & l_resp_fw_msg->generic_msg.data,
rc);
if (rc != 5)
@@ -282,7 +301,7 @@ class FirmwareRequestTest : public CxxTest::TestSuite
"returned wrong value");
}
- if (l_resp_fw_msg.io_type !=
+ if (l_resp_fw_msg->io_type !=
hostInterfaces::HBRT_FW_MSG_HBRT_FSP_RESP)
{
TS_FAIL("FirmwareRequestTest::testFirmwareRequestHbrtToFsp: "
@@ -290,62 +309,65 @@ class FirmwareRequestTest : public CxxTest::TestSuite
"received incorrect msg_type");
}
- if (l_resp_fw_msg.generic_msg.magic != 0x10)
+ if (l_resp_fw_msg->generic_msg.magic != 0x10)
{
TS_FAIL("FirmwareRequestTest::testFirmwareRequestHbrtToFsp: "
"firmware_request - HBRT to FSP failed - "
"received incorrect magic");
}
- if (l_resp_fw_msg.generic_msg.dataSize != 32)
+ if (l_resp_fw_msg->generic_msg.dataSize != 32)
{
TS_FAIL("FirmwareRequestTest::testFirmwareRequestHbrtToFsp: "
"firmware_request - HBRT to FSP failed - "
"received incorrect datSize");
}
-
- if (l_resp_fw_msg.generic_msg.structVer != 0x02)
+ if (l_resp_fw_msg->generic_msg.structVer != 0x02)
{
TS_FAIL("FirmwareRequestTest::testFirmwareRequestHbrtToFsp: "
"firmware_request - HBRT to FSP failed - "
"received incorrect structVer");
}
- if (l_resp_fw_msg.generic_msg.seqnum != 0x30)
+ if (l_resp_fw_msg->generic_msg.seqnum != 0x30)
{
TS_FAIL("FirmwareRequestTest::testFirmwareRequestHbrtToFsp: "
"firmware_request - HBRT to FSP failed - "
"received incorrect seqnum");
}
- if (l_resp_fw_msg.generic_msg.msgq != 0x40)
+ if (l_resp_fw_msg->generic_msg.msgq != 0x40)
{
TS_FAIL("FirmwareRequestTest::testFirmwareRequestHbrtToFsp: "
"firware_request - HBRT to FSP failed - "
"received incorrect msgq");
}
- if (l_resp_fw_msg.generic_msg.msgType != 0x50)
+ if (l_resp_fw_msg->generic_msg.msgType != 0x50)
{
TS_FAIL("FirmwareRequestTest::testFirmwareRequestHbrtToFsp: "
"firware_request - HBRT to FSP failed - "
"received incorrect msgType");
}
- if (l_resp_fw_msg.generic_msg.data >> 32 != 0x60)
+ if (l_resp_fw_msg->generic_msg.data >> 32 != 0x60)
{
TS_FAIL("FirmwareRequestTest::testFirmwareRequestHbrtToFsp: "
"firware_request - HBRT to FSP failed - "
"received incorrect errPlid");
}
- if ((0x0000FFFF & l_resp_fw_msg.generic_msg.data) != 0x70)
+ if ((0x0000FFFF & l_resp_fw_msg->generic_msg.data) != 0x70)
{
TS_FAIL("FirmwareRequestTest::testFirmwareRequestHbrtToFsp: "
"firware_request - HBRT to FSP failed - "
"received incorrect huid");
}
+
+ delete[] l_req_fw_msg;
+ delete[] l_resp_fw_msg;
+ l_req_fw_msg = l_resp_fw_msg = nullptr;
}
TRACFCOMP(g_trac_pnor, EXIT_MRK
"FirmwareRequestTest::testFirmwareRequestHbrtToFsp");
OpenPOWER on IntegriCloud