Skip to content

Commit

Permalink
Update PEER_TARGET values to be NULL on MPIPL if needed
Browse files Browse the repository at this point in the history
During Hostboot IPL time we do not know about other node's OBUSes
so the PEER_TARGET attribute on the OBUS targets should be NULL.
During HBRT init we will gain information about other node's OBUS
targets so we will write the correct values during HBRT init. During
MPIPL we must again adjust the PEER_TARGET values as the virtual
memory map changes. There was a bug for the MPIPL side of things where
we were not writing NULL to the OBUS's PEER_TARGET attribute when
we should have. Writing NULL is correct because Hostboot is unaware
of where the OBUS target is in memory during IPL time. The correct
address will get written into the attribute during HBRT init after
the MPIPL completes.

Change-Id: I790d8f6b237d0ccddbb57680feb5d331dd1fa471
CQ: SW433560
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/60967
Tested-by: Jenkins Server <pfd-jenkins+hostboot@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: Roland Veloz <rveloz@us.ibm.com>
Reviewed-by: Prachi Gupta <pragupta@us.ibm.com>
Reviewed-by: William G. Hoffa <wghoffa@us.ibm.com>
  • Loading branch information
crgeddes authored and wghoffa committed Jun 21, 2018
1 parent cc638c9 commit be8bb8f
Showing 1 changed file with 7 additions and 16 deletions.
23 changes: 7 additions & 16 deletions src/usr/targeting/common/targetservice.C
Original file line number Diff line number Diff line change
Expand Up @@ -1757,22 +1757,13 @@ bool TargetService::updatePeerTarget(const Target* i_pTarget)
// If we find a PEER_PATH we need to next look up the PEER_TARGET with toTarget
l_peer = targetService().toTarget(l_peerPath);

// Make sure the path resolved to a non-null target
if (l_peer != NULL)
{
l_peerTargetUpdated = i_pTarget->_trySetAttr(ATTR_PEER_TARGET,
sizeof(l_peer),
&l_peer);
TRACFCOMP(g_trac_targeting, "Updated PEER_TARGET address for HUID 0x%x found to be %p",
get_huid(i_pTarget), l_peer);
}
else
{
// This is unexpected so make the trace visible, but no need to assert
TRACFCOMP(g_trac_targeting,
"PEER_PATH did not resolve to a valid target for the entity path %s",
l_peerPath.toString());
}
TRACFCOMP(g_trac_targeting, "Updated PEER_TARGET address for HUID 0x%x found to be %p",
get_huid(i_pTarget), l_peer);
// Set the address even if it is NULL for if it is NULL
// PRD will not attempt to use it during data collection
l_peerTargetUpdated = i_pTarget->_trySetAttr(ATTR_PEER_TARGET,
sizeof(l_peer),
&l_peer);
}
else
{
Expand Down

0 comments on commit be8bb8f

Please sign in to comment.