Lines Matching refs:vcpu

83 void kvm_service_local_tlb_flush_requests(struct kvm_vcpu *vcpu);
84 int kvm_check_nested_events(struct kvm_vcpu *vcpu);
86 static inline bool kvm_is_exception_pending(struct kvm_vcpu *vcpu) in kvm_is_exception_pending() argument
88 return vcpu->arch.exception.pending || in kvm_is_exception_pending()
89 vcpu->arch.exception_vmexit.pending || in kvm_is_exception_pending()
90 kvm_test_request(KVM_REQ_TRIPLE_FAULT, vcpu); in kvm_is_exception_pending()
93 static inline void kvm_clear_exception_queue(struct kvm_vcpu *vcpu) in kvm_clear_exception_queue() argument
95 vcpu->arch.exception.pending = false; in kvm_clear_exception_queue()
96 vcpu->arch.exception.injected = false; in kvm_clear_exception_queue()
97 vcpu->arch.exception_vmexit.pending = false; in kvm_clear_exception_queue()
100 static inline void kvm_queue_interrupt(struct kvm_vcpu *vcpu, u8 vector, in kvm_queue_interrupt() argument
103 vcpu->arch.interrupt.injected = true; in kvm_queue_interrupt()
104 vcpu->arch.interrupt.soft = soft; in kvm_queue_interrupt()
105 vcpu->arch.interrupt.nr = vector; in kvm_queue_interrupt()
108 static inline void kvm_clear_interrupt_queue(struct kvm_vcpu *vcpu) in kvm_clear_interrupt_queue() argument
110 vcpu->arch.interrupt.injected = false; in kvm_clear_interrupt_queue()
113 static inline bool kvm_event_needs_reinjection(struct kvm_vcpu *vcpu) in kvm_event_needs_reinjection() argument
115 return vcpu->arch.exception.injected || vcpu->arch.interrupt.injected || in kvm_event_needs_reinjection()
116 vcpu->arch.nmi_injected; in kvm_event_needs_reinjection()
124 static inline bool is_protmode(struct kvm_vcpu *vcpu) in is_protmode() argument
126 return kvm_read_cr0_bits(vcpu, X86_CR0_PE); in is_protmode()
129 static inline int is_long_mode(struct kvm_vcpu *vcpu) in is_long_mode() argument
132 return vcpu->arch.efer & EFER_LMA; in is_long_mode()
138 static inline bool is_64_bit_mode(struct kvm_vcpu *vcpu) in is_64_bit_mode() argument
142 WARN_ON_ONCE(vcpu->arch.guest_state_protected); in is_64_bit_mode()
144 if (!is_long_mode(vcpu)) in is_64_bit_mode()
146 static_call(kvm_x86_get_cs_db_l_bits)(vcpu, &cs_db, &cs_l); in is_64_bit_mode()
150 static inline bool is_64_bit_hypercall(struct kvm_vcpu *vcpu) in is_64_bit_hypercall() argument
157 return vcpu->arch.guest_state_protected || is_64_bit_mode(vcpu); in is_64_bit_hypercall()
169 static inline bool mmu_is_nested(struct kvm_vcpu *vcpu) in mmu_is_nested() argument
171 return vcpu->arch.walk_mmu == &vcpu->arch.nested_mmu; in mmu_is_nested()
174 static inline int is_pae(struct kvm_vcpu *vcpu) in is_pae() argument
176 return kvm_read_cr4_bits(vcpu, X86_CR4_PAE); in is_pae()
179 static inline int is_pse(struct kvm_vcpu *vcpu) in is_pse() argument
181 return kvm_read_cr4_bits(vcpu, X86_CR4_PSE); in is_pse()
184 static inline int is_paging(struct kvm_vcpu *vcpu) in is_paging() argument
186 return likely(kvm_read_cr0_bits(vcpu, X86_CR0_PG)); in is_paging()
189 static inline bool is_pae_paging(struct kvm_vcpu *vcpu) in is_pae_paging() argument
191 return !is_long_mode(vcpu) && is_pae(vcpu) && is_paging(vcpu); in is_pae_paging()
194 static inline u8 vcpu_virt_addr_bits(struct kvm_vcpu *vcpu) in vcpu_virt_addr_bits() argument
196 return kvm_read_cr4_bits(vcpu, X86_CR4_LA57) ? 57 : 48; in vcpu_virt_addr_bits()
199 static inline bool is_noncanonical_address(u64 la, struct kvm_vcpu *vcpu) in is_noncanonical_address() argument
201 return !__is_canonical_address(la, vcpu_virt_addr_bits(vcpu)); in is_noncanonical_address()
204 static inline void vcpu_cache_mmio_info(struct kvm_vcpu *vcpu, in vcpu_cache_mmio_info() argument
207 u64 gen = kvm_memslots(vcpu->kvm)->generation; in vcpu_cache_mmio_info()
216 vcpu->arch.mmio_gva = mmu_is_nested(vcpu) ? 0 : gva & PAGE_MASK; in vcpu_cache_mmio_info()
217 vcpu->arch.mmio_access = access; in vcpu_cache_mmio_info()
218 vcpu->arch.mmio_gfn = gfn; in vcpu_cache_mmio_info()
219 vcpu->arch.mmio_gen = gen; in vcpu_cache_mmio_info()
222 static inline bool vcpu_match_mmio_gen(struct kvm_vcpu *vcpu) in vcpu_match_mmio_gen() argument
224 return vcpu->arch.mmio_gen == kvm_memslots(vcpu->kvm)->generation; in vcpu_match_mmio_gen()
233 static inline void vcpu_clear_mmio_info(struct kvm_vcpu *vcpu, gva_t gva) in vcpu_clear_mmio_info() argument
235 if (gva != MMIO_GVA_ANY && vcpu->arch.mmio_gva != (gva & PAGE_MASK)) in vcpu_clear_mmio_info()
238 vcpu->arch.mmio_gva = 0; in vcpu_clear_mmio_info()
241 static inline bool vcpu_match_mmio_gva(struct kvm_vcpu *vcpu, unsigned long gva) in vcpu_match_mmio_gva() argument
243 if (vcpu_match_mmio_gen(vcpu) && vcpu->arch.mmio_gva && in vcpu_match_mmio_gva()
244 vcpu->arch.mmio_gva == (gva & PAGE_MASK)) in vcpu_match_mmio_gva()
250 static inline bool vcpu_match_mmio_gpa(struct kvm_vcpu *vcpu, gpa_t gpa) in vcpu_match_mmio_gpa() argument
252 if (vcpu_match_mmio_gen(vcpu) && vcpu->arch.mmio_gfn && in vcpu_match_mmio_gpa()
253 vcpu->arch.mmio_gfn == gpa >> PAGE_SHIFT) in vcpu_match_mmio_gpa()
259 static inline unsigned long kvm_register_read(struct kvm_vcpu *vcpu, int reg) in kvm_register_read() argument
261 unsigned long val = kvm_register_read_raw(vcpu, reg); in kvm_register_read()
263 return is_64_bit_mode(vcpu) ? val : (u32)val; in kvm_register_read()
266 static inline void kvm_register_write(struct kvm_vcpu *vcpu, in kvm_register_write() argument
269 if (!is_64_bit_mode(vcpu)) in kvm_register_write()
271 return kvm_register_write_raw(vcpu, reg, val); in kvm_register_write()
279 void kvm_inject_realmode_interrupt(struct kvm_vcpu *vcpu, int irq, int inc_eip);
283 int kvm_read_guest_virt(struct kvm_vcpu *vcpu,
287 int kvm_write_guest_virt_system(struct kvm_vcpu *vcpu,
291 int handle_ud(struct kvm_vcpu *vcpu);
293 void kvm_deliver_exception_payload(struct kvm_vcpu *vcpu,
296 void kvm_vcpu_mtrr_init(struct kvm_vcpu *vcpu);
297 u8 kvm_mtrr_get_guest_memory_type(struct kvm_vcpu *vcpu, gfn_t gfn);
298 bool kvm_mtrr_valid(struct kvm_vcpu *vcpu, u32 msr, u64 data);
299 int kvm_mtrr_set_msr(struct kvm_vcpu *vcpu, u32 msr, u64 data);
300 int kvm_mtrr_get_msr(struct kvm_vcpu *vcpu, u32 msr, u64 *pdata);
301 bool kvm_mtrr_check_gfn_range_consistency(struct kvm_vcpu *vcpu, gfn_t gfn,
304 void kvm_fixup_and_inject_pf_error(struct kvm_vcpu *vcpu, gva_t gva, u16 error_code);
305 int x86_decode_emulated_instruction(struct kvm_vcpu *vcpu, int emulation_type,
307 int x86_emulate_instruction(struct kvm_vcpu *vcpu, gpa_t cr2_or_gpa,
309 fastpath_t handle_fastpath_set_msr_irqoff(struct kvm_vcpu *vcpu);
334 static inline void kvm_pr_unimpl_wrmsr(struct kvm_vcpu *vcpu, u32 msr, u64 data) in kvm_pr_unimpl_wrmsr() argument
337 vcpu_unimpl(vcpu, "Unhandled WRMSR(0x%x) = 0x%llx\n", msr, data); in kvm_pr_unimpl_wrmsr()
340 static inline void kvm_pr_unimpl_rdmsr(struct kvm_vcpu *vcpu, u32 msr) in kvm_pr_unimpl_rdmsr() argument
343 vcpu_unimpl(vcpu, "Unhandled RDMSR(0x%x)\n", msr); in kvm_pr_unimpl_rdmsr()
346 static inline u64 nsec_to_cycles(struct kvm_vcpu *vcpu, u64 nsec) in nsec_to_cycles() argument
348 return pvclock_scale_delta(nsec, vcpu->arch.virtual_tsc_mult, in nsec_to_cycles()
349 vcpu->arch.virtual_tsc_shift); in nsec_to_cycles()
397 static __always_inline void kvm_before_interrupt(struct kvm_vcpu *vcpu, in kvm_before_interrupt() argument
400 WRITE_ONCE(vcpu->arch.handling_intr_from_guest, (u8)intr); in kvm_before_interrupt()
403 static __always_inline void kvm_after_interrupt(struct kvm_vcpu *vcpu) in kvm_after_interrupt() argument
405 WRITE_ONCE(vcpu->arch.handling_intr_from_guest, 0); in kvm_after_interrupt()
408 static inline bool kvm_handling_nmi_from_guest(struct kvm_vcpu *vcpu) in kvm_handling_nmi_from_guest() argument
410 return vcpu->arch.handling_intr_from_guest == KVM_HANDLING_NMI; in kvm_handling_nmi_from_guest()
451 void kvm_load_guest_xsave_state(struct kvm_vcpu *vcpu);
452 void kvm_load_host_xsave_state(struct kvm_vcpu *vcpu);
454 bool __kvm_is_valid_cr4(struct kvm_vcpu *vcpu, unsigned long cr4);
455 int kvm_handle_memory_failure(struct kvm_vcpu *vcpu, int r,
457 int kvm_handle_invpcid(struct kvm_vcpu *vcpu, unsigned long type, gva_t gva);
458 bool kvm_msr_allowed(struct kvm_vcpu *vcpu, u32 index, u32 type);
493 int kvm_sev_es_mmio_write(struct kvm_vcpu *vcpu, gpa_t src, unsigned int bytes,
495 int kvm_sev_es_mmio_read(struct kvm_vcpu *vcpu, gpa_t src, unsigned int bytes,
497 int kvm_sev_es_string_io(struct kvm_vcpu *vcpu, unsigned int size,