.. | .. |
---|
50 | 50 | |
---|
51 | 51 | server = xics_get_irq_server(d->irq, irq_data_get_affinity_mask(d), 0); |
---|
52 | 52 | |
---|
53 | | - call_status = rtas_call(ibm_set_xive, 3, 1, NULL, hw_irq, server, |
---|
54 | | - DEFAULT_PRIORITY); |
---|
| 53 | + call_status = rtas_call_reentrant(ibm_set_xive, 3, 1, NULL, hw_irq, |
---|
| 54 | + server, DEFAULT_PRIORITY); |
---|
55 | 55 | if (call_status != 0) { |
---|
56 | 56 | printk(KERN_ERR |
---|
57 | 57 | "%s: ibm_set_xive irq %u server %x returned %d\n", |
---|
.. | .. |
---|
60 | 60 | } |
---|
61 | 61 | |
---|
62 | 62 | /* Now unmask the interrupt (often a no-op) */ |
---|
63 | | - call_status = rtas_call(ibm_int_on, 1, 1, NULL, hw_irq); |
---|
| 63 | + call_status = rtas_call_reentrant(ibm_int_on, 1, 1, NULL, hw_irq); |
---|
64 | 64 | if (call_status != 0) { |
---|
65 | 65 | printk(KERN_ERR "%s: ibm_int_on irq=%u returned %d\n", |
---|
66 | 66 | __func__, hw_irq, call_status); |
---|
.. | .. |
---|
91 | 91 | if (hw_irq == XICS_IPI) |
---|
92 | 92 | return; |
---|
93 | 93 | |
---|
94 | | - call_status = rtas_call(ibm_int_off, 1, 1, NULL, hw_irq); |
---|
| 94 | + call_status = rtas_call_reentrant(ibm_int_off, 1, 1, NULL, hw_irq); |
---|
95 | 95 | if (call_status != 0) { |
---|
96 | 96 | printk(KERN_ERR "%s: ibm_int_off irq=%u returned %d\n", |
---|
97 | 97 | __func__, hw_irq, call_status); |
---|
.. | .. |
---|
99 | 99 | } |
---|
100 | 100 | |
---|
101 | 101 | /* Have to set XIVE to 0xff to be able to remove a slot */ |
---|
102 | | - call_status = rtas_call(ibm_set_xive, 3, 1, NULL, hw_irq, |
---|
103 | | - xics_default_server, 0xff); |
---|
| 102 | + call_status = rtas_call_reentrant(ibm_set_xive, 3, 1, NULL, hw_irq, |
---|
| 103 | + xics_default_server, 0xff); |
---|
104 | 104 | if (call_status != 0) { |
---|
105 | 105 | printk(KERN_ERR "%s: ibm_set_xive(0xff) irq=%u returned %d\n", |
---|
106 | 106 | __func__, hw_irq, call_status); |
---|
.. | .. |
---|
131 | 131 | if (hw_irq == XICS_IPI || hw_irq == XICS_IRQ_SPURIOUS) |
---|
132 | 132 | return -1; |
---|
133 | 133 | |
---|
134 | | - status = rtas_call(ibm_get_xive, 1, 3, xics_status, hw_irq); |
---|
| 134 | + status = rtas_call_reentrant(ibm_get_xive, 1, 3, xics_status, hw_irq); |
---|
135 | 135 | |
---|
136 | 136 | if (status) { |
---|
137 | 137 | printk(KERN_ERR "%s: ibm,get-xive irq=%u returns %d\n", |
---|
.. | .. |
---|
146 | 146 | return -1; |
---|
147 | 147 | } |
---|
148 | 148 | |
---|
149 | | - status = rtas_call(ibm_set_xive, 3, 1, NULL, |
---|
150 | | - hw_irq, irq_server, xics_status[1]); |
---|
| 149 | + status = rtas_call_reentrant(ibm_set_xive, 3, 1, NULL, |
---|
| 150 | + hw_irq, irq_server, xics_status[1]); |
---|
151 | 151 | |
---|
152 | 152 | if (status) { |
---|
153 | 153 | printk(KERN_ERR "%s: ibm,set-xive irq=%u returns %d\n", |
---|
.. | .. |
---|
179 | 179 | return -EINVAL; |
---|
180 | 180 | |
---|
181 | 181 | /* Check if RTAS knows about this interrupt */ |
---|
182 | | - rc = rtas_call(ibm_get_xive, 1, 3, status, hw_irq); |
---|
| 182 | + rc = rtas_call_reentrant(ibm_get_xive, 1, 3, status, hw_irq); |
---|
183 | 183 | if (rc) |
---|
184 | 184 | return -ENXIO; |
---|
185 | 185 | |
---|
.. | .. |
---|
198 | 198 | { |
---|
199 | 199 | int rc, status[2]; |
---|
200 | 200 | |
---|
201 | | - rc = rtas_call(ibm_get_xive, 1, 3, status, vec); |
---|
| 201 | + rc = rtas_call_reentrant(ibm_get_xive, 1, 3, status, vec); |
---|
202 | 202 | if (rc) |
---|
203 | 203 | return -1; |
---|
204 | 204 | return status[0]; |
---|