summaryrefslogtreecommitdiffstats
path: root/src/usr/xscom
diff options
context:
space:
mode:
authorDan Crowell <dcrowell@us.ibm.com>2014-01-24 15:47:52 -0600
committerA. Patrick Williams III <iawillia@us.ibm.com>2014-02-14 12:32:47 -0600
commit5850220077f29041920e83de66ec458dac9c82a7 (patch)
tree5b89744aa9e0f7c07ba9f2c341a66d4954b04f8d /src/usr/xscom
parent54fe1fd5efa72aa626419e56e89d68e83480a0db (diff)
downloadtalos-hostboot-5850220077f29041920e83de66ec458dac9c82a7.tar.gz
talos-hostboot-5850220077f29041920e83de66ec458dac9c82a7.zip
Finalize callouts for scan and scom drivers
Change-Id: Iaa603e8464d4e342fa256560da3c9d529aae8be4 RTC: 47014 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/8340 Reviewed-by: Douglas R. Gilbert <dgilbert@us.ibm.com> Tested-by: Jenkins Server Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/xscom')
-rw-r--r--src/usr/xscom/piberror.C6
-rw-r--r--src/usr/xscom/runtime/makefile4
-rw-r--r--src/usr/xscom/xscom.C29
3 files changed, 13 insertions, 26 deletions
diff --git a/src/usr/xscom/piberror.C b/src/usr/xscom/piberror.C
index 0ffe42a2b..498d36991 100644
--- a/src/usr/xscom/piberror.C
+++ b/src/usr/xscom/piberror.C
@@ -1,4 +1,3 @@
-
/* IBM_PROLOG_BEGIN_TAG */
/* This is an automatically generated prolog. */
/* */
@@ -6,7 +5,7 @@
/* */
/* IBM CONFIDENTIAL */
/* */
-/* COPYRIGHT International Business Machines Corp. 2013 */
+/* COPYRIGHT International Business Machines Corp. 2013,2014 */
/* */
/* p1 */
/* */
@@ -21,6 +20,7 @@
/* Origin: 30 */
/* */
/* IBM_PROLOG_END_TAG */
+
/**
* @file piberror.C
*
@@ -59,7 +59,7 @@ void addFruCallouts(TARGETING::Target* i_target,
HWAS::SRCI_PRIORITY_HIGH);
io_errl->addHwCallout( i_target,
HWAS::SRCI_PRIORITY_LOW,
- HWAS::NO_DECONFIG,
+ HWAS::DECONFIG,
HWAS::GARD_NULL );
break;
case PIB::PIB_PARTIAL_GOOD:
diff --git a/src/usr/xscom/runtime/makefile b/src/usr/xscom/runtime/makefile
index b49e707b5..a534fc13b 100644
--- a/src/usr/xscom/runtime/makefile
+++ b/src/usr/xscom/runtime/makefile
@@ -5,7 +5,7 @@
#
# IBM CONFIDENTIAL
#
-# COPYRIGHT International Business Machines Corp. 2013
+# COPYRIGHT International Business Machines Corp. 2013,2014
#
# p1
#
@@ -24,7 +24,7 @@ HOSTBOOT_RUNTIME = 1
ROOTPATH = ../../../..
MODULE = xscom_rt
-OBJS = rt_xscom.o
+OBJS = rt_xscom.o piberror.o
SUBDIRS = test.d
diff --git a/src/usr/xscom/xscom.C b/src/usr/xscom/xscom.C
index 671702775..9b62d6f78 100644
--- a/src/usr/xscom/xscom.C
+++ b/src/usr/xscom/xscom.C
@@ -108,26 +108,6 @@ HMER waitForHMERStatus()
/**
- * @brief Internal routine that checks to see if retry is
- * possible on an XSCOM error
- *
- * @return true if retry is possible; false otherwise.
- */
-bool XSComRetry(const HMER i_hmer)
-{
- bool l_retry = false;
- switch (i_hmer.mXSComStatus)
- {
- case PIB::PIB_RESOURCE_OCCUPIED:
- l_retry = true;
- break;
- default:
- break;
- }
- return l_retry;
-}
-
-/**
* @brief Internal routine that verifies the validity of input parameters
* for an XSCOM access.
*
@@ -494,8 +474,15 @@ errlHndl_t xScomDoOp(DeviceFW::OperationType i_opType,
{
// print a trace message.. for debug purposes
// incase we are stuck in a retry loop.
- TRACFCOMP(g_trac_xscom,"xscomPerformOp - RESOUCE OCCUPIED LOOP Cntr = %d: OpType 0x%.16llX, Address 0x%llX, MMIO Address 0x%llX", l_retryCtr, static_cast<uint64_t>(i_opType),i_xscomAddr,static_cast<uint64_t>(l_mmioAddr));
+ TRACFCOMP(g_trac_xscom,"xscomPerformOp - RESOURCE OCCUPIED LOOP Cntr = %d: OpType 0x%.16llX, Address 0x%llX, MMIO Address 0x%llX, HMER=%.16X", l_retryCtr, static_cast<uint64_t>(i_opType), i_xscomAddr, static_cast<uint64_t>(l_mmioAddr), io_hmer.mRegister );
+ // we don't want to hang forever so break out after
+ // an obscene amount of time
+ if( l_retryCtr > 500000 )
+ {
+ TRACFCOMP( g_trac_xscom, "Giving up, we're still locked..." );
+ break;
+ }
}
} while (io_hmer.mXSComStatus == PIB::PIB_RESOURCE_OCCUPIED);
OpenPOWER on IntegriCloud