/Linux-v5.15/arch/x86/kvm/svm/ |
D | nested.c | 37 struct vcpu_svm *svm = to_svm(vcpu); in nested_svm_inject_npf_exit() local 39 if (svm->vmcb->control.exit_code != SVM_EXIT_NPF) { in nested_svm_inject_npf_exit() 44 svm->vmcb->control.exit_code = SVM_EXIT_NPF; in nested_svm_inject_npf_exit() 45 svm->vmcb->control.exit_code_hi = 0; in nested_svm_inject_npf_exit() 46 svm->vmcb->control.exit_info_1 = (1ULL << 32); in nested_svm_inject_npf_exit() 47 svm->vmcb->control.exit_info_2 = fault->address; in nested_svm_inject_npf_exit() 50 svm->vmcb->control.exit_info_1 &= ~0xffffffffULL; in nested_svm_inject_npf_exit() 51 svm->vmcb->control.exit_info_1 |= fault->error_code; in nested_svm_inject_npf_exit() 53 nested_svm_vmexit(svm); in nested_svm_inject_npf_exit() 58 struct vcpu_svm *svm = to_svm(vcpu); in svm_inject_page_fault_nested() local [all …]
|
D | svm.c | 270 struct vcpu_svm *svm = to_svm(vcpu); in svm_set_efer() local 284 svm_leave_nested(svm); in svm_set_efer() 285 svm_set_gif(svm, true); in svm_set_efer() 288 clr_exception_intercept(svm, GP_VECTOR); in svm_set_efer() 296 svm_free_nested(svm); in svm_set_efer() 299 int ret = svm_allocate_nested(svm); in svm_set_efer() 307 set_exception_intercept(svm, GP_VECTOR); in svm_set_efer() 311 svm->vmcb->save.efer = efer | EFER_SVME; in svm_set_efer() 312 vmcb_mark_dirty(svm->vmcb, VMCB_CR); in svm_set_efer() 324 struct vcpu_svm *svm = to_svm(vcpu); in svm_get_interrupt_shadow() local [all …]
|
D | svm.h | 219 void recalc_intercepts(struct vcpu_svm *svm); 297 static inline void set_dr_intercepts(struct vcpu_svm *svm) in set_dr_intercepts() argument 299 struct vmcb *vmcb = svm->vmcb01.ptr; in set_dr_intercepts() 301 if (!sev_es_guest(svm->vcpu.kvm)) { in set_dr_intercepts() 321 recalc_intercepts(svm); in set_dr_intercepts() 324 static inline void clr_dr_intercepts(struct vcpu_svm *svm) in clr_dr_intercepts() argument 326 struct vmcb *vmcb = svm->vmcb01.ptr; in clr_dr_intercepts() 331 if (sev_es_guest(svm->vcpu.kvm)) { in clr_dr_intercepts() 336 recalc_intercepts(svm); in clr_dr_intercepts() 339 static inline void set_exception_intercept(struct vcpu_svm *svm, u32 bit) in set_exception_intercept() argument [all …]
|
D | avic.c | 188 void avic_init_vmcb(struct vcpu_svm *svm) in avic_init_vmcb() argument 190 struct vmcb *vmcb = svm->vmcb; in avic_init_vmcb() 191 struct kvm_svm *kvm_svm = to_kvm_svm(svm->vcpu.kvm); in avic_init_vmcb() 192 phys_addr_t bpa = __sme_set(page_to_phys(svm->avic_backing_page)); in avic_init_vmcb() 202 if (kvm_apicv_activated(svm->vcpu.kvm)) in avic_init_vmcb() 259 struct vcpu_svm *svm = to_svm(vcpu); in avic_init_backing_page() local 275 svm->avic_backing_page = virt_to_page(vcpu->arch.apic->regs); in avic_init_backing_page() 282 new_entry = __sme_set((page_to_phys(svm->avic_backing_page) & in avic_init_backing_page() 287 svm->avic_physical_id_cache = entry; in avic_init_backing_page() 311 struct vcpu_svm *svm = to_svm(vcpu); in avic_incomplete_ipi_interception() local [all …]
|
D | sev.c | 552 static int sev_es_sync_vmsa(struct vcpu_svm *svm) in sev_es_sync_vmsa() argument 554 struct vmcb_save_area *save = &svm->vmcb->save; in sev_es_sync_vmsa() 557 if (svm->vcpu.guest_debug || (save->dr7 & ~DR7_FIXED_1)) in sev_es_sync_vmsa() 561 save->rax = svm->vcpu.arch.regs[VCPU_REGS_RAX]; in sev_es_sync_vmsa() 562 save->rbx = svm->vcpu.arch.regs[VCPU_REGS_RBX]; in sev_es_sync_vmsa() 563 save->rcx = svm->vcpu.arch.regs[VCPU_REGS_RCX]; in sev_es_sync_vmsa() 564 save->rdx = svm->vcpu.arch.regs[VCPU_REGS_RDX]; in sev_es_sync_vmsa() 565 save->rsp = svm->vcpu.arch.regs[VCPU_REGS_RSP]; in sev_es_sync_vmsa() 566 save->rbp = svm->vcpu.arch.regs[VCPU_REGS_RBP]; in sev_es_sync_vmsa() 567 save->rsi = svm->vcpu.arch.regs[VCPU_REGS_RSI]; in sev_es_sync_vmsa() [all …]
|
/Linux-v5.15/drivers/iommu/intel/ |
D | svm.c | 52 svm_lookup_device_by_sid(struct intel_svm *svm, u16 sid) in svm_lookup_device_by_sid() argument 57 list_for_each_entry_rcu(t, &svm->devs, list) { in svm_lookup_device_by_sid() 69 svm_lookup_device_by_dev(struct intel_svm *svm, struct device *dev) in svm_lookup_device_by_dev() argument 74 list_for_each_entry_rcu(t, &svm->devs, list) { in svm_lookup_device_by_dev() 198 static void __flush_svm_range_dev(struct intel_svm *svm, in __flush_svm_range_dev() argument 208 qi_flush_piotlb(sdev->iommu, sdev->did, svm->pasid, address, pages, ih); in __flush_svm_range_dev() 211 svm->pasid, sdev->qdep, address, in __flush_svm_range_dev() 215 static void intel_flush_svm_range_dev(struct intel_svm *svm, in intel_flush_svm_range_dev() argument 226 __flush_svm_range_dev(svm, sdev, start, align >> VTD_PAGE_SHIFT, ih); in intel_flush_svm_range_dev() 231 static void intel_flush_svm_range(struct intel_svm *svm, unsigned long address, in intel_flush_svm_range() argument [all …]
|
D | Makefile | 7 obj-$(CONFIG_INTEL_IOMMU_SVM) += svm.o
|
/Linux-v5.15/drivers/gpu/drm/nouveau/ |
D | nouveau_svm.c | 92 nouveau_ivmm_find(struct nouveau_svm *svm, u64 inst) in nouveau_ivmm_find() argument 95 list_for_each_entry(ivmm, &svm->inst, head) { in nouveau_ivmm_find() 167 if (!cli->svm.svmm) { in nouveau_svmm_bind() 183 nouveau_dmem_migrate_vma(cli->drm, cli->svm.svmm, vma, addr, in nouveau_svmm_bind() 207 mutex_lock(&svmm->vmm->cli->drm->svm->mutex); in nouveau_svmm_part() 208 ivmm = nouveau_ivmm_find(svmm->vmm->cli->drm->svm, inst); in nouveau_svmm_part() 213 mutex_unlock(&svmm->vmm->cli->drm->svm->mutex); in nouveau_svmm_part() 228 mutex_lock(&svmm->vmm->cli->drm->svm->mutex); in nouveau_svmm_join() 229 list_add(&ivmm->head, &svmm->vmm->cli->drm->svm->inst); in nouveau_svmm_join() 230 mutex_unlock(&svmm->vmm->cli->drm->svm->mutex); in nouveau_svmm_join() [all …]
|
D | nouveau_drv.h | 99 struct nouveau_vmm svm; member 217 struct nouveau_svm *svm; member
|
D | nouveau_gem.c | 106 struct nouveau_vmm *vmm = cli->svm.cli ? &cli->svm : &cli->vmm; in nouveau_gem_object_open() 183 struct nouveau_vmm *vmm = cli->svm.cli ? &cli->svm : & cli->vmm; in nouveau_gem_object_close() 272 struct nouveau_vmm *vmm = cli->svm.cli ? &cli->svm : &cli->vmm; in nouveau_gem_info()
|
/Linux-v5.15/tools/testing/selftests/kvm/lib/x86_64/ |
D | svm.c | 34 struct svm_test_data *svm = addr_gva2hva(vm, svm_gva); in vcpu_alloc_svm() local 36 svm->vmcb = (void *)vm_vaddr_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_vaddr_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() 45 return svm; in vcpu_alloc_svm() 57 void generic_svm_setup(struct svm_test_data *svm, void *guest_rip, void *guest_rsp) in generic_svm_setup() argument 59 struct vmcb *vmcb = svm->vmcb; in generic_svm_setup() [all …]
|
/Linux-v5.15/arch/arm/mm/ |
D | ioremap.c | 51 struct static_vm *svm; in find_static_vm_paddr() local 54 list_for_each_entry(svm, &static_vmlist, list) { in find_static_vm_paddr() 55 vm = &svm->vm; in find_static_vm_paddr() 65 return svm; in find_static_vm_paddr() 73 struct static_vm *svm; in find_static_vm_vaddr() local 76 list_for_each_entry(svm, &static_vmlist, list) { in find_static_vm_vaddr() 77 vm = &svm->vm; in find_static_vm_vaddr() 84 return svm; in find_static_vm_vaddr() 90 void __init add_static_vm_early(struct static_vm *svm) in add_static_vm_early() argument 96 vm = &svm->vm; in add_static_vm_early() [all …]
|
D | mmu.c | 985 struct static_vm *svm; in iotable_init() local 990 svm = memblock_alloc(sizeof(*svm) * nr, __alignof__(*svm)); in iotable_init() 991 if (!svm) in iotable_init() 993 __func__, sizeof(*svm) * nr, __alignof__(*svm)); in iotable_init() 998 vm = &svm->vm; in iotable_init() 1005 add_static_vm_early(svm++); in iotable_init() 1013 struct static_vm *svm; in vm_reserve_area_early() local 1015 svm = memblock_alloc(sizeof(*svm), __alignof__(*svm)); in vm_reserve_area_early() 1016 if (!svm) in vm_reserve_area_early() 1018 __func__, sizeof(*svm), __alignof__(*svm)); in vm_reserve_area_early() [all …]
|
D | mm.h | 75 extern __init void add_static_vm_early(struct static_vm *svm);
|
/Linux-v5.15/arch/x86/kvm/ |
D | Makefile | 33 kvm-amd-y += svm/svm.o svm/vmenter.o svm/pmu.o svm/nested.o svm/avic.o svm/sev.o 36 kvm-amd-y += svm/svm_onhyperv.o
|
/Linux-v5.15/tools/testing/selftests/kvm/x86_64/ |
D | svm_vmcall_test.c | 19 static void l2_guest_code(struct svm_test_data *svm) in l2_guest_code() argument 24 static void l1_guest_code(struct svm_test_data *svm) in l1_guest_code() argument 28 struct vmcb *vmcb = svm->vmcb; in l1_guest_code() 31 generic_svm_setup(svm, l2_guest_code, in l1_guest_code() 34 run_guest(vmcb, svm->vmcb_gpa); in l1_guest_code()
|
D | smm_test.c | 76 struct svm_test_data *svm = arg; in guest_code() local 91 generic_svm_setup(svm, l2_guest_code, in guest_code() 107 run_guest(svm->vmcb, svm->vmcb_gpa); in guest_code() 108 svm->vmcb->save.rip += 3; in guest_code() 109 run_guest(svm->vmcb, svm->vmcb_gpa); in guest_code()
|
D | svm_int_ctl_test.c | 37 static void l2_guest_code(struct svm_test_data *svm) in l2_guest_code() argument 62 static void l1_guest_code(struct svm_test_data *svm) in l1_guest_code() argument 66 struct vmcb *vmcb = svm->vmcb; in l1_guest_code() 71 generic_svm_setup(svm, l2_guest_code, in l1_guest_code() 84 run_guest(vmcb, svm->vmcb_gpa); in l1_guest_code()
|
D | state_test.c | 36 static void svm_l1_guest_code(struct svm_test_data *svm) in svm_l1_guest_code() argument 39 struct vmcb *vmcb = svm->vmcb; in svm_l1_guest_code() 41 GUEST_ASSERT(svm->vmcb_gpa); in svm_l1_guest_code() 43 generic_svm_setup(svm, svm_l2_guest_code, in svm_l1_guest_code() 47 run_guest(vmcb, svm->vmcb_gpa); in svm_l1_guest_code() 51 run_guest(vmcb, svm->vmcb_gpa); in svm_l1_guest_code()
|
/Linux-v5.15/tools/testing/vsock/ |
D | util.c | 91 struct sockaddr_vm svm; in vsock_connect() member 93 .svm = { in vsock_connect() 108 ret = connect(fd, &addr.sa, sizeof(addr.svm)); in vsock_connect() 141 struct sockaddr_vm svm; in vsock_accept() member 143 .svm = { in vsock_accept() 151 struct sockaddr_vm svm; in vsock_accept() member 153 socklen_t clientaddr_len = sizeof(clientaddr.svm); in vsock_accept() 160 if (bind(fd, &addr.sa, sizeof(addr.svm)) < 0) { in vsock_accept() 186 if (clientaddr_len != sizeof(clientaddr.svm)) { in vsock_accept() 198 *clientaddrp = clientaddr.svm; in vsock_accept()
|
D | vsock_test.c | 28 struct sockaddr_vm svm; in test_stream_connection_reset() member 30 .svm = { in test_stream_connection_reset() 43 ret = connect(fd, &addr.sa, sizeof(addr.svm)); in test_stream_connection_reset() 64 struct sockaddr_vm svm; in test_stream_bind_only_client() member 66 .svm = { in test_stream_bind_only_client() 82 ret = connect(fd, &addr.sa, sizeof(addr.svm)); in test_stream_bind_only_client() 106 struct sockaddr_vm svm; in test_stream_bind_only_server() member 108 .svm = { in test_stream_bind_only_server() 118 if (bind(fd, &addr.sa, sizeof(addr.svm)) < 0) { in test_stream_bind_only_server()
|
D | vsock_diag_test.c | 341 struct sockaddr_vm svm; in test_listen_socket_server() member 343 .svm = { in test_listen_socket_server() 355 if (bind(fd, &addr.sa, sizeof(addr.svm)) < 0) { in test_listen_socket_server()
|
/Linux-v5.15/tools/testing/selftests/kvm/include/x86_64/ |
D | svm_util.h | 34 void generic_svm_setup(struct svm_test_data *svm, void *guest_rip, void *guest_rsp);
|
/Linux-v5.15/arch/powerpc/platforms/pseries/ |
D | Makefile | 29 obj-$(CONFIG_PPC_SVM) += svm.o
|
/Linux-v5.15/arch/x86/include/uapi/asm/ |
D | kvm.h | 477 struct kvm_svm_nested_state_hdr svm; member 490 struct kvm_svm_nested_state_data svm[0]; member
|