Lines Matching refs:vcpu

306 		kvmppc_book3s_queue_irqprio(icp->vcpu,  in icp_try_update()
309 kvmppc_fast_vcpu_kick(icp->vcpu); in icp_try_update()
570 static noinline unsigned long kvmppc_h_xirr(struct kvm_vcpu *vcpu) in kvmppc_h_xirr() argument
573 struct kvmppc_icp *icp = vcpu->arch.icp; in kvmppc_h_xirr()
577 kvmppc_book3s_dequeue_irqprio(icp->vcpu, in kvmppc_h_xirr()
599 XICS_DBG("h_xirr vcpu %d xirr %#x\n", vcpu->vcpu_id, xirr); in kvmppc_h_xirr()
604 static noinline int kvmppc_h_ipi(struct kvm_vcpu *vcpu, unsigned long server, in kvmppc_h_ipi() argument
608 struct kvmppc_xics *xics = vcpu->kvm->arch.xics; in kvmppc_h_ipi()
615 vcpu->vcpu_id, server, mfrr); in kvmppc_h_ipi()
617 icp = vcpu->arch.icp; in kvmppc_h_ipi()
620 icp = kvmppc_xics_find_server(vcpu->kvm, server); in kvmppc_h_ipi()
689 static int kvmppc_h_ipoll(struct kvm_vcpu *vcpu, unsigned long server) in kvmppc_h_ipoll() argument
694 icp = vcpu->arch.icp; in kvmppc_h_ipoll()
696 icp = kvmppc_xics_find_server(vcpu->kvm, server); in kvmppc_h_ipoll()
701 kvmppc_set_gpr(vcpu, 4, ((u32)state.cppr << 24) | state.xisr); in kvmppc_h_ipoll()
702 kvmppc_set_gpr(vcpu, 5, state.mfrr); in kvmppc_h_ipoll()
706 static noinline void kvmppc_h_cppr(struct kvm_vcpu *vcpu, unsigned long cppr) in kvmppc_h_cppr() argument
709 struct kvmppc_xics *xics = vcpu->kvm->arch.xics; in kvmppc_h_cppr()
710 struct kvmppc_icp *icp = vcpu->arch.icp; in kvmppc_h_cppr()
713 XICS_DBG("h_cppr vcpu %d cppr %#lx\n", vcpu->vcpu_id, cppr); in kvmppc_h_cppr()
738 kvmppc_book3s_dequeue_irqprio(icp->vcpu, in kvmppc_h_cppr()
763 static noinline int kvmppc_h_eoi(struct kvm_vcpu *vcpu, unsigned long xirr) in kvmppc_h_eoi() argument
765 struct kvmppc_xics *xics = vcpu->kvm->arch.xics; in kvmppc_h_eoi()
766 struct kvmppc_icp *icp = vcpu->arch.icp; in kvmppc_h_eoi()
772 XICS_DBG("h_eoi vcpu %d eoi %#lx\n", vcpu->vcpu_id, xirr); in kvmppc_h_eoi()
810 kvm_notify_acked_irq(vcpu->kvm, 0, irq); in kvmppc_h_eoi()
815 static noinline int kvmppc_xics_rm_complete(struct kvm_vcpu *vcpu, u32 hcall) in kvmppc_xics_rm_complete() argument
817 struct kvmppc_xics *xics = vcpu->kvm->arch.xics; in kvmppc_xics_rm_complete()
818 struct kvmppc_icp *icp = vcpu->arch.icp; in kvmppc_xics_rm_complete()
837 kvm_notify_acked_irq(vcpu->kvm, 0, icp->rm_eoied_irq); in kvmppc_xics_rm_complete()
845 int kvmppc_xics_hcall(struct kvm_vcpu *vcpu, u32 req) in kvmppc_xics_hcall() argument
847 struct kvmppc_xics *xics = vcpu->kvm->arch.xics; in kvmppc_xics_hcall()
852 if (!xics || !vcpu->arch.icp) in kvmppc_xics_hcall()
858 res = kvmppc_h_xirr(vcpu); in kvmppc_xics_hcall()
859 kvmppc_set_gpr(vcpu, 4, res); in kvmppc_xics_hcall()
860 kvmppc_set_gpr(vcpu, 5, get_tb()); in kvmppc_xics_hcall()
863 rc = kvmppc_h_ipoll(vcpu, kvmppc_get_gpr(vcpu, 4)); in kvmppc_xics_hcall()
868 if (xics->real_mode && is_kvmppc_hv_enabled(vcpu->kvm)) in kvmppc_xics_hcall()
869 return kvmppc_xics_rm_complete(vcpu, req); in kvmppc_xics_hcall()
873 res = kvmppc_h_xirr(vcpu); in kvmppc_xics_hcall()
874 kvmppc_set_gpr(vcpu, 4, res); in kvmppc_xics_hcall()
877 kvmppc_h_cppr(vcpu, kvmppc_get_gpr(vcpu, 4)); in kvmppc_xics_hcall()
880 rc = kvmppc_h_eoi(vcpu, kvmppc_get_gpr(vcpu, 4)); in kvmppc_xics_hcall()
883 rc = kvmppc_h_ipi(vcpu, kvmppc_get_gpr(vcpu, 4), in kvmppc_xics_hcall()
884 kvmppc_get_gpr(vcpu, 5)); in kvmppc_xics_hcall()
899 struct kvm_vcpu *vcpu; in xics_debug_show() local
918 kvm_for_each_vcpu(i, vcpu, kvm) { in xics_debug_show()
919 struct kvmppc_icp *icp = vcpu->arch.icp; in xics_debug_show()
1036 int kvmppc_xics_create_icp(struct kvm_vcpu *vcpu, unsigned long server_num) in kvmppc_xics_create_icp() argument
1040 if (!vcpu->kvm->arch.xics) in kvmppc_xics_create_icp()
1043 if (kvmppc_xics_find_server(vcpu->kvm, server_num)) in kvmppc_xics_create_icp()
1050 icp->vcpu = vcpu; in kvmppc_xics_create_icp()
1054 vcpu->arch.icp = icp; in kvmppc_xics_create_icp()
1056 XICS_DBG("created server for vcpu %d\n", vcpu->vcpu_id); in kvmppc_xics_create_icp()
1061 u64 kvmppc_xics_get_icp(struct kvm_vcpu *vcpu) in kvmppc_xics_get_icp() argument
1063 struct kvmppc_icp *icp = vcpu->arch.icp; in kvmppc_xics_get_icp()
1075 int kvmppc_xics_set_icp(struct kvm_vcpu *vcpu, u64 icpval) in kvmppc_xics_set_icp() argument
1077 struct kvmppc_icp *icp = vcpu->arch.icp; in kvmppc_xics_set_icp()
1078 struct kvmppc_xics *xics = vcpu->kvm->arch.xics; in kvmppc_xics_set_icp()
1120 kvmppc_book3s_dequeue_irqprio(icp->vcpu, in kvmppc_xics_set_icp()
1361 int kvmppc_xics_connect_vcpu(struct kvm_device *dev, struct kvm_vcpu *vcpu, in kvmppc_xics_connect_vcpu() argument
1369 if (xics->kvm != vcpu->kvm) in kvmppc_xics_connect_vcpu()
1371 if (vcpu->arch.irq_type) in kvmppc_xics_connect_vcpu()
1374 r = kvmppc_xics_create_icp(vcpu, xcpu); in kvmppc_xics_connect_vcpu()
1376 vcpu->arch.irq_type = KVMPPC_IRQ_XICS; in kvmppc_xics_connect_vcpu()
1381 void kvmppc_xics_free_icp(struct kvm_vcpu *vcpu) in kvmppc_xics_free_icp() argument
1383 if (!vcpu->arch.icp) in kvmppc_xics_free_icp()
1385 kfree(vcpu->arch.icp); in kvmppc_xics_free_icp()
1386 vcpu->arch.icp = NULL; in kvmppc_xics_free_icp()
1387 vcpu->arch.irq_type = KVMPPC_IRQ_DEFAULT; in kvmppc_xics_free_icp()