Lines Matching defs:kvm

17 #include "kvm-s390.h"
265 int ipte_lock_held(struct kvm *kvm)
270 read_lock(&kvm->arch.sca_lock);
271 rc = kvm_s390_get_ipte_control(kvm)->kh != 0;
272 read_unlock(&kvm->arch.sca_lock);
275 return kvm->arch.ipte_lock_count != 0;
278 static void ipte_lock_simple(struct kvm *kvm)
282 mutex_lock(&kvm->arch.ipte_mutex);
283 kvm->arch.ipte_lock_count++;
284 if (kvm->arch.ipte_lock_count > 1)
287 read_lock(&kvm->arch.sca_lock);
288 ic = kvm_s390_get_ipte_control(kvm);
292 read_unlock(&kvm->arch.sca_lock);
299 read_unlock(&kvm->arch.sca_lock);
301 mutex_unlock(&kvm->arch.ipte_mutex);
304 static void ipte_unlock_simple(struct kvm *kvm)
308 mutex_lock(&kvm->arch.ipte_mutex);
309 kvm->arch.ipte_lock_count--;
310 if (kvm->arch.ipte_lock_count)
312 read_lock(&kvm->arch.sca_lock);
313 ic = kvm_s390_get_ipte_control(kvm);
319 read_unlock(&kvm->arch.sca_lock);
320 wake_up(&kvm->arch.ipte_wq);
322 mutex_unlock(&kvm->arch.ipte_mutex);
325 static void ipte_lock_siif(struct kvm *kvm)
330 read_lock(&kvm->arch.sca_lock);
331 ic = kvm_s390_get_ipte_control(kvm);
335 read_unlock(&kvm->arch.sca_lock);
343 read_unlock(&kvm->arch.sca_lock);
346 static void ipte_unlock_siif(struct kvm *kvm)
350 read_lock(&kvm->arch.sca_lock);
351 ic = kvm_s390_get_ipte_control(kvm);
359 read_unlock(&kvm->arch.sca_lock);
361 wake_up(&kvm->arch.ipte_wq);
364 void ipte_lock(struct kvm *kvm)
367 ipte_lock_siif(kvm);
369 ipte_lock_simple(kvm);
372 void ipte_unlock(struct kvm *kvm)
375 ipte_unlock_siif(kvm);
377 ipte_unlock_simple(kvm);
590 static int deref_table(struct kvm *kvm, unsigned long gpa, unsigned long *val)
592 return kvm_read_guest(kvm, gpa, val, sizeof(*val));
630 edat1 = ctlreg0.edat && test_kvm_facility(vcpu->kvm, 8);
631 edat2 = edat1 && test_kvm_facility(vcpu->kvm, 78);
632 iep = ctlreg0.iep && test_kvm_facility(vcpu->kvm, 130);
668 if (!kvm_is_gpa_in_memslot(vcpu->kvm, ptr))
670 if (deref_table(vcpu->kvm, ptr, &rfte.val))
686 if (!kvm_is_gpa_in_memslot(vcpu->kvm, ptr))
688 if (deref_table(vcpu->kvm, ptr, &rste.val))
704 if (!kvm_is_gpa_in_memslot(vcpu->kvm, ptr))
706 if (deref_table(vcpu->kvm, ptr, &rtte.val))
732 if (!kvm_is_gpa_in_memslot(vcpu->kvm, ptr))
734 if (deref_table(vcpu->kvm, ptr, &ste.val))
752 if (!kvm_is_gpa_in_memslot(vcpu->kvm, ptr))
754 if (deref_table(vcpu->kvm, ptr, &pte.val))
774 if (!kvm_is_gpa_in_memslot(vcpu->kvm, raddr.addr))
799 static int vm_check_access_key(struct kvm *kvm, u8 access_key,
810 hva = gfn_to_hva(kvm, gpa_to_gfn(gpa));
877 hva = gfn_to_hva(vcpu->kvm, gpa_to_gfn(gpa));
961 if (!kvm_is_gpa_in_memslot(vcpu->kvm, gpa)) {
981 static int access_guest_page(struct kvm *kvm, enum gacc_mode mode, gpa_t gpa,
989 rc = kvm_write_guest_page(kvm, gfn, data, offset, len);
991 rc = kvm_read_guest_page(kvm, gfn, data, offset, len);
996 access_guest_page_with_key(struct kvm *kvm, enum gacc_mode mode, gpa_t gpa,
1006 slot = gfn_to_memslot(kvm, gfn);
1025 mark_page_dirty_in_slot(kvm, slot, gfn);
1029 int access_guest_abs_with_key(struct kvm *kvm, gpa_t gpa, void *data,
1038 rc = access_guest_page_with_key(kvm, mode, gpa, data, fragment_len, access_key);
1081 ipte_lock(vcpu->kvm);
1098 rc = access_guest_page(vcpu->kvm, mode, gpas[idx],
1101 rc = access_guest_page_with_key(vcpu->kvm, mode, gpas[idx],
1105 rc = access_guest_page_with_key(vcpu->kvm, mode, gpas[idx],
1124 ipte_unlock(vcpu->kvm);
1140 rc = access_guest_page(vcpu->kvm, mode, gpa, data, fragment_len);
1150 * @kvm: Virtual machine instance.
1172 int cmpxchg_guest_abs_with_key(struct kvm *kvm, gpa_t gpa, int len,
1177 struct kvm_memory_slot *slot = gfn_to_memslot(kvm, gfn);
1247 mark_page_dirty_in_slot(kvm, slot, gfn);
1305 ipte_lock(vcpu->kvm);
1308 ipte_unlock(vcpu->kvm);
1315 * @kvm: virtual machine instance
1321 int check_gpa_range(struct kvm *kvm, unsigned long gpa, unsigned long length,
1329 rc = vm_check_access_key(kvm, access_key, mode, gpa);
1369 struct kvm *kvm;
1378 kvm = sg->private;
1439 kvm->stat.gmap_shadow_r1_entry++;
1468 kvm->stat.gmap_shadow_r2_entry++;
1506 kvm->stat.gmap_shadow_r3_entry++;
1540 kvm->stat.gmap_shadow_sg_entry++;
1577 ipte_lock(vcpu->kvm);
1611 vcpu->kvm->stat.gmap_shadow_pg_entry++;
1612 ipte_unlock(vcpu->kvm);