From 08d89ba2b8784fc69abc051a1d905a770405b6b9 Mon Sep 17 00:00:00 2001 From: Dean Sanner Date: Mon, 18 Sep 2017 13:49:09 -0500 Subject: Remove support for P9N (Nimbus) DD1.0 - Will error out during IPL - Gracefully handle removal of DD1.0 inits, tied to hw091517b.910 HCODE image Change-Id: I7b4c53b38863a8251a8c02d7df83a3ff713f52d7 CMVC-Prereq: 1034628 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/46356 Tested-by: Jenkins Server Tested-by: Jenkins OP Build CI Tested-by: Jenkins OP HW Reviewed-by: Christian R. Geddes --- src/usr/fapi2/test/fapi2ChipEcTest.H | 35 ++++++++++++----- src/usr/fapi2/test/fapi2MvpdTestCxx.H | 26 ++++++------- src/usr/isteps/istep06/host_set_ipl_parms.C | 44 +++++++++++++++++++++- .../isteps/istep06/host_start_occ_xstop_handler.C | 3 ++ .../common/xmltohb/simics_NIMBUS.system.xml | 4 +- src/usr/vpd/makefile | 2 +- src/usr/vpd/test/mvpdtest.H | 1 - 7 files changed, 87 insertions(+), 28 deletions(-) (limited to 'src/usr') diff --git a/src/usr/fapi2/test/fapi2ChipEcTest.H b/src/usr/fapi2/test/fapi2ChipEcTest.H index 69ea686c9..4c329df42 100644 --- a/src/usr/fapi2/test/fapi2ChipEcTest.H +++ b/src/usr/fapi2/test/fapi2ChipEcTest.H @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2016 */ +/* Contributors Listed Below - COPYRIGHT 2016,2017 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -91,23 +91,38 @@ class Fapi2ChipEcTest : public CxxTest::TestSuite l_chipList[0]); ATTR_CHIP_EC_FEATURE_TEST2_Type l_valChipEcTest2 = 0; - + FAPI_TRY(FAPI_ATTR_GET(ATTR_CHIP_EC_FEATURE_TEST2, l_fapi2_procTarget, l_valChipEcTest2)); - // Returns if a chip contains the TEST2 feature. True if: - // Nimbus EC less than 2.0 - if(l_valChipEcTest2) - { - FAPI_INF("Pass: This proc is Nimbus and less then DD2.0"); - } - else if(TARGETING::MODEL_NIMBUS != + + // Tests if a chip contains the TEST2 feature. + // True if: Nimbus EC less than 2.0 + if(TARGETING::MODEL_NIMBUS != l_chipList[0]->getAttr()) { FAPI_INF("Pass: This proc is not Nimbus so does not have TEST2 feature"); } + else if(l_valChipEcTest2) + { + if(l_chipList[0]->getAttr() < 0x20) + { + FAPI_INF("Pass: This Nimbus proc has TEST2 enabled and < DD2.0"); + } + else + { + TS_FAIL("Fail: This Nimbus proc has TEST2 enabled but >= DD2.0"); + } + } else { - TS_FAIL("Fail: this proc is a nimbus but has DD 2.0 or greater"); + if(l_chipList[0]->getAttr() >= 0x20) + { + FAPI_INF("Pass: This Nimbus proc has TEST2 disabled and >= DD2.0"); + } + else + { + TS_FAIL("Fail: This Nimbus proc has TEST2 disabled but < DD 2.0"); + } } fapi_try_exit: diff --git a/src/usr/fapi2/test/fapi2MvpdTestCxx.H b/src/usr/fapi2/test/fapi2MvpdTestCxx.H index 9bb030a85..0f0d0e056 100644 --- a/src/usr/fapi2/test/fapi2MvpdTestCxx.H +++ b/src/usr/fapi2/test/fapi2MvpdTestCxx.H @@ -367,7 +367,7 @@ public: if(*l_bucketAttr != 2) { numFails++; - TS_FAIL("Error:FAPI_ATTR_GET(fapi2::ATTR_POUNDV_BUCKET_DATA EQ with HUID = 0x%X should have bucket ID 1, not %d",l_huid, voltageData.bucketId); + TS_FAIL("Error:FAPI_ATTR_GET(fapi2::ATTR_POUNDV_BUCKET_DATA EQ with HUID = 0x%X should have bucket ID 2, not %d",l_huid, *l_bucketAttr); } if(l_rc) @@ -379,17 +379,17 @@ public: continue; } numTests++; - if(voltageData.bucketId != 1) + if(voltageData.bucketId != 3) { numFails++; - TS_FAIL("Error:p9_pm_get_poundv_bucket with EQ with HUID = 0x%X should have returned bucket ID 1, not %d",l_huid, voltageData.bucketId); + TS_FAIL("Error:p9_pm_get_poundv_bucket with EQ with HUID = 0x%X should have returned bucket ID 3, not %d",l_huid, voltageData.bucketId); continue; } numTests++; - if(*l_bucketAttr != 1) + if(*l_bucketAttr != 3) { numFails++; - TS_FAIL("Error:FAPI_ATTR_GET(fapi2::ATTR_POUNDV_BUCKET_DATA EQ with HUID = 0x%X should have bucket ID 1, not %d",l_huid, voltageData.bucketId); + TS_FAIL("Error:FAPI_ATTR_GET(fapi2::ATTR_POUNDV_BUCKET_DATA EQ with HUID = 0x%X should have bucket ID 3, not %d",l_huid, *l_bucketAttr); } if(l_rc) @@ -464,33 +464,33 @@ public: { numFails++; TS_FAIL("Error:FAPI_ATTR_GET(fapi2::ATTR_POUNDW_BUCKET_DATA " - "EQ with HUID = 0x%X should have bucket ID 1, not %d", + "EQ with HUID = 0x%X should have bucket ID 2, not %d", l_huid, - vdmData.bucketId); + *l_bucketAttr); } continue; } numTests++; - if(vdmData.bucketId != 1) + if(vdmData.bucketId != 3) { numFails++; TS_FAIL("Error:p9_pm_get_poundw_bucket with EQ with HUID = " - "0x%X should have returned bucket ID 1, not %d", + "0x%X should have returned bucket ID 3, not %d", l_huid, vdmData.bucketId); continue; } numTests++; - if(*l_bucketAttr != 1) + if(*l_bucketAttr != 2) { numFails++; - TS_FAIL("Error:FAPI_ATTR_GET(fapi2::ATTR_POUNDV_BUCKET_DATA " - "EQ with HUID = 0x%X should have bucket ID 1, not %d", + TS_FAIL("Error:FAPI_ATTR_GET(fapi2::ATTR_POUNDW_BUCKET_DATA " + "EQ with HUID = 0x%X should have bucket ID 2, not %d", l_huid, - vdmData.bucketId); + *l_bucketAttr); } FAPI_INF("Bucket for HUID: 0x%X is = %d", l_huid, vdmData.bucketId); diff --git a/src/usr/isteps/istep06/host_set_ipl_parms.C b/src/usr/isteps/istep06/host_set_ipl_parms.C index 8fe9f12cc..c42f90998 100644 --- a/src/usr/isteps/istep06/host_set_ipl_parms.C +++ b/src/usr/isteps/istep06/host_set_ipl_parms.C @@ -31,7 +31,9 @@ #include #include #include - +#include +#include +#include namespace ISTEP_06 { @@ -77,6 +79,46 @@ void* host_set_ipl_parms( void *io_pArgs ) Util::writeSemiPersistData(l_semiData); + // Add a check to indicate that Nimbus DD1.0 is NOT supported + // and prevent a boot + PVR_t l_pvr( mmio_pvr_read() & 0xFFFFFFFF ); + if( l_pvr.isNimbusDD1() ) + { +#ifdef CONFIG_CONSOLE + CONSOLE::displayf(ISTEP_COMP_NAME, + "P9N (Nimbus) DD1.0 is not supported in this driver"); + CONSOLE::displayf(ISTEP_COMP_NAME, + "Please update the system's processor modules"); +#endif + + + TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, + "DD1.0 is NOT SUPPORTED anymore. " + "Please upgrade proc modules"); + /*@ + * @errortype + * @moduleid ISTEP::MOD_SET_IPL_PARMS + * @reasoncode ISTEP::RC_P9N_DD1_NOT_SUPPORTED + * @userdata1 PVR of master proc + * @devdesc P9N (Nimbus) DD1.x is not supported + * in this firmware driver. Please update + * your module or use a different driver + * @custdesc A problem occurred during the IPL + * of the system. + */ + uint64_t l_dummy = 0x0; + l_err = new ERRORLOG::ErrlEntry( + ERRORLOG::ERRL_SEV_UNRECOVERABLE, + ISTEP::MOD_SET_IPL_PARMS, + ISTEP::RC_P9N_DD1_NOT_SUPPORTED, + l_pvr.word, + l_dummy); + // Create IStep error log and cross ref error that occurred + l_stepError.addErrorDetails( l_err ); + errlCommit( l_err, ISTEP_COMP_ID ); + } + + TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "host_set_ipl_parms exit" ); return l_stepError.getErrorHandle(); diff --git a/src/usr/isteps/istep06/host_start_occ_xstop_handler.C b/src/usr/isteps/istep06/host_start_occ_xstop_handler.C index aa3c6b8c3..e59f9ead1 100644 --- a/src/usr/isteps/istep06/host_start_occ_xstop_handler.C +++ b/src/usr/isteps/istep06/host_start_occ_xstop_handler.C @@ -34,6 +34,7 @@ #include #include #include +#include namespace ISTEP_06 { @@ -62,6 +63,8 @@ void* host_start_occ_xstop_handler( void *io_pArgs ) l_homerPhysAddrBase, l_commonPhysAddr); do { + if ( Util::isSimicsRunning() ) break; //Skip if running in Simics + l_errl = HBPM::loadPMComplex(masterproc, l_homerPhysAddrBase, l_commonPhysAddr, diff --git a/src/usr/targeting/common/xmltohb/simics_NIMBUS.system.xml b/src/usr/targeting/common/xmltohb/simics_NIMBUS.system.xml index fe90c3f8e..2b20ab82a 100644 --- a/src/usr/targeting/common/xmltohb/simics_NIMBUS.system.xml +++ b/src/usr/targeting/common/xmltohb/simics_NIMBUS.system.xml @@ -564,11 +564,11 @@ then we can get rid of these poundv attributes for this EQ--> POUNDV_BUCKET_NUM - 2 + 0 POUNDV_BUCKET_NUM_OVERRIDE - 1 + 0 diff --git a/src/usr/vpd/makefile b/src/usr/vpd/makefile index 2031b1d4a..a559b1841 100644 --- a/src/usr/vpd/makefile +++ b/src/usr/vpd/makefile @@ -48,7 +48,7 @@ BINARY_FILES += $(IMGDIR)/vpo_djvpd.dat:eb4dce98f19ebfe77243be1c56d3d0eaa1889d90 # Copied from /afs/btv.ibm.com/u/sgrom/public/vpd_images/p9_dd10/module-p9-dd10-simics_v15_rs4v2.bin # on 1/3/2017 # Modified PG record to have proper XBUS data and only the first 4 cores -BINARY_FILES += $(IMGDIR)/procmvpd_p9n.dat:ca32d9418a7ff3781a2989b230c2f915e20d47af +BINARY_FILES += $(IMGDIR)/procmvpd_p9n.dat:a351f3cd5ba8a81a50c3e5a0dea5fea03e55769d BINARY_FILES += $(IMGDIR)/procmvpd_p9c.dat:423208204c2f0e759610f4f39243362fd4b6d103 diff --git a/src/usr/vpd/test/mvpdtest.H b/src/usr/vpd/test/mvpdtest.H index 95941b076..6f58e2d35 100755 --- a/src/usr/vpd/test/mvpdtest.H +++ b/src/usr/vpd/test/mvpdtest.H @@ -186,7 +186,6 @@ VPD::vpdRecord mvpdRecordData[] = MVPD::VWML, MVPD::VER0, MVPD::MER0, - MVPD::VMSC, }; -- cgit v1.2.1