summaryrefslogtreecommitdiffstats
path: root/src/usr
diff options
context:
space:
mode:
authorThi Tran <thi@us.ibm.com>2014-05-05 15:32:53 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2014-05-08 16:07:00 -0500
commit61e77208b99c4086e9da6b313b9b9e4d9d79348f (patch)
treeeaa0a8fdb18aec8e285bb5e57a99189e3a5da556 /src/usr
parent679df937c8d61247dfff4c0cbe21d7a8af43e7b0 (diff)
downloadtalos-hostboot-61e77208b99c4086e9da6b313b9b9e4d9d79348f.tar.gz
talos-hostboot-61e77208b99c4086e9da6b313b9b9e4d9d79348f.zip
SW258328: FW820-FTC P8: Apparent hot/cold counter data corrupting memory outside
Change-Id: Ie5561d14998e735dc53d6a79fd72200fc4ae38ae CQ:SW258328 Depends-On:I9276f5e2cabf4fa0cbad294d8d683cf53799f9b4 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/10972 Reviewed-by: Thi N. Tran <thi@us.ibm.com> Tested-by: Thi N. Tran <thi@us.ibm.com> Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/10973 Tested-by: Jenkins Server Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr')
-rw-r--r--src/usr/hwpf/hwp/dram_initialization/proc_setup_bars/proc_setup_bars.H6
-rw-r--r--src/usr/hwpf/hwp/nest_chiplets/makefile3
-rw-r--r--src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_chiplet_scominit.C38
-rw-r--r--src/usr/hwpf/hwp/occ/occ_procedures/p8_pm_init.C14
-rwxr-xr-xsrc/usr/hwpf/hwp/pstates/pstates/p8_build_pstate_datablock.C5
5 files changed, 46 insertions, 20 deletions
diff --git a/src/usr/hwpf/hwp/dram_initialization/proc_setup_bars/proc_setup_bars.H b/src/usr/hwpf/hwp/dram_initialization/proc_setup_bars/proc_setup_bars.H
index fc991c6a5..de4c39be6 100644
--- a/src/usr/hwpf/hwp/dram_initialization/proc_setup_bars/proc_setup_bars.H
+++ b/src/usr/hwpf/hwp/dram_initialization/proc_setup_bars/proc_setup_bars.H
@@ -20,7 +20,7 @@
/* Origin: 30 */
/* */
/* IBM_PROLOG_END_TAG */
-// $Id: proc_setup_bars.H,v 1.15 2014/02/03 18:46:03 jmcgill Exp $
+// $Id: proc_setup_bars.H,v 1.16 2014/04/29 12:48:04 jmcgill Exp $
// $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/p8/working/procedures/ipl/fapi/proc_setup_bars.H,v $
//------------------------------------------------------------------------------
// *|
@@ -968,7 +968,7 @@ const proc_setup_bars_bar_reg_def hca_nm_bar_reg_def =
0,
14,
31,
- true, // enable: bit 63
+ false, // enable: bit 63 (off for SW258328)
63,
true, // size: bits 33:40
33,
@@ -986,7 +986,7 @@ const proc_setup_bars_bar_reg_def hca_m_bar_reg_def =
0,
14,
32,
- true, // enable: bit 63
+ false, // enable: bit 63 (off for SW258328)
63,
false, // size: other reg
0,
diff --git a/src/usr/hwpf/hwp/nest_chiplets/makefile b/src/usr/hwpf/hwp/nest_chiplets/makefile
index 03fbc7d64..841206a98 100644
--- a/src/usr/hwpf/hwp/nest_chiplets/makefile
+++ b/src/usr/hwpf/hwp/nest_chiplets/makefile
@@ -5,7 +5,7 @@
#
# IBM CONFIDENTIAL
#
-# COPYRIGHT International Business Machines Corp. 2012,2013
+# COPYRIGHT International Business Machines Corp. 2012,2014
#
# p1
#
@@ -41,6 +41,7 @@ EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit
EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/nest_chiplets/proc_scomoverride_chiplets
EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/nest_chiplets/proc_a_x_pci_dmi_pll_setup
EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/nest_chiplets/proc_pcie_scominit
+EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/slave_sbe/proc_cen_ref_clk_enable
## NOTE: add new object files when you add a new HWP
OBJS = nest_chiplets.o \
diff --git a/src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_chiplet_scominit.C b/src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_chiplet_scominit.C
index 13515c50f..cf3f93f6d 100644
--- a/src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_chiplet_scominit.C
+++ b/src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_chiplet_scominit.C
@@ -5,7 +5,7 @@
/* */
/* IBM CONFIDENTIAL */
/* */
-/* COPYRIGHT International Business Machines Corp. 2012,2013 */
+/* COPYRIGHT International Business Machines Corp. 2012,2014 */
/* */
/* p1 */
/* */
@@ -20,7 +20,7 @@
/* Origin: 30 */
/* */
/* IBM_PROLOG_END_TAG */
-// $Id: proc_chiplet_scominit.C,v 1.22 2013/11/18 14:43:14 thi Exp $
+// $Id: proc_chiplet_scominit.C,v 1.23 2014/04/21 18:47:07 bgass Exp $
// $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/p8/working/procedures/ipl/fapi/proc_chiplet_scominit.C,v $
//------------------------------------------------------------------------------
// *! (C) Copyright International Business Machines Corp. 2012
@@ -43,6 +43,7 @@
#include <fapiHwpExecInitFile.H>
#include <proc_chiplet_scominit.H>
#include <p8_scom_addresses.H>
+#include <proc_check_master_sbe_seeprom.H>
extern "C" {
@@ -69,13 +70,23 @@ fapi::ReturnCode proc_chiplet_scominit(const fapi::Target & i_target)
uint8_t enable_xbus_resonant_clocking = 0x0;
ecmdDataBufferBase data(64);
+ ecmdDataBufferBase cfam_data(32);
ecmdDataBufferBase mask(64);
+ bool is_master = false;
+
// mark HWP entry
FAPI_INF("proc_chiplet_scominit: Start");
do
{
+ rc = proc_check_master_sbe_seeprom(i_target, is_master);
+ if (!rc.ok())
+ {
+ FAPI_ERR("proc_cen_ref_clk_enable: Error from proc_check_master_sbe_seeprom");
+ break;
+ }
+
// obtain target type to determine which initfile(s) to execute
target_type = i_target.getType();
@@ -295,14 +306,27 @@ fapi::ReturnCode proc_chiplet_scominit(const fapi::Target & i_target)
break;
}
- rc = fapiPutScom(i_target,
+ if (is_master)
+ {
+ rc = fapiPutScom(i_target,
MBOX_FSIGP6_0x00050015,
data);
- if (!rc.ok())
- {
- FAPI_ERR("proc_chiplet_scominit: fapiPutScom error (MBOX_FSIGP6_0x00050015) on %s",
+ if (!rc.ok())
+ {
+ FAPI_ERR("proc_chiplet_scominit: fapiPutScom error (MBOX_FSIGP6_0x00050015) on %s",
i_target.toEcmdString());
- break;
+ break;
+ }
+ }
+ else
+ {
+ cfam_data.insert(data, 0, 32, 0);
+ rc = fapiPutCfamRegister(i_target, CFAM_FSI_GP6_0x00002815, cfam_data);
+ if (rc)
+ {
+ FAPI_ERR("proc_cen_ref_clk_enable: fapiPutCfamRegister error (CFAM_FSI_GP8_0x00001017)");
+ break;
+ }
}
}
diff --git a/src/usr/hwpf/hwp/occ/occ_procedures/p8_pm_init.C b/src/usr/hwpf/hwp/occ/occ_procedures/p8_pm_init.C
index 12c273e40..b6717975a 100644
--- a/src/usr/hwpf/hwp/occ/occ_procedures/p8_pm_init.C
+++ b/src/usr/hwpf/hwp/occ/occ_procedures/p8_pm_init.C
@@ -20,7 +20,7 @@
/* Origin: 30 */
/* */
/* IBM_PROLOG_END_TAG */
-// $Id: p8_pm_init.C,v 1.24 2014/02/17 02:57:00 stillgs Exp $
+// $Id: p8_pm_init.C,v 1.26 2014/05/02 12:25:37 stillgs Exp $
// $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/p8/working/procedures/ipl/fapi/p8_pm_init.C,v $
//------------------------------------------------------------------------------
// *! (C) Copyright International Business Machines Corp. 2011
@@ -140,18 +140,18 @@ p8_pm_init(const fapi::Target &i_target1 ,const fapi::Target &i_target2 , uint32
}
int_mode = PM_CONFIG;
- rc = pm_list(i_target1, i_target2, mode);
+ rc = pm_list(i_target1, i_target2, int_mode);
if (rc)
{
- FAPI_ERR("ERROR: p8_pm_list detected failed ");
+ FAPI_ERR("ERROR: p8_pm_list PM_CONFIG detected failed ");
break;
}
int_mode = PM_INIT;
- rc = pm_list(i_target1, i_target2, mode);
+ rc = pm_list(i_target1, i_target2, int_mode);
if (rc)
{
- FAPI_ERR("ERROR: p8_pm_list detected failed ");
+ FAPI_ERR("ERROR: p8_pm_list PM_INIT detected failed ");
break;
}
@@ -458,7 +458,7 @@ pm_list(const Target& i_target, const Target& i_target2, uint32_t i_mode)
{
if (effective_mode == PM_RESET)
{
- rc = ocb_channel_reset(i_target, effective_mode);
+ rc = ocb_channel_reset(i_target2, effective_mode);
if (rc)
{
FAPI_ERR("ERROR: p8_pm_init detected ocb_channel_reset error");
@@ -467,7 +467,7 @@ pm_list(const Target& i_target, const Target& i_target2, uint32_t i_mode)
}
else if (effective_mode == PM_INIT)
{
- rc = ocb_channel_init(i_target);
+ rc = ocb_channel_init(i_target2);
if (rc)
{
FAPI_ERR("ERROR: p8_pm_init detected ocb_channel_init error");
diff --git a/src/usr/hwpf/hwp/pstates/pstates/p8_build_pstate_datablock.C b/src/usr/hwpf/hwp/pstates/pstates/p8_build_pstate_datablock.C
index 405e253fb..6b785d14c 100755
--- a/src/usr/hwpf/hwp/pstates/pstates/p8_build_pstate_datablock.C
+++ b/src/usr/hwpf/hwp/pstates/pstates/p8_build_pstate_datablock.C
@@ -20,7 +20,7 @@
/* Origin: 30 */
/* */
/* IBM_PROLOG_END_TAG */
-// $Id: p8_build_pstate_datablock.C,v 1.34 2014/04/07 02:17:52 stillgs Exp $
+// $Id: p8_build_pstate_datablock.C,v 1.35 2014/04/09 22:00:46 stillgs Exp $
// $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/p8/working/procedures/ipl/fapi/p8_build_pstate_datablock.C,v $
//------------------------------------------------------------------------------
// *! (C) Copyright International Business Machines Corp. 2012
@@ -1078,6 +1078,7 @@ ReturnCode proc_boost_gpst (PstateSuperStructure *pss,
uint8_t gpsi_max;
const uint32_t MAXIMUM_BOOST_PERCENT_SUPPORTED = 20;
+ const uint32_t MAXIMUM_PSTATE_RANGE = 255; // maximum represented by uint8_t
do
{
@@ -1124,7 +1125,7 @@ ReturnCode proc_boost_gpst (PstateSuperStructure *pss,
boosted_pct, pstate0_frequency_khz, boosted_freq_khz);
break;
}
- else if (pstate_diff > 255) {
+ else if (pstate_diff > MAXIMUM_PSTATE_RANGE) {
FAPI_ERR("Percentage boost calculation overrun produced invalid Pstate Difference: %u", pstate_diff);
const uint32_t& PSTATEDIFF = pstate_diff;
const uint32_t& BOOSTEDFREQKHZ = boosted_freq_khz;
OpenPOWER on IntegriCloud