Lines Matching refs:xics

33 static void icp_rm_deliver_irq(struct kvmppc_xics *xics, struct kvmppc_icp *icp,
38 static void ics_rm_check_resend(struct kvmppc_xics *xics, in ics_rm_check_resend() argument
46 icp_rm_deliver_irq(xics, icp, state->number, true); in ics_rm_check_resend()
215 static inline int check_too_hard(struct kvmppc_xics *xics, in check_too_hard() argument
218 return (xics->real_mode_dbg || icp->rm_action) ? H_TOO_HARD : H_SUCCESS; in check_too_hard()
221 static void icp_rm_check_resend(struct kvmppc_xics *xics, in icp_rm_check_resend() argument
228 for_each_set_bit(icsid, icp->resend_map, xics->max_icsid + 1) { in icp_rm_check_resend()
229 struct kvmppc_ics *ics = xics->ics[icsid]; in icp_rm_check_resend()
235 ics_rm_check_resend(xics, ics, icp); in icp_rm_check_resend()
277 static void icp_rm_deliver_irq(struct kvmppc_xics *xics, struct kvmppc_icp *icp, in icp_rm_deliver_irq() argument
302 ics = kvmppc_xics_find_ics(xics, new_irq, &src); in icp_rm_deliver_irq()
305 xics->err_noics++; in icp_rm_deliver_irq()
315 icp = kvmppc_xics_find_server(xics->kvm, state->server); in icp_rm_deliver_irq()
318 xics->err_noicp++; in icp_rm_deliver_irq()
409 static void icp_rm_down_cppr(struct kvmppc_xics *xics, struct kvmppc_icp *icp, in icp_rm_down_cppr() argument
478 icp_rm_check_resend(xics, icp); in icp_rm_down_cppr()
491 struct kvmppc_xics *xics = vcpu->kvm->arch.xics; in xics_rm_h_xirr() local
495 if (!xics || !xics->real_mode) in xics_rm_h_xirr()
523 return check_too_hard(xics, icp); in xics_rm_h_xirr()
530 struct kvmppc_xics *xics = vcpu->kvm->arch.xics; in xics_rm_h_ipi() local
536 if (!xics || !xics->real_mode) in xics_rm_h_ipi()
601 icp_rm_deliver_irq(xics, icp, reject, false); in xics_rm_h_ipi()
607 icp_rm_check_resend(xics, icp); in xics_rm_h_ipi()
610 return check_too_hard(xics, this_icp); in xics_rm_h_ipi()
616 struct kvmppc_xics *xics = vcpu->kvm->arch.xics; in xics_rm_h_cppr() local
620 if (!xics || !xics->real_mode) in xics_rm_h_cppr()
631 icp_rm_down_cppr(xics, icp, cppr); in xics_rm_h_cppr()
669 icp_rm_deliver_irq(xics, icp, reject, false); in xics_rm_h_cppr()
672 return check_too_hard(xics, icp); in xics_rm_h_cppr()
677 struct kvmppc_xics *xics = vcpu->kvm->arch.xics; in ics_rm_eoi() local
692 ics = kvmppc_xics_find_ics(xics, irq, &src); in ics_rm_eoi()
707 icp_rm_deliver_irq(xics, NULL, irq, false); in ics_rm_eoi()
731 return check_too_hard(xics, icp); in ics_rm_eoi()
736 struct kvmppc_xics *xics = vcpu->kvm->arch.xics; in xics_rm_h_eoi() local
740 if (!xics || !xics->real_mode) in xics_rm_h_eoi()
757 icp_rm_down_cppr(xics, icp, xirr >> 24); in xics_rm_h_eoi()
761 return check_too_hard(xics, icp); in xics_rm_h_eoi()
850 struct kvmppc_xics *xics; in kvmppc_deliver_irq_passthru() local
859 xics = vcpu->kvm->arch.xics; in kvmppc_deliver_irq_passthru()
864 ics = kvmppc_xics_find_ics(xics, irq, &src); in kvmppc_deliver_irq_passthru()
878 icp_rm_deliver_irq(xics, icp, irq, false); in kvmppc_deliver_irq_passthru()
883 if (check_too_hard(xics, icp) == H_TOO_HARD) in kvmppc_deliver_irq_passthru()