blob: 68a4cbda72c6a2a7f2431e43fdc3682ccb7515ee [file] [log] [blame]
Mike Baiocchi6b41fb22015-04-25 14:05:57 -05001diff --git a/hw/prd.c b/hw/prd.c
2index 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