summaryrefslogtreecommitdiffstats
path: root/src/usr/hwpf/hwp/mc_config
diff options
context:
space:
mode:
authorCorey Swenson <cswenson@us.ibm.com>2014-09-08 15:56:45 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2014-10-17 14:12:26 -0500
commitc9cf241bc97ff6aba866d6acf167fd910a0f39c5 (patch)
tree37f0ddf358ee5cf5aff393ceee9d3aafb4887f72 /src/usr/hwpf/hwp/mc_config
parent1428a1fabd827dcc8b43fd0039bfc75d2712c190 (diff)
downloadtalos-hostboot-c9cf241bc97ff6aba866d6acf167fd910a0f39c5.tar.gz
talos-hostboot-c9cf241bc97ff6aba866d6acf167fd910a0f39c5.zip
BMC: VPD Caching in PNOR
For MVPD CVPD SPD, during presence detect VPD part number and serial number are compared between PNOR and SEEPROM. Mismatch triggers copy of VPD from SEEPROM to PNOR. Change-Id: Ia0a7b3fdf80bc15aee05c1303efa406fffa318ce RTC: 106885 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/13233 Tested-by: Jenkins Server Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com> Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/hwpf/hwp/mc_config')
-rw-r--r--src/usr/hwpf/hwp/mc_config/mc_config.C71
1 files changed, 52 insertions, 19 deletions
diff --git a/src/usr/hwpf/hwp/mc_config/mc_config.C b/src/usr/hwpf/hwp/mc_config/mc_config.C
index 80c03f475..d6c649333 100644
--- a/src/usr/hwpf/hwp/mc_config/mc_config.C
+++ b/src/usr/hwpf/hwp/mc_config/mc_config.C
@@ -81,6 +81,7 @@
#ifdef CONFIG_DJVPD_READ_FROM_HW
#include <hwas/common/hwas.H>
#include <hwas/common/hwasCommon.H>
+#include <devicefw/driverif.H>
#endif // CONFIG_DJVPD_READ_FROM_HW
#ifdef CONFIG_PALMETTO_VDDR
@@ -110,31 +111,63 @@ static errlHndl_t detect_present_dimms() {
targetService().getAssociated( pCheckPres, pSys,
TargetService::CHILD, TargetService::ALL, &predDimm );
- // Actually check for present DIMMs by PNOR or SPD, this function will
- // prune missing DIMMs from its argument.
- l_err = HWAS::platPresenceDetect(pCheckPres);
-
- if (l_err != NULL)
- {
- return l_err;
- }
-
- // Mark remaining DIMMs as present.
- // @todo RTC:111211, may need to handle turning the dimms off
+ // Check for present DIMMs
+ // @todo RTC:111211, this should be removed when Mike's FSI changes are in
for (TargetHandleList::const_iterator pTarget_it = pCheckPres.begin();
pTarget_it != pCheckPres.end();
++pTarget_it)
{
- // set HWAS state to show DIMM is present, functional.
TARGETING::Target *target = *pTarget_it;
- HwasState hwasState = target->getAttr<ATTR_HWAS_STATE>();
- hwasState.poweredOn = true;
- hwasState.present = true;
- hwasState.functional = true;
- target->setAttr<ATTR_HWAS_STATE>( hwasState );
+
+
+ // call deviceRead() to see if they are present
+ bool present = false;
+ size_t presentSize = sizeof(present);
+ l_err = deviceRead(target, &present, presentSize,
+ DEVICE_PRESENT_ADDRESS());
+
+ if (l_err != NULL)
+ {
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "mc_config failed presence detect "
+ "target HUID %.8X", target->getAttr<ATTR_HUID>());
+
+ // commit the error but keep going
+ errlCommit(l_err, HWPF_COMP_ID);
+
+ // target is not present - fall thru
+ present = false;
+ }
+
+ if (present == true)
+ {
+ TRACDCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "mc_config detected present "
+ "target HUID %.8X", target->getAttr<ATTR_HUID>());
+
+ // set HWAS state to show DIMM is present, functional.
+ HwasState hwasState = target->getAttr<ATTR_HWAS_STATE>();
+ hwasState.poweredOn = true;
+ hwasState.present = true;
+ hwasState.functional = true;
+ target->setAttr<ATTR_HWAS_STATE>( hwasState );
+ }
+ else
+ {
+ TRACDCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "mc_config no presence target %.8X",
+ target->getAttr<ATTR_HUID>());
+
+ // set HWAS state to show DIMM is not present, not functional.
+ HwasState hwasState = target->getAttr<ATTR_HWAS_STATE>();
+ hwasState.poweredOn = false;
+ hwasState.present = false;
+ hwasState.functional = false;
+ target->setAttr<ATTR_HWAS_STATE>( hwasState );
+ }
}
- return l_err;
+ return NULL;
}
// Disable any MBAs that don't have any DIMMs under them, otherwise
@@ -810,7 +843,7 @@ errlHndl_t call_mss_eff_grouping()
(const_cast<TARGETING::Target*>(l_cpu_target)) );
TARGETING::TargetHandleList l_membufsList;
- getChildAffinityTargets(l_membufsList, l_cpu_target,
+ getChildAffinityTargets(l_membufsList, l_cpu_target,
CLASS_CHIP, TYPE_MEMBUF);
std::vector<fapi::Target> l_associated_centaurs;
OpenPOWER on IntegriCloud