summaryrefslogtreecommitdiffstats
path: root/src/usr/diag
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/diag')
-rw-r--r--src/usr/diag/attn/runtime/attn_rt.C24
1 files changed, 23 insertions, 1 deletions
diff --git a/src/usr/diag/attn/runtime/attn_rt.C b/src/usr/diag/attn/runtime/attn_rt.C
index 64086914a..ec51a3118 100644
--- a/src/usr/diag/attn/runtime/attn_rt.C
+++ b/src/usr/diag/attn/runtime/attn_rt.C
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2014 */
+/* Contributors Listed Below - COPYRIGHT 2014,2015 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -123,6 +123,28 @@ namespace ATTN_RT
"returned error for RtProc: %llx", i_proc);
break;
}
+
+ // For host attentions, clear gpio interrupt type register.
+ // If we do not clear gpio register, ipoll status will again
+ // get set and we will end up in infinite loop.
+
+ uint64_t hostMask = 0;
+ IPOLL::getCheckbits(HOST, hostMask);
+
+ if( i_ipollMask & hostMask)
+ {
+ err = putScom( proc, INTR_TYPE_LCL_ERR_STATUS_AND_REG, 0 );
+
+ if(err)
+ {
+ ATTN_ERR("ATTN_RT::handleAttns putscom failed for "
+ "RtProc: %llx address:0x%08X", i_proc,
+ INTR_TYPE_LCL_ERR_STATUS_AND_REG);
+ //Let us commit and continue.
+ errlCommit(err, ATTN_COMP_ID);
+ }
+
+ }
} while(0);
if(err)
OpenPOWER on IntegriCloud