Skip to content

Commit

Permalink
Fixes Centaur training to skip known bad bits
Browse files Browse the repository at this point in the history
Change-Id: Ieaa879cac439f751d487a8db3ca669d780ea1dda
RTC:196559
CQ:SW438645
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/63153
Dev-Ready: STEPHEN GLANCY <sglancy@us.ibm.com>
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com>
Reviewed-by: Louis Stermole <stermole@us.ibm.com>
Reviewed-by: ANDRE A. MARIN <aamarin@us.ibm.com>
Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com>
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/63178
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: Christian R. Geddes <crgeddes@us.ibm.com>
  • Loading branch information
sglancy6 authored and crgeddes committed Aug 1, 2018
1 parent 86d3fc2 commit c8f0bbe
Showing 1 changed file with 23 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2027,15 +2027,15 @@ extern "C" {

if (l_prg[l_prank][l_port] == l_rg_invalid[l_prank]) // invalid rank
{
FAPI_DBG("BYTE DISABLE WORKAROUND Primary rank group (prank) %i port %d rank value: %d INVALID, Marking and continuing...",
l_prank, l_port, l_prg[l_prank][l_port]);
FAPI_DBG("%s BYTE DISABLE WORKAROUND Primary rank group (prank) %i port %d rank value: %d INVALID, Marking and continuing...",
mss::c_str(i_mba_target), l_prank, l_port, l_prg[l_prank][l_port]);
continue;
}

if ( l_prg[l_prank][l_port] == 0)
{
FAPI_DBG("BYTE DISABLE WORKAROUND Primary rank group (prank) %i port %d rank value: %d Not INVALID, Marking and continuing...",
l_prank, l_port, l_prg[l_prank][l_port]);
FAPI_DBG("%s BYTE DISABLE WORKAROUND Primary rank group (prank) %i port %d rank value: %d Not INVALID, Marking and continuing...",
mss::c_str(i_mba_target), l_prank, l_port, l_prg[l_prank][l_port]);
FAPI_TRY(getC4dq2reg(i_mba_target, l_port, 0, 0, l_db_reg_rank0, l_is_clean),
"Error from getting register bitmap port=%i: "
"dimm=%i, rank=%i", l_port, 0, 0);
Expand All @@ -2044,8 +2044,8 @@ extern "C" {

if ( l_prg[l_prank][l_port] == 1)
{
FAPI_DBG("BYTE DISABLE WORKAROUND Primary rank group (prank) %i port %d rank value: %d Not INVALID, Marking and continuing...",
l_prank, l_port, l_prg[l_prank][l_port]);
FAPI_DBG("%s BYTE DISABLE WORKAROUND Primary rank group (prank) %i port %d rank value: %d Not INVALID, Marking and continuing...",
mss::c_str(i_mba_target), l_prank, l_port, l_prg[l_prank][l_port]);
FAPI_TRY(getC4dq2reg(i_mba_target, l_port, 0, 1, l_db_reg_rank1, l_is_clean),
"Error from getting register bitmap port=%i: "
"dimm=%i, rank=%i", l_port, 0, 1);
Expand All @@ -2054,8 +2054,8 @@ extern "C" {

if ( l_prg[l_prank][l_port] == 2)
{
FAPI_DBG("BYTE DISABLE WORKAROUND Primary rank group (prank) %i port %d rank value: %d Not INVALID, Marking and continuing...",
l_prank, l_port, l_prg[l_prank][l_port]);
FAPI_DBG("%s BYTE DISABLE WORKAROUND Primary rank group (prank) %i port %d rank value: %d Not INVALID, Marking and continuing...",
mss::c_str(i_mba_target), l_prank, l_port, l_prg[l_prank][l_port]);
FAPI_TRY(getC4dq2reg(i_mba_target, l_port, 0, 2, l_db_reg_rank2, l_is_clean),
"Error from getting register bitmap port=%i: "
"dimm=%i, rank=%i", l_port, 0, 2);
Expand All @@ -2064,8 +2064,8 @@ extern "C" {

if ( l_prg[l_prank][l_port] == 3)
{
FAPI_DBG("BYTE DISABLE WORKAROUND Primary rank group (prank) %i port %d rank value: %d Not INVALID, Marking and continuing...",
l_prank, l_port, l_prg[l_prank][l_port]);
FAPI_DBG("%s BYTE DISABLE WORKAROUND Primary rank group (prank) %i port %d rank value: %d Not INVALID, Marking and continuing...",
mss::c_str(i_mba_target), l_prank, l_port, l_prg[l_prank][l_port]);
FAPI_TRY(getC4dq2reg(i_mba_target, l_port, 0, 3, l_db_reg_rank3, l_is_clean),
"Error from getting register bitmap port=%i: "
"dimm=%i, rank=%i", l_port, 0, 3);
Expand All @@ -2074,8 +2074,8 @@ extern "C" {

if ( l_prg[l_prank][l_port] == 4)
{
FAPI_DBG("BYTE DISABLE WORKAROUND Primary rank group (prank) %i port %d rank value: %d Not INVALID, Marking and continuing...",
l_prank, l_port, l_prg[l_prank][l_port]);
FAPI_DBG("%s BYTE DISABLE WORKAROUND Primary rank group (prank) %i port %d rank value: %d Not INVALID, Marking and continuing...",
mss::c_str(i_mba_target), l_prank, l_port, l_prg[l_prank][l_port]);
FAPI_TRY(getC4dq2reg(i_mba_target, l_port, 1, 0, l_db_reg_rank4, l_is_clean),
"Error from getting register bitmap port=%i: "
"dimm=%i, rank=%i", l_port, 1, 0);
Expand All @@ -2084,8 +2084,8 @@ extern "C" {

if ( l_prg[l_prank][l_port] == 5)
{
FAPI_DBG("BYTE DISABLE WORKAROUND Primary rank group (prank) %i port %d rank value: %d Not INVALID, Marking and continuing...",
l_prank, l_port, l_prg[l_prank][l_port]);
FAPI_DBG("%s BYTE DISABLE WORKAROUND Primary rank group (prank) %i port %d rank value: %d Not INVALID, Marking and continuing...",
mss::c_str(i_mba_target), l_prank, l_port, l_prg[l_prank][l_port]);
FAPI_TRY(getC4dq2reg(i_mba_target, l_port, 1, 1, l_db_reg_rank5, l_is_clean),
"Error from getting register bitmap port=%i: "
"dimm=%i, rank=%i", l_port, 1, 1);;
Expand All @@ -2094,8 +2094,8 @@ extern "C" {

if ( l_prg[l_prank][l_port] == 6)
{
FAPI_DBG("BYTE DISABLE WORKAROUND Primary rank group (prank) %i port %d rank value: %d Not INVALID, Marking and continuing...",
l_prank, l_port, l_prg[l_prank][l_port]);
FAPI_DBG("%s BYTE DISABLE WORKAROUND Primary rank group (prank) %i port %d rank value: %d Not INVALID, Marking and continuing...",
mss::c_str(i_mba_target), l_prank, l_port, l_prg[l_prank][l_port]);
FAPI_TRY(getC4dq2reg(i_mba_target, l_port, 1, 2, l_db_reg_rank6, l_is_clean),
"Error from getting register bitmap port=%i: "
"dimm=%i, rank=%i", l_port, 1, 2);;
Expand All @@ -2104,8 +2104,8 @@ extern "C" {

if ( l_prg[l_prank][l_port] == 7)
{
FAPI_DBG("BYTE DISABLE WORKAROUND Primary rank group (prank) %i port %d rank value: %d Not INVALID, Marking and continuing...",
l_prank, l_port, l_prg[l_prank][l_port]);
FAPI_DBG("%s BYTE DISABLE WORKAROUND Primary rank group (prank) %i port %d rank value: %d Not INVALID, Marking and continuing...",
mss::c_str(i_mba_target), l_prank, l_port, l_prg[l_prank][l_port]);
FAPI_TRY(getC4dq2reg(i_mba_target, l_port, 1, 3, l_db_reg_rank7, l_is_clean),
"Error from getting register bitmap port=%i: "
"dimm=%i, rank=%i", l_port, 1, 3);;
Expand All @@ -2114,16 +2114,16 @@ extern "C" {
}

// loop through primary ranks [0:3]
for (uint8_t prank = 0; l_prank < NUM_RANK_GROUPS; l_prank ++ )
for (l_prank = 0; l_prank < NUM_RANK_GROUPS; l_prank ++ )
{
l_dimm = l_prg[l_prank][l_port] >> 2;
l_rank = l_prg[l_prank][l_port] & 0x03;
l_is_clean = 1;

if (l_prg[l_prank][l_port] == l_rg_invalid[l_prank]) // invalid rank
{
FAPI_DBG("Primary rank group %i: INVALID, continuing...",
prank);
FAPI_DBG("%s Primary rank group %i: INVALID, continuing...",
mss::c_str(i_mba_target), l_prank);
continue;
}

Expand Down Expand Up @@ -2152,6 +2152,8 @@ extern "C" {
FAPI_TRY(l_db_reg_rank5.extract(l_data_rank5, i * 16, 16));
FAPI_TRY(l_db_reg_rank6.extract(l_data_rank6, i * 16, 16));
FAPI_TRY(l_db_reg_rank7.extract(l_data_rank7, i * 16, 16));
FAPI_INF("%s port%u rank0 DP%u l_data_rank0:0x%04x data:0x%04x", mss::c_str(i_mba_target), l_port, i, l_data_rank0,
l_data);

if (l_data == 0)
{
Expand Down

0 comments on commit c8f0bbe

Please sign in to comment.