Lines Matching refs:vcpu

50 static inline void kvm_clear_exception_queue(struct kvm_vcpu *vcpu)  in kvm_clear_exception_queue()  argument
52 vcpu->arch.exception.pending = false; in kvm_clear_exception_queue()
53 vcpu->arch.exception.injected = false; in kvm_clear_exception_queue()
56 static inline void kvm_queue_interrupt(struct kvm_vcpu *vcpu, u8 vector, in kvm_queue_interrupt() argument
59 vcpu->arch.interrupt.injected = true; in kvm_queue_interrupt()
60 vcpu->arch.interrupt.soft = soft; in kvm_queue_interrupt()
61 vcpu->arch.interrupt.nr = vector; in kvm_queue_interrupt()
64 static inline void kvm_clear_interrupt_queue(struct kvm_vcpu *vcpu) in kvm_clear_interrupt_queue() argument
66 vcpu->arch.interrupt.injected = false; in kvm_clear_interrupt_queue()
69 static inline bool kvm_event_needs_reinjection(struct kvm_vcpu *vcpu) in kvm_event_needs_reinjection() argument
71 return vcpu->arch.exception.injected || vcpu->arch.interrupt.injected || in kvm_event_needs_reinjection()
72 vcpu->arch.nmi_injected; in kvm_event_needs_reinjection()
80 static inline bool is_protmode(struct kvm_vcpu *vcpu) in is_protmode() argument
82 return kvm_read_cr0_bits(vcpu, X86_CR0_PE); in is_protmode()
85 static inline int is_long_mode(struct kvm_vcpu *vcpu) in is_long_mode() argument
88 return vcpu->arch.efer & EFER_LMA; in is_long_mode()
94 static inline bool is_64_bit_mode(struct kvm_vcpu *vcpu) in is_64_bit_mode() argument
98 if (!is_long_mode(vcpu)) in is_64_bit_mode()
100 kvm_x86_ops.get_cs_db_l_bits(vcpu, &cs_db, &cs_l); in is_64_bit_mode()
104 static inline bool is_la57_mode(struct kvm_vcpu *vcpu) in is_la57_mode() argument
107 return (vcpu->arch.efer & EFER_LMA) && in is_la57_mode()
108 kvm_read_cr4_bits(vcpu, X86_CR4_LA57); in is_la57_mode()
123 static inline bool mmu_is_nested(struct kvm_vcpu *vcpu) in mmu_is_nested() argument
125 return vcpu->arch.walk_mmu == &vcpu->arch.nested_mmu; in mmu_is_nested()
128 static inline void kvm_vcpu_flush_tlb_current(struct kvm_vcpu *vcpu) in kvm_vcpu_flush_tlb_current() argument
130 ++vcpu->stat.tlb_flush; in kvm_vcpu_flush_tlb_current()
131 kvm_x86_ops.tlb_flush_current(vcpu); in kvm_vcpu_flush_tlb_current()
134 static inline int is_pae(struct kvm_vcpu *vcpu) in is_pae() argument
136 return kvm_read_cr4_bits(vcpu, X86_CR4_PAE); in is_pae()
139 static inline int is_pse(struct kvm_vcpu *vcpu) in is_pse() argument
141 return kvm_read_cr4_bits(vcpu, X86_CR4_PSE); in is_pse()
144 static inline int is_paging(struct kvm_vcpu *vcpu) in is_paging() argument
146 return likely(kvm_read_cr0_bits(vcpu, X86_CR0_PG)); in is_paging()
149 static inline bool is_pae_paging(struct kvm_vcpu *vcpu) in is_pae_paging() argument
151 return !is_long_mode(vcpu) && is_pae(vcpu) && is_paging(vcpu); in is_pae_paging()
154 static inline u8 vcpu_virt_addr_bits(struct kvm_vcpu *vcpu) in vcpu_virt_addr_bits() argument
156 return kvm_read_cr4_bits(vcpu, X86_CR4_LA57) ? 57 : 48; in vcpu_virt_addr_bits()
164 static inline bool is_noncanonical_address(u64 la, struct kvm_vcpu *vcpu) in is_noncanonical_address() argument
166 return get_canonical(la, vcpu_virt_addr_bits(vcpu)) != la; in is_noncanonical_address()
169 static inline void vcpu_cache_mmio_info(struct kvm_vcpu *vcpu, in vcpu_cache_mmio_info() argument
172 u64 gen = kvm_memslots(vcpu->kvm)->generation; in vcpu_cache_mmio_info()
181 vcpu->arch.mmio_gva = mmu_is_nested(vcpu) ? 0 : gva & PAGE_MASK; in vcpu_cache_mmio_info()
182 vcpu->arch.mmio_access = access; in vcpu_cache_mmio_info()
183 vcpu->arch.mmio_gfn = gfn; in vcpu_cache_mmio_info()
184 vcpu->arch.mmio_gen = gen; in vcpu_cache_mmio_info()
187 static inline bool vcpu_match_mmio_gen(struct kvm_vcpu *vcpu) in vcpu_match_mmio_gen() argument
189 return vcpu->arch.mmio_gen == kvm_memslots(vcpu->kvm)->generation; in vcpu_match_mmio_gen()
198 static inline void vcpu_clear_mmio_info(struct kvm_vcpu *vcpu, gva_t gva) in vcpu_clear_mmio_info() argument
200 if (gva != MMIO_GVA_ANY && vcpu->arch.mmio_gva != (gva & PAGE_MASK)) in vcpu_clear_mmio_info()
203 vcpu->arch.mmio_gva = 0; in vcpu_clear_mmio_info()
206 static inline bool vcpu_match_mmio_gva(struct kvm_vcpu *vcpu, unsigned long gva) in vcpu_match_mmio_gva() argument
208 if (vcpu_match_mmio_gen(vcpu) && vcpu->arch.mmio_gva && in vcpu_match_mmio_gva()
209 vcpu->arch.mmio_gva == (gva & PAGE_MASK)) in vcpu_match_mmio_gva()
215 static inline bool vcpu_match_mmio_gpa(struct kvm_vcpu *vcpu, gpa_t gpa) in vcpu_match_mmio_gpa() argument
217 if (vcpu_match_mmio_gen(vcpu) && vcpu->arch.mmio_gfn && in vcpu_match_mmio_gpa()
218 vcpu->arch.mmio_gfn == gpa >> PAGE_SHIFT) in vcpu_match_mmio_gpa()
224 static inline unsigned long kvm_register_readl(struct kvm_vcpu *vcpu, int reg) in kvm_register_readl() argument
226 unsigned long val = kvm_register_read(vcpu, reg); in kvm_register_readl()
228 return is_64_bit_mode(vcpu) ? val : (u32)val; in kvm_register_readl()
231 static inline void kvm_register_writel(struct kvm_vcpu *vcpu, in kvm_register_writel() argument
234 if (!is_64_bit_mode(vcpu)) in kvm_register_writel()
236 return kvm_register_write(vcpu, reg, val); in kvm_register_writel()
244 static inline bool kvm_vcpu_latch_init(struct kvm_vcpu *vcpu) in kvm_vcpu_latch_init() argument
246 return is_smm(vcpu) || kvm_x86_ops.apic_init_signal_blocked(vcpu); in kvm_vcpu_latch_init()
249 void kvm_inject_realmode_interrupt(struct kvm_vcpu *vcpu, int irq, int inc_eip);
251 void kvm_write_tsc(struct kvm_vcpu *vcpu, struct msr_data *msr);
254 int kvm_read_guest_virt(struct kvm_vcpu *vcpu,
258 int kvm_write_guest_virt_system(struct kvm_vcpu *vcpu,
262 int handle_ud(struct kvm_vcpu *vcpu);
264 void kvm_deliver_exception_payload(struct kvm_vcpu *vcpu);
266 void kvm_vcpu_mtrr_init(struct kvm_vcpu *vcpu);
267 u8 kvm_mtrr_get_guest_memory_type(struct kvm_vcpu *vcpu, gfn_t gfn);
268 bool kvm_mtrr_valid(struct kvm_vcpu *vcpu, u32 msr, u64 data);
269 int kvm_mtrr_set_msr(struct kvm_vcpu *vcpu, u32 msr, u64 data);
270 int kvm_mtrr_get_msr(struct kvm_vcpu *vcpu, u32 msr, u64 *pdata);
271 bool kvm_mtrr_check_gfn_range_consistency(struct kvm_vcpu *vcpu, gfn_t gfn,
274 void kvm_fixup_and_inject_pf_error(struct kvm_vcpu *vcpu, gva_t gva, u16 error_code);
275 int x86_emulate_instruction(struct kvm_vcpu *vcpu, gpa_t cr2_or_gpa,
277 fastpath_t handle_fastpath_set_msr_irqoff(struct kvm_vcpu *vcpu);
297 static inline u64 nsec_to_cycles(struct kvm_vcpu *vcpu, u64 nsec) in nsec_to_cycles() argument
299 return pvclock_scale_delta(nsec, vcpu->arch.virtual_tsc_mult, in nsec_to_cycles()
300 vcpu->arch.virtual_tsc_shift); in nsec_to_cycles()
339 static inline void kvm_before_interrupt(struct kvm_vcpu *vcpu) in kvm_before_interrupt() argument
341 __this_cpu_write(current_vcpu, vcpu); in kvm_before_interrupt()
344 static inline void kvm_after_interrupt(struct kvm_vcpu *vcpu) in kvm_after_interrupt() argument
369 void kvm_load_guest_xsave_state(struct kvm_vcpu *vcpu);
370 void kvm_load_host_xsave_state(struct kvm_vcpu *vcpu);
372 int kvm_valid_cr4(struct kvm_vcpu *vcpu, unsigned long cr4);
373 bool kvm_vcpu_exit_request(struct kvm_vcpu *vcpu);
374 int kvm_handle_memory_failure(struct kvm_vcpu *vcpu, int r,
376 int kvm_handle_invpcid(struct kvm_vcpu *vcpu, unsigned long type, gva_t gva);
377 bool kvm_msr_allowed(struct kvm_vcpu *vcpu, u32 index, u32 type);