summaryrefslogtreecommitdiffstats
path: root/src/usr/pore
diff options
context:
space:
mode:
authorThi Tran <thi@us.ibm.com>2014-03-05 16:43:49 -0600
committerA. Patrick Williams III <iawillia@us.ibm.com>2014-03-13 14:14:38 -0500
commitf623fb28431226a2a0d9e420473c5d855b727f75 (patch)
treed7738ef8e35734bab8749940c3e29b8fd9f7ad3a /src/usr/pore
parentfd579042a3d2f4a865f0f3c6c329e7948bc02b4b (diff)
downloadtalos-hostboot-f623fb28431226a2a0d9e420473c5d855b727f75.tar.gz
talos-hostboot-f623fb28431226a2a0d9e420473c5d855b727f75.zip
Fix device driver errors lost during Centaur SBE run
Change-Id: I94a89ab626b9683ffbc6c5287b5c8f5efde542f0 CQ:SW248690 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/9325 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/pore')
-rw-r--r--src/usr/pore/poreve/porevesrc/pib2cfam.C4
-rw-r--r--src/usr/pore/poreve/porevesrc/pore.C49
2 files changed, 47 insertions, 6 deletions
diff --git a/src/usr/pore/poreve/porevesrc/pib2cfam.C b/src/usr/pore/poreve/porevesrc/pib2cfam.C
index 7e8fe4d9b..d97ef117c 100644
--- a/src/usr/pore/poreve/porevesrc/pib2cfam.C
+++ b/src/usr/pore/poreve/porevesrc/pib2cfam.C
@@ -101,8 +101,6 @@ Pib2Cfam::operation(Transaction& io_transaction)
me = ME_SUCCESS;
} else {
me = ME_FAILURE;
- //@todo CQ:SW248690 - need a better way to catch these
- fapiLogError( rc, fapi::FAPI_ERRL_SEV_UNRECOVERABLE );
}
break;
default:
@@ -133,8 +131,6 @@ Pib2Cfam::operation(Transaction& io_transaction)
me = ME_SUCCESS;
} else {
me = ME_FAILURE;
- //@todo CQ:SW248690 - need a better way to catch these
- fapiLogError( rc, fapi::FAPI_ERRL_SEV_UNRECOVERABLE );
}
break;
diff --git a/src/usr/pore/poreve/porevesrc/pore.C b/src/usr/pore/poreve/porevesrc/pore.C
index 703645fbf..bd1442c6b 100644
--- a/src/usr/pore/poreve/porevesrc/pore.C
+++ b/src/usr/pore/poreve/porevesrc/pore.C
@@ -5,7 +5,7 @@
/* */
/* IBM CONFIDENTIAL */
/* */
-/* COPYRIGHT International Business Machines Corp. 2012,2013 */
+/* COPYRIGHT International Business Machines Corp. 2012,2014 */
/* */
/* p1 */
/* */
@@ -66,6 +66,16 @@ Pore::pibMaster(PibTransaction& io_transaction)
me = io_transaction.iv_modelError;
}
if (me != 0) {
+
+ // If FAPI error, likely from platform, log it here.
+ // Current interface doesn't return FAPI rc up to fapiPoreVe level.
+ if (!iv_fapiReturnCode.ok())
+ {
+ FAPI_ERR("Pore::pibMaster() operation returns FAPI rc 0x%.8X",
+ static_cast<uint32_t>(iv_fapiReturnCode));
+ fapiLogError( iv_fapiReturnCode, fapi::FAPI_ERRL_SEV_UNRECOVERABLE );
+ }
+
FAPI_ERR("\nPore::pibMaster() received ModelError %d\n"
"Transaction is a %s of address 0x%08x\n"
"Transaction data is 0x%016llx",
@@ -94,6 +104,16 @@ Pore::ociMaster(OciTransaction& io_transaction)
me = io_transaction.iv_modelError;
}
if (me != 0) {
+
+ // If FAPI error, likely from platform, log it here.
+ // Current interface doesn't return FAPI rc up to fapiPoreVe level.
+ if (!iv_fapiReturnCode.ok())
+ {
+ FAPI_ERR("Pore::ociMaster() operation returns FAPI rc 0x%.8X",
+ static_cast<uint32_t>(iv_fapiReturnCode));
+ fapiLogError( iv_fapiReturnCode, fapi::FAPI_ERRL_SEV_UNRECOVERABLE );
+ }
+
FAPI_ERR("\nPore::ociMaster() received ModelError %d\n"
"Transaction is a %s of address 0x%08x\n"
"Transaction data is 0x%016llx",
@@ -122,10 +142,15 @@ Pore::wait(const uint32_t i_count)
nsDelay += 1; // Always round up the real delay.
iv_fapiReturnCode = fapiDelay(nsDelay, simCycles);
- if (iv_fapiReturnCode == 0) {
+ if (iv_fapiReturnCode.ok()) {
me = ME_SUCCESS;
} else {
me = ME_WAIT_FAILURE;
+ // If FAPI error, likely from platform, log it here.
+ // Current interface doesn't return FAPI rc up to fapiPoreVe level.
+ FAPI_ERR("Pore::wait() operation returns FAPI rc 0x%.8X",
+ static_cast<uint32_t>(iv_fapiReturnCode));
+ fapiLogError( iv_fapiReturnCode, fapi::FAPI_ERRL_SEV_UNRECOVERABLE );
}
if (me != 0) {
modelError(me);
@@ -147,6 +172,11 @@ Pore::hookInstruction(const PoreAddress& i_address,
me = ME_SUCCESS;
} else {
me = ME_HOOK_INSTRUCTION_ERROR;
+ // If FAPI error, likely from platform, log it here.
+ // Current interface doesn't return FAPI rc up to fapiPoreVe level.
+ FAPI_ERR("Pore::hookInstruction() operation returns FAPI rc 0x%.8X",
+ static_cast<uint32_t>(iv_fapiReturnCode));
+ fapiLogError( iv_fapiReturnCode, fapi::FAPI_ERRL_SEV_UNRECOVERABLE );
}
if (me != 0) {
modelError(me);
@@ -165,6 +195,11 @@ Pore::hookRead(const PoreAddress& i_address)
me = ME_SUCCESS;
} else {
me = ME_HOOK_READ_ERROR;
+ // If FAPI error, likely from platform, log it here.
+ // Current interface doesn't return FAPI rc up to fapiPoreVe level.
+ FAPI_ERR("Pore::hookRead() operation returns FAPI rc 0x%.8X",
+ static_cast<uint32_t>(iv_fapiReturnCode));
+ fapiLogError( iv_fapiReturnCode, fapi::FAPI_ERRL_SEV_UNRECOVERABLE );
}
if (me != 0) {
modelError(me);
@@ -183,6 +218,11 @@ Pore::hookWrite(const PoreAddress& i_address)
me = ME_SUCCESS;
} else {
me = ME_HOOK_WRITE_ERROR;
+ // If FAPI error, likely from platform, log it here.
+ // Current interface doesn't return FAPI rc up to fapiPoreVe level.
+ FAPI_ERR("Pore::hookWrite() operation returns FAPI rc 0x%.8X",
+ static_cast<uint32_t>(iv_fapiReturnCode));
+ fapiLogError( iv_fapiReturnCode, fapi::FAPI_ERRL_SEV_UNRECOVERABLE );
}
if (me != 0) {
modelError(me);
@@ -201,6 +241,11 @@ Pore::hookFetch(const PoreAddress& i_address)
me = ME_SUCCESS;
} else {
me = ME_HOOK_FETCH_ERROR;
+ // If FAPI error, likely from platform, log it here.
+ // Current interface doesn't return FAPI rc up to fapiPoreVe level.
+ FAPI_ERR("Pore::hookFetch() operation returns FAPI rc 0x%.8X",
+ static_cast<uint32_t>(iv_fapiReturnCode));
+ fapiLogError( iv_fapiReturnCode, fapi::FAPI_ERRL_SEV_UNRECOVERABLE );
}
if (me != 0) {
modelError(me);
OpenPOWER on IntegriCloud