/kernel/linux/linux-6.6/tools/testing/selftests/kvm/x86_64/ |
H A D | hyperv_svm_test.c | 74 struct vmcb *vmcb = svm->vmcb; in guest_code() local 75 struct hv_vmcb_enlightenments *hve = &vmcb->control.hv_enlightenments; in guest_code() 97 run_guest(vmcb, svm->vmcb_gpa); in guest_code() 98 GUEST_ASSERT(vmcb->control.exit_code == SVM_EXIT_VMMCALL); in guest_code() 100 vmcb->save.rip += 3; in guest_code() 103 vmcb->control.intercept |= 1ULL << INTERCEPT_MSR_PROT; in guest_code() 105 run_guest(vmcb, svm->vmcb_gpa); in guest_code() 106 GUEST_ASSERT(vmcb in guest_code() [all...] |
H A D | svm_nested_soft_inject_test.c | 83 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, sv in l1_guest_code() [all...] |
H A D | svm_int_ctl_test.c | 62 struct vmcb *vmcb = svm->vmcb; in l1_guest_code() local 71 vmcb->control.int_ctl &= ~V_INTR_MASKING_MASK; in l1_guest_code() 74 vmcb->control.intercept &= ~(BIT(INTERCEPT_INTR) | BIT(INTERCEPT_VINTR)); in l1_guest_code() 77 vmcb->control.int_ctl |= V_IRQ_MASK | (0x1 << V_INTR_PRIO_SHIFT); in l1_guest_code() 78 vmcb->control.int_vector = VINTR_IRQ_NUMBER; in l1_guest_code() 80 run_guest(vmcb, svm->vmcb_gpa); in l1_guest_code() 81 GUEST_ASSERT(vmcb->control.exit_code == SVM_EXIT_VMMCALL); in l1_guest_code()
|
H A D | svm_nested_shutdown_test.c | 24 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 D | svm_vmcall_test.c | 24 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 D | nested_exceptions_test.c | 79 struct vmcb *vmcb = svm->vmcb; in svm_run_l2() local 80 struct vmcb_control_area *ctrl = &vmcb->control; in svm_run_l2() 82 vmcb->save.rip = (u64)l2_code; in svm_run_l2() 83 run_guest(vmcb, svm->vmcb_gpa); in svm_run_l2() 94 struct vmcb_control_area *ctrl = &svm->vmcb->control; in l1_svm_code() 98 svm->vmcb->save.idtr.limit = 0; in l1_svm_code()
|
H A D | state_test.c | 38 struct vmcb *vmcb = svm->vmcb; in svm_l1_guest_code() local 46 run_guest(vmcb, svm->vmcb_gpa); in svm_l1_guest_code() 47 GUEST_ASSERT(vmcb->control.exit_code == SVM_EXIT_VMMCALL); in svm_l1_guest_code() 49 vmcb->save.rip += 3; in svm_l1_guest_code() 50 run_guest(vmcb, svm->vmcb_gpa); in svm_l1_guest_code() 51 GUEST_ASSERT(vmcb->control.exit_code == SVM_EXIT_VMMCALL); in svm_l1_guest_code()
|
H A D | triple_fault_event_test.c | 45 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()
|
/kernel/linux/linux-5.10/arch/x86/kvm/svm/ |
H A D | svm.h | 86 struct vmcb *hsave; 106 struct vmcb *vmcb; member 181 struct vmcb *current_vmcb; 183 /* index = sev_asid, value = vmcb pointer */ 184 struct vmcb **sev_vmcbs; 196 static inline void vmcb_mark_all_dirty(struct vmcb *vmcb) in vmcb_mark_all_dirty() argument 198 vmcb->control.clean = 0; in vmcb_mark_all_dirty() 201 static inline void vmcb_mark_all_clean(struct vmcb *vmc argument 207 vmcb_mark_dirty(struct vmcb *vmcb, int bit) vmcb_mark_dirty() argument 245 struct vmcb *vmcb = get_host_vmcb(svm); set_dr_intercepts() local 269 struct vmcb *vmcb = get_host_vmcb(svm); clr_dr_intercepts() local 278 struct vmcb *vmcb = get_host_vmcb(svm); set_exception_intercept() local 288 struct vmcb *vmcb = get_host_vmcb(svm); clr_exception_intercept() local 298 struct vmcb *vmcb = get_host_vmcb(svm); svm_set_intercept() local 307 struct vmcb *vmcb = get_host_vmcb(svm); svm_clr_intercept() local [all...] |
H A D | nested.c | 37 if (svm->vmcb->control.exit_code != SVM_EXIT_NPF) { in nested_svm_inject_npf_exit() 42 svm->vmcb->control.exit_code = SVM_EXIT_NPF; in nested_svm_inject_npf_exit() 43 svm->vmcb->control.exit_code_hi = 0; in nested_svm_inject_npf_exit() 44 svm->vmcb->control.exit_info_1 = (1ULL << 32); in nested_svm_inject_npf_exit() 45 svm->vmcb->control.exit_info_2 = fault->address; in nested_svm_inject_npf_exit() 48 svm->vmcb->control.exit_info_1 &= ~0xffffffffULL; in nested_svm_inject_npf_exit() 49 svm->vmcb->control.exit_info_1 |= fault->error_code; in nested_svm_inject_npf_exit() 61 svm->vmcb->control.exit_code = SVM_EXIT_EXCP_BASE + PF_VECTOR; in svm_inject_page_fault_nested() 62 svm->vmcb->control.exit_code_hi = 0; in svm_inject_page_fault_nested() 63 svm->vmcb in svm_inject_page_fault_nested() 497 struct vmcb *vmcb = svm->vmcb; nested_svm_vmrun() local 619 struct vmcb *vmcb = svm->vmcb; nested_svm_vmexit() local 792 struct vmcb *vmcb = svm->vmcb; svm_leave_nested() local [all...] |
H A D | svm.c | 303 svm->vmcb->save.efer = efer | EFER_SVME; in svm_set_efer() 304 vmcb_mark_dirty(svm->vmcb, VMCB_CR); in svm_set_efer() 313 if (svm->vmcb->control.int_state & SVM_INTERRUPT_SHADOW_MASK) in svm_get_interrupt_shadow() 323 svm->vmcb->control.int_state &= ~SVM_INTERRUPT_SHADOW_MASK; in svm_set_interrupt_shadow() 325 svm->vmcb->control.int_state |= SVM_INTERRUPT_SHADOW_MASK; in svm_set_interrupt_shadow() 333 if (nrips && svm->vmcb->control.next_rip != 0) { in skip_emulated_instruction() 335 svm->next_rip = svm->vmcb->control.next_rip; in skip_emulated_instruction() 370 svm->int3_rip = rip + svm->vmcb->save.cs.base; in svm_queue_exception() 374 svm->vmcb->control.event_inj = nr in svm_queue_exception() 378 svm->vmcb in svm_queue_exception() 1335 svm_clear_current_vmcb(struct vmcb *vmcb) svm_clear_current_vmcb() argument 1772 struct vmcb *vmcb = svm->vmcb; svm_set_dr6() local 3206 struct vmcb *vmcb = svm->vmcb; svm_nmi_blocked() local 3257 struct vmcb *vmcb = svm->vmcb; svm_interrupt_blocked() local 3875 struct vmcb *vmcb = svm->vmcb; svm_check_intercept() local [all...] |
H A D | avic.c | 196 struct vmcb *vmcb = svm->vmcb; in avic_init_vmcb() local 202 vmcb->control.avic_backing_page = bpa & AVIC_HPA_MASK; in avic_init_vmcb() 203 vmcb->control.avic_logical_id = lpa & AVIC_HPA_MASK; in avic_init_vmcb() 204 vmcb->control.avic_physical_id = ppa & AVIC_HPA_MASK; in avic_init_vmcb() 205 vmcb->control.avic_physical_id |= AVIC_MAX_PHYSICAL_ID_COUNT; in avic_init_vmcb() 207 vmcb->control.int_ctl |= AVIC_ENABLE_MASK; in avic_init_vmcb() 209 vmcb->control.int_ctl &= ~AVIC_ENABLE_MASK; in avic_init_vmcb() 300 u32 icrh = svm->vmcb in avic_incomplete_ipi_interception() 645 struct vmcb *vmcb = svm->vmcb; svm_refresh_apicv_exec_ctrl() local [all...] |
/kernel/linux/linux-6.6/arch/x86/kvm/svm/ |
H A D | svm_onhyperv.h | 22 struct hv_vmcb_enlightenments *hve = &to_svm(vcpu)->vmcb->control.hv_enlightenments; in svm_hv_is_enlightened_tlb_enabled() 28 static inline void svm_hv_init_vmcb(struct vmcb *vmcb) in svm_hv_init_vmcb() argument 30 struct hv_vmcb_enlightenments *hve = &vmcb->control.hv_enlightenments; in svm_hv_init_vmcb() 32 BUILD_BUG_ON(sizeof(vmcb->control.hv_enlightenments) != in svm_hv_init_vmcb() 33 sizeof(vmcb->control.reserved_sw)); in svm_hv_init_vmcb() 73 struct vmcb *vmcb = to_svm(vcpu)->vmcb; in svm_hv_vmcb_dirty_nested_enlightenments() local 74 struct hv_vmcb_enlightenments *hve = &vmcb in svm_hv_vmcb_dirty_nested_enlightenments() 80 svm_hv_update_vp_id(struct vmcb *vmcb, struct kvm_vcpu *vcpu) svm_hv_update_vp_id() argument 97 svm_hv_init_vmcb(struct vmcb *vmcb) svm_hv_init_vmcb() argument 110 svm_hv_update_vp_id(struct vmcb *vmcb, struct kvm_vcpu *vcpu) svm_hv_update_vp_id() argument [all...] |
H A D | svm.h | 110 struct vmcb *ptr; 209 /* vmcb always points at current_vmcb->ptr, it's purely a shorthand. */ 210 struct vmcb *vmcb; member 304 struct vmcb *current_vmcb; 306 /* index = sev_asid, value = vmcb pointer */ 307 struct vmcb **sev_vmcbs; 341 static inline void vmcb_mark_all_dirty(struct vmcb *vmcb) in vmcb_mark_all_dirty() argument 343 vmcb in vmcb_mark_all_dirty() 346 vmcb_mark_all_clean(struct vmcb *vmcb) vmcb_mark_all_clean() argument 352 vmcb_mark_dirty(struct vmcb *vmcb, int bit) vmcb_mark_dirty() argument 357 vmcb_is_dirty(struct vmcb *vmcb, int bit) vmcb_is_dirty() argument 403 struct vmcb *vmcb = svm->vmcb01.ptr; set_exception_intercept() local 413 struct vmcb *vmcb = svm->vmcb01.ptr; clr_exception_intercept() local 423 struct vmcb *vmcb = svm->vmcb01.ptr; svm_set_intercept() local 432 struct vmcb *vmcb = svm->vmcb01.ptr; svm_clr_intercept() local 463 struct vmcb *vmcb = get_vgif_vmcb(svm); enable_gif() local 473 struct vmcb *vmcb = get_vgif_vmcb(svm); disable_gif() local 483 struct vmcb *vmcb = get_vgif_vmcb(svm); gif_set() local 524 struct vmcb *vmcb = get_vnmi_vmcb_l1(svm); is_vnmi_enabled() local [all...] |
H A D | svm.c | 342 svm->vmcb->save.efer = efer | EFER_SVME; in svm_set_efer() 343 vmcb_mark_dirty(svm->vmcb, VMCB_CR); in svm_set_efer() 352 if (svm->vmcb->control.int_state & SVM_INTERRUPT_SHADOW_MASK) in svm_get_interrupt_shadow() 362 svm->vmcb->control.int_state &= ~SVM_INTERRUPT_SHADOW_MASK; in svm_set_interrupt_shadow() 364 svm->vmcb->control.int_state |= SVM_INTERRUPT_SHADOW_MASK; in svm_set_interrupt_shadow() 383 if (nrips && svm->vmcb->control.next_rip != 0) { in __svm_skip_emulated_instruction() 385 svm->next_rip = svm->vmcb->control.next_rip; in __svm_skip_emulated_instruction() 398 old_rflags = svm->vmcb->save.rflags; in __svm_skip_emulated_instruction() 404 svm->vmcb->save.rflags = old_rflags; in __svm_skip_emulated_instruction() 453 svm->soft_int_csbase = svm->vmcb in svm_update_soft_interrupt_rip() 743 struct vmcb *vmcb = svm->vmcb01.ptr; set_dr_intercepts() local 767 struct vmcb *vmcb = svm->vmcb01.ptr; clr_dr_intercepts() local 1247 struct vmcb *vmcb = svm->vmcb01.ptr; init_vmcb() local 1495 svm_clear_current_vmcb(struct vmcb *vmcb) svm_clear_current_vmcb() argument 1622 struct vmcb *vmcb = to_svm(vcpu)->vmcb; svm_get_if_flag() local 2012 struct vmcb *vmcb = svm->vmcb; svm_set_dr6() local 3749 struct vmcb *vmcb = svm->vmcb; svm_nmi_blocked() local 3781 struct vmcb *vmcb = svm->vmcb; svm_interrupt_blocked() local 4446 struct vmcb *vmcb = svm->vmcb; svm_check_intercept() local [all...] |
H A D | nested.c | 40 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_code_hi = 0; in nested_svm_inject_npf_exit() 49 vmcb->control.exit_info_1 = (1ULL << 32); in nested_svm_inject_npf_exit() 50 vmcb->control.exit_info_2 = fault->address; in nested_svm_inject_npf_exit() 53 vmcb->control.exit_info_1 &= ~0xffffffffULL; in nested_svm_inject_npf_exit() 54 vmcb in nested_svm_inject_npf_exit() 1382 struct vmcb *vmcb = svm->vmcb; nested_svm_inject_exception_vmexit() local [all...] |
H A D | avic.c | 87 struct vmcb *vmcb = svm->vmcb01.ptr; in avic_activate_vmcb() local 89 vmcb->control.int_ctl &= ~(AVIC_ENABLE_MASK | X2APIC_MODE_MASK); in avic_activate_vmcb() 90 vmcb->control.avic_physical_id &= ~AVIC_PHYSICAL_MAX_INDEX_MASK; in avic_activate_vmcb() 92 vmcb->control.int_ctl |= AVIC_ENABLE_MASK; in avic_activate_vmcb() 102 vmcb->control.int_ctl |= X2APIC_MODE_MASK; in avic_activate_vmcb() 103 vmcb->control.avic_physical_id |= X2AVIC_MAX_PHYSICAL_ID; in avic_activate_vmcb() 114 vmcb->control.avic_physical_id |= AVIC_MAX_PHYSICAL_ID; in avic_activate_vmcb() 122 struct vmcb *vmcb in avic_deactivate_vmcb() local 244 avic_init_vmcb(struct vcpu_svm *svm, struct vmcb *vmcb) avic_init_vmcb() argument 1115 struct vmcb *vmcb = svm->vmcb01.ptr; avic_refresh_virtual_apic_mode() local [all...] |
H A D | hyperv.c | 13 svm->vmcb->control.exit_code = HV_SVM_EXITCODE_ENL; in svm_hv_inject_synthetic_vmexit_post_tlb_flush() 14 svm->vmcb->control.exit_code_hi = 0; in svm_hv_inject_synthetic_vmexit_post_tlb_flush() 15 svm->vmcb->control.exit_info_1 = HV_SVM_ENL_EXITCODE_TRAP_AFTER_FLUSH; in svm_hv_inject_synthetic_vmexit_post_tlb_flush() 16 svm->vmcb->control.exit_info_2 = 0; in svm_hv_inject_synthetic_vmexit_post_tlb_flush()
|
H A D | sev.c | 577 if (svm->vcpu.guest_debug || (svm->vmcb->save.dr7 & ~DR7_FIXED_1)) in sev_es_sync_vmsa() 586 memcpy(save, &svm->vmcb->save, sizeof(svm->vmcb->save)); in sev_es_sync_vmsa() 1751 dst_svm->vmcb->control.ghcb_gpa = src_svm->vmcb->control.ghcb_gpa; in sev_migrate_from() 1752 dst_svm->vmcb->control.vmsa_pa = src_svm->vmcb->control.vmsa_pa; in sev_migrate_from() 1756 src_svm->vmcb->control.ghcb_gpa = INVALID_PAGE; in sev_migrate_from() 1757 src_svm->vmcb->control.vmsa_pa = INVALID_PAGE; in sev_migrate_from() 2385 pr_err("GHCB (GPA=%016llx):\n", svm->vmcb in dump_ghcb() 2993 struct vmcb *vmcb = svm->vmcb01.ptr; sev_es_init_vmcb() local [all...] |
/kernel/linux/linux-5.10/tools/testing/selftests/kvm/lib/x86_64/ |
H A D | svm.c | 37 svm->vmcb = (void *)vm_vaddr_alloc(vm, getpagesize(), in vcpu_alloc_svm() 39 svm->vmcb_hva = addr_gva2hva(vm, (uintptr_t)svm->vmcb); in vcpu_alloc_svm() 40 svm->vmcb_gpa = addr_gva2gpa(vm, (uintptr_t)svm->vmcb); in vcpu_alloc_svm() 61 * Avoid using memset to clear the vmcb, since libc may not be 65 static void clear_vmcb(struct vmcb *vmcb) in clear_vmcb() argument 67 int n = sizeof(*vmcb) / sizeof(u32); in clear_vmcb() 69 asm volatile ("rep stosl" : "+c"(n), "+D"(vmcb) : "a"(0) : "memory"); in clear_vmcb() 74 struct vmcb *vmcb in generic_svm_setup() local 143 run_guest(struct vmcb *vmcb, uint64_t vmcb_gpa) run_guest() argument [all...] |
/kernel/linux/linux-6.6/tools/testing/selftests/kvm/lib/x86_64/ |
H A D | svm.c | 37 svm->vmcb = (void *)vm_vaddr_alloc_page(vm); in vcpu_alloc_svm() 38 svm->vmcb_hva = addr_gva2hva(vm, (uintptr_t)svm->vmcb); in vcpu_alloc_svm() 39 svm->vmcb_gpa = addr_gva2gpa(vm, (uintptr_t)svm->vmcb); in vcpu_alloc_svm() 65 struct vmcb *vmcb = svm->vmcb; in generic_svm_setup() local 67 struct vmcb_save_area *save = &vmcb->save; in generic_svm_setup() 68 struct vmcb_control_area *ctrl = &vmcb->control; in generic_svm_setup() 79 memset(vmcb, 0, sizeof(*vmcb)); in generic_svm_setup() 135 run_guest(struct vmcb *vmcb, uint64_t vmcb_gpa) run_guest() argument [all...] |
/kernel/linux/linux-5.10/tools/testing/selftests/kvm/x86_64/ |
H A D | svm_vmcall_test.c | 28 struct vmcb *vmcb = svm->vmcb; in l1_guest_code() local 34 run_guest(vmcb, svm->vmcb_gpa); in l1_guest_code() 36 GUEST_ASSERT(vmcb->control.exit_code == SVM_EXIT_VMMCALL); in l1_guest_code()
|
H A D | state_test.c | 39 struct vmcb *vmcb = svm->vmcb; in svm_l1_guest_code() local 47 run_guest(vmcb, svm->vmcb_gpa); in svm_l1_guest_code() 48 GUEST_ASSERT(vmcb->control.exit_code == SVM_EXIT_VMMCALL); in svm_l1_guest_code() 50 vmcb->save.rip += 3; in svm_l1_guest_code() 51 run_guest(vmcb, svm->vmcb_gpa); in svm_l1_guest_code() 52 GUEST_ASSERT(vmcb->control.exit_code == SVM_EXIT_VMMCALL); in svm_l1_guest_code()
|
/kernel/linux/linux-5.10/tools/testing/selftests/kvm/include/x86_64/ |
H A D | svm_util.h | 23 struct vmcb *vmcb; /* gva */ member 35 void run_guest(struct vmcb *vmcb, uint64_t vmcb_gpa);
|
/kernel/linux/linux-6.6/tools/testing/selftests/kvm/include/x86_64/ |
H A D | svm_util.h | 20 struct vmcb *vmcb; /* gva */ member 61 void run_guest(struct vmcb *vmcb, uint64_t vmcb_gpa);
|