Home
last modified time | relevance | path

Searched refs:vmcb (Results 1 – 25 of 33) sorted by relevance

12

/linux/tools/testing/selftests/kvm/x86/
H A Dhyperv_svm_test.c73 struct vmcb *vmcb = svm->vmcb; in guest_code() local
74 struct hv_vmcb_enlightenments *hve = &vmcb->control.hv_enlightenments; in guest_code()
96 run_guest(vmcb, svm->vmcb_gpa); in guest_code()
97 GUEST_ASSERT(vmcb->control.exit_code == SVM_EXIT_VMMCALL); in guest_code()
99 vmcb->save.rip += 3; in guest_code()
102 vmcb->control.intercept |= 1ULL << INTERCEPT_MSR_PROT; in guest_code()
104 run_guest(vmcb, svm->vmcb_gpa); in guest_code()
105 GUEST_ASSERT(vmcb->control.exit_code == SVM_EXIT_MSR); in guest_code()
106 vmcb->save.rip += 2; /* rdmsr */ in guest_code()
110 run_guest(vmcb, svm->vmcb_gpa); in guest_code()
[all …]
H A Dnested_vmsave_vmload_test.c79 svm->vmcb->control.intercept |= (BIT_ULL(INTERCEPT_VMSAVE) | in l1_guest_code()
83 svm->vmcb->control.misc_ctl2 &= ~SVM_MISC2_ENABLE_V_VMLOAD_VMSAVE; in l1_guest_code()
85 svm->vmcb->save.rip = (u64)l2_guest_code_vmsave; in l1_guest_code()
86 run_guest(svm->vmcb, svm->vmcb_gpa); in l1_guest_code()
87 GUEST_ASSERT_EQ(svm->vmcb->control.exit_code, SVM_EXIT_VMSAVE); in l1_guest_code()
89 svm->vmcb->save.rip = (u64)l2_guest_code_vmload; in l1_guest_code()
90 run_guest(svm->vmcb, svm->vmcb_gpa); in l1_guest_code()
91 GUEST_ASSERT_EQ(svm->vmcb->control.exit_code, SVM_EXIT_VMLOAD); in l1_guest_code()
94 svm->vmcb->control.misc_ctl2 |= SVM_MISC2_ENABLE_V_VMLOAD_VMSAVE; in l1_guest_code()
96 svm->vmcb->save.rip = (u64)l2_guest_code_vmsave; in l1_guest_code()
[all …]
H A Dsvm_nested_soft_inject_test.c83 struct vmcb *vmcb = svm->vmcb; in l1_guest_code() local
93 vmcb->control.intercept_exceptions |= BIT(PF_VECTOR) | BIT(UD_VECTOR); in l1_guest_code()
94 vmcb->control.intercept |= BIT(INTERCEPT_NMI) | BIT(INTERCEPT_HLT); in l1_guest_code()
97 vmcb->control.event_inj = SVM_EVTINJ_VALID | SVM_EVTINJ_TYPE_NMI; in l1_guest_code()
99 vmcb->control.event_inj = INT_NR | SVM_EVTINJ_VALID | SVM_EVTINJ_TYPE_SOFT; in l1_guest_code()
101 vmcb->control.next_rip = vmcb->save.rip; in l1_guest_code()
104 run_guest(vmcb, svm->vmcb_gpa); in l1_guest_code()
105 __GUEST_ASSERT(vmcb->control.exit_code == SVM_EXIT_VMMCALL, in l1_guest_code()
107 vmcb->control.exit_code, in l1_guest_code()
108 vmcb->control.exit_info_1, vmcb->control.exit_info_2); in l1_guest_code()
[all …]
H A Dnested_emulation_test.c58 struct vmcb *vmcb = svm->vmcb; in guest_code() local
61 vmcb->save.idtr.limit = 0; in guest_code()
62 vmcb->save.rip = (u64)l2_guest_code; in guest_code()
64 vmcb->control.intercept |= BIT_ULL(INTERCEPT_SHUTDOWN) | in guest_code()
67 vmcb->control.intercept_exceptions = 0; in guest_code()
98 struct vmcb *vmcb = svm->vmcb; in guest_code() local
100 run_guest(vmcb, svm->vmcb_gpa); in guest_code()
101 exit_reason = vmcb->control.exit_code; in guest_code()
102 exit_insn_len = vmcb->control.next_rip - vmcb->save.rip; in guest_code()
103 GUEST_ASSERT_EQ(vmcb->save.rip, (u64)l2_instruction); in guest_code()
H A Dsvm_lbr_nested_state.c41 #define CHECK_BRANCH_VMCB(b, vmcb) \ argument
43 GUEST_ASSERT_EQ((b)->from, vmcb->save.br_from); \
44 GUEST_ASSERT_EQ((b)->to, vmcb->save.br_to); \
59 struct vmcb *vmcb = svm->vmcb; in l1_guest_code() local
72 vmcb->control.misc_ctl2 = SVM_MISC2_ENABLE_V_LBR; in l1_guest_code()
74 vmcb->control.misc_ctl2 &= ~SVM_MISC2_ENABLE_V_LBR; in l1_guest_code()
76 run_guest(vmcb, svm->vmcb_gpa); in l1_guest_code()
77 GUEST_ASSERT(svm->vmcb->control.exit_code == SVM_EXIT_VMMCALL); in l1_guest_code()
89 CHECK_BRANCH_VMCB(&l2_branch, vmcb); in l1_guest_code()
H A Dsvm_int_ctl_test.c59 struct vmcb *vmcb = svm->vmcb; in l1_guest_code() local
68 vmcb->control.int_ctl &= ~V_INTR_MASKING_MASK; in l1_guest_code()
71 vmcb->control.intercept &= ~(BIT(INTERCEPT_INTR) | BIT(INTERCEPT_VINTR)); in l1_guest_code()
74 vmcb->control.int_ctl |= V_IRQ_MASK | (0x1 << V_INTR_PRIO_SHIFT); in l1_guest_code()
75 vmcb->control.int_vector = VINTR_IRQ_NUMBER; in l1_guest_code()
77 run_guest(vmcb, svm->vmcb_gpa); in l1_guest_code()
78 GUEST_ASSERT(vmcb->control.exit_code == SVM_EXIT_VMMCALL); in l1_guest_code()
H A Dstate_test.c39 struct vmcb *vmcb = svm->vmcb; in svm_l1_guest_code() local
46 vmcb->control.int_ctl |= (V_GIF_ENABLE_MASK | V_GIF_MASK); in svm_l1_guest_code()
49 run_guest(vmcb, svm->vmcb_gpa); in svm_l1_guest_code()
50 GUEST_ASSERT(vmcb->control.exit_code == SVM_EXIT_VMMCALL); in svm_l1_guest_code()
52 vmcb->save.rip += 3; in svm_l1_guest_code()
53 run_guest(vmcb, svm->vmcb_gpa); in svm_l1_guest_code()
54 GUEST_ASSERT(vmcb->control.exit_code == SVM_EXIT_VMMCALL); in svm_l1_guest_code()
231 struct vmcb *vmcb = (struct vmcb *)state->nested.data.svm; in svm_check_nested_state() local
235 TEST_ASSERT_EQ(!!(vmcb->control.int_ctl & V_GIF_MASK), 1); in svm_check_nested_state()
237 TEST_ASSERT_EQ(!!(vmcb->control.int_ctl & V_GIF_MASK), 0); in svm_check_nested_state()
[all …]
H A Dnested_invalid_cr3_test.c30 save_cr3 = svm->vmcb->save.cr3; in l1_svm_code()
31 svm->vmcb->save.cr3 = -1ull; in l1_svm_code()
32 run_guest(svm->vmcb, svm->vmcb_gpa); in l1_svm_code()
33 GUEST_ASSERT(svm->vmcb->control.exit_code == SVM_EXIT_ERR); in l1_svm_code()
36 svm->vmcb->save.cr3 = save_cr3; in l1_svm_code()
37 run_guest(svm->vmcb, svm->vmcb_gpa); in l1_svm_code()
38 GUEST_ASSERT(svm->vmcb->control.exit_code == SVM_EXIT_VMMCALL); in l1_svm_code()
H A Dsvm_nested_shutdown_test.c24 struct vmcb *vmcb = svm->vmcb; in l1_guest_code() local
29 vmcb->control.intercept &= ~(BIT(INTERCEPT_SHUTDOWN)); in l1_guest_code()
36 run_guest(vmcb, svm->vmcb_gpa); in l1_guest_code()
H A Dsvm_vmcall_test.c24 struct vmcb *vmcb = svm->vmcb; in l1_guest_code() local
30 run_guest(vmcb, svm->vmcb_gpa); in l1_guest_code()
32 GUEST_ASSERT(vmcb->control.exit_code == SVM_EXIT_VMMCALL); in l1_guest_code()
H A Dtriple_fault_event_test.c45 struct vmcb *vmcb = svm->vmcb; in l1_guest_code_svm() local
51 vmcb->control.intercept &= ~(BIT(INTERCEPT_SHUTDOWN)); in l1_guest_code_svm()
53 run_guest(vmcb, svm->vmcb_gpa); in l1_guest_code_svm()
H A Dnested_exceptions_test.c77 struct vmcb *vmcb = svm->vmcb; in svm_run_l2() local
78 struct vmcb_control_area *ctrl = &vmcb->control; in svm_run_l2()
80 vmcb->save.rip = (u64)l2_code; in svm_run_l2()
81 run_guest(vmcb, svm->vmcb_gpa); in svm_run_l2()
93 struct vmcb_control_area *ctrl = &svm->vmcb->control; in l1_svm_code()
97 svm->vmcb->save.idtr.limit = 0; in l1_svm_code()
H A Dkvm_buslock_test.c40 struct vmcb *vmcb = svm->vmcb; in l1_svm_code() local
43 run_guest(vmcb, svm->vmcb_gpa); in l1_svm_code()
H A Daperfmperf_test.c68 struct vmcb *vmcb = svm->vmcb; in l1_svm_code() local
71 run_guest(vmcb, svm->vmcb_gpa); in l1_svm_code()
H A Dnested_tsc_adjust_test.c111 svm->vmcb->control.tsc_offset = TSC_OFFSET_VALUE; in l1_guest_code()
112 run_guest(svm->vmcb, svm->vmcb_gpa); in l1_guest_code()
113 GUEST_ASSERT(svm->vmcb->control.exit_code == SVM_EXIT_VMMCALL); in l1_guest_code()
/linux/arch/x86/kvm/svm/
H A Dsvm_onhyperv.h20 struct hv_vmcb_enlightenments *hve = &to_svm(vcpu)->vmcb->control.hv_enlightenments; in svm_hv_is_enlightened_tlb_enabled()
26 static inline void svm_hv_init_vmcb(struct vmcb *vmcb) in svm_hv_init_vmcb() argument
28 struct hv_vmcb_enlightenments *hve = &vmcb->control.hv_enlightenments; in svm_hv_init_vmcb()
30 BUILD_BUG_ON(sizeof(vmcb->control.hv_enlightenments) != in svm_hv_init_vmcb()
31 sizeof(vmcb->control.reserved_sw)); in svm_hv_init_vmcb()
44 struct vmcb *vmcb = to_svm(vcpu)->vmcb; in svm_hv_vmcb_dirty_nested_enlightenments() local
45 struct hv_vmcb_enlightenments *hve = &vmcb->control.hv_enlightenments; in svm_hv_vmcb_dirty_nested_enlightenments()
48 vmcb_mark_dirty(vmcb, HV_VMCB_NESTED_ENLIGHTENMENTS); in svm_hv_vmcb_dirty_nested_enlightenments()
51 static inline void svm_hv_update_vp_id(struct vmcb *vmcb, struct kvm_vcpu *vcpu) in svm_hv_update_vp_id() argument
53 struct hv_vmcb_enlightenments *hve = &vmcb->control.hv_enlightenments; in svm_hv_update_vp_id()
[all …]
H A Dsvm.c268 svm->vmcb->save.efer = efer | EFER_SVME; in svm_set_efer()
269 vmcb_mark_dirty(svm->vmcb, VMCB_CR); in svm_set_efer()
278 if (svm->vmcb->control.int_state & SVM_INTERRUPT_SHADOW_MASK) in svm_get_interrupt_shadow()
288 svm->vmcb->control.int_state &= ~SVM_INTERRUPT_SHADOW_MASK; in svm_set_interrupt_shadow()
290 svm->vmcb->control.int_state |= SVM_INTERRUPT_SHADOW_MASK; in svm_set_interrupt_shadow()
308 if (nrips && svm->vmcb->control.next_rip != 0) { in __svm_skip_emulated_instruction()
310 svm->next_rip = svm->vmcb->control.next_rip; in __svm_skip_emulated_instruction()
315 old_rflags = svm->vmcb->save.rflags; in __svm_skip_emulated_instruction()
321 svm->vmcb->save.rflags = old_rflags; in __svm_skip_emulated_instruction()
372 svm->soft_int_csbase = svm->vmcb in svm_update_soft_interrupt_rip()
633 struct vmcb *vmcb = svm->vmcb01.ptr; set_dr_intercepts() local
657 struct vmcb *vmcb = svm->vmcb01.ptr; clr_dr_intercepts() local
1120 struct vmcb *vmcb = svm->vmcb01.ptr; init_vmcb() local
1519 struct vmcb *vmcb = to_svm(vcpu)->vmcb; svm_get_if_flag() local
1906 struct vmcb *vmcb = to_svm(vcpu)->vmcb; svm_set_dr6() local
3958 struct vmcb *vmcb = svm->vmcb; svm_nmi_blocked() local
3990 struct vmcb *vmcb = svm->vmcb; svm_interrupt_blocked() local
4765 struct vmcb *vmcb = svm->vmcb; svm_check_intercept() local
[all...]
H A Dsvm.h140 struct vmcb *ptr;
278 struct vmcb *vmcb; member
375 struct vmcb *save_area;
379 struct vmcb **sev_vmcbs;
448 static inline void vmcb_mark_all_dirty(struct vmcb *vmcb) in vmcb_mark_all_dirty() argument
450 vmcb->control.clean = 0; in vmcb_mark_all_dirty()
453 static inline void vmcb_mark_all_clean(struct vmcb *vmcb) in vmcb_mark_all_clean() argument
455 vmcb->control.clean = VMCB_ALL_CLEAN_MASK in vmcb_mark_all_clean()
459 static inline void vmcb_mark_dirty(struct vmcb *vmcb, int bit) in vmcb_mark_dirty() argument
461 vmcb->control.clean &= ~(1 << bit); in vmcb_mark_dirty()
[all …]
H A Davic.c199 struct vmcb *vmcb = svm->vmcb01.ptr; in avic_activate_vmcb() local
202 vmcb->control.int_ctl &= ~(AVIC_ENABLE_MASK | X2APIC_MODE_MASK); in avic_activate_vmcb()
203 vmcb->control.avic_physical_id &= ~AVIC_PHYSICAL_MAX_INDEX_MASK; in avic_activate_vmcb()
204 vmcb->control.avic_physical_id |= avic_get_max_physical_id(vcpu); in avic_activate_vmcb()
205 vmcb->control.int_ctl |= AVIC_ENABLE_MASK; in avic_activate_vmcb()
246 vmcb->control.int_ctl |= X2APIC_MODE_MASK; in avic_activate_vmcb()
258 struct vmcb *vmcb = svm->vmcb01.ptr; in avic_deactivate_vmcb() local
260 vmcb->control.int_ctl &= ~(AVIC_ENABLE_MASK | X2APIC_MODE_MASK); in avic_deactivate_vmcb()
261 vmcb->control.avic_physical_id &= ~AVIC_PHYSICAL_MAX_INDEX_MASK; in avic_deactivate_vmcb()
399 void avic_init_vmcb(struct vcpu_svm *svm, struct vmcb *vmcb) in avic_init_vmcb() argument
[all …]
H A Dnested.c40 struct vmcb *vmcb = svm->vmcb; in nested_svm_inject_npf_exit() local
42 if (vmcb->control.exit_code != SVM_EXIT_NPF) { in nested_svm_inject_npf_exit()
47 vmcb->control.exit_code = SVM_EXIT_NPF; in nested_svm_inject_npf_exit()
48 vmcb->control.exit_info_1 = (1ULL << 32); in nested_svm_inject_npf_exit()
49 vmcb->control.exit_info_2 = fault->address; in nested_svm_inject_npf_exit()
52 vmcb->control.exit_info_1 &= ~0xffffffffULL; in nested_svm_inject_npf_exit()
53 vmcb->control.exit_info_1 |= fault->error_code; in nested_svm_inject_npf_exit()
128 struct vmcb *vmcb02 = svm->nested.vmcb02.ptr; in nested_vmcb02_recalc_intercepts()
129 struct vmcb *vmcb01 = svm->vmcb01.ptr; in nested_vmcb02_recalc_intercepts()
132 if (WARN_ON_ONCE(svm->vmcb != vmcb02)) in nested_vmcb02_recalc_intercepts()
[all …]
H A Dsev.c941 if (svm->vcpu.guest_debug || (svm->vmcb->save.dr7 & ~DR7_FIXED_1)) in sev_es_sync_vmsa()
950 memcpy(save, &svm->vmcb->save, sizeof(svm->vmcb->save)); in sev_es_sync_vmsa()
2091 dst_svm->vmcb->control.ghcb_gpa = src_svm->vmcb->control.ghcb_gpa; in sev_migrate_from()
2092 dst_svm->vmcb->control.vmsa_pa = src_svm->vmcb->control.vmsa_pa; in sev_migrate_from()
2096 src_svm->vmcb->control.ghcb_gpa = INVALID_PAGE; in sev_migrate_from()
2097 src_svm->vmcb->control.vmsa_pa = INVALID_PAGE; in sev_migrate_from()
3319 struct vmcb_control_area *control = &svm->vmcb in dump_ghcb()
4708 struct vmcb *vmcb = svm->vmcb01.ptr; sev_es_init_vmcb() local
[all...]
H A Dsvm_onhyperv.c26 hve = &to_svm(vcpu)->vmcb->control.hv_enlightenments; in svm_hv_enable_l2_tlb_flush()
32 vmcb_mark_dirty(to_svm(vcpu)->vmcb, HV_VMCB_NESTED_ENLIGHTENMENTS); in svm_hv_enable_l2_tlb_flush()
/linux/tools/testing/selftests/kvm/lib/x86/
H A Dsvm.c36 svm->vmcb = (void *)vm_alloc_page(vm); in vcpu_alloc_svm()
37 svm->vmcb_hva = addr_gva2hva(vm, (uintptr_t)svm->vmcb); in vcpu_alloc_svm()
38 svm->vmcb_gpa = addr_gva2gpa(vm, (uintptr_t)svm->vmcb); in vcpu_alloc_svm()
86 struct vmcb *vmcb = svm->vmcb; in generic_svm_setup() local
88 struct vmcb_save_area *save = &vmcb->save; in generic_svm_setup()
89 struct vmcb_control_area *ctrl = &vmcb->control; in generic_svm_setup()
100 memset(vmcb, 0, sizeof(*vmcb)); in generic_svm_setup()
124 vmcb->save.rip = (u64)guest_rip; in generic_svm_setup()
125 vmcb->save.rsp = (u64)guest_rsp; in generic_svm_setup()
161 void run_guest(struct vmcb *vmcb, u64 vmcb_gpa) in run_guest() argument
[all …]
H A Dmemstress.c64 run_guest(svm->vmcb, svm->vmcb_gpa); in l1_svm_code()
65 GUEST_ASSERT_EQ(svm->vmcb->control.exit_code, SVM_EXIT_VMMCALL); in l1_svm_code()
/linux/tools/testing/selftests/kvm/include/x86/
H A Dsvm_util.h17 struct vmcb *vmcb; /* gva */ member
61 void run_guest(struct vmcb *vmcb, u64 vmcb_gpa);

12