diff options
| author | Glenn Miles <milesg@ibm.com> | 2019-05-24 16:32:11 -0500 |
|---|---|---|
| committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2019-06-07 14:41:25 -0500 |
| commit | 5634271463a1f735395a67f3f631358861e3fecd (patch) | |
| tree | a0d3f29f3ecef94c7dcdc2a0c9ff514a7563cedb /src/usr/mmio/test | |
| parent | ca91046e0b3d54ed6e4f1f54ebc59adcda5bfc61 (diff) | |
| download | blackbird-hostboot-5634271463a1f735395a67f3f631358861e3fecd.tar.gz blackbird-hostboot-5634271463a1f735395a67f3f631358861e3fecd.zip | |
OCMB MMIO error handling
Added the following
-Error checking and FRU isolation on explorer side
-Cleaned up MMIO write error handling to read an MMIO
error register
-Fixed and enabled MMIO test cases
-Moved parameter checking and channel checkstop checking
into seperate functions.
-Only check for channel checkstop for the channel that an
OCMB is connected to.
-Switch to using I2C on first MMIO failure.
Change-Id: I5e997c5177f8a68a2966f837acc9b578a4cc1897
RTC:201588
RTC:201901
RTC:202533
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/77859
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com>
Reviewed-by: Matt Derksen <mderkse1@us.ibm.com>
Reviewed-by: Christian R. Geddes <crgeddes@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/usr/mmio/test')
| -rw-r--r-- | src/usr/mmio/test/makefile | 6 | ||||
| -rw-r--r-- | src/usr/mmio/test/mmiotest.H | 64 |
2 files changed, 37 insertions, 33 deletions
diff --git a/src/usr/mmio/test/makefile b/src/usr/mmio/test/makefile index 133f3ca44..bb5ffe21d 100644 --- a/src/usr/mmio/test/makefile +++ b/src/usr/mmio/test/makefile @@ -5,7 +5,7 @@ # # OpenPOWER HostBoot Project # -# Contributors Listed Below - COPYRIGHT 2011,2018 +# Contributors Listed Below - COPYRIGHT 2011,2019 # [+] International Business Machines Corp. # # @@ -25,6 +25,10 @@ ROOTPATH = ../../../.. MODULE = testmmio + +EXTRAINCDIR += ${ROOTPATH}/src/import/chips/ocmb/explorer/common/include/ + + TESTS = *.H diff --git a/src/usr/mmio/test/mmiotest.H b/src/usr/mmio/test/mmiotest.H index f7abd7816..034e2f052 100644 --- a/src/usr/mmio/test/mmiotest.H +++ b/src/usr/mmio/test/mmiotest.H @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2011,2018 */ +/* Contributors Listed Below - COPYRIGHT 2011,2019 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -27,9 +27,13 @@ #include <errl/errlentry.H> #include <limits.h> #include <devicefw/driverif.H> -#include <mmio/mmio.H> +#include "../mmio.H" +#include <targeting/common/utilFilter.H> +#include <explorer_scom_addresses.H> +#include <exp_oc_regs.H> -extern trace_desc_t* g_trac_mmio; +static const uint64_t EXPLR_IB_CONFIG_OFFSET = 0x0000000000000000ull; +static const uint64_t EXPLR_IB_MMIO_OFFSET = 0x0000000100000000ull; // 4GB class MmioTest : public CxxTest::TestSuite { @@ -40,70 +44,66 @@ class MmioTest : public CxxTest::TestSuite */ void test_Valid(void) { - TRACFCOMP( g_trac_mmio, "MmioTest::test_Valid> Start" ); + TS_TRACE("MmioTest::test_Valid> Start" ); uint64_t fails = 0; uint64_t total = 0; errlHndl_t l_err = nullptr; - uint64_t regdata = 0; - size_t op_size = sizeof(uint64_t); + uint32_t regdata4 = 0; + size_t op_size = 0; -// TODO RTC 202533 - enable this test once the Axone model is IPLing -// successfully in Simics. -#if 0 // Get OCMB target, return if there is no OCMB TARGETING::TargetHandle_t ocmb_target = nullptr; TARGETING::TargetHandleList ocmb_target_list; - getAllChips(ocmb_target_list, TARGETING::TYPE_OCMB_CHIP); + TARGETING::getAllChips(ocmb_target_list, TARGETING::TYPE_OCMB_CHIP); if (ocmb_target_list.size() == 0) { - TRACFCOMP(g_trac_fsiscom, "MmioTest::test_Valid> Target is NULL"); + TS_TRACE("MmioTest::test_Valid> Target is NULL"); TS_INFO("MmioTest::test_Valid> Target is NULL"); return; } ocmb_target = ocmb_target_list[0]; - // read + // valid read from config space register ++total; - l_err = MMIO::mmioPerformOp( - DeviceFW::READ, + op_size = sizeof(regdata4); + l_err = DeviceFW::deviceRead( ocmb_target, - ®data, + ®data4, op_size, - 0x0, - op_size); + DEVICE_MMIO_ADDRESS((EXPLR_IB_CONFIG_OFFSET | + EXPLR_OC_O0MBIT_O0DID_LSB), + op_size)); if(l_err != nullptr) { - TRACFCOMP(g_trac_mmio, - "MmioTest::test_Valid> Error for read, RC=0x%04X", + TS_TRACE("MmioTest::test_Valid> Error for read, RC=0x%04X", ERRL_GETRC_SAFE(l_err)); TS_FAIL("MmioTest::test_Valid> Error for read, RC=0x%04X", ERRL_GETRC_SAFE(l_err)); ++fails; - errlCommit(l_err, MMIO_COMP_ID); + errlCommit(l_err, CXXTEST_COMP_ID); } - // write + // valid write to config space register ++total; - l_err = MMIO::mmioPerformOp( - DeviceFW::WRITE, + op_size = sizeof(regdata4); + l_err = DeviceFW::deviceWrite( ocmb_target, - ®data, + ®data4, op_size, - 0x08, - op_size); + DEVICE_MMIO_ADDRESS((EXPLR_IB_CONFIG_OFFSET | + EXPLR_OC_O0CCD_LSB), + op_size)); if(l_err != nullptr) { - TRACFCOMP(g_trac_mmio, - "MmioTest::test_Valid> Error for write, RC=0x%04X", - ERRL_GETRC_SAFE(l_err)); + TS_TRACE("MmioTest::test_Valid> Error for write, RC=0x%04X", + ERRL_GETRC_SAFE(l_err)); TS_FAIL("MmioTest::test_Valid> Error for write, RC=0x%04X", ERRL_GETRC_SAFE(l_err)); ++fails; - errlCommit(l_err, MMIO_COMP_ID); + errlCommit(l_err, CXXTEST_COMP_ID); } -#endif - TRACFCOMP(g_trac_mmio, "Mmio::test_Valid> %d/%d fails", fails, total); + TS_TRACE("Mmio::test_Valid> %d/%d fails", fails, total); }; }; |

