Mike Baiocchi | 6b41fb2 | 2015-04-25 14:05:57 -0500 | [diff] [blame] | 1 | diff --git a/hw/prd.c b/hw/prd.c |
| 2 | index e65ae57..4862213 100644 |
| 3 | --- a/hw/prd.c |
| 4 | +++ b/hw/prd.c |
| 5 | @@ -226,12 +226,13 @@ static int ipoll_record_and_mask_pending(uint32_t proc) |
| 6 | |
| 7 | lock(&ipoll_lock); |
| 8 | rc = xscom_read(proc, PRD_IPOLL_REG_STATUS, &status); |
| 9 | + status &= PRD_IPOLL_MASK; |
| 10 | if (!rc) |
| 11 | __ipoll_update_mask(proc, true, status); |
| 12 | unlock(&ipoll_lock); |
| 13 | |
| 14 | if (!rc) |
| 15 | - ipoll_status[proc] |= (status & PRD_IPOLL_MASK); |
| 16 | + ipoll_status[proc] |= status; |
| 17 | |
| 18 | return rc; |
| 19 | } |
| 20 | @@ -284,7 +285,8 @@ static int prd_msg_handle_init(struct opal_prd_msg *msg) |
| 21 | |
| 22 | lock(&ipoll_lock); |
| 23 | for_each_chip(chip) { |
| 24 | - __ipoll_update_mask(chip->id, false, msg->init.ipoll); |
| 25 | + __ipoll_update_mask(chip->id, false, |
| 26 | + msg->init.ipoll & PRD_IPOLL_MASK); |
| 27 | } |
| 28 | unlock(&ipoll_lock); |
| 29 | |
| 30 | @@ -309,7 +311,7 @@ static int prd_msg_handle_fini(void) |
| 31 | |
| 32 | lock(&ipoll_lock); |
| 33 | for_each_chip(chip) { |
| 34 | - __ipoll_update_mask(chip->id, true, -1ul); |
| 35 | + __ipoll_update_mask(chip->id, true, PRD_IPOLL_MASK); |
| 36 | } |
| 37 | unlock(&ipoll_lock); |
| 38 | |
| 39 | @@ -345,7 +347,7 @@ void prd_init(void) |
| 40 | /* mask everything */ |
| 41 | lock(&ipoll_lock); |
| 42 | for_each_chip(chip) { |
| 43 | - __ipoll_update_mask(chip->id, true, -1ul); |
| 44 | + __ipoll_update_mask(chip->id, true, PRD_IPOLL_MASK); |
| 45 | } |
| 46 | unlock(&ipoll_lock); |
| 47 | |