Lines Matching refs:svm

317 void recalc_intercepts(struct vcpu_svm *svm);
406 static inline void set_dr_intercepts(struct vcpu_svm *svm) in set_dr_intercepts() argument
408 struct vmcb *vmcb = svm->vmcb01.ptr; in set_dr_intercepts()
410 if (!sev_es_guest(svm->vcpu.kvm)) { in set_dr_intercepts()
430 recalc_intercepts(svm); in set_dr_intercepts()
433 static inline void clr_dr_intercepts(struct vcpu_svm *svm) in clr_dr_intercepts() argument
435 struct vmcb *vmcb = svm->vmcb01.ptr; in clr_dr_intercepts()
440 if (sev_es_guest(svm->vcpu.kvm)) { in clr_dr_intercepts()
445 recalc_intercepts(svm); in clr_dr_intercepts()
448 static inline void set_exception_intercept(struct vcpu_svm *svm, u32 bit) in set_exception_intercept() argument
450 struct vmcb *vmcb = svm->vmcb01.ptr; in set_exception_intercept()
455 recalc_intercepts(svm); in set_exception_intercept()
458 static inline void clr_exception_intercept(struct vcpu_svm *svm, u32 bit) in clr_exception_intercept() argument
460 struct vmcb *vmcb = svm->vmcb01.ptr; in clr_exception_intercept()
465 recalc_intercepts(svm); in clr_exception_intercept()
468 static inline void svm_set_intercept(struct vcpu_svm *svm, int bit) in svm_set_intercept() argument
470 struct vmcb *vmcb = svm->vmcb01.ptr; in svm_set_intercept()
474 recalc_intercepts(svm); in svm_set_intercept()
477 static inline void svm_clr_intercept(struct vcpu_svm *svm, int bit) in svm_clr_intercept() argument
479 struct vmcb *vmcb = svm->vmcb01.ptr; in svm_clr_intercept()
483 recalc_intercepts(svm); in svm_clr_intercept()
486 static inline bool svm_is_intercept(struct vcpu_svm *svm, int bit) in svm_is_intercept() argument
488 return vmcb_is_intercept(&svm->vmcb->control, bit); in svm_is_intercept()
491 static inline bool nested_vgif_enabled(struct vcpu_svm *svm) in nested_vgif_enabled() argument
493 return svm->vgif_enabled && (svm->nested.ctl.int_ctl & V_GIF_ENABLE_MASK); in nested_vgif_enabled()
496 static inline struct vmcb *get_vgif_vmcb(struct vcpu_svm *svm) in get_vgif_vmcb() argument
501 if (is_guest_mode(&svm->vcpu) && !nested_vgif_enabled(svm)) in get_vgif_vmcb()
502 return svm->nested.vmcb02.ptr; in get_vgif_vmcb()
504 return svm->vmcb01.ptr; in get_vgif_vmcb()
507 static inline void enable_gif(struct vcpu_svm *svm) in enable_gif() argument
509 struct vmcb *vmcb = get_vgif_vmcb(svm); in enable_gif()
514 svm->guest_gif = true; in enable_gif()
517 static inline void disable_gif(struct vcpu_svm *svm) in disable_gif() argument
519 struct vmcb *vmcb = get_vgif_vmcb(svm); in disable_gif()
524 svm->guest_gif = false; in disable_gif()
527 static inline bool gif_set(struct vcpu_svm *svm) in gif_set() argument
529 struct vmcb *vmcb = get_vgif_vmcb(svm); in gif_set()
534 return svm->guest_gif; in gif_set()
537 static inline bool nested_npt_enabled(struct vcpu_svm *svm) in nested_npt_enabled() argument
539 return svm->nested.ctl.nested_ctl & SVM_NESTED_CTL_NP_ENABLE; in nested_npt_enabled()
568 void disable_nmi_singlestep(struct vcpu_svm *svm);
572 void svm_set_gif(struct vcpu_svm *svm, bool value);
576 void svm_set_x2apic_msr_interception(struct vcpu_svm *svm, bool disable);
588 struct vcpu_svm *svm = to_svm(vcpu); in nested_svm_virtualize_tpr() local
590 return is_guest_mode(vcpu) && (svm->nested.ctl.int_ctl & V_INTR_MASKING_MASK); in nested_svm_virtualize_tpr()
593 static inline bool nested_exit_on_smi(struct vcpu_svm *svm) in nested_exit_on_smi() argument
595 return vmcb12_is_intercept(&svm->nested.ctl, INTERCEPT_SMI); in nested_exit_on_smi()
598 static inline bool nested_exit_on_intr(struct vcpu_svm *svm) in nested_exit_on_intr() argument
600 return vmcb12_is_intercept(&svm->nested.ctl, INTERCEPT_INTR); in nested_exit_on_intr()
603 static inline bool nested_exit_on_nmi(struct vcpu_svm *svm) in nested_exit_on_nmi() argument
605 return vmcb12_is_intercept(&svm->nested.ctl, INTERCEPT_NMI); in nested_exit_on_nmi()
611 void svm_free_nested(struct vcpu_svm *svm);
612 int svm_allocate_nested(struct vcpu_svm *svm);
617 int nested_svm_vmexit(struct vcpu_svm *svm);
619 static inline int nested_svm_simple_vmexit(struct vcpu_svm *svm, u32 exit_code) in nested_svm_simple_vmexit() argument
621 svm->vmcb->control.exit_code = exit_code; in nested_svm_simple_vmexit()
622 svm->vmcb->control.exit_info_1 = 0; in nested_svm_simple_vmexit()
623 svm->vmcb->control.exit_info_2 = 0; in nested_svm_simple_vmexit()
624 return nested_svm_vmexit(svm); in nested_svm_simple_vmexit()
627 int nested_svm_exit_handled(struct vcpu_svm *svm);
629 int nested_svm_check_exception(struct vcpu_svm *svm, unsigned nr,
631 int nested_svm_exit_special(struct vcpu_svm *svm);
634 void nested_copy_vmcb_control_to_cache(struct vcpu_svm *svm,
636 void nested_copy_vmcb_save_to_cache(struct vcpu_svm *svm,
638 void nested_sync_control_from_vmcb02(struct vcpu_svm *svm);
639 void nested_vmcb02_compute_g_pat(struct vcpu_svm *svm);
640 void svm_switch_vmcb(struct vcpu_svm *svm, struct kvm_vmcb_info *target_vmcb);
665 void avic_init_vmcb(struct vcpu_svm *svm, struct vmcb *vmcb);
668 int avic_init_vcpu(struct vcpu_svm *svm);
700 void pre_sev_run(struct vcpu_svm *svm, int cpu);
705 void sev_init_vmcb(struct vcpu_svm *svm);
708 int sev_es_string_io(struct vcpu_svm *svm, int size, unsigned int port, int in);
709 void sev_es_vcpu_reset(struct vcpu_svm *svm);
712 void sev_es_unmap_ghcb(struct vcpu_svm *svm);
716 void __svm_sev_es_vcpu_run(struct vcpu_svm *svm, bool spec_ctrl_intercepted);
717 void __svm_vcpu_run(struct vcpu_svm *svm, bool spec_ctrl_intercepted);