Lines Matching refs:vcpu
92 void kvm_service_local_tlb_flush_requests(struct kvm_vcpu *vcpu);
93 int kvm_check_nested_events(struct kvm_vcpu *vcpu);
95 static inline bool kvm_vcpu_has_run(struct kvm_vcpu *vcpu) in kvm_vcpu_has_run() argument
97 return vcpu->arch.last_vmentry_cpu != -1; in kvm_vcpu_has_run()
100 static inline bool kvm_is_exception_pending(struct kvm_vcpu *vcpu) in kvm_is_exception_pending() argument
102 return vcpu->arch.exception.pending || in kvm_is_exception_pending()
103 vcpu->arch.exception_vmexit.pending || in kvm_is_exception_pending()
104 kvm_test_request(KVM_REQ_TRIPLE_FAULT, vcpu); in kvm_is_exception_pending()
107 static inline void kvm_clear_exception_queue(struct kvm_vcpu *vcpu) in kvm_clear_exception_queue() argument
109 vcpu->arch.exception.pending = false; in kvm_clear_exception_queue()
110 vcpu->arch.exception.injected = false; in kvm_clear_exception_queue()
111 vcpu->arch.exception_vmexit.pending = false; in kvm_clear_exception_queue()
114 static inline void kvm_queue_interrupt(struct kvm_vcpu *vcpu, u8 vector, in kvm_queue_interrupt() argument
117 vcpu->arch.interrupt.injected = true; in kvm_queue_interrupt()
118 vcpu->arch.interrupt.soft = soft; in kvm_queue_interrupt()
119 vcpu->arch.interrupt.nr = vector; in kvm_queue_interrupt()
122 static inline void kvm_clear_interrupt_queue(struct kvm_vcpu *vcpu) in kvm_clear_interrupt_queue() argument
124 vcpu->arch.interrupt.injected = false; in kvm_clear_interrupt_queue()
127 static inline bool kvm_event_needs_reinjection(struct kvm_vcpu *vcpu) in kvm_event_needs_reinjection() argument
129 return vcpu->arch.exception.injected || vcpu->arch.interrupt.injected || in kvm_event_needs_reinjection()
130 vcpu->arch.nmi_injected; in kvm_event_needs_reinjection()
138 static inline bool is_protmode(struct kvm_vcpu *vcpu) in is_protmode() argument
140 return kvm_is_cr0_bit_set(vcpu, X86_CR0_PE); in is_protmode()
143 static inline bool is_long_mode(struct kvm_vcpu *vcpu) in is_long_mode() argument
146 return !!(vcpu->arch.efer & EFER_LMA); in is_long_mode()
152 static inline bool is_64_bit_mode(struct kvm_vcpu *vcpu) in is_64_bit_mode() argument
156 WARN_ON_ONCE(vcpu->arch.guest_state_protected); in is_64_bit_mode()
158 if (!is_long_mode(vcpu)) in is_64_bit_mode()
160 static_call(kvm_x86_get_cs_db_l_bits)(vcpu, &cs_db, &cs_l); in is_64_bit_mode()
164 static inline bool is_64_bit_hypercall(struct kvm_vcpu *vcpu) in is_64_bit_hypercall() argument
171 return vcpu->arch.guest_state_protected || is_64_bit_mode(vcpu); in is_64_bit_hypercall()
183 static inline bool mmu_is_nested(struct kvm_vcpu *vcpu) in mmu_is_nested() argument
185 return vcpu->arch.walk_mmu == &vcpu->arch.nested_mmu; in mmu_is_nested()
188 static inline bool is_pae(struct kvm_vcpu *vcpu) in is_pae() argument
190 return kvm_is_cr4_bit_set(vcpu, X86_CR4_PAE); in is_pae()
193 static inline bool is_pse(struct kvm_vcpu *vcpu) in is_pse() argument
195 return kvm_is_cr4_bit_set(vcpu, X86_CR4_PSE); in is_pse()
198 static inline bool is_paging(struct kvm_vcpu *vcpu) in is_paging() argument
200 return likely(kvm_is_cr0_bit_set(vcpu, X86_CR0_PG)); in is_paging()
203 static inline bool is_pae_paging(struct kvm_vcpu *vcpu) in is_pae_paging() argument
205 return !is_long_mode(vcpu) && is_pae(vcpu) && is_paging(vcpu); in is_pae_paging()
208 static inline u8 vcpu_virt_addr_bits(struct kvm_vcpu *vcpu) in vcpu_virt_addr_bits() argument
210 return kvm_is_cr4_bit_set(vcpu, X86_CR4_LA57) ? 57 : 48; in vcpu_virt_addr_bits()
213 static inline bool is_noncanonical_address(u64 la, struct kvm_vcpu *vcpu) in is_noncanonical_address() argument
215 return !__is_canonical_address(la, vcpu_virt_addr_bits(vcpu)); in is_noncanonical_address()
218 static inline void vcpu_cache_mmio_info(struct kvm_vcpu *vcpu, in vcpu_cache_mmio_info() argument
221 u64 gen = kvm_memslots(vcpu->kvm)->generation; in vcpu_cache_mmio_info()
230 vcpu->arch.mmio_gva = mmu_is_nested(vcpu) ? 0 : gva & PAGE_MASK; in vcpu_cache_mmio_info()
231 vcpu->arch.mmio_access = access; in vcpu_cache_mmio_info()
232 vcpu->arch.mmio_gfn = gfn; in vcpu_cache_mmio_info()
233 vcpu->arch.mmio_gen = gen; in vcpu_cache_mmio_info()
236 static inline bool vcpu_match_mmio_gen(struct kvm_vcpu *vcpu) in vcpu_match_mmio_gen() argument
238 return vcpu->arch.mmio_gen == kvm_memslots(vcpu->kvm)->generation; in vcpu_match_mmio_gen()
247 static inline void vcpu_clear_mmio_info(struct kvm_vcpu *vcpu, gva_t gva) in vcpu_clear_mmio_info() argument
249 if (gva != MMIO_GVA_ANY && vcpu->arch.mmio_gva != (gva & PAGE_MASK)) in vcpu_clear_mmio_info()
252 vcpu->arch.mmio_gva = 0; in vcpu_clear_mmio_info()
255 static inline bool vcpu_match_mmio_gva(struct kvm_vcpu *vcpu, unsigned long gva) in vcpu_match_mmio_gva() argument
257 if (vcpu_match_mmio_gen(vcpu) && vcpu->arch.mmio_gva && in vcpu_match_mmio_gva()
258 vcpu->arch.mmio_gva == (gva & PAGE_MASK)) in vcpu_match_mmio_gva()
264 static inline bool vcpu_match_mmio_gpa(struct kvm_vcpu *vcpu, gpa_t gpa) in vcpu_match_mmio_gpa() argument
266 if (vcpu_match_mmio_gen(vcpu) && vcpu->arch.mmio_gfn && in vcpu_match_mmio_gpa()
267 vcpu->arch.mmio_gfn == gpa >> PAGE_SHIFT) in vcpu_match_mmio_gpa()
273 static inline unsigned long kvm_register_read(struct kvm_vcpu *vcpu, int reg) in kvm_register_read() argument
275 unsigned long val = kvm_register_read_raw(vcpu, reg); in kvm_register_read()
277 return is_64_bit_mode(vcpu) ? val : (u32)val; in kvm_register_read()
280 static inline void kvm_register_write(struct kvm_vcpu *vcpu, in kvm_register_write() argument
283 if (!is_64_bit_mode(vcpu)) in kvm_register_write()
285 return kvm_register_write_raw(vcpu, reg, val); in kvm_register_write()
293 void kvm_inject_realmode_interrupt(struct kvm_vcpu *vcpu, int irq, int inc_eip);
297 int kvm_read_guest_virt(struct kvm_vcpu *vcpu,
301 int kvm_write_guest_virt_system(struct kvm_vcpu *vcpu,
305 int handle_ud(struct kvm_vcpu *vcpu);
307 void kvm_deliver_exception_payload(struct kvm_vcpu *vcpu,
310 void kvm_vcpu_mtrr_init(struct kvm_vcpu *vcpu);
311 u8 kvm_mtrr_get_guest_memory_type(struct kvm_vcpu *vcpu, gfn_t gfn);
312 int kvm_mtrr_set_msr(struct kvm_vcpu *vcpu, u32 msr, u64 data);
313 int kvm_mtrr_get_msr(struct kvm_vcpu *vcpu, u32 msr, u64 *pdata);
314 bool kvm_mtrr_check_gfn_range_consistency(struct kvm_vcpu *vcpu, gfn_t gfn,
317 void kvm_fixup_and_inject_pf_error(struct kvm_vcpu *vcpu, gva_t gva, u16 error_code);
318 int x86_decode_emulated_instruction(struct kvm_vcpu *vcpu, int emulation_type,
320 int x86_emulate_instruction(struct kvm_vcpu *vcpu, gpa_t cr2_or_gpa,
322 fastpath_t handle_fastpath_set_msr_irqoff(struct kvm_vcpu *vcpu);
376 static inline void kvm_pr_unimpl_wrmsr(struct kvm_vcpu *vcpu, u32 msr, u64 data) in kvm_pr_unimpl_wrmsr() argument
379 vcpu_unimpl(vcpu, "Unhandled WRMSR(0x%x) = 0x%llx\n", msr, data); in kvm_pr_unimpl_wrmsr()
382 static inline void kvm_pr_unimpl_rdmsr(struct kvm_vcpu *vcpu, u32 msr) in kvm_pr_unimpl_rdmsr() argument
385 vcpu_unimpl(vcpu, "Unhandled RDMSR(0x%x)\n", msr); in kvm_pr_unimpl_rdmsr()
388 static inline u64 nsec_to_cycles(struct kvm_vcpu *vcpu, u64 nsec) in nsec_to_cycles() argument
390 return pvclock_scale_delta(nsec, vcpu->arch.virtual_tsc_mult, in nsec_to_cycles()
391 vcpu->arch.virtual_tsc_shift); in nsec_to_cycles()
439 static __always_inline void kvm_before_interrupt(struct kvm_vcpu *vcpu, in kvm_before_interrupt() argument
442 WRITE_ONCE(vcpu->arch.handling_intr_from_guest, (u8)intr); in kvm_before_interrupt()
445 static __always_inline void kvm_after_interrupt(struct kvm_vcpu *vcpu) in kvm_after_interrupt() argument
447 WRITE_ONCE(vcpu->arch.handling_intr_from_guest, 0); in kvm_after_interrupt()
450 static inline bool kvm_handling_nmi_from_guest(struct kvm_vcpu *vcpu) in kvm_handling_nmi_from_guest() argument
452 return vcpu->arch.handling_intr_from_guest == KVM_HANDLING_NMI; in kvm_handling_nmi_from_guest()
493 void kvm_load_guest_xsave_state(struct kvm_vcpu *vcpu);
494 void kvm_load_host_xsave_state(struct kvm_vcpu *vcpu);
496 bool __kvm_is_valid_cr4(struct kvm_vcpu *vcpu, unsigned long cr4);
497 int kvm_handle_memory_failure(struct kvm_vcpu *vcpu, int r,
499 int kvm_handle_invpcid(struct kvm_vcpu *vcpu, unsigned long type, gva_t gva);
500 bool kvm_msr_allowed(struct kvm_vcpu *vcpu, u32 index, u32 type);
535 int kvm_sev_es_mmio_write(struct kvm_vcpu *vcpu, gpa_t src, unsigned int bytes,
537 int kvm_sev_es_mmio_read(struct kvm_vcpu *vcpu, gpa_t src, unsigned int bytes,
539 int kvm_sev_es_string_io(struct kvm_vcpu *vcpu, unsigned int size,