Lines Matching refs:ics
76 struct kvmppc_ics *ics; in ics_deliver_irq() local
81 ics = kvmppc_xics_find_ics(xics, irq, &src); in ics_deliver_irq()
82 if (!ics) { in ics_deliver_irq()
86 state = &ics->irq_state[src]; in ics_deliver_irq()
108 static void ics_check_resend(struct kvmppc_xics *xics, struct kvmppc_ics *ics, in ics_check_resend() argument
116 arch_spin_lock(&ics->lock); in ics_check_resend()
119 struct ics_irq_state *state = &ics->irq_state[i]; in ics_check_resend()
127 arch_spin_unlock(&ics->lock); in ics_check_resend()
131 arch_spin_lock(&ics->lock); in ics_check_resend()
134 arch_spin_unlock(&ics->lock); in ics_check_resend()
138 static bool write_xive(struct kvmppc_xics *xics, struct kvmppc_ics *ics, in write_xive() argument
146 arch_spin_lock(&ics->lock); in write_xive()
157 arch_spin_unlock(&ics->lock); in write_xive()
167 struct kvmppc_ics *ics; in kvmppc_xics_set_xive() local
174 ics = kvmppc_xics_find_ics(xics, irq, &src); in kvmppc_xics_set_xive()
175 if (!ics) in kvmppc_xics_set_xive()
177 state = &ics->irq_state[src]; in kvmppc_xics_set_xive()
187 if (write_xive(xics, ics, state, server, priority, priority)) in kvmppc_xics_set_xive()
196 struct kvmppc_ics *ics; in kvmppc_xics_get_xive() local
204 ics = kvmppc_xics_find_ics(xics, irq, &src); in kvmppc_xics_get_xive()
205 if (!ics) in kvmppc_xics_get_xive()
207 state = &ics->irq_state[src]; in kvmppc_xics_get_xive()
210 arch_spin_lock(&ics->lock); in kvmppc_xics_get_xive()
213 arch_spin_unlock(&ics->lock); in kvmppc_xics_get_xive()
223 struct kvmppc_ics *ics; in kvmppc_xics_int_on() local
230 ics = kvmppc_xics_find_ics(xics, irq, &src); in kvmppc_xics_int_on()
231 if (!ics) in kvmppc_xics_int_on()
233 state = &ics->irq_state[src]; in kvmppc_xics_int_on()
239 if (write_xive(xics, ics, state, state->server, state->saved_priority, in kvmppc_xics_int_on()
249 struct kvmppc_ics *ics; in kvmppc_xics_int_off() local
256 ics = kvmppc_xics_find_ics(xics, irq, &src); in kvmppc_xics_int_off()
257 if (!ics) in kvmppc_xics_int_off()
259 state = &ics->irq_state[src]; in kvmppc_xics_int_off()
261 write_xive(xics, ics, state, state->server, MASKED, state->priority); in kvmppc_xics_int_off()
323 struct kvmppc_ics *ics = xics->ics[icsid]; in icp_check_resend() local
327 if (!ics) in icp_check_resend()
329 ics_check_resend(xics, ics, icp); in icp_check_resend()
378 struct kvmppc_ics *ics; in icp_deliver_irq() local
400 ics = kvmppc_xics_find_ics(xics, new_irq, &src); in icp_deliver_irq()
401 if (!ics) { in icp_deliver_irq()
405 state = &ics->irq_state[src]; in icp_deliver_irq()
409 arch_spin_lock(&ics->lock); in icp_deliver_irq()
466 arch_spin_unlock(&ics->lock); in icp_deliver_irq()
476 set_bit(ics->icsid, icp->resend_map); in icp_deliver_irq()
487 arch_spin_unlock(&ics->lock); in icp_deliver_irq()
493 arch_spin_unlock(&ics->lock); in icp_deliver_irq()
767 struct kvmppc_ics *ics; in kvmppc_h_eoi() local
799 ics = kvmppc_xics_find_ics(xics, irq, &src); in kvmppc_h_eoi()
800 if (!ics) { in kvmppc_h_eoi()
804 state = &ics->irq_state[src]; in kvmppc_h_eoi()
944 struct kvmppc_ics *ics = xics->ics[icsid]; in xics_debug_show() local
946 if (!ics) in xics_debug_show()
953 arch_spin_lock(&ics->lock); in xics_debug_show()
956 struct ics_irq_state *irq = &ics->irq_state[i]; in xics_debug_show()
964 arch_spin_unlock(&ics->lock); in xics_debug_show()
1002 struct kvmppc_ics *ics; in kvmppc_xics_create_ics() local
1010 if (xics->ics[icsid]) in kvmppc_xics_create_ics()
1014 ics = kzalloc(sizeof(struct kvmppc_ics), GFP_KERNEL); in kvmppc_xics_create_ics()
1015 if (!ics) in kvmppc_xics_create_ics()
1018 ics->icsid = icsid; in kvmppc_xics_create_ics()
1021 ics->irq_state[i].number = (icsid << KVMPPC_XICS_ICS_SHIFT) | i; in kvmppc_xics_create_ics()
1022 ics->irq_state[i].priority = MASKED; in kvmppc_xics_create_ics()
1023 ics->irq_state[i].saved_priority = MASKED; in kvmppc_xics_create_ics()
1026 xics->ics[icsid] = ics; in kvmppc_xics_create_ics()
1033 return xics->ics[icsid]; in kvmppc_xics_create_ics()
1080 struct kvmppc_ics *ics; in kvmppc_xics_set_icp() local
1105 ics = kvmppc_xics_find_ics(xics, xisr, &src); in kvmppc_xics_set_icp()
1106 if (!ics) in kvmppc_xics_set_icp()
1154 struct kvmppc_ics *ics; in xics_get_source() local
1161 ics = kvmppc_xics_find_ics(xics, irq, &idx); in xics_get_source()
1162 if (!ics) in xics_get_source()
1165 irqp = &ics->irq_state[idx]; in xics_get_source()
1167 arch_spin_lock(&ics->lock); in xics_get_source()
1183 arch_spin_unlock(&ics->lock); in xics_get_source()
1194 struct kvmppc_ics *ics; in xics_set_source() local
1206 ics = kvmppc_xics_find_ics(xics, irq, &idx); in xics_set_source()
1207 if (!ics) { in xics_set_source()
1208 ics = kvmppc_xics_create_ics(xics->kvm, xics, irq); in xics_set_source()
1209 if (!ics) in xics_set_source()
1212 irqp = &ics->irq_state[idx]; in xics_set_source()
1223 arch_spin_lock(&ics->lock); in xics_set_source()
1235 arch_spin_unlock(&ics->lock); in xics_set_source()
1307 kfree(xics->ics[i]); in kvmppc_xics_free()