diff options
author | Thi Tran <thi@us.ibm.com> | 2014-03-05 16:43:49 -0600 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2014-03-13 14:14:38 -0500 |
commit | f623fb28431226a2a0d9e420473c5d855b727f75 (patch) | |
tree | d7738ef8e35734bab8749940c3e29b8fd9f7ad3a /src/usr/pore | |
parent | fd579042a3d2f4a865f0f3c6c329e7948bc02b4b (diff) | |
download | talos-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.C | 4 | ||||
-rw-r--r-- | src/usr/pore/poreve/porevesrc/pore.C | 49 |
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); |