| /linux/arch/x86/kvm/svm/ |
| H A D | svm.c | 212 struct vcpu_svm *svm = to_svm(vcpu); in svm_set_efer() local 242 clr_exception_intercept(svm, GP_VECTOR); in svm_set_efer() 250 svm_free_nested(svm); in svm_set_efer() 253 int ret = svm_allocate_nested(svm); in svm_set_efer() 265 set_exception_intercept(svm, GP_VECTOR); in svm_set_efer() 268 svm_pmu_handle_nested_transition(svm); in svm_set_efer() 272 svm->vmcb->save.efer = efer | EFER_SVME; in svm_set_efer() 273 vmcb_mark_dirty(svm->vmcb, VMCB_CR); in svm_set_efer() 279 struct vcpu_svm *svm = to_svm(vcpu); in svm_get_interrupt_shadow() local 282 if (svm->vmcb->control.int_state & SVM_INTERRUPT_SHADOW_MASK) in svm_get_interrupt_shadow() [all …]
|
| H A D | nested.c | 41 struct vcpu_svm *svm = to_svm(vcpu); in nested_svm_inject_npf_exit() local 42 struct vmcb *vmcb = svm->vmcb; in nested_svm_inject_npf_exit() 70 nested_svm_vmexit(svm); in nested_svm_inject_npf_exit() 75 struct vcpu_svm *svm = to_svm(vcpu); in nested_svm_get_tdp_pdptr() local 76 u64 cr3 = svm->nested.ctl.nested_cr3; in nested_svm_get_tdp_pdptr() 93 struct vcpu_svm *svm = to_svm(vcpu); in nested_svm_get_tdp_cr3() local 95 return svm->nested.ctl.nested_cr3; in nested_svm_get_tdp_cr3() 100 struct vcpu_svm *svm = to_svm(vcpu); in nested_svm_init_mmu_context() local 111 kvm_init_shadow_npt_mmu(vcpu, svm->vmcb01.ptr->save.cr4, in nested_svm_init_mmu_context() 112 svm->vmcb01.ptr->save.efer, in nested_svm_init_mmu_context() [all …]
|
| H A D | svm.h | 448 static inline bool ghcb_gpa_is_registered(struct vcpu_svm *svm, u64 val) in ghcb_gpa_is_registered() argument 450 return svm->sev_es.ghcb_registered_gpa == val; in ghcb_gpa_is_registered() 546 void nested_vmcb02_recalc_intercepts(struct vcpu_svm *svm); 548 static inline void svm_mark_intercepts_dirty(struct vcpu_svm *svm) in svm_mark_intercepts_dirty() argument 550 vmcb_mark_dirty(svm->vmcb01.ptr, VMCB_INTERCEPTS); in svm_mark_intercepts_dirty() 558 if (is_guest_mode(&svm->vcpu)) in svm_mark_intercepts_dirty() 559 nested_vmcb02_recalc_intercepts(svm); in svm_mark_intercepts_dirty() 562 static inline void set_exception_intercept(struct vcpu_svm *svm, u32 bit) in set_exception_intercept() argument 564 struct vmcb *vmcb = svm->vmcb01.ptr; in set_exception_intercept() 569 svm_mark_intercepts_dirty(svm); in set_exception_intercept() [all …]
|
| H A D | sev.c | 201 static bool sev_vcpu_has_debug_swap(struct vcpu_svm *svm) in sev_vcpu_has_debug_swap() argument 203 struct kvm_vcpu *vcpu = &svm->vcpu; in sev_vcpu_has_debug_swap() 968 static int sev_es_sync_vmsa(struct vcpu_svm *svm) in sev_es_sync_vmsa() argument 970 struct kvm_vcpu *vcpu = &svm->vcpu; in sev_es_sync_vmsa() 972 struct sev_es_save_area *save = svm->sev_es.vmsa; in sev_es_sync_vmsa() 984 if (svm->vcpu.guest_debug || (svm->vmcb->save.dr7 & ~DR7_FIXED_1)) in sev_es_sync_vmsa() 993 memcpy(save, &svm->vmcb->save, sizeof(svm->vmcb->save)); in sev_es_sync_vmsa() 996 save->rax = svm->vcpu.arch.regs[VCPU_REGS_RAX]; in sev_es_sync_vmsa() 997 save->rbx = svm->vcpu.arch.regs[VCPU_REGS_RBX]; in sev_es_sync_vmsa() 998 save->rcx = svm->vcpu.arch.regs[VCPU_REGS_RCX]; in sev_es_sync_vmsa() [all …]
|
| H A D | avic.c | 122 static void avic_set_x2apic_msr_interception(struct vcpu_svm *svm, in avic_set_x2apic_msr_interception() argument 125 struct kvm_vcpu *vcpu = &svm->vcpu; in avic_set_x2apic_msr_interception() 129 if (intercept == svm->x2avic_msrs_intercepted) in avic_set_x2apic_msr_interception() 146 svm->x2avic_msrs_intercepted = intercept; in avic_set_x2apic_msr_interception() 174 static void avic_activate_vmcb(struct vcpu_svm *svm) in avic_activate_vmcb() argument 176 struct vmcb *vmcb = svm->vmcb01.ptr; in avic_activate_vmcb() 177 struct kvm_vcpu *vcpu = &svm->vcpu; in avic_activate_vmcb() 184 svm_clr_intercept(svm, INTERCEPT_CR8_WRITE); in avic_activate_vmcb() 213 kvm_make_request(KVM_REQ_TLB_FLUSH_CURRENT, &svm->vcpu); in avic_activate_vmcb() 222 if (x2avic_enabled && apic_x2apic_mode(svm->vcpu.arch.apic)) { in avic_activate_vmcb() [all …]
|
| /linux/tools/testing/selftests/kvm/x86/ |
| H A D | nested_vmsave_vmload_test.c | 71 static void l1_guest_code(struct svm_test_data *svm) in l1_guest_code() argument 76 generic_svm_setup(svm, NULL, &l2_guest_stack[L2_GUEST_STACK_SIZE]); in l1_guest_code() 79 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() [all …]
|
| H A D | nested_invalid_cr3_test.c | 21 static void l1_svm_code(struct svm_test_data *svm) in l1_svm_code() argument 26 generic_svm_setup(svm, l2_guest_code, in l1_svm_code() 30 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 D | hyperv_svm_test.c | 68 static void __attribute__((__flatten__)) guest_code(struct svm_test_data *svm, in guest_code() argument 73 struct vmcb *vmcb = svm->vmcb; in guest_code() 82 GUEST_ASSERT(svm->vmcb_gpa); in guest_code() 84 generic_svm_setup(svm, l2_guest_code, in guest_code() 96 run_guest(vmcb, svm->vmcb_gpa); in guest_code() 103 __set_bit(2 * (MSR_FS_BASE & 0x1fff), svm->msr + 0x800); in guest_code() 104 run_guest(vmcb, svm->vmcb_gpa); in guest_code() 110 run_guest(vmcb, svm->vmcb_gpa); in guest_code() 115 __set_bit(2 * (MSR_GS_BASE & 0x1fff), svm->msr + 0x800); in guest_code() 118 run_guest(vmcb, svm->vmcb_gpa); in guest_code() [all …]
|
| H A D | svm_nested_vmcb12_gpa.c | 31 static void l1_vmrun(struct svm_test_data *svm, gpa_t gpa) in l1_vmrun() argument 33 generic_svm_setup(svm, l2_code, &l2_guest_stack[L2_GUEST_STACK_SIZE]); in l1_vmrun() 38 static void l1_vmload(struct svm_test_data *svm, gpa_t gpa) in l1_vmload() argument 40 generic_svm_setup(svm, l2_code, &l2_guest_stack[L2_GUEST_STACK_SIZE]); in l1_vmload() 45 static void l1_vmsave(struct svm_test_data *svm, gpa_t gpa) in l1_vmsave() argument 47 generic_svm_setup(svm, l2_code, &l2_guest_stack[L2_GUEST_STACK_SIZE]); in l1_vmsave() 52 static void l1_vmexit(struct svm_test_data *svm, gpa_t gpa) in l1_vmexit() argument 54 generic_svm_setup(svm, l2_code, &l2_guest_stack[L2_GUEST_STACK_SIZE]); in l1_vmexit() 56 run_guest(svm->vmcb, svm->vmcb_gpa); in l1_vmexit() 57 GUEST_ASSERT(svm->vmcb->control.exit_code == SVM_EXIT_VMMCALL); in l1_vmexit() [all …]
|
| H A D | nested_exceptions_test.c | 74 static void svm_run_l2(struct svm_test_data *svm, void *l2_code, int vector, in svm_run_l2() argument 77 struct vmcb *vmcb = svm->vmcb; in svm_run_l2() 81 run_guest(vmcb, svm->vmcb_gpa); in svm_run_l2() 91 static void l1_svm_code(struct svm_test_data *svm) in l1_svm_code() argument 93 struct vmcb_control_area *ctrl = &svm->vmcb->control; in l1_svm_code() 96 generic_svm_setup(svm, NULL, &l2_guest_stack[L2_GUEST_STACK_SIZE]); in l1_svm_code() 97 svm->vmcb->save.idtr.limit = 0; in l1_svm_code() 101 svm_run_l2(svm, l2_ss_pending_test, SS_VECTOR, SS_ERROR_CODE); in l1_svm_code() 102 svm_run_l2(svm, l2_ss_injected_gp_test, GP_VECTOR, GP_ERROR_CODE_AMD); in l1_svm_code() 105 svm_run_l2(svm, l2_ss_injected_df_test, DF_VECTOR, DF_ERROR_CODE); in l1_svm_code() [all …]
|
| H A D | svm_nested_shutdown_test.c | 15 static void l2_guest_code(struct svm_test_data *svm) in l2_guest_code() argument 20 static void l1_guest_code(struct svm_test_data *svm, struct idt_entry *idt) in l1_guest_code() argument 24 struct vmcb *vmcb = svm->vmcb; in l1_guest_code() 26 generic_svm_setup(svm, l2_guest_code, in l1_guest_code() 36 run_guest(vmcb, svm->vmcb_gpa); in l1_guest_code()
|
| H A D | svm_vmcall_test.c | 15 static void l2_guest_code(struct svm_test_data *svm) in l2_guest_code() argument 20 static void l1_guest_code(struct svm_test_data *svm) in l1_guest_code() argument 24 struct vmcb *vmcb = svm->vmcb; in l1_guest_code() 27 generic_svm_setup(svm, l2_guest_code, in l1_guest_code() 30 run_guest(vmcb, svm->vmcb_gpa); in l1_guest_code()
|
| H A D | nested_tsc_adjust_test.c | 106 struct svm_test_data *svm = data; in l1_guest_code() local 108 generic_svm_setup(svm, l2_guest_code, in l1_guest_code() 111 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()
|
| H A D | svm_lbr_nested_state.c | 47 static void l2_guest_code(struct svm_test_data *svm) in l2_guest_code() argument 56 static void l1_guest_code(struct svm_test_data *svm, bool nested_lbrv) in l1_guest_code() argument 59 struct vmcb *vmcb = svm->vmcb; in l1_guest_code() 68 generic_svm_setup(svm, l2_guest_code, 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()
|
| H A D | smm_test.c | 69 struct svm_test_data *svm = arg; in guest_code() local 84 generic_svm_setup(svm, l2_guest_code, in guest_code() 100 run_guest(svm->vmcb, svm->vmcb_gpa); in guest_code() 101 run_guest(svm->vmcb, svm->vmcb_gpa); in guest_code()
|
| H A D | svm_int_ctl_test.c | 33 static void l2_guest_code(struct svm_test_data *svm) in l2_guest_code() argument 55 static void l1_guest_code(struct svm_test_data *svm) in l1_guest_code() argument 59 struct vmcb *vmcb = svm->vmcb; in l1_guest_code() 64 generic_svm_setup(svm, l2_guest_code, in l1_guest_code() 77 run_guest(vmcb, svm->vmcb_gpa); in l1_guest_code()
|
| H A D | svm_nested_clear_efer_svme.c | 25 static void l1_guest_code(struct svm_test_data *svm) in l1_guest_code() argument 29 generic_svm_setup(svm, l2_guest_code, in l1_guest_code() 31 run_guest(svm->vmcb, svm->vmcb_gpa); in l1_guest_code()
|
| H A D | nested_emulation_test.c | 57 struct svm_test_data *svm = test_data; in guest_code() local 58 struct vmcb *vmcb = svm->vmcb; in guest_code() 60 generic_svm_setup(svm, NULL, NULL); in guest_code() 97 struct svm_test_data *svm = test_data; in guest_code() local 98 struct vmcb *vmcb = svm->vmcb; in guest_code() 100 run_guest(vmcb, svm->vmcb_gpa); in guest_code()
|
| H A D | nested_close_kvm_test.c | 48 static void l1_svm_code(struct svm_test_data *svm) in l1_svm_code() argument 53 generic_svm_setup(svm, l2_guest_code, in l1_svm_code() 56 run_guest(svm->vmcb, svm->vmcb_gpa); in l1_svm_code()
|
| H A D | kvm_buslock_test.c | 37 static void l1_svm_code(struct svm_test_data *svm) in l1_svm_code() argument 40 struct vmcb *vmcb = svm->vmcb; in l1_svm_code() 42 generic_svm_setup(svm, l2_guest_code, &l2_guest_stack[L2_GUEST_STACK_SIZE]); in l1_svm_code() 43 run_guest(vmcb, svm->vmcb_gpa); in l1_svm_code()
|
| H A D | triple_fault_event_test.c | 43 void l1_guest_code_svm(struct svm_test_data *svm) in l1_guest_code_svm() argument 45 struct vmcb *vmcb = svm->vmcb; in l1_guest_code_svm() 47 generic_svm_setup(svm, l2_guest_code, in l1_guest_code_svm() 53 run_guest(vmcb, svm->vmcb_gpa); in l1_guest_code_svm()
|
| /linux/tools/testing/selftests/kvm/lib/x86/ |
| H A D | svm.c | 34 struct svm_test_data *svm = addr_gva2hva(vm, svm_gva); in vcpu_alloc_svm() local 36 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() 40 svm->save_area = (void *)vm_alloc_page(vm); in vcpu_alloc_svm() 41 svm->save_area_hva = addr_gva2hva(vm, (uintptr_t)svm->save_area); in vcpu_alloc_svm() 42 svm->save_area_gpa = addr_gva2gpa(vm, (uintptr_t)svm->save_area); in vcpu_alloc_svm() 44 svm->msr = (void *)vm_alloc_page(vm); in vcpu_alloc_svm() 45 svm->msr_hva = addr_gva2hva(vm, (uintptr_t)svm->msr); in vcpu_alloc_svm() 46 svm->msr_gpa = addr_gva2gpa(vm, (uintptr_t)svm->msr); in vcpu_alloc_svm() [all …]
|
| H A D | memstress.c | 54 static void l1_svm_code(struct svm_test_data *svm, u64 vcpu_id) in l1_svm_code() argument 62 generic_svm_setup(svm, memstress_l2_guest_entry, rsp); in l1_svm_code() 64 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/arch/arm/mm/ |
| H A D | ioremap.c | 53 struct static_vm *svm; in find_static_vm_paddr() local 56 list_for_each_entry(svm, &static_vmlist, list) { in find_static_vm_paddr() 57 vm = &svm->vm; in find_static_vm_paddr() 67 return svm; in find_static_vm_paddr() 75 struct static_vm *svm; in find_static_vm_vaddr() local 78 list_for_each_entry(svm, &static_vmlist, list) { in find_static_vm_vaddr() 79 vm = &svm->vm; in find_static_vm_vaddr() 86 return svm; in find_static_vm_vaddr() 92 void __init add_static_vm_early(struct static_vm *svm) in add_static_vm_early() argument 98 vm = &svm->vm; in add_static_vm_early() [all …]
|
| /linux/tools/testing/vsock/ |
| H A D | vsock_perf.c | 104 struct sockaddr_vm svm; in vsock_connect() member 106 .svm = { in vsock_connect() 121 if (connect(fd, &addr.sa, sizeof(addr.svm)) < 0) { in vsock_connect() 147 struct sockaddr_vm svm; in run_receiver() member 149 .svm = { in run_receiver() 157 struct sockaddr_vm svm; in run_receiver() member 160 socklen_t clientaddr_len = sizeof(clientaddr.svm); in run_receiver() 173 if (bind(fd, &addr.sa, sizeof(addr.svm)) < 0) in run_receiver()
|