Lines Matching refs:mop
4256 struct kvm_s390_mem_op *mop) in kvm_s390_guest_mem_op() argument
4258 void __user *uaddr = (void __user *)mop->buf; in kvm_s390_guest_mem_op()
4264 if (mop->flags & ~supported_flags || mop->ar >= NUM_ACRS || !mop->size) in kvm_s390_guest_mem_op()
4267 if (mop->size > MEM_OP_MAX_SIZE) in kvm_s390_guest_mem_op()
4270 if (!(mop->flags & KVM_S390_MEMOP_F_CHECK_ONLY)) { in kvm_s390_guest_mem_op()
4271 tmpbuf = vmalloc(mop->size); in kvm_s390_guest_mem_op()
4278 switch (mop->op) { in kvm_s390_guest_mem_op()
4280 if (mop->flags & KVM_S390_MEMOP_F_CHECK_ONLY) { in kvm_s390_guest_mem_op()
4281 r = check_gva_range(vcpu, mop->gaddr, mop->ar, in kvm_s390_guest_mem_op()
4282 mop->size, GACC_FETCH); in kvm_s390_guest_mem_op()
4285 r = read_guest(vcpu, mop->gaddr, mop->ar, tmpbuf, mop->size); in kvm_s390_guest_mem_op()
4287 if (copy_to_user(uaddr, tmpbuf, mop->size)) in kvm_s390_guest_mem_op()
4292 if (mop->flags & KVM_S390_MEMOP_F_CHECK_ONLY) { in kvm_s390_guest_mem_op()
4293 r = check_gva_range(vcpu, mop->gaddr, mop->ar, in kvm_s390_guest_mem_op()
4294 mop->size, GACC_STORE); in kvm_s390_guest_mem_op()
4297 if (copy_from_user(tmpbuf, uaddr, mop->size)) { in kvm_s390_guest_mem_op()
4301 r = write_guest(vcpu, mop->gaddr, mop->ar, tmpbuf, mop->size); in kvm_s390_guest_mem_op()
4309 if (r > 0 && (mop->flags & KVM_S390_MEMOP_F_INJECT_EXCEPTION) != 0) in kvm_s390_guest_mem_op()