diff options
author | Corey Swenson <cswenson@us.ibm.com> | 2014-09-08 15:56:45 -0500 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2014-10-17 14:12:26 -0500 |
commit | c9cf241bc97ff6aba866d6acf167fd910a0f39c5 (patch) | |
tree | 37f0ddf358ee5cf5aff393ceee9d3aafb4887f72 /src/usr/hwpf | |
parent | 1428a1fabd827dcc8b43fd0039bfc75d2712c190 (diff) | |
download | talos-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')
-rw-r--r-- | src/usr/hwpf/hwp/mc_config/mc_config.C | 71 |
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; |