diff options
author | Rick Ward <rward15@us.ibm.com> | 2018-04-25 08:52:31 -0500 |
---|---|---|
committer | William G. Hoffa <wghoffa@us.ibm.com> | 2018-06-05 14:00:46 -0400 |
commit | b364d7b062bfa33c715364eca9654c878c4f6a62 (patch) | |
tree | cbb6c7dec3bf50b27b8eba2ff499f14ecbc9a00d /src/include/runtime | |
parent | 41f3aa61a7e97de134cffd04ebbbbb286424c3cb (diff) | |
download | talos-hostboot-b364d7b062bfa33c715364eca9654c878c4f6a62.tar.gz talos-hostboot-b364d7b062bfa33c715364eca9654c878c4f6a62.zip |
Centaur Channel Checkstop (runtime)
This story covers when a DMI channel gets checkstopped at runtime
and how to service the subsequent SCOM operations that PRD
requests to diagnose the issue. At runtime, PRD makes all of
its SCOM requests to HBRT which passes them on to PHYP for
in-band access. The checkstop blocks in-band access, so HBRT
must fail-over to messaging the FSP to do FSI accesses.
To reduce the number of SCOM calls to the FSP, HBRT makes
a "multi-SCOM read" call for all the common SCOMs that
PRD will request after a checkstop, and caches the results.
Two new calls (MBOX, generic messaging interface) to the FSP
were added in a previous commit to allow FSI SCOM operations
through the FSP:
- MSG_SINGLE_SCOM_OP
- MSG_MULTI_SCOM_OP
Also, a new map, chnlFailScomList, was added in a previous
commit. chnlFailScomList contains a list of target types
and associated SCOM addresses that PRD is likely want to
read after a checkstop. PRD is responsible for maintaining
the contents.
Change-Id: I829a72067007ac8a61d80caa690d8eedee0f08cc
RTC:189294
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/59197
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@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: William G. Hoffa <wghoffa@us.ibm.com>
Diffstat (limited to 'src/include/runtime')
-rw-r--r-- | src/include/runtime/generic_hbrt_fsp_message.H | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/include/runtime/generic_hbrt_fsp_message.H b/src/include/runtime/generic_hbrt_fsp_message.H index 6daff3cc2..30566290d 100644 --- a/src/include/runtime/generic_hbrt_fsp_message.H +++ b/src/include/runtime/generic_hbrt_fsp_message.H @@ -73,7 +73,7 @@ struct TargetDeconfigHbrtFspData_t */ struct SingleScomOpHbrtFspData_t { - uint8_t scom_op; // 0 == read, 1 == write + uint8_t scom_op; // DeviceFW::READ, DeviceFW::WRITE uint32_t huid; // hardware target uint64_t scom_addr; uint64_t scom_data; // SCOM value read by FSP, or @@ -92,11 +92,12 @@ struct MultiScomReadHbrtFspData_t uint8_t scom_num; // number of SCOMs to read uint64_t scom_data; // addresses of SCOMs to read, or // values of SCOMs in FSP response + // // ** if a SCOM cannot be read, its value ** // ** should be returned as DEADBEEF ** // // placeholder that can be cast to an array - // of values (or addresses) + // of SCOM addresses (or values) // uint64_t* mydata = // (uint64_t*)&(l_generic_msg.data); // more than 8 bytes of data is possible |