Lines Matching refs:ctxt

75 #define emul_to_vcpu(ctxt) \  argument
76 container_of(ctxt, struct kvm_vcpu, arch.emulate_ctxt)
187 static int emulator_fix_hypercall(struct x86_emulate_ctxt *ctxt);
4183 static int kvm_fetch_guest_virt(struct x86_emulate_ctxt *ctxt, in kvm_fetch_guest_virt() argument
4187 struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt); in kvm_fetch_guest_virt()
4209 int kvm_read_guest_virt(struct x86_emulate_ctxt *ctxt, in kvm_read_guest_virt() argument
4213 struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt); in kvm_read_guest_virt()
4221 static int kvm_read_guest_virt_system(struct x86_emulate_ctxt *ctxt, in kvm_read_guest_virt_system() argument
4225 struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt); in kvm_read_guest_virt_system()
4229 static int kvm_read_guest_phys_system(struct x86_emulate_ctxt *ctxt, in kvm_read_guest_phys_system() argument
4232 struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt); in kvm_read_guest_phys_system()
4238 int kvm_write_guest_virt_system(struct x86_emulate_ctxt *ctxt, in kvm_write_guest_virt_system() argument
4243 struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt); in kvm_write_guest_virt_system()
4432 static int emulator_read_write(struct x86_emulate_ctxt *ctxt, in emulator_read_write() argument
4438 struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt); in emulator_read_write()
4459 if (ctxt->mode != X86EMUL_MODE_PROT64) in emulator_read_write()
4486 static int emulator_read_emulated(struct x86_emulate_ctxt *ctxt, in emulator_read_emulated() argument
4492 return emulator_read_write(ctxt, addr, val, bytes, in emulator_read_emulated()
4496 static int emulator_write_emulated(struct x86_emulate_ctxt *ctxt, in emulator_write_emulated() argument
4502 return emulator_read_write(ctxt, addr, (void *)val, bytes, in emulator_write_emulated()
4516 static int emulator_cmpxchg_emulated(struct x86_emulate_ctxt *ctxt, in emulator_cmpxchg_emulated() argument
4523 struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt); in emulator_cmpxchg_emulated()
4578 return emulator_write_emulated(ctxt, addr, new, bytes, exception); in emulator_cmpxchg_emulated()
4620 static int emulator_pio_in_emulated(struct x86_emulate_ctxt *ctxt, in emulator_pio_in_emulated() argument
4624 struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt); in emulator_pio_in_emulated()
4642 static int emulator_pio_out_emulated(struct x86_emulate_ctxt *ctxt, in emulator_pio_out_emulated() argument
4646 struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt); in emulator_pio_out_emulated()
4658 static void emulator_invlpg(struct x86_emulate_ctxt *ctxt, ulong address) in emulator_invlpg() argument
4660 kvm_mmu_invlpg(emul_to_vcpu(ctxt), address); in emulator_invlpg()
4690 static void emulator_wbinvd(struct x86_emulate_ctxt *ctxt) in emulator_wbinvd() argument
4692 kvm_emulate_wbinvd_noskip(emul_to_vcpu(ctxt)); in emulator_wbinvd()
4695 static int emulator_get_dr(struct x86_emulate_ctxt *ctxt, int dr, in emulator_get_dr() argument
4698 return kvm_get_dr(emul_to_vcpu(ctxt), dr, dest); in emulator_get_dr()
4701 static int emulator_set_dr(struct x86_emulate_ctxt *ctxt, int dr, in emulator_set_dr() argument
4705 return __kvm_set_dr(emul_to_vcpu(ctxt), dr, value); in emulator_set_dr()
4713 static unsigned long emulator_get_cr(struct x86_emulate_ctxt *ctxt, int cr) in emulator_get_cr() argument
4715 struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt); in emulator_get_cr()
4742 static int emulator_set_cr(struct x86_emulate_ctxt *ctxt, int cr, ulong val) in emulator_set_cr() argument
4744 struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt); in emulator_set_cr()
4771 static int emulator_get_cpl(struct x86_emulate_ctxt *ctxt) in emulator_get_cpl() argument
4773 return kvm_x86_ops->get_cpl(emul_to_vcpu(ctxt)); in emulator_get_cpl()
4776 static void emulator_get_gdt(struct x86_emulate_ctxt *ctxt, struct desc_ptr *dt) in emulator_get_gdt() argument
4778 kvm_x86_ops->get_gdt(emul_to_vcpu(ctxt), dt); in emulator_get_gdt()
4781 static void emulator_get_idt(struct x86_emulate_ctxt *ctxt, struct desc_ptr *dt) in emulator_get_idt() argument
4783 kvm_x86_ops->get_idt(emul_to_vcpu(ctxt), dt); in emulator_get_idt()
4786 static void emulator_set_gdt(struct x86_emulate_ctxt *ctxt, struct desc_ptr *dt) in emulator_set_gdt() argument
4788 kvm_x86_ops->set_gdt(emul_to_vcpu(ctxt), dt); in emulator_set_gdt()
4791 static void emulator_set_idt(struct x86_emulate_ctxt *ctxt, struct desc_ptr *dt) in emulator_set_idt() argument
4793 kvm_x86_ops->set_idt(emul_to_vcpu(ctxt), dt); in emulator_set_idt()
4797 struct x86_emulate_ctxt *ctxt, int seg) in emulator_get_cached_segment_base() argument
4799 return get_segment_base(emul_to_vcpu(ctxt), seg); in emulator_get_cached_segment_base()
4802 static bool emulator_get_segment(struct x86_emulate_ctxt *ctxt, u16 *selector, in emulator_get_segment() argument
4808 kvm_get_segment(emul_to_vcpu(ctxt), &var, seg); in emulator_get_segment()
4836 static void emulator_set_segment(struct x86_emulate_ctxt *ctxt, u16 selector, in emulator_set_segment() argument
4840 struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt); in emulator_set_segment()
4866 static int emulator_get_msr(struct x86_emulate_ctxt *ctxt, in emulator_get_msr() argument
4874 r = kvm_get_msr(emul_to_vcpu(ctxt), &msr); in emulator_get_msr()
4882 static int emulator_set_msr(struct x86_emulate_ctxt *ctxt, in emulator_set_msr() argument
4890 return kvm_set_msr(emul_to_vcpu(ctxt), &msr); in emulator_set_msr()
4893 static u64 emulator_get_smbase(struct x86_emulate_ctxt *ctxt) in emulator_get_smbase() argument
4895 struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt); in emulator_get_smbase()
4900 static void emulator_set_smbase(struct x86_emulate_ctxt *ctxt, u64 smbase) in emulator_set_smbase() argument
4902 struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt); in emulator_set_smbase()
4907 static int emulator_check_pmc(struct x86_emulate_ctxt *ctxt, in emulator_check_pmc() argument
4910 return kvm_pmu_is_valid_msr_idx(emul_to_vcpu(ctxt), pmc); in emulator_check_pmc()
4913 static int emulator_read_pmc(struct x86_emulate_ctxt *ctxt, in emulator_read_pmc() argument
4916 return kvm_pmu_rdpmc(emul_to_vcpu(ctxt), pmc, pdata); in emulator_read_pmc()
4919 static void emulator_halt(struct x86_emulate_ctxt *ctxt) in emulator_halt() argument
4921 emul_to_vcpu(ctxt)->arch.halt_request = 1; in emulator_halt()
4924 static void emulator_get_fpu(struct x86_emulate_ctxt *ctxt) in emulator_get_fpu() argument
4927 kvm_load_guest_fpu(emul_to_vcpu(ctxt)); in emulator_get_fpu()
4935 static void emulator_put_fpu(struct x86_emulate_ctxt *ctxt) in emulator_put_fpu() argument
4940 static int emulator_intercept(struct x86_emulate_ctxt *ctxt, in emulator_intercept() argument
4944 return kvm_x86_ops->check_intercept(emul_to_vcpu(ctxt), info, stage); in emulator_intercept()
4947 static void emulator_get_cpuid(struct x86_emulate_ctxt *ctxt, in emulator_get_cpuid() argument
4950 kvm_cpuid(emul_to_vcpu(ctxt), eax, ebx, ecx, edx); in emulator_get_cpuid()
4953 static ulong emulator_read_gpr(struct x86_emulate_ctxt *ctxt, unsigned reg) in emulator_read_gpr() argument
4955 return kvm_register_read(emul_to_vcpu(ctxt), reg); in emulator_read_gpr()
4958 static void emulator_write_gpr(struct x86_emulate_ctxt *ctxt, unsigned reg, ulong val) in emulator_write_gpr() argument
4960 kvm_register_write(emul_to_vcpu(ctxt), reg, val); in emulator_write_gpr()
4963 static void emulator_set_nmi_mask(struct x86_emulate_ctxt *ctxt, bool masked) in emulator_set_nmi_mask() argument
4965 kvm_x86_ops->set_nmi_mask(emul_to_vcpu(ctxt), masked); in emulator_set_nmi_mask()
5030 struct x86_emulate_ctxt *ctxt = &vcpu->arch.emulate_ctxt; in inject_emulated_exception() local
5031 if (ctxt->exception.vector == PF_VECTOR) in inject_emulated_exception()
5032 return kvm_propagate_fault(vcpu, &ctxt->exception); in inject_emulated_exception()
5034 if (ctxt->exception.error_code_valid) in inject_emulated_exception()
5035 kvm_queue_exception_e(vcpu, ctxt->exception.vector, in inject_emulated_exception()
5036 ctxt->exception.error_code); in inject_emulated_exception()
5038 kvm_queue_exception(vcpu, ctxt->exception.vector); in inject_emulated_exception()
5044 struct x86_emulate_ctxt *ctxt = &vcpu->arch.emulate_ctxt; in init_emulate_ctxt() local
5049 ctxt->eflags = kvm_get_rflags(vcpu); in init_emulate_ctxt()
5050 ctxt->eip = kvm_rip_read(vcpu); in init_emulate_ctxt()
5051 ctxt->mode = (!is_protmode(vcpu)) ? X86EMUL_MODE_REAL : in init_emulate_ctxt()
5052 (ctxt->eflags & X86_EFLAGS_VM) ? X86EMUL_MODE_VM86 : in init_emulate_ctxt()
5059 ctxt->emul_flags = vcpu->arch.hflags; in init_emulate_ctxt()
5061 init_decode_cache(ctxt); in init_emulate_ctxt()
5067 struct x86_emulate_ctxt *ctxt = &vcpu->arch.emulate_ctxt; in kvm_inject_realmode_interrupt() local
5072 ctxt->op_bytes = 2; in kvm_inject_realmode_interrupt()
5073 ctxt->ad_bytes = 2; in kvm_inject_realmode_interrupt()
5074 ctxt->_eip = ctxt->eip + inc_eip; in kvm_inject_realmode_interrupt()
5075 ret = emulate_int_real(ctxt, irq); in kvm_inject_realmode_interrupt()
5080 ctxt->eip = ctxt->_eip; in kvm_inject_realmode_interrupt()
5081 kvm_rip_write(vcpu, ctxt->eip); in kvm_inject_realmode_interrupt()
5082 kvm_set_rflags(vcpu, ctxt->eflags); in kvm_inject_realmode_interrupt()
5181 static bool retry_instruction(struct x86_emulate_ctxt *ctxt, in retry_instruction() argument
5184 struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt); in retry_instruction()
5208 if (x86_page_table_writing_insn(ctxt)) in retry_instruction()
5211 if (ctxt->eip == last_retry_eip && last_retry_addr == cr2) in retry_instruction()
5214 vcpu->arch.last_retry_eip = ctxt->eip; in retry_instruction()
5351 struct x86_emulate_ctxt *ctxt = &vcpu->arch.emulate_ctxt; in x86_emulate_instruction() local
5374 ctxt->interruptibility = 0; in x86_emulate_instruction()
5375 ctxt->have_exception = false; in x86_emulate_instruction()
5376 ctxt->exception.vector = -1; in x86_emulate_instruction()
5377 ctxt->perm_ok = false; in x86_emulate_instruction()
5379 ctxt->ud = emulation_type & EMULTYPE_TRAP_UD; in x86_emulate_instruction()
5381 r = x86_decode_insn(ctxt, insn, insn_len); in x86_emulate_instruction()
5398 kvm_rip_write(vcpu, ctxt->_eip); in x86_emulate_instruction()
5399 if (ctxt->eflags & X86_EFLAGS_RF) in x86_emulate_instruction()
5400 kvm_set_rflags(vcpu, ctxt->eflags & ~X86_EFLAGS_RF); in x86_emulate_instruction()
5404 if (retry_instruction(ctxt, cr2, emulation_type)) in x86_emulate_instruction()
5411 emulator_invalidate_register_cache(ctxt); in x86_emulate_instruction()
5415 r = x86_emulate_insn(ctxt); in x86_emulate_instruction()
5428 if (ctxt->have_exception) { in x86_emulate_instruction()
5453 toggle_interruptibility(vcpu, ctxt->interruptibility); in x86_emulate_instruction()
5455 if (vcpu->arch.hflags != ctxt->emul_flags) in x86_emulate_instruction()
5456 kvm_set_hflags(vcpu, ctxt->emul_flags); in x86_emulate_instruction()
5457 kvm_rip_write(vcpu, ctxt->eip); in x86_emulate_instruction()
5460 if (!ctxt->have_exception || in x86_emulate_instruction()
5461 exception_type(ctxt->exception.vector) == EXCPT_TRAP) in x86_emulate_instruction()
5462 __kvm_set_rflags(vcpu, ctxt->eflags); in x86_emulate_instruction()
5470 if (unlikely((ctxt->eflags & ~rflags) & X86_EFLAGS_IF)) in x86_emulate_instruction()
5934 static int emulator_fix_hypercall(struct x86_emulate_ctxt *ctxt) in emulator_fix_hypercall() argument
5936 struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt); in emulator_fix_hypercall()
5942 return emulator_write_emulated(ctxt, rip, instruction, 3, NULL); in emulator_fix_hypercall()
6990 struct x86_emulate_ctxt *ctxt = &vcpu->arch.emulate_ctxt; in kvm_task_switch() local
6995 ret = emulator_task_switch(ctxt, tss_selector, idt_index, reason, in kvm_task_switch()
7001 kvm_rip_write(vcpu, ctxt->eip); in kvm_task_switch()
7002 kvm_set_rflags(vcpu, ctxt->eflags); in kvm_task_switch()