summaryrefslogtreecommitdiffstats
path: root/src/usr/intr
diff options
context:
space:
mode:
authorDean Sanner <dsanner@us.ibm.com>2014-02-14 12:24:24 -0600
committerA. Patrick Williams III <iawillia@us.ibm.com>2014-02-14 15:41:17 -0600
commite0f95e3ce5adc0156db9e5e735325ebc0c6b0bfc (patch)
tree608e75505caed017eb0e7bf889810c0931b8125a /src/usr/intr
parent9ea4a28823a5c17d8adc448635fdec1e18c5ce5d (diff)
downloadtalos-hostboot-e0f95e3ce5adc0156db9e5e735325ebc0c6b0bfc.tar.gz
talos-hostboot-e0f95e3ce5adc0156db9e5e735325ebc0c6b0bfc.zip
Fix interrupt msg loss on multiple interrupts
CQ:SW247017 Change-Id: I66b27aeac0c23366deb390963edf5d88fbd8406c Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/8862 Tested-by: Jenkins Server Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/intr')
-rw-r--r--src/usr/intr/intrrp.C9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/usr/intr/intrrp.C b/src/usr/intr/intrrp.C
index 11b05171d..60b31c0b2 100644
--- a/src/usr/intr/intrrp.C
+++ b/src/usr/intr/intrrp.C
@@ -347,10 +347,11 @@ void IntrRp::msgHandler()
ext_intr_t type = NO_INTERRUPT;
// xirr was read by interrupt message handler.
- // Passed in as data[1]
- uint32_t xirr = static_cast<uint32_t>(msg->data[1]);
- // data[0] has the PIR
- PIR_t pir = static_cast<PIR_t>(msg->data[0]);
+ // Passed in as upper word of data[0]
+ uint32_t xirr = static_cast<uint32_t>(msg->data[0]>>32);
+ // data[0] (lower word) has the PIR
+ uint64_t l_data0 = (msg->data[0] & 0xFFFFFFFF);
+ PIR_t pir = static_cast<PIR_t>(l_data0);
uint64_t baseAddr = iv_baseAddr + cpuOffsetAddr(pir);
uint32_t * xirrAddress =
OpenPOWER on IntegriCloud