Lines Matching full:exit
167 * some period after an IRQ!!). In the Xen case, we do it on exit from in kvm_xen_init()
246 static bool kvm_xen_hcall_xen_version(struct kvm_xen_exit *exit, X86CPU *cpu, in kvm_xen_hcall_xen_version() argument
281 exit->u.hcall.result = err; in kvm_xen_hcall_xen_version()
632 static int do_add_to_physmap(struct kvm_xen_exit *exit, X86CPU *cpu, in do_add_to_physmap() argument
638 if (hypercall_compat32(exit->u.hcall.longmode)) { in do_add_to_physmap()
663 static int do_add_to_physmap_batch(struct kvm_xen_exit *exit, X86CPU *cpu, in do_add_to_physmap_batch() argument
671 if (hypercall_compat32(exit->u.hcall.longmode)) { in do_add_to_physmap_batch()
728 static bool kvm_xen_hcall_memory_op(struct kvm_xen_exit *exit, X86CPU *cpu, in kvm_xen_hcall_memory_op() argument
735 err = do_add_to_physmap(exit, cpu, arg); in kvm_xen_hcall_memory_op()
739 err = do_add_to_physmap_batch(exit, cpu, arg); in kvm_xen_hcall_memory_op()
746 exit->u.hcall.result = err; in kvm_xen_hcall_memory_op()
750 static bool handle_set_param(struct kvm_xen_exit *exit, X86CPU *cpu, in handle_set_param() argument
775 xen_set_long_mode(exit->u.hcall.longmode); in handle_set_param()
782 exit->u.hcall.result = err; in handle_set_param()
786 static bool handle_get_param(struct kvm_xen_exit *exit, X86CPU *cpu, in handle_get_param() argument
833 exit->u.hcall.result = err; in handle_get_param()
837 static int kvm_xen_hcall_evtchn_upcall_vector(struct kvm_xen_exit *exit, in kvm_xen_hcall_evtchn_upcall_vector() argument
864 static bool kvm_xen_hcall_hvm_op(struct kvm_xen_exit *exit, X86CPU *cpu, in kvm_xen_hcall_hvm_op() argument
870 ret = kvm_xen_hcall_evtchn_upcall_vector(exit, cpu, arg); in kvm_xen_hcall_hvm_op()
878 return handle_set_param(exit, cpu, arg); in kvm_xen_hcall_hvm_op()
881 return handle_get_param(exit, cpu, arg); in kvm_xen_hcall_hvm_op()
887 exit->u.hcall.result = ret; in kvm_xen_hcall_hvm_op()
1160 static bool kvm_xen_hcall_set_timer_op(struct kvm_xen_exit *exit, X86CPU *cpu, in kvm_xen_hcall_set_timer_op() argument
1171 exit->u.hcall.result = err; in kvm_xen_hcall_set_timer_op()
1175 static bool kvm_xen_hcall_vcpu_op(struct kvm_xen_exit *exit, X86CPU *cpu, in kvm_xen_hcall_vcpu_op() argument
1225 exit->u.hcall.result = err; in kvm_xen_hcall_vcpu_op()
1229 static bool kvm_xen_hcall_evtchn_op(struct kvm_xen_exit *exit, X86CPU *cpu, in kvm_xen_hcall_evtchn_op() argument
1398 exit->u.hcall.result = err; in kvm_xen_hcall_evtchn_op()
1493 static bool kvm_xen_hcall_sched_op(struct kvm_xen_exit *exit, X86CPU *cpu, in kvm_xen_hcall_sched_op() argument
1521 exit->u.hcall.result = err; in kvm_xen_hcall_sched_op()
1525 static bool kvm_xen_hcall_gnttab_op(struct kvm_xen_exit *exit, X86CPU *cpu, in kvm_xen_hcall_gnttab_op() argument
1590 exit->u.hcall.result = err; in kvm_xen_hcall_gnttab_op()
1594 static bool kvm_xen_hcall_physdev_op(struct kvm_xen_exit *exit, X86CPU *cpu, in kvm_xen_hcall_physdev_op() argument
1604 if (hypercall_compat32(exit->u.hcall.longmode)) { in kvm_xen_hcall_physdev_op()
1705 exit->u.hcall.result = err; in kvm_xen_hcall_physdev_op()
1709 static bool do_kvm_xen_handle_exit(X86CPU *cpu, struct kvm_xen_exit *exit) in do_kvm_xen_handle_exit() argument
1711 uint16_t code = exit->u.hcall.input; in do_kvm_xen_handle_exit()
1713 if (exit->u.hcall.cpl > 0) { in do_kvm_xen_handle_exit()
1714 exit->u.hcall.result = -EPERM; in do_kvm_xen_handle_exit()
1720 if (exit->u.hcall.longmode) { in do_kvm_xen_handle_exit()
1721 return kvm_xen_hcall_set_timer_op(exit, cpu, in do_kvm_xen_handle_exit()
1722 exit->u.hcall.params[0]); in do_kvm_xen_handle_exit()
1725 uint64_t val = ((uint64_t)exit->u.hcall.params[1]) << 32 | in do_kvm_xen_handle_exit()
1726 (uint32_t)exit->u.hcall.params[0]; in do_kvm_xen_handle_exit()
1727 return kvm_xen_hcall_set_timer_op(exit, cpu, val); in do_kvm_xen_handle_exit()
1730 return kvm_xen_hcall_gnttab_op(exit, cpu, exit->u.hcall.params[0], in do_kvm_xen_handle_exit()
1731 exit->u.hcall.params[1], in do_kvm_xen_handle_exit()
1732 exit->u.hcall.params[2]); in do_kvm_xen_handle_exit()
1734 return kvm_xen_hcall_sched_op(exit, cpu, exit->u.hcall.params[0], in do_kvm_xen_handle_exit()
1735 exit->u.hcall.params[1]); in do_kvm_xen_handle_exit()
1737 return kvm_xen_hcall_evtchn_op(exit, cpu, exit->u.hcall.params[0], in do_kvm_xen_handle_exit()
1738 exit->u.hcall.params[1]); in do_kvm_xen_handle_exit()
1740 return kvm_xen_hcall_vcpu_op(exit, cpu, in do_kvm_xen_handle_exit()
1741 exit->u.hcall.params[0], in do_kvm_xen_handle_exit()
1742 exit->u.hcall.params[1], in do_kvm_xen_handle_exit()
1743 exit->u.hcall.params[2]); in do_kvm_xen_handle_exit()
1745 return kvm_xen_hcall_hvm_op(exit, cpu, exit->u.hcall.params[0], in do_kvm_xen_handle_exit()
1746 exit->u.hcall.params[1]); in do_kvm_xen_handle_exit()
1748 return kvm_xen_hcall_memory_op(exit, cpu, exit->u.hcall.params[0], in do_kvm_xen_handle_exit()
1749 exit->u.hcall.params[1]); in do_kvm_xen_handle_exit()
1751 return kvm_xen_hcall_physdev_op(exit, cpu, exit->u.hcall.params[0], in do_kvm_xen_handle_exit()
1752 exit->u.hcall.params[1]); in do_kvm_xen_handle_exit()
1754 return kvm_xen_hcall_xen_version(exit, cpu, exit->u.hcall.params[0], in do_kvm_xen_handle_exit()
1755 exit->u.hcall.params[1]); in do_kvm_xen_handle_exit()
1761 int kvm_xen_handle_exit(X86CPU *cpu, struct kvm_xen_exit *exit) in kvm_xen_handle_exit() argument
1763 if (exit->type != KVM_EXIT_XEN_HCALL) { in kvm_xen_handle_exit()
1773 if (exit->u.hcall.longmode != xen_is_long_mode()) { in kvm_xen_handle_exit()
1777 if (!do_kvm_xen_handle_exit(cpu, exit)) { in kvm_xen_handle_exit()
1782 exit->u.hcall.result = -ENOSYS; in kvm_xen_handle_exit()
1785 (uint64_t)exit->u.hcall.input, in kvm_xen_handle_exit()
1786 (uint64_t)exit->u.hcall.params[0], in kvm_xen_handle_exit()
1787 (uint64_t)exit->u.hcall.params[1], in kvm_xen_handle_exit()
1788 (uint64_t)exit->u.hcall.params[2]); in kvm_xen_handle_exit()
1791 trace_kvm_xen_hypercall(CPU(cpu)->cpu_index, exit->u.hcall.cpl, in kvm_xen_handle_exit()
1792 exit->u.hcall.input, exit->u.hcall.params[0], in kvm_xen_handle_exit()
1793 exit->u.hcall.params[1], exit->u.hcall.params[2], in kvm_xen_handle_exit()
1794 exit->u.hcall.result); in kvm_xen_handle_exit()