Lines Matching refs:ctxt
72 #define emul_to_vcpu(ctxt) \ argument
73 container_of(ctxt, struct kvm_vcpu, arch.emulate_ctxt)
175 static int emulator_fix_hypercall(struct x86_emulate_ctxt *ctxt);
4274 static int kvm_fetch_guest_virt(struct x86_emulate_ctxt *ctxt, in kvm_fetch_guest_virt() argument
4278 struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt); in kvm_fetch_guest_virt()
4300 int kvm_read_guest_virt(struct x86_emulate_ctxt *ctxt, in kvm_read_guest_virt() argument
4304 struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt); in kvm_read_guest_virt()
4312 static int kvm_read_guest_virt_system(struct x86_emulate_ctxt *ctxt, in kvm_read_guest_virt_system() argument
4316 struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt); in kvm_read_guest_virt_system()
4320 int kvm_write_guest_virt_system(struct x86_emulate_ctxt *ctxt, in kvm_write_guest_virt_system() argument
4325 struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt); in kvm_write_guest_virt_system()
4514 static int emulator_read_write(struct x86_emulate_ctxt *ctxt, in emulator_read_write() argument
4520 struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt); in emulator_read_write()
4541 if (ctxt->mode != X86EMUL_MODE_PROT64) in emulator_read_write()
4568 static int emulator_read_emulated(struct x86_emulate_ctxt *ctxt, in emulator_read_emulated() argument
4574 return emulator_read_write(ctxt, addr, val, bytes, in emulator_read_emulated()
4578 static int emulator_write_emulated(struct x86_emulate_ctxt *ctxt, in emulator_write_emulated() argument
4584 return emulator_read_write(ctxt, addr, (void *)val, bytes, in emulator_write_emulated()
4598 static int emulator_cmpxchg_emulated(struct x86_emulate_ctxt *ctxt, in emulator_cmpxchg_emulated() argument
4605 struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt); in emulator_cmpxchg_emulated()
4660 return emulator_write_emulated(ctxt, addr, new, bytes, exception); in emulator_cmpxchg_emulated()
4702 static int emulator_pio_in_emulated(struct x86_emulate_ctxt *ctxt, in emulator_pio_in_emulated() argument
4706 struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt); in emulator_pio_in_emulated()
4724 static int emulator_pio_out_emulated(struct x86_emulate_ctxt *ctxt, in emulator_pio_out_emulated() argument
4728 struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt); in emulator_pio_out_emulated()
4740 static void emulator_invlpg(struct x86_emulate_ctxt *ctxt, ulong address) in emulator_invlpg() argument
4742 kvm_mmu_invlpg(emul_to_vcpu(ctxt), address); in emulator_invlpg()
4772 static void emulator_wbinvd(struct x86_emulate_ctxt *ctxt) in emulator_wbinvd() argument
4774 kvm_emulate_wbinvd_noskip(emul_to_vcpu(ctxt)); in emulator_wbinvd()
4777 static int emulator_get_dr(struct x86_emulate_ctxt *ctxt, int dr, in emulator_get_dr() argument
4780 return kvm_get_dr(emul_to_vcpu(ctxt), dr, dest); in emulator_get_dr()
4783 static int emulator_set_dr(struct x86_emulate_ctxt *ctxt, int dr, in emulator_set_dr() argument
4787 return __kvm_set_dr(emul_to_vcpu(ctxt), dr, value); in emulator_set_dr()
4795 static unsigned long emulator_get_cr(struct x86_emulate_ctxt *ctxt, int cr) in emulator_get_cr() argument
4797 struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt); in emulator_get_cr()
4824 static int emulator_set_cr(struct x86_emulate_ctxt *ctxt, int cr, ulong val) in emulator_set_cr() argument
4826 struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt); in emulator_set_cr()
4853 static int emulator_get_cpl(struct x86_emulate_ctxt *ctxt) in emulator_get_cpl() argument
4855 return kvm_x86_ops->get_cpl(emul_to_vcpu(ctxt)); in emulator_get_cpl()
4858 static void emulator_get_gdt(struct x86_emulate_ctxt *ctxt, struct desc_ptr *dt) in emulator_get_gdt() argument
4860 kvm_x86_ops->get_gdt(emul_to_vcpu(ctxt), dt); in emulator_get_gdt()
4863 static void emulator_get_idt(struct x86_emulate_ctxt *ctxt, struct desc_ptr *dt) in emulator_get_idt() argument
4865 kvm_x86_ops->get_idt(emul_to_vcpu(ctxt), dt); in emulator_get_idt()
4868 static void emulator_set_gdt(struct x86_emulate_ctxt *ctxt, struct desc_ptr *dt) in emulator_set_gdt() argument
4870 kvm_x86_ops->set_gdt(emul_to_vcpu(ctxt), dt); in emulator_set_gdt()
4873 static void emulator_set_idt(struct x86_emulate_ctxt *ctxt, struct desc_ptr *dt) in emulator_set_idt() argument
4875 kvm_x86_ops->set_idt(emul_to_vcpu(ctxt), dt); in emulator_set_idt()
4879 struct x86_emulate_ctxt *ctxt, int seg) in emulator_get_cached_segment_base() argument
4881 return get_segment_base(emul_to_vcpu(ctxt), seg); in emulator_get_cached_segment_base()
4884 static bool emulator_get_segment(struct x86_emulate_ctxt *ctxt, u16 *selector, in emulator_get_segment() argument
4890 kvm_get_segment(emul_to_vcpu(ctxt), &var, seg); in emulator_get_segment()
4918 static void emulator_set_segment(struct x86_emulate_ctxt *ctxt, u16 selector, in emulator_set_segment() argument
4922 struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt); in emulator_set_segment()
4948 static int emulator_get_msr(struct x86_emulate_ctxt *ctxt, in emulator_get_msr() argument
4951 return kvm_get_msr(emul_to_vcpu(ctxt), msr_index, pdata); in emulator_get_msr()
4954 static int emulator_set_msr(struct x86_emulate_ctxt *ctxt, in emulator_set_msr() argument
4962 return kvm_set_msr(emul_to_vcpu(ctxt), &msr); in emulator_set_msr()
4965 static int emulator_check_pmc(struct x86_emulate_ctxt *ctxt, in emulator_check_pmc() argument
4968 return kvm_pmu_check_pmc(emul_to_vcpu(ctxt), pmc); in emulator_check_pmc()
4971 static int emulator_read_pmc(struct x86_emulate_ctxt *ctxt, in emulator_read_pmc() argument
4974 return kvm_pmu_read_pmc(emul_to_vcpu(ctxt), pmc, pdata); in emulator_read_pmc()
4977 static void emulator_halt(struct x86_emulate_ctxt *ctxt) in emulator_halt() argument
4979 emul_to_vcpu(ctxt)->arch.halt_request = 1; in emulator_halt()
4982 static void emulator_get_fpu(struct x86_emulate_ctxt *ctxt) in emulator_get_fpu() argument
4985 kvm_load_guest_fpu(emul_to_vcpu(ctxt)); in emulator_get_fpu()
4993 static void emulator_put_fpu(struct x86_emulate_ctxt *ctxt) in emulator_put_fpu() argument
4998 static int emulator_intercept(struct x86_emulate_ctxt *ctxt, in emulator_intercept() argument
5002 return kvm_x86_ops->check_intercept(emul_to_vcpu(ctxt), info, stage); in emulator_intercept()
5005 static void emulator_get_cpuid(struct x86_emulate_ctxt *ctxt, in emulator_get_cpuid() argument
5008 kvm_cpuid(emul_to_vcpu(ctxt), eax, ebx, ecx, edx); in emulator_get_cpuid()
5011 static ulong emulator_read_gpr(struct x86_emulate_ctxt *ctxt, unsigned reg) in emulator_read_gpr() argument
5013 return kvm_register_read(emul_to_vcpu(ctxt), reg); in emulator_read_gpr()
5016 static void emulator_write_gpr(struct x86_emulate_ctxt *ctxt, unsigned reg, ulong val) in emulator_write_gpr() argument
5018 kvm_register_write(emul_to_vcpu(ctxt), reg, val); in emulator_write_gpr()
5021 static void emulator_set_nmi_mask(struct x86_emulate_ctxt *ctxt, bool masked) in emulator_set_nmi_mask() argument
5023 kvm_x86_ops->set_nmi_mask(emul_to_vcpu(ctxt), masked); in emulator_set_nmi_mask()
5085 struct x86_emulate_ctxt *ctxt = &vcpu->arch.emulate_ctxt; in inject_emulated_exception() local
5086 if (ctxt->exception.vector == PF_VECTOR) in inject_emulated_exception()
5087 return kvm_propagate_fault(vcpu, &ctxt->exception); in inject_emulated_exception()
5089 if (ctxt->exception.error_code_valid) in inject_emulated_exception()
5090 kvm_queue_exception_e(vcpu, ctxt->exception.vector, in inject_emulated_exception()
5091 ctxt->exception.error_code); in inject_emulated_exception()
5093 kvm_queue_exception(vcpu, ctxt->exception.vector); in inject_emulated_exception()
5099 struct x86_emulate_ctxt *ctxt = &vcpu->arch.emulate_ctxt; in init_emulate_ctxt() local
5104 ctxt->eflags = kvm_get_rflags(vcpu); in init_emulate_ctxt()
5105 ctxt->eip = kvm_rip_read(vcpu); in init_emulate_ctxt()
5106 ctxt->mode = (!is_protmode(vcpu)) ? X86EMUL_MODE_REAL : in init_emulate_ctxt()
5107 (ctxt->eflags & X86_EFLAGS_VM) ? X86EMUL_MODE_VM86 : in init_emulate_ctxt()
5111 ctxt->guest_mode = is_guest_mode(vcpu); in init_emulate_ctxt()
5113 init_decode_cache(ctxt); in init_emulate_ctxt()
5119 struct x86_emulate_ctxt *ctxt = &vcpu->arch.emulate_ctxt; in kvm_inject_realmode_interrupt() local
5124 ctxt->op_bytes = 2; in kvm_inject_realmode_interrupt()
5125 ctxt->ad_bytes = 2; in kvm_inject_realmode_interrupt()
5126 ctxt->_eip = ctxt->eip + inc_eip; in kvm_inject_realmode_interrupt()
5127 ret = emulate_int_real(ctxt, irq); in kvm_inject_realmode_interrupt()
5132 ctxt->eip = ctxt->_eip; in kvm_inject_realmode_interrupt()
5133 kvm_rip_write(vcpu, ctxt->eip); in kvm_inject_realmode_interrupt()
5134 kvm_set_rflags(vcpu, ctxt->eflags); in kvm_inject_realmode_interrupt()
5233 static bool retry_instruction(struct x86_emulate_ctxt *ctxt, in retry_instruction() argument
5236 struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt); in retry_instruction()
5260 if (x86_page_table_writing_insn(ctxt)) in retry_instruction()
5263 if (ctxt->eip == last_retry_eip && last_retry_addr == cr2) in retry_instruction()
5266 vcpu->arch.last_retry_eip = ctxt->eip; in retry_instruction()
5375 struct x86_emulate_ctxt *ctxt = &vcpu->arch.emulate_ctxt; in x86_emulate_instruction() local
5398 ctxt->interruptibility = 0; in x86_emulate_instruction()
5399 ctxt->have_exception = false; in x86_emulate_instruction()
5400 ctxt->exception.vector = -1; in x86_emulate_instruction()
5401 ctxt->perm_ok = false; in x86_emulate_instruction()
5403 ctxt->ud = emulation_type & EMULTYPE_TRAP_UD; in x86_emulate_instruction()
5405 r = x86_decode_insn(ctxt, insn, insn_len); in x86_emulate_instruction()
5422 kvm_rip_write(vcpu, ctxt->_eip); in x86_emulate_instruction()
5423 if (ctxt->eflags & X86_EFLAGS_RF) in x86_emulate_instruction()
5424 kvm_set_rflags(vcpu, ctxt->eflags & ~X86_EFLAGS_RF); in x86_emulate_instruction()
5428 if (retry_instruction(ctxt, cr2, emulation_type)) in x86_emulate_instruction()
5435 emulator_invalidate_register_cache(ctxt); in x86_emulate_instruction()
5439 r = x86_emulate_insn(ctxt); in x86_emulate_instruction()
5452 if (ctxt->have_exception) { in x86_emulate_instruction()
5477 toggle_interruptibility(vcpu, ctxt->interruptibility); in x86_emulate_instruction()
5479 kvm_rip_write(vcpu, ctxt->eip); in x86_emulate_instruction()
5482 if (!ctxt->have_exception || in x86_emulate_instruction()
5483 exception_type(ctxt->exception.vector) == EXCPT_TRAP) in x86_emulate_instruction()
5484 __kvm_set_rflags(vcpu, ctxt->eflags); in x86_emulate_instruction()
5492 if (unlikely((ctxt->eflags & ~rflags) & X86_EFLAGS_IF)) in x86_emulate_instruction()
6015 static int emulator_fix_hypercall(struct x86_emulate_ctxt *ctxt) in emulator_fix_hypercall() argument
6017 struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt); in emulator_fix_hypercall()
6023 return emulator_write_emulated(ctxt, rip, instruction, 3, NULL); in emulator_fix_hypercall()
6801 struct x86_emulate_ctxt *ctxt = &vcpu->arch.emulate_ctxt; in kvm_task_switch() local
6806 ret = emulator_task_switch(ctxt, tss_selector, idt_index, reason, in kvm_task_switch()
6812 kvm_rip_write(vcpu, ctxt->eip); in kvm_task_switch()
6813 kvm_set_rflags(vcpu, ctxt->eflags); in kvm_task_switch()