| .. | .. |
|---|
| 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]; |
|---|