Skip to content

Commit 2cae1c6

Browse files
ibmthidcrowell77
authored andcommitted
SW358897: OP820:OPRASGS:Garrison:HTX miscompare on hxecache while injecting L4 C
CQ:SW358897 Change-Id: Ibd0e8e15662c1c928a458568325170bbb07cd584 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/27267 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Reviewed-by: Thi N. Tran <thi@us.ibm.com> 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: Daniel M. Crowell <dcrowell@us.ibm.com>
1 parent eda3f87 commit 2cae1c6

File tree

1 file changed

+80
-1
lines changed

1 file changed

+80
-1
lines changed

src/usr/hwpf/hwp/dram_training/mss_draminit_trainadv/mss_draminit_training_advanced.C

Lines changed: 80 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
/* permissions and limitations under the License. */
2323
/* */
2424
/* IBM_PROLOG_END_TAG */
25-
// $Id: mss_draminit_training_advanced.C,v 1.69 2016/04/21 11:05:04 sasethur Exp $
25+
// $Id: mss_draminit_training_advanced.C,v 1.71 2016/07/20 14:10:54 lwmulkey Exp $
2626
/* File is created by SARAVANAN SETHURAMAN on Thur 29 Sept 2011. */
2727

2828
//------------------------------------------------------------------------------
@@ -110,6 +110,8 @@
110110
// 1.67 |dcadiga |04-APR-16| Code Review Updates
111111
// 1.68 |preeragh |20-APR-16| Compatible for fw840 only
112112
// 1.69 |preeragh |20-APR-16| Compatible for fw860 onwards (not reverse compatible)
113+
// 1.70 |sglancy |19-JUL-16| Save and Restore bug fix
114+
// 1.71 |lwmulkey |20-JUL-16| Code Review Updates
113115
// This procedure Schmoo's DRV_IMP, SLEW, VREF (DDR, CEN), RCV_IMP based on attribute from effective config procedure
114116
// DQ & DQS Driver impedance, Slew rate, WR_Vref shmoo would call only write_eye shmoo for margin calculation
115117
// DQ & DQS VREF (rd_vref), RCV_IMP shmoo would call rd_eye for margin calculation
@@ -153,7 +155,77 @@ enum shmoo_param
153155

154156
extern "C"
155157
{
158+
fapi::ReturnCode mcb_SaveAndRestore(const fapi::Target & i_target_mba,uint64_t i_content_array[],uint8_t i_mode)
159+
{
160+
161+
ReturnCode rc;
162+
uint32_t rc_num;
163+
uint8_t l_index = 0;
164+
uint8_t l_index1 = 0;
165+
uint64_t l_value = 0;
166+
uint64_t l_val_u64 = 0;
167+
ecmdDataBufferBase l_mcbem1ab(64);
168+
uint64_t l_register_array[6] = {0x030106e0,0x0301040d,0x0301040e,0x03010449,0x03010416,0x03010434};
169+
uint64_t l_mbs_reg[2] = {0x0201144a,0x0201148a};
170+
//populate the array{0x030106d0,0x030106d2,0x030106d1,0x030106d3,0x0301040d,0x0301040e,0x03010449,0x0201144a,0x0201148a};
171+
172+
173+
Target l_target_centaur;
174+
rc = fapiGetParentChip(i_target_mba, l_target_centaur); if(rc) return rc;
175+
if (rc)
176+
{
177+
FAPI_DBG("%s:Error in getting parent chip!",i_target_mba.toEcmdString()); return rc;
178+
}
179+
180+
if(i_mode == 0)
181+
{
182+
FAPI_INF("%s: Saving Register contents",i_target_mba.toEcmdString());
183+
for(l_index = 0;l_index<6;l_index++)
184+
{
185+
l_value = l_register_array[l_index];
186+
rc = fapiGetScom(i_target_mba,l_value,l_mcbem1ab); if(rc) return rc;
187+
i_content_array[l_index] = l_mcbem1ab.getDoubleWord (0);
188+
}
189+
190+
for(l_index = 6;l_index<8;l_index++)
191+
{
192+
193+
l_value = l_mbs_reg[l_index1];
194+
rc = fapiGetScom(l_target_centaur,l_value,l_mcbem1ab); if(rc) return rc;
195+
i_content_array[l_index] = l_mcbem1ab.getDoubleWord (0);
196+
l_index1++;
197+
}
198+
}
199+
200+
else if(i_mode == 1)
201+
{
202+
FAPI_INF("%s: Restoring Register contents",i_target_mba.toEcmdString());
203+
for(l_index = 0;l_index<6;l_index++)
204+
{
205+
l_val_u64 = i_content_array[l_index];
206+
l_value = l_register_array[l_index];
207+
rc_num = l_mcbem1ab.setDoubleWord(0,l_val_u64);if (rc_num){FAPI_ERR( "Error in function mcb_SaveAndRestore:");rc.setEcmdError(rc_num);return rc;}
208+
rc = fapiPutScom(i_target_mba,l_value,l_mcbem1ab); if(rc) return rc;
209+
}
210+
211+
l_index1 = 0;
212+
for(l_index = 6;l_index<8;l_index++)
213+
{
214+
l_val_u64 = i_content_array[l_index];
215+
l_value = l_mbs_reg[l_index1];
216+
rc_num = l_mcbem1ab.setDoubleWord(0,l_val_u64);if (rc_num){FAPI_ERR( "Error in function mcb_SaveAndRestore:");rc.setEcmdError(rc_num);return rc;}
217+
rc = fapiPutScom(l_target_centaur,l_value,l_mcbem1ab); if(rc) return rc;
218+
l_index1++;
219+
}
220+
}
221+
else
222+
{
223+
FAPI_INF("%s: Invalid value of MODE",i_target_mba.toEcmdString());
224+
}
225+
return rc;
156226

227+
228+
}
157229
using namespace fapi;
158230

159231
fapi::ReturnCode mss_draminit_training_advanced_cloned(const fapi::Target & i_target_mba);
@@ -214,6 +286,11 @@ extern "C"
214286
{
215287
// const fapi::Target is centaur.mba
216288
fapi::ReturnCode rc;
289+
uint8_t i_mode = 0;
290+
uint64_t i_content_array[8];
291+
rc = mcb_SaveAndRestore(i_target_mba,i_content_array,i_mode);
292+
if(rc) return rc;
293+
217294
//FAPI_INF(" pattern bit is %d and test_type_bit is %d");
218295
rc = mss_draminit_training_advanced_cloned(i_target_mba);
219296
if (rc)
@@ -232,6 +309,8 @@ extern "C"
232309
FAPI_ERR("Unmask Function is Failed rc = 0x%08X (creator = %d)", uint32_t(rc), rc.getCreator());
233310
return rc;
234311
}
312+
rc = mcb_SaveAndRestore(i_target_mba,i_content_array,1);
313+
235314
return rc;
236315
}
237316

0 commit comments

Comments
 (0)