• Home
  • Raw
  • Download

Lines Matching defs:ctxt

81 #define emul_to_vcpu(ctxt) \
82 container_of(ctxt, struct kvm_vcpu, arch.emulate_ctxt)
227 static int emulator_fix_hypercall(struct x86_emulate_ctxt *ctxt);
5352 static int kvm_fetch_guest_virt(struct x86_emulate_ctxt *ctxt,
5356 struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt);
5396 static int emulator_read_std(struct x86_emulate_ctxt *ctxt,
5400 struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt);
5409 static int kvm_read_guest_phys_system(struct x86_emulate_ctxt *ctxt,
5412 struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt);
5449 static int emulator_write_std(struct x86_emulate_ctxt *ctxt, gva_t addr, void *val,
5453 struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt);
5637 struct x86_emulate_ctxt *ctxt = &vcpu->arch.emulate_ctxt;
5647 emulator_can_use_gpa(ctxt) &&
5679 static int emulator_read_write(struct x86_emulate_ctxt *ctxt,
5685 struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt);
5706 if (ctxt->mode != X86EMUL_MODE_PROT64)
5733 static int emulator_read_emulated(struct x86_emulate_ctxt *ctxt,
5739 return emulator_read_write(ctxt, addr, val, bytes,
5743 static int emulator_write_emulated(struct x86_emulate_ctxt *ctxt,
5749 return emulator_read_write(ctxt, addr, (void *)val, bytes,
5763 static int emulator_cmpxchg_emulated(struct x86_emulate_ctxt *ctxt,
5771 struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt);
5823 return emulator_write_emulated(ctxt, addr, new, bytes, exception);
5869 static int emulator_pio_in_emulated(struct x86_emulate_ctxt *ctxt,
5873 struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt);
5893 static int emulator_pio_out_emulated(struct x86_emulate_ctxt *ctxt,
5897 struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt);
5909 static void emulator_invlpg(struct x86_emulate_ctxt *ctxt, ulong address)
5911 kvm_mmu_invlpg(emul_to_vcpu(ctxt), address);
5941 static void emulator_wbinvd(struct x86_emulate_ctxt *ctxt)
5943 kvm_emulate_wbinvd_noskip(emul_to_vcpu(ctxt));
5946 static int emulator_get_dr(struct x86_emulate_ctxt *ctxt, int dr,
5949 return kvm_get_dr(emul_to_vcpu(ctxt), dr, dest);
5952 static int emulator_set_dr(struct x86_emulate_ctxt *ctxt, int dr,
5956 return __kvm_set_dr(emul_to_vcpu(ctxt), dr, value);
5964 static unsigned long emulator_get_cr(struct x86_emulate_ctxt *ctxt, int cr)
5966 struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt);
5993 static int emulator_set_cr(struct x86_emulate_ctxt *ctxt, int cr, ulong val)
5995 struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt);
6022 static int emulator_get_cpl(struct x86_emulate_ctxt *ctxt)
6024 return kvm_x86_ops->get_cpl(emul_to_vcpu(ctxt));
6027 static void emulator_get_gdt(struct x86_emulate_ctxt *ctxt, struct desc_ptr *dt)
6029 kvm_x86_ops->get_gdt(emul_to_vcpu(ctxt), dt);
6032 static void emulator_get_idt(struct x86_emulate_ctxt *ctxt, struct desc_ptr *dt)
6034 kvm_x86_ops->get_idt(emul_to_vcpu(ctxt), dt);
6037 static void emulator_set_gdt(struct x86_emulate_ctxt *ctxt, struct desc_ptr *dt)
6039 kvm_x86_ops->set_gdt(emul_to_vcpu(ctxt), dt);
6042 static void emulator_set_idt(struct x86_emulate_ctxt *ctxt, struct desc_ptr *dt)
6044 kvm_x86_ops->set_idt(emul_to_vcpu(ctxt), dt);
6048 struct x86_emulate_ctxt *ctxt, int seg)
6050 return get_segment_base(emul_to_vcpu(ctxt), seg);
6053 static bool emulator_get_segment(struct x86_emulate_ctxt *ctxt, u16 *selector,
6059 kvm_get_segment(emul_to_vcpu(ctxt), &var, seg);
6089 static void emulator_set_segment(struct x86_emulate_ctxt *ctxt, u16 selector,
6093 struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt);
6119 static int emulator_get_msr(struct x86_emulate_ctxt *ctxt,
6122 return kvm_get_msr(emul_to_vcpu(ctxt), msr_index, pdata);
6125 static int emulator_set_msr(struct x86_emulate_ctxt *ctxt,
6128 return kvm_set_msr(emul_to_vcpu(ctxt), msr_index, data);
6131 static u64 emulator_get_smbase(struct x86_emulate_ctxt *ctxt)
6133 struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt);
6138 static void emulator_set_smbase(struct x86_emulate_ctxt *ctxt, u64 smbase)
6140 struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt);
6145 static int emulator_check_pmc(struct x86_emulate_ctxt *ctxt,
6148 return kvm_pmu_is_valid_msr_idx(emul_to_vcpu(ctxt), pmc);
6151 static int emulator_read_pmc(struct x86_emulate_ctxt *ctxt,
6154 return kvm_pmu_rdpmc(emul_to_vcpu(ctxt), pmc, pdata);
6157 static void emulator_halt(struct x86_emulate_ctxt *ctxt)
6159 emul_to_vcpu(ctxt)->arch.halt_request = 1;
6162 static int emulator_intercept(struct x86_emulate_ctxt *ctxt,
6166 return kvm_x86_ops->check_intercept(emul_to_vcpu(ctxt), info, stage);
6169 static bool emulator_get_cpuid(struct x86_emulate_ctxt *ctxt,
6172 return kvm_cpuid(emul_to_vcpu(ctxt), eax, ebx, ecx, edx, check_limit);
6175 static ulong emulator_read_gpr(struct x86_emulate_ctxt *ctxt, unsigned reg)
6177 return kvm_register_read(emul_to_vcpu(ctxt), reg);
6180 static void emulator_write_gpr(struct x86_emulate_ctxt *ctxt, unsigned reg, ulong val)
6182 kvm_register_write(emul_to_vcpu(ctxt), reg, val);
6185 static void emulator_set_nmi_mask(struct x86_emulate_ctxt *ctxt, bool masked)
6187 kvm_x86_ops->set_nmi_mask(emul_to_vcpu(ctxt), masked);
6190 static unsigned emulator_get_hflags(struct x86_emulate_ctxt *ctxt)
6192 return emul_to_vcpu(ctxt)->arch.hflags;
6195 static void emulator_set_hflags(struct x86_emulate_ctxt *ctxt, unsigned emul_flags)
6197 emul_to_vcpu(ctxt)->arch.hflags = emul_flags;
6200 static int emulator_pre_leave_smm(struct x86_emulate_ctxt *ctxt,
6203 return kvm_x86_ops->pre_leave_smm(emul_to_vcpu(ctxt), smstate);
6206 static void emulator_post_leave_smm(struct x86_emulate_ctxt *ctxt)
6208 kvm_smm_changed(emul_to_vcpu(ctxt));
6211 static int emulator_set_xcr(struct x86_emulate_ctxt *ctxt, u32 index, u64 xcr)
6213 return __kvm_set_xcr(emul_to_vcpu(ctxt), index, xcr);
6281 struct x86_emulate_ctxt *ctxt = &vcpu->arch.emulate_ctxt;
6282 if (ctxt->exception.vector == PF_VECTOR)
6283 return kvm_propagate_fault(vcpu, &ctxt->exception);
6285 if (ctxt->exception.error_code_valid)
6286 kvm_queue_exception_e(vcpu, ctxt->exception.vector,
6287 ctxt->exception.error_code);
6289 kvm_queue_exception(vcpu, ctxt->exception.vector);
6295 struct x86_emulate_ctxt *ctxt = &vcpu->arch.emulate_ctxt;
6300 ctxt->eflags = kvm_get_rflags(vcpu);
6301 ctxt->tf = (ctxt->eflags & X86_EFLAGS_TF) != 0;
6303 ctxt->eip = kvm_rip_read(vcpu);
6304 ctxt->mode = (!is_protmode(vcpu)) ? X86EMUL_MODE_REAL :
6305 (ctxt->eflags & X86_EFLAGS_VM) ? X86EMUL_MODE_VM86 :
6313 init_decode_cache(ctxt);
6319 struct x86_emulate_ctxt *ctxt = &vcpu->arch.emulate_ctxt;
6324 ctxt->op_bytes = 2;
6325 ctxt->ad_bytes = 2;
6326 ctxt->_eip = ctxt->eip + inc_eip;
6327 ret = emulate_int_real(ctxt, irq);
6332 ctxt->eip = ctxt->_eip;
6333 kvm_rip_write(vcpu, ctxt->eip);
6334 kvm_set_rflags(vcpu, ctxt->eflags);
6442 static bool retry_instruction(struct x86_emulate_ctxt *ctxt,
6445 struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt);
6472 if (x86_page_table_writing_insn(ctxt))
6475 if (ctxt->eip == last_retry_eip && last_retry_addr == cr2)
6478 vcpu->arch.last_retry_eip = ctxt->eip;
6597 static bool is_vmware_backdoor_opcode(struct x86_emulate_ctxt *ctxt)
6599 switch (ctxt->opcode_len) {
6601 switch (ctxt->b) {
6618 switch (ctxt->b) {
6635 struct x86_emulate_ctxt *ctxt = &vcpu->arch.emulate_ctxt;
6661 ctxt->interruptibility = 0;
6662 ctxt->have_exception = false;
6663 ctxt->exception.vector = -1;
6664 ctxt->perm_ok = false;
6666 ctxt->ud = emulation_type & EMULTYPE_TRAP_UD;
6668 r = x86_decode_insn(ctxt, insn, insn_len);
6681 if (ctxt->have_exception) {
6686 WARN_ON_ONCE(ctxt->exception.vector == UD_VECTOR ||
6687 exception_type(ctxt->exception.vector) == EXCPT_TRAP);
6696 !is_vmware_backdoor_opcode(ctxt)) {
6707 kvm_rip_write(vcpu, ctxt->_eip);
6708 if (ctxt->eflags & X86_EFLAGS_RF)
6709 kvm_set_rflags(vcpu, ctxt->eflags & ~X86_EFLAGS_RF);
6713 if (retry_instruction(ctxt, cr2, emulation_type))
6720 emulator_invalidate_register_cache(ctxt);
6725 ctxt->exception.address = cr2;
6727 r = x86_emulate_insn(ctxt);
6740 if (ctxt->have_exception) {
6767 toggle_interruptibility(vcpu, ctxt->interruptibility);
6769 if (!ctxt->have_exception ||
6770 exception_type(ctxt->exception.vector) == EXCPT_TRAP) {
6771 kvm_rip_write(vcpu, ctxt->eip);
6772 if (r && ctxt->tf)
6774 __kvm_set_rflags(vcpu, ctxt->eflags);
6783 if (unlikely((ctxt->eflags & ~rflags) & X86_EFLAGS_IF))
7451 static int emulator_fix_hypercall(struct x86_emulate_ctxt *ctxt)
7453 struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt);
7459 return emulator_write_emulated(ctxt, rip, instruction, 3,
7460 &ctxt->exception);
8736 struct x86_emulate_ctxt *ctxt = &vcpu->arch.emulate_ctxt;
8741 ret = emulator_task_switch(ctxt, tss_selector, idt_index, reason,
8750 kvm_rip_write(vcpu, ctxt->eip);
8751 kvm_set_rflags(vcpu, ctxt->eflags);