Lines Matching refs:vm

17 static void encrypt_region(struct kvm_vm *vm, struct userspace_mem_region *region,  in encrypt_region()  argument
22 const sparsebit_idx_t lowest_page_in_region = gpa_base >> vm->page_shift; in encrypt_region()
28 if (!is_sev_snp_vm(vm)) in encrypt_region()
29 sev_register_encrypted_memory(vm, region); in encrypt_region()
32 const uint64_t size = (j - i + 1) * vm->page_size; in encrypt_region()
33 const uint64_t offset = (i - lowest_page_in_region) * vm->page_size; in encrypt_region()
36 vm_mem_set_private(vm, gpa_base + offset, size); in encrypt_region()
38 if (is_sev_snp_vm(vm)) in encrypt_region()
39 snp_launch_update_data(vm, gpa_base + offset, in encrypt_region()
40 (uint64_t)addr_gpa2hva(vm, gpa_base + offset), in encrypt_region()
43 sev_launch_update_data(vm, gpa_base + offset, size); in encrypt_region()
48 void sev_vm_init(struct kvm_vm *vm) in sev_vm_init() argument
50 if (vm->type == KVM_X86_DEFAULT_VM) { in sev_vm_init()
51 TEST_ASSERT_EQ(vm->arch.sev_fd, -1); in sev_vm_init()
52 vm->arch.sev_fd = open_sev_dev_path_or_exit(); in sev_vm_init()
53 vm_sev_ioctl(vm, KVM_SEV_INIT, NULL); in sev_vm_init()
56 TEST_ASSERT_EQ(vm->type, KVM_X86_SEV_VM); in sev_vm_init()
57 vm_sev_ioctl(vm, KVM_SEV_INIT2, &init); in sev_vm_init()
61 void sev_es_vm_init(struct kvm_vm *vm) in sev_es_vm_init() argument
63 if (vm->type == KVM_X86_DEFAULT_VM) { in sev_es_vm_init()
64 TEST_ASSERT_EQ(vm->arch.sev_fd, -1); in sev_es_vm_init()
65 vm->arch.sev_fd = open_sev_dev_path_or_exit(); in sev_es_vm_init()
66 vm_sev_ioctl(vm, KVM_SEV_ES_INIT, NULL); in sev_es_vm_init()
69 TEST_ASSERT_EQ(vm->type, KVM_X86_SEV_ES_VM); in sev_es_vm_init()
70 vm_sev_ioctl(vm, KVM_SEV_INIT2, &init); in sev_es_vm_init()
74 void snp_vm_init(struct kvm_vm *vm) in snp_vm_init() argument
78 TEST_ASSERT_EQ(vm->type, KVM_X86_SNP_VM); in snp_vm_init()
79 vm_sev_ioctl(vm, KVM_SEV_INIT2, &init); in snp_vm_init()
82 void sev_vm_launch(struct kvm_vm *vm, uint32_t policy) in sev_vm_launch() argument
91 vm_sev_ioctl(vm, KVM_SEV_LAUNCH_START, &launch_start); in sev_vm_launch()
92 vm_sev_ioctl(vm, KVM_SEV_GUEST_STATUS, &status); in sev_vm_launch()
97 hash_for_each(vm->regions.slot_hash, ctr, region, slot_node) in sev_vm_launch()
98 encrypt_region(vm, region, KVM_SEV_PAGE_TYPE_INVALID, false); in sev_vm_launch()
101 vm_sev_ioctl(vm, KVM_SEV_LAUNCH_UPDATE_VMSA, NULL); in sev_vm_launch()
103 vm->arch.is_pt_protected = true; in sev_vm_launch()
106 void sev_vm_launch_measure(struct kvm_vm *vm, uint8_t *measurement) in sev_vm_launch_measure() argument
113 vm_sev_ioctl(vm, KVM_SEV_LAUNCH_MEASURE, &launch_measure); in sev_vm_launch_measure()
115 vm_sev_ioctl(vm, KVM_SEV_GUEST_STATUS, &guest_status); in sev_vm_launch_measure()
119 void sev_vm_launch_finish(struct kvm_vm *vm) in sev_vm_launch_finish() argument
123 vm_sev_ioctl(vm, KVM_SEV_GUEST_STATUS, &status); in sev_vm_launch_finish()
128 vm_sev_ioctl(vm, KVM_SEV_LAUNCH_FINISH, NULL); in sev_vm_launch_finish()
130 vm_sev_ioctl(vm, KVM_SEV_GUEST_STATUS, &status); in sev_vm_launch_finish()
134 void snp_vm_launch_start(struct kvm_vm *vm, uint64_t policy) in snp_vm_launch_start() argument
140 vm_sev_ioctl(vm, KVM_SEV_SNP_LAUNCH_START, &launch_start); in snp_vm_launch_start()
143 void snp_vm_launch_update(struct kvm_vm *vm) in snp_vm_launch_update() argument
148 hash_for_each(vm->regions.slot_hash, ctr, region, slot_node) in snp_vm_launch_update()
149 encrypt_region(vm, region, KVM_SEV_SNP_PAGE_TYPE_NORMAL, true); in snp_vm_launch_update()
151 vm->arch.is_pt_protected = true; in snp_vm_launch_update()
154 void snp_vm_launch_finish(struct kvm_vm *vm) in snp_vm_launch_finish() argument
158 vm_sev_ioctl(vm, KVM_SEV_SNP_LAUNCH_FINISH, &launch_finish); in snp_vm_launch_finish()
168 struct kvm_vm *vm; in vm_sev_create_with_one_vcpu() local
171 vm = __vm_create_with_vcpus(shape, 1, 0, guest_code, cpus); in vm_sev_create_with_one_vcpu()
174 return vm; in vm_sev_create_with_one_vcpu()
177 void vm_sev_launch(struct kvm_vm *vm, uint64_t policy, uint8_t *measurement) in vm_sev_launch() argument
179 if (is_sev_snp_vm(vm)) { in vm_sev_launch()
180 vm_enable_cap(vm, KVM_CAP_EXIT_HYPERCALL, BIT(KVM_HC_MAP_GPA_RANGE)); in vm_sev_launch()
182 snp_vm_launch_start(vm, policy); in vm_sev_launch()
184 snp_vm_launch_update(vm); in vm_sev_launch()
186 snp_vm_launch_finish(vm); in vm_sev_launch()
191 sev_vm_launch(vm, policy); in vm_sev_launch()
196 sev_vm_launch_measure(vm, measurement); in vm_sev_launch()
198 sev_vm_launch_finish(vm); in vm_sev_launch()