Skip to content

Commit

Permalink
L3 update -- p9_mpipl_chip_cleanup
Browse files Browse the repository at this point in the history
  HWP is currently an empty placeholder for p9 MPIPL flow
  remove dead code, unused errors

Change-Id: I7b5fb9a9b3c07c34924a9e56982147a9abd6fb8f
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/41654
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com>
Reviewed-by: Thi N. Tran <thi@us.ibm.com>
Reviewed-by: DHRUVARAJ SUBHASH CHANDRAN <dhruvaraj@in.ibm.com>
Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com>
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/41655
Reviewed-by: Hostboot Team <hostboot@us.ibm.com>
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
  • Loading branch information
jjmcgill authored and dcrowell77 committed Jun 23, 2017
1 parent e25076a commit ea259b6
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 162 deletions.
146 changes: 19 additions & 127 deletions src/import/chips/p9/procedures/hwp/nest/p9_mpipl_chip_cleanup.C
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
/* Contributors Listed Below - COPYRIGHT 2016 */
/* Contributors Listed Below - COPYRIGHT 2016,2017 */
/* [+] International Business Machines Corp. */
/* */
/* */
Expand All @@ -22,140 +22,32 @@
/* permissions and limitations under the License. */
/* */
/* IBM_PROLOG_END_TAG */

///
/// @file p9_mpipl_chip_cleanup.C
/// @brief To enable MCD recovery
/// @file p9_mpipl_chip_cleanup.C
/// @brief Placeholder for chip cleanup actions required on MPIPL (FAPI2)
///
// *HWP HWP OWNER: Joshua Hannan Email: jlhannan@us.ibm.com
// *HWP FW OWNER: Thi Tran Email: thi@us.ibm.com
// *HWP Team: Nest
// *HWP Level: 2
// *HWP Consumed by: FSP/HB
//
// Additional Note(s):
//

//
// *HWP HWP Owner: Joe McGill <jmcgill@us.ibm.com>
// *HWP FW Owner: Thi Tran <thi@us.ibm.com>
// *HWP Team: Nest
// *HWP Level: 3
// *HWP Consumed by: FSB/HB
//
//------------------------------------------------------------------------------

//------------------------------------------------------------------------------
// Includes
//------------------------------------------------------------------------------
#include <p9_mpipl_chip_cleanup.H>

extern "C"
{
//------------------------------------------------------------------------------
// Function definitions
//------------------------------------------------------------------------------

//------------------------------------------------------------------------------
// name: p9_mpipl_chip_cleanup
//------------------------------------------------------------------------------
// purpose:
// Place holder
//
//------------------------------------------------------------------------------
fapi2::ReturnCode p9_mpipl_chip_cleanup(fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target)
{
//This is currently a no-op , leaving it in as a placeholder.
return fapi2::current_err;
}


//Commenting out the old functionality of this code. Was going to delete it but will
//leave it here incase we need logic like this in the future for some reason
#if 0
//------------------------------------------------------------------------------
// name: p9_mpipl_chip_cleanup (DEPRECATED)
//------------------------------------------------------------------------------
// purpose:
// To enable MCD recovery
//
// Note: PHBs are left in ETU reset state after executing proc_mpipl_nest_cleanup, which runs before this procedure. PHYP releases PHBs from ETU reset post HostBoot IPL.
//
// SCOM regs
//
// 1) MCD even recovery control register
// PU_BANK0_MCD_REC (SCOM)
// bit 0 (PU_BANK0_MCD_REC_ENABLE): 0 to 1 transition needed to start, reset to 0 at end of request.
//
// 2) MCD odd recovery control register
// PU_MCD1_BANK0_MCD_REC (SCOM)
// bit 0 (PU_BANK0_MCD_REC_ENABLE): 0 to 1 transition needed to start, reset to 0 at end of request.
//
//------------------------------------------------------------------------------
fapi2::ReturnCode p9_mpipl_chip_cleanup(fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target)
{
const uint8_t MAX_MCD_DIRS = 2; //Max of 2 MCD Directories (even and odd)
fapi2::buffer<uint64_t> fsi_data[MAX_MCD_DIRS];
fapi2::buffer<uint64_t> w_data(0x00030001);
fapi2::buffer<uint64_t> r_data;
const uint64_t C_INT_VC_VSD_TABLE_DATA(0x5013202);
const uint64_t ARY_MCD_RECOVERY_CTRL_REGS_ADDRS[MAX_MCD_DIRS] =
{
PU_BANK0_MCD_REC, //MCD even recovery control register address
PU_MCD1_BANK0_MCD_REC //MCD odd recovery control register address
};
const char* ARY_MCD_DIR_STRS[MAX_MCD_DIRS] =
{
"Even", //Ptr to char string "Even" for even MCD
"Odd" //Ptr to char string "Odd" for odd MCD
};


HW386071:

INT unit has a defect that might result in fake ecc errors. Have to do these four writes and reads to scom registers
FAPI_TRY(fapi2::putScom(i_target, PU_INT_VC_VSD_TABLE_ADDR, w_data),
"putScom error selecting address 1");

FAPI_TRY(fapi2::getScom(i_target, C_INT_VC_VSD_TABLE_DATA, r_data),
"getScom error reading from address 1");

w_data.clearBit<63>();
FAPI_TRY(fapi2::putScom(i_target, PU_INT_VC_VSD_TABLE_ADDR, w_data),
"putScom error selecting address 0");

w_data.flush<0>();
FAPI_TRY(fapi2::putScom(i_target, C_INT_VC_VSD_TABLE_DATA, w_data),
"putScom error writing to address 0");
HW386071

Verify MCD recovery was previously disabled for even and odd slices
If not, this is an error condition
for (uint8_t counter = 0; counter < MAX_MCD_DIRS; counter++)
{
FAPI_DBG("Verifying MCD %s Recovery is disabled", ARY_MCD_DIR_STRS[counter]);
FAPI_TRY(fapi2::getScom(i_target, ARY_MCD_RECOVERY_CTRL_REGS_ADDRS[counter], fsi_data[counter]),
"getScom error veryfing that MCD recovery is disabled");


FAPI_ASSERT(!fsi_data[counter].getBit<PU_BANK0_MCD_REC_ENABLE>(),
fapi2::P9_MPIPL_CHIP_CLEANUP_MCD_NOT_DISABLED().set_TARGET(i_target).set_ADDRESS(
ARY_MCD_RECOVERY_CTRL_REGS_ADDRS[counter]).set_DATA(fsi_data[counter]), "MCD recovery not disabled as expected");
}

Assert bit 0 of MCD Recovery Ctrl regs to enable MCD recovery

for (int counter = 0; counter < MAX_MCD_DIRS; counter++)
{
FAPI_DBG("Enabling MCD %s Recovery", ARY_MCD_DIR_STRS[counter]);

Assert bit 0 of MCD Even or Odd Recovery Control reg to enable recovery
fsi_data[counter].setBit<PU_BANK0_MCD_REC_ENABLE>();

Write data to MCD Even or Odd Recovery Control reg
FAPI_TRY(fapi2::putScom(i_target, ARY_MCD_RECOVERY_CTRL_REGS_ADDRS[counter], fsi_data[counter]),
"putScom error assert bit 0 of MCD recovery control register");
}


fapi_try_exit:
FAPI_DBG("Exiting...");
return fapi2::current_err;
}
#endif

//------------------------------------------------------------------------------
// Function definitions
//------------------------------------------------------------------------------

} // extern "C"
fapi2::ReturnCode
p9_mpipl_chip_cleanup(fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target)
{
// This is currently a no-op , leaving it in as a placeholder.
return fapi2::current_err;
}
46 changes: 25 additions & 21 deletions src/import/chips/p9/procedures/hwp/nest/p9_mpipl_chip_cleanup.H
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
/* Contributors Listed Below - COPYRIGHT 2016 */
/* Contributors Listed Below - COPYRIGHT 2016,2017 */
/* [+] International Business Machines Corp. */
/* */
/* */
Expand All @@ -22,22 +22,19 @@
/* permissions and limitations under the License. */
/* */
/* IBM_PROLOG_END_TAG */
//------------------------------------------------------------------------------
//
// (C) Copyright International Business Machines Corp. 2012
// All Rights Reserved -- Property of IBM
// *** IBM Confidential ***
//
/// TITLE : p9_mpipl_chip_cleanup.H
/// DESCRIPTION : To enable MCD recovery

///
/// @file p9_mpipl_chip_cleanup.H
/// @brief Placeholder for chip cleanup actions required on MPIPL (FAPI2)
///
/// HWP HWP OWNER: Joshua Hannan Email: jlhannan@us.ibm.com
/// HWP FW Owner: Thi N Tran Email: thi@us.ibm.com
/// HWP Team: NEST
/// HWP Level: 2
/// HWP Consumed by: FSP/HB

//
// *HWP HWP Owner: Joe McGill <jmcgill@us.ibm.com>
// *HWP FW Owner: Thi Tran <thi@us.ibm.com>
// *HWP Team: Nest
// *HWP Level: 3
// *HWP Consumed by: FSB/HB
//
//------------------------------------------------------------------------------

#ifndef _P9_MPIPL_CHIP_CLEANUP_H_
#define _P9_MPIPL_CHIP_CLEANUP_H_
Expand All @@ -48,18 +45,25 @@
#include <fapi2.H>

//------------------------------------------------------------------------------
// Structure Definition(s)
// Structure definitions
//------------------------------------------------------------------------------

// function pointer typedef definition for HWP call support
typedef fapi2::ReturnCode (*p9_mpipl_chip_cleanup_FP_t) (fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& );
typedef fapi2::ReturnCode (*p9_mpipl_chip_cleanup_FP_t) (
fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>&);

//------------------------------------------------------------------------------
// Function prototypes
//------------------------------------------------------------------------------

extern "C"
{
/// @brief To enable MCD recovery
/// @param[in] 'i_target' Reference to processor chip target
/// @return FAPI_RC_SUCCESS if the mpipl_chip_cleanup completes successfully
fapi2::ReturnCode p9_mpipl_chip_cleanup(fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target);
/// @brief Perform chip cleanup for MPIPL
/// @param[in] 'i_target' Reference to processor chip target
/// @return FAPI2_RC_SUCCESS if succesful, else error
fapi2::ReturnCode p9_mpipl_chip_cleanup(
fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target);

} //extern "C"

#endif
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<!-- -->
<!-- OpenPOWER HostBoot Project -->
<!-- -->
<!-- Contributors Listed Below - COPYRIGHT 2015,2016 -->
<!-- Contributors Listed Below - COPYRIGHT 2015,2017 -->
<!-- [+] International Business Machines Corp. -->
<!-- -->
<!-- -->
Expand All @@ -23,18 +23,5 @@
<!-- -->
<!-- IBM_PROLOG_END_TAG -->
<hwpErrors>
<!-- ******************************************************************** -->
<hwpError>
<sbeError/>
<rc>RC_P9_MPIPL_CHIP_CLEANUP_MCD_NOT_DISABLED</rc>
<description>
Procedure: p9_mpipl_chip_cleanup
MCU recovery was not disabled as expected
</description>
<ffdc>TARGET</ffdc>
<ffdc>ADDRESS</ffdc>
<ffdc>DATA</ffdc>
</hwpError>
<!-- ******************************************************************** -->
</hwpErrors>

0 comments on commit ea259b6

Please sign in to comment.