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()
222 static inline int check_too_hard(struct kvmppc_xics *xics, in check_too_hard() argument
225 return (xics->real_mode_dbg || icp->rm_action) ? H_TOO_HARD : H_SUCCESS; in check_too_hard()
228 static void icp_rm_check_resend(struct kvmppc_xics *xics, in icp_rm_check_resend() argument
235 for_each_set_bit(icsid, icp->resend_map, xics->max_icsid + 1) { in icp_rm_check_resend()
236 struct kvmppc_ics *ics = xics->ics[icsid]; in icp_rm_check_resend()
242 ics_rm_check_resend(xics, ics, icp); in icp_rm_check_resend()
284 static void icp_rm_deliver_irq(struct kvmppc_xics *xics, struct kvmppc_icp *icp, in icp_rm_deliver_irq() argument
309 ics = kvmppc_xics_find_ics(xics, new_irq, &src); in icp_rm_deliver_irq()
312 xics->err_noics++; in icp_rm_deliver_irq()
322 icp = kvmppc_xics_find_server(xics->kvm, state->server); in icp_rm_deliver_irq()
325 xics->err_noicp++; in icp_rm_deliver_irq()
416 static void icp_rm_down_cppr(struct kvmppc_xics *xics, struct kvmppc_icp *icp, in icp_rm_down_cppr() argument
485 icp_rm_check_resend(xics, icp); in icp_rm_down_cppr()
493 struct kvmppc_xics *xics = vcpu->kvm->arch.xics; in xics_rm_h_xirr() local
497 if (!xics || !xics->real_mode) in xics_rm_h_xirr()
525 return check_too_hard(xics, icp); in xics_rm_h_xirr()
532 struct kvmppc_xics *xics = vcpu->kvm->arch.xics; in xics_rm_h_ipi() local
538 if (!xics || !xics->real_mode) in xics_rm_h_ipi()
603 icp_rm_deliver_irq(xics, icp, reject, false); in xics_rm_h_ipi()
609 icp_rm_check_resend(xics, icp); in xics_rm_h_ipi()
612 return check_too_hard(xics, this_icp); in xics_rm_h_ipi()
618 struct kvmppc_xics *xics = vcpu->kvm->arch.xics; in xics_rm_h_cppr() local
622 if (!xics || !xics->real_mode) in xics_rm_h_cppr()
633 icp_rm_down_cppr(xics, icp, cppr); in xics_rm_h_cppr()
671 icp_rm_deliver_irq(xics, icp, reject, false); in xics_rm_h_cppr()
674 return check_too_hard(xics, icp); in xics_rm_h_cppr()
679 struct kvmppc_xics *xics = vcpu->kvm->arch.xics; in ics_rm_eoi() local
694 ics = kvmppc_xics_find_ics(xics, irq, &src); in ics_rm_eoi()
709 icp_rm_deliver_irq(xics, NULL, irq, false); in ics_rm_eoi()
732 return check_too_hard(xics, icp); in ics_rm_eoi()
737 struct kvmppc_xics *xics = vcpu->kvm->arch.xics; in xics_rm_h_eoi() local
741 if (!xics || !xics->real_mode) in xics_rm_h_eoi()
758 icp_rm_down_cppr(xics, icp, xirr >> 24); in xics_rm_h_eoi()
762 return check_too_hard(xics, icp); in xics_rm_h_eoi()
859 struct kvmppc_xics *xics; in kvmppc_deliver_irq_passthru() local
868 xics = vcpu->kvm->arch.xics; in kvmppc_deliver_irq_passthru()
873 ics = kvmppc_xics_find_ics(xics, irq, &src); in kvmppc_deliver_irq_passthru()
887 icp_rm_deliver_irq(xics, icp, irq, false); in kvmppc_deliver_irq_passthru()
893 if (check_too_hard(xics, icp) == H_TOO_HARD) in kvmppc_deliver_irq_passthru()