Lines Matching defs:kvm

8 #include <linux/kvm.h>
15 #include "kvm-s390.h"
26 KVM_UV_EVENT(vcpu->kvm, 3, "PROTVIRT DESTROY VCPU %d: rc %x rrc %x",
68 uvcb.guest_handle = kvm_s390_pv_get_handle(vcpu->kvm);
84 KVM_UV_EVENT(vcpu->kvm, 3,
99 vcpu->arch.sie_block->pv_handle_config = kvm_s390_pv_get_handle(vcpu->kvm);
106 static void kvm_s390_pv_dealloc_vm(struct kvm *kvm)
108 vfree(kvm->arch.pv.stor_var);
109 free_pages(kvm->arch.pv.stor_base,
111 memset(&kvm->arch.pv, 0, sizeof(kvm->arch.pv));
114 static int kvm_s390_pv_alloc_vm(struct kvm *kvm)
121 kvm->arch.pv.stor_var = NULL;
122 kvm->arch.pv.stor_base = __get_free_pages(GFP_KERNEL, get_order(base));
123 if (!kvm->arch.pv.stor_base)
132 mutex_lock(&kvm->slots_lock);
133 memslot = kvm_memslots(kvm)->memslots;
135 mutex_unlock(&kvm->slots_lock);
137 kvm->arch.pv.guest_len = npages * PAGE_SIZE;
142 kvm->arch.pv.stor_var = vzalloc(vlen);
143 if (!kvm->arch.pv.stor_var)
148 kvm_s390_pv_dealloc_vm(kvm);
153 int kvm_s390_pv_deinit_vm(struct kvm *kvm, u16 *rc, u16 *rrc)
158 s390_reset_acc(kvm->mm);
160 cc = uv_cmd_nodata(kvm_s390_pv_get_handle(kvm),
162 WRITE_ONCE(kvm->arch.gmap->guest_handle, 0);
163 atomic_set(&kvm->mm->context.is_protected, 0);
164 KVM_UV_EVENT(kvm, 3, "PROTVIRT DESTROY VM: rc %x rrc %x", *rc, *rrc);
168 kvm_s390_pv_dealloc_vm(kvm);
171 s390_replace_asce(kvm->arch.gmap);
175 int kvm_s390_pv_init_vm(struct kvm *kvm, u16 *rc, u16 *rrc)
184 ret = kvm_s390_pv_alloc_vm(kvm);
190 uvcb.guest_stor_len = kvm->arch.pv.guest_len;
191 uvcb.guest_asce = kvm->arch.gmap->asce;
192 uvcb.guest_sca = (unsigned long)kvm->arch.sca;
193 uvcb.conf_base_stor_origin = (u64)kvm->arch.pv.stor_base;
194 uvcb.conf_virt_stor_origin = (u64)kvm->arch.pv.stor_var;
199 KVM_UV_EVENT(kvm, 3, "PROTVIRT CREATE VM: handle %llx len %llx rc %x rrc %x",
203 kvm->arch.pv.handle = uvcb.guest_handle;
207 kvm_s390_pv_deinit_vm(kvm, &dummy, &dummy);
209 kvm_s390_pv_dealloc_vm(kvm);
212 kvm->arch.gmap->guest_handle = uvcb.guest_handle;
216 int kvm_s390_pv_set_sec_parms(struct kvm *kvm, void *hdr, u64 length, u16 *rc,
224 .guest_handle = kvm_s390_pv_get_handle(kvm),
230 KVM_UV_EVENT(kvm, 3, "PROTVIRT VM SET PARMS: rc %x rrc %x",
233 atomic_set(&kvm->mm->context.is_protected, 1);
237 static int unpack_one(struct kvm *kvm, unsigned long addr, u64 tweak,
243 .guest_handle = kvm_s390_pv_get_handle(kvm),
248 int ret = gmap_make_secure(kvm->arch.gmap, addr, &uvcb);
254 KVM_UV_EVENT(kvm, 3, "PROTVIRT VM UNPACK: failed addr %llx with rc %x rrc %x",
259 int kvm_s390_pv_unpack(struct kvm *kvm, unsigned long addr, unsigned long size,
268 KVM_UV_EVENT(kvm, 3, "PROTVIRT VM UNPACK: start addr %lx size %lx",
272 ret = unpack_one(kvm, addr, tweak, offset, rc, rrc);
285 KVM_UV_EVENT(kvm, 3, "%s", "PROTVIRT VM UNPACK: successful");
300 KVM_UV_EVENT(vcpu->kvm, 3, "PROTVIRT SET CPU %d STATE %d rc %x rrc %x",