summaryrefslogtreecommitdiffstats
path: root/src/usr/fsi
diff options
context:
space:
mode:
authorwhs <whs@us.ibm.com>2016-03-14 16:31:27 -0500
committerStephen Cprek <smcprek@us.ibm.com>2016-04-21 13:51:47 -0500
commit9dee05c3d4c801d74972216a8c501e5c1c3fc2b6 (patch)
tree4acaf595a78857f595acdd9b17f03fd118411079 /src/usr/fsi
parent25bc87d9fc30db27f8c78019858f832c92d69097 (diff)
downloadtalos-hostboot-9dee05c3d4c801d74972216a8c501e5c1c3fc2b6.tar.gz
talos-hostboot-9dee05c3d4c801d74972216a8c501e5c1c3fc2b6.zip
VPD Caching broken on multiple socket, single CVPD systems (Barreleye)
Invalidate Centaur Pnor sections if the section is invalid for all targets that share that section. Keep a section if any target sharing the section finds the section valid. Fixes: open-power/hostboot#29 Change-Id: I14302e38f1d39f3bb4e1857267e1547d1a06302b Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/22047 Tested-by: Jenkins Server Reviewed-by: A. P. Williams III <iawillia@us.ibm.com> Reviewed-by: Matthew A. Ploetz <maploetz@us.ibm.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/22153 Tested-by: FSP CI Jenkins Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/usr/fsi')
-rw-r--r--src/usr/fsi/fsipres.C15
1 files changed, 8 insertions, 7 deletions
diff --git a/src/usr/fsi/fsipres.C b/src/usr/fsi/fsipres.C
index 038e952b3..5798bde02 100644
--- a/src/usr/fsi/fsipres.C
+++ b/src/usr/fsi/fsipres.C
@@ -299,13 +299,14 @@ errlHndl_t membPresenceDetect(DeviceFW::OperationType i_opType,
}
else
{
- // FSI is not present, invalidate MVPD in the PNOR
- l_errl = VPD::invalidatePnorCache(i_target);
- if (l_errl)
- {
- TRACFCOMP( g_trac_fsi, "Error invalidating MVPD in PNOR" );
- errlCommit( l_errl, FSI_COMP_ID );
- }
+ // Defer invalidating CVPD in the PNOR in case another target might be
+ // sharing this VPD_REC_NUM. Check all targets sharing this
+ // VPD_REC_NUM after target discovery in VPD::validateSharedPnorCache.
+ // Ensure the VPD_SWITCHES cache valid bit is invalid at this point.
+ TARGETING::ATTR_VPD_SWITCHES_type vpdSwitches =
+ i_target->getAttr<TARGETING::ATTR_VPD_SWITCHES>();
+ vpdSwitches.pnorCacheValid = 0;
+ i_target->setAttr<TARGETING::ATTR_VPD_SWITCHES>( vpdSwitches );
}
#endif
OpenPOWER on IntegriCloud