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()
486 struct kvmppc_xics *xics = vcpu->kvm->arch.xics; in xics_rm_h_xirr() local
490 if (!xics || !xics->real_mode) in xics_rm_h_xirr()
518 return check_too_hard(xics, icp); in xics_rm_h_xirr()
525 struct kvmppc_xics *xics = vcpu->kvm->arch.xics; in xics_rm_h_ipi() local
531 if (!xics || !xics->real_mode) in xics_rm_h_ipi()
596 icp_rm_deliver_irq(xics, icp, reject, false); in xics_rm_h_ipi()
602 icp_rm_check_resend(xics, icp); in xics_rm_h_ipi()
605 return check_too_hard(xics, this_icp); in xics_rm_h_ipi()
611 struct kvmppc_xics *xics = vcpu->kvm->arch.xics; in xics_rm_h_cppr() local
615 if (!xics || !xics->real_mode) in xics_rm_h_cppr()
626 icp_rm_down_cppr(xics, icp, cppr); in xics_rm_h_cppr()
664 icp_rm_deliver_irq(xics, icp, reject, false); in xics_rm_h_cppr()
667 return check_too_hard(xics, icp); in xics_rm_h_cppr()
672 struct kvmppc_xics *xics = vcpu->kvm->arch.xics; in ics_rm_eoi() local
687 ics = kvmppc_xics_find_ics(xics, irq, &src); in ics_rm_eoi()
702 icp_rm_deliver_irq(xics, NULL, irq, false); in ics_rm_eoi()
726 return check_too_hard(xics, icp); in ics_rm_eoi()
731 struct kvmppc_xics *xics = vcpu->kvm->arch.xics; in xics_rm_h_eoi() local
735 if (!xics || !xics->real_mode) in xics_rm_h_eoi()
752 icp_rm_down_cppr(xics, icp, xirr >> 24); in xics_rm_h_eoi()
756 return check_too_hard(xics, icp); in xics_rm_h_eoi()
845 struct kvmppc_xics *xics; in kvmppc_deliver_irq_passthru() local
854 xics = vcpu->kvm->arch.xics; in kvmppc_deliver_irq_passthru()
859 ics = kvmppc_xics_find_ics(xics, irq, &src); in kvmppc_deliver_irq_passthru()
873 icp_rm_deliver_irq(xics, icp, irq, false); in kvmppc_deliver_irq_passthru()
878 if (check_too_hard(xics, icp) == H_TOO_HARD) in kvmppc_deliver_irq_passthru()