Home | History | Annotate | Download | only in x86

Lines Matching refs:vcpu

825 	/* VCPU configuration. */
938 vmx_vmcs_enter(struct nvmm_cpu *vcpu)
940 struct vmx_cpudata *cpudata = vcpu->cpudata;
971 vmx_vmcs_leave(struct nvmm_cpu *vcpu)
973 struct vmx_cpudata *cpudata = vcpu->cpudata;
989 vmx_vmcs_destroy(struct nvmm_cpu *vcpu)
991 struct vmx_cpudata *cpudata = vcpu->cpudata;
1005 vmx_event_waitexit_enable(struct nvmm_cpu *vcpu, bool nmi)
1007 struct vmx_cpudata *cpudata = vcpu->cpudata;
1025 vmx_event_waitexit_disable(struct nvmm_cpu *vcpu, bool nmi)
1027 struct vmx_cpudata *cpudata = vcpu->cpudata;
1076 vmx_vcpu_inject(struct nvmm_cpu *vcpu)
1078 struct nvmm_comm_page *comm = vcpu->comm;
1079 struct vmx_cpudata *cpudata = vcpu->cpudata;
1090 vmx_vmcs_enter(vcpu);
1109 vmx_event_waitexit_enable(vcpu, true);
1129 vmx_vmcs_leave(vcpu);
1134 vmx_inject_ud(struct nvmm_cpu *vcpu)
1136 struct nvmm_comm_page *comm = vcpu->comm;
1143 ret = vmx_vcpu_inject(vcpu);
1148 vmx_inject_gp(struct nvmm_cpu *vcpu)
1150 struct nvmm_comm_page *comm = vcpu->comm;
1157 ret = vmx_vcpu_inject(vcpu);
1162 vmx_vcpu_event_commit(struct nvmm_cpu *vcpu)
1164 if (__predict_true(!vcpu->comm->event_commit)) {
1167 vcpu->comm->event_commit = false;
1168 return vmx_vcpu_inject(vcpu);
1202 vmx_exit_exc_nmi(struct nvmm_machine *mach, struct nvmm_cpu *vcpu,
1242 vmx_inkernel_handle_cpuid(struct nvmm_machine *mach, struct nvmm_cpu *vcpu,
1245 struct vmx_cpudata *cpudata = vcpu->cpudata;
1294 cpudata->gprs[NVMM_X64_GPR_RBX] |= __SHIFTIN(vcpu->cpuid,
1368 cpudata->gprs[NVMM_X64_GPR_RDX] = vcpu->cpuid;
1377 cpudata->gprs[NVMM_X64_GPR_RDX] = vcpu->cpuid;
1516 vmx_exit_cpuid(struct nvmm_machine *mach, struct nvmm_cpu *vcpu,
1519 struct vmx_cpudata *cpudata = vcpu->cpudata;
1527 vmx_inkernel_handle_cpuid(mach, vcpu, eax, ecx);
1564 vmx_exit_hlt(struct nvmm_machine *mach, struct nvmm_cpu *vcpu,
1567 struct vmx_cpudata *cpudata = vcpu->cpudata;
1573 vmx_event_waitexit_disable(vcpu, false);
1606 vmx_inkernel_handle_cr0(struct nvmm_machine *mach, struct nvmm_cpu *vcpu,
1609 struct vmx_cpudata *cpudata = vcpu->cpudata;
1675 vmx_inkernel_handle_cr4(struct nvmm_machine *mach, struct nvmm_cpu *vcpu,
1678 struct vmx_cpudata *cpudata = vcpu->cpudata;
1714 vmx_inkernel_handle_cr8(struct nvmm_machine *mach, struct nvmm_cpu *vcpu,
1717 struct vmx_cpudata *cpudata = vcpu->cpudata;
1755 vmx_exit_cr(struct nvmm_machine *mach, struct nvmm_cpu *vcpu,
1767 ret = vmx_inkernel_handle_cr0(mach, vcpu, qual);
1770 ret = vmx_inkernel_handle_cr4(mach, vcpu, qual);
1773 ret = vmx_inkernel_handle_cr8(mach, vcpu, qual, exit);
1781 vmx_inject_gp(vcpu);
1802 vmx_exit_io(struct nvmm_machine *mach, struct nvmm_cpu *vcpu,
1845 vmx_vcpu_state_provide(vcpu,
1856 vmx_inkernel_handle_msr(struct nvmm_machine *mach, struct nvmm_cpu *vcpu,
1859 struct vmx_cpudata *cpudata = vcpu->cpudata;
1934 vmx_inject_gp(vcpu);
1939 vmx_exit_rdmsr(struct nvmm_machine *mach, struct nvmm_cpu *vcpu,
1942 struct vmx_cpudata *cpudata = vcpu->cpudata;
1948 if (vmx_inkernel_handle_msr(mach, vcpu, exit)) {
1957 vmx_vcpu_state_provide(vcpu, NVMM_X64_STATE_GPRS);
1961 vmx_exit_wrmsr(struct nvmm_machine *mach, struct nvmm_cpu *vcpu,
1964 struct vmx_cpudata *cpudata = vcpu->cpudata;
1974 if (vmx_inkernel_handle_msr(mach, vcpu, exit)) {
1983 vmx_vcpu_state_provide(vcpu, NVMM_X64_STATE_GPRS);
1987 vmx_exit_xsetbv(struct nvmm_machine *mach, struct nvmm_cpu *vcpu,
1990 struct vmx_cpudata *cpudata = vcpu->cpudata;
2012 vmx_inject_gp(vcpu);
2020 vmx_exit_epf(struct nvmm_machine *mach, struct nvmm_cpu *vcpu,
2039 vmx_vcpu_state_provide(vcpu,
2047 vmx_vcpu_guest_fpu_enter(struct nvmm_cpu *vcpu)
2049 struct vmx_cpudata *cpudata = vcpu->cpudata;
2062 vmx_vcpu_guest_fpu_leave(struct nvmm_cpu *vcpu)
2064 struct vmx_cpudata *cpudata = vcpu->cpudata;
2077 vmx_vcpu_guest_dbregs_enter(struct nvmm_cpu *vcpu)
2079 struct vmx_cpudata *cpudata = vcpu->cpudata;
2093 vmx_vcpu_guest_dbregs_leave(struct nvmm_cpu *vcpu)
2095 struct vmx_cpudata *cpudata = vcpu->cpudata;
2107 vmx_vcpu_guest_misc_enter(struct nvmm_cpu *vcpu)
2109 struct vmx_cpudata *cpudata = vcpu->cpudata;
2121 vmx_vcpu_guest_misc_leave(struct nvmm_cpu *vcpu)
2123 struct vmx_cpudata *cpudata = vcpu->cpudata;
2143 vmx_gtlb_catchup(struct nvmm_cpu *vcpu, int hcpu)
2145 struct vmx_cpudata *cpudata = vcpu->cpudata;
2147 if (vcpu->hcpu_last != hcpu) {
2153 vmx_htlb_catchup(struct nvmm_cpu *vcpu, int hcpu)
2155 struct vmx_cpudata *cpudata = vcpu->cpudata;
2223 vmx_vcpu_run(struct nvmm_machine *mach, struct nvmm_cpu *vcpu,
2226 struct nvmm_comm_page *comm = vcpu->comm;
2228 struct vmx_cpudata *cpudata = vcpu->cpudata;
2237 vmx_vmcs_enter(vcpu);
2239 vmx_vcpu_state_commit(vcpu);
2242 if (__predict_false(vmx_vcpu_event_commit(vcpu) != 0)) {
2243 vmx_vmcs_leave(vcpu);
2251 vmx_gtlb_catchup(vcpu, hcpu);
2252 vmx_htlb_catchup(vcpu, hcpu);
2254 if (vcpu->hcpu_last != hcpu) {
2260 vcpu->hcpu_last = hcpu;
2263 vmx_vcpu_guest_dbregs_enter(vcpu);
2264 vmx_vcpu_guest_misc_enter(vcpu);
2279 vmx_vcpu_guest_fpu_enter(vcpu);
2291 vmx_vcpu_guest_fpu_leave(vcpu);
2306 vmx_exit_exc_nmi(mach, vcpu, exit);
2312 vmx_exit_cpuid(mach, vcpu, exit);
2315 vmx_exit_hlt(mach, vcpu, exit);
2318 vmx_exit_cr(mach, vcpu, exit);
2321 vmx_exit_io(mach, vcpu, exit);
2324 vmx_exit_rdmsr(mach, vcpu, exit);
2327 vmx_exit_wrmsr(mach, vcpu, exit);
2339 vmx_exit_xsetbv(mach, vcpu, exit);
2355 vmx_inject_ud(vcpu);
2359 vmx_exit_epf(mach, vcpu, exit);
2362 vmx_event_waitexit_disable(vcpu, false);
2366 vmx_event_waitexit_disable(vcpu, true);
2375 if (nvmm_return_needed(vcpu, exit)) {
2387 vmx_vcpu_guest_misc_leave(vcpu);
2388 vmx_vcpu_guest_dbregs_leave(vcpu);
2399 vmx_vmcs_leave(vcpu);
2579 vmx_vcpu_setstate(struct nvmm_cpu *vcpu)
2581 struct nvmm_comm_page *comm = vcpu->comm;
2583 struct vmx_cpudata *cpudata = vcpu->cpudata;
2590 vmx_vmcs_enter(vcpu);
2703 vmx_event_waitexit_enable(vcpu, false);
2705 vmx_event_waitexit_disable(vcpu, false);
2709 vmx_event_waitexit_enable(vcpu, true);
2711 vmx_event_waitexit_disable(vcpu, true);
2730 vmx_vmcs_leave(vcpu);
2737 vmx_vcpu_getstate(struct nvmm_cpu *vcpu)
2739 struct nvmm_comm_page *comm = vcpu->comm;
2741 struct vmx_cpudata *cpudata = vcpu->cpudata;
2746 vmx_vmcs_enter(vcpu);
2830 vmx_vmcs_leave(vcpu);
2837 vmx_vcpu_state_provide(struct nvmm_cpu *vcpu, uint64_t flags)
2839 vcpu->comm->state_wanted = flags;
2840 vmx_vcpu_getstate(vcpu);
2844 vmx_vcpu_state_commit(struct nvmm_cpu *vcpu)
2846 vcpu->comm->state_wanted = vcpu->comm->state_commit;
2847 vcpu->comm->state_commit = 0;
2848 vmx_vcpu_setstate(vcpu);
2854 vmx_asid_alloc(struct nvmm_cpu *vcpu)
2856 struct vmx_cpudata *cpudata = vcpu->cpudata;
2883 vmx_asid_free(struct nvmm_cpu *vcpu)
2899 vmx_vcpu_init(struct nvmm_machine *mach, struct nvmm_cpu *vcpu)
2901 struct vmx_cpudata *cpudata = vcpu->cpudata;
2913 vmx_vmcs_enter(vcpu);
2985 vmx_asid_alloc(vcpu);
3013 memcpy(&vcpu->comm->state, &nvmm_x86_reset_state,
3015 vcpu->comm->state_wanted = NVMM_X64_STATE_ALL;
3016 vcpu->comm->state_cached = 0;
3017 vmx_vcpu_setstate(vcpu);
3019 vmx_vmcs_leave(vcpu);
3023 vmx_vcpu_create(struct nvmm_machine *mach, struct nvmm_cpu *vcpu)
3032 vcpu->cpudata = cpudata;
3053 /* Init the VCPU info. */
3054 vmx_vcpu_init(mach, vcpu);
3076 vmx_vcpu_destroy(struct nvmm_machine *mach, struct nvmm_cpu *vcpu)
3078 struct vmx_cpudata *cpudata = vcpu->cpudata;
3080 vmx_vmcs_enter(vcpu);
3081 vmx_asid_free(vcpu);
3082 vmx_vmcs_destroy(vcpu);
3160 vmx_vcpu_configure(struct nvmm_cpu *vcpu, uint64_t op, void *data)
3162 struct vmx_cpudata *cpudata = vcpu->cpudata;
3175 vmx_vcpu_suspend(struct nvmm_machine *mach, struct nvmm_cpu *vcpu)
3177 struct vmx_cpudata *cpudata = vcpu->cpudata;
3199 vmx_vcpu_resume(struct nvmm_machine *mach, struct nvmm_cpu *vcpu)
3201 struct vmx_cpudata *cpudata = vcpu->cpudata;