vcpu->stat.deliver_service_signal++;
                trace_kvm_s390_deliver_interrupt(vcpu->vcpu_id, inti->type,
                                                 inti->ext.ext_params, 0);
-               rc  = put_guest(vcpu, 0x2401, (u16 __user *)__LC_EXT_INT_CODE);
-               rc |= copy_to_guest(vcpu, __LC_EXT_OLD_PSW,
+               rc  = put_guest_lc(vcpu, 0x2401, (u16 *)__LC_EXT_INT_CODE);
+               rc |= write_guest_lc(vcpu, __LC_EXT_OLD_PSW,
+                                    &vcpu->arch.sie_block->gpsw,
+                                    sizeof(psw_t));
+               rc |= read_guest_lc(vcpu, __LC_EXT_NEW_PSW,
                                    &vcpu->arch.sie_block->gpsw, sizeof(psw_t));
-               rc |= copy_from_guest(vcpu, &vcpu->arch.sie_block->gpsw,
-                                     __LC_EXT_NEW_PSW, sizeof(psw_t));
-               rc |= put_guest(vcpu, inti->ext.ext_params,
-                               (u32 __user *)__LC_EXT_PARAMS);
+               rc |= put_guest_lc(vcpu, inti->ext.ext_params,
+                                  (u32 *)__LC_EXT_PARAMS);
                break;
        case KVM_S390_INT_PFAULT_INIT:
                trace_kvm_s390_deliver_interrupt(vcpu->vcpu_id, inti->type, 0,
        case KVM_S390_INT_PFAULT_DONE:
                trace_kvm_s390_deliver_interrupt(vcpu->vcpu_id, inti->type, 0,
                                                 inti->ext.ext_params2);
-               rc  = put_guest(vcpu, 0x2603, (u16 __user *) __LC_EXT_INT_CODE);
-               rc |= put_guest(vcpu, 0x0680, (u16 __user *) __LC_EXT_CPU_ADDR);
-               rc |= copy_to_guest(vcpu, __LC_EXT_OLD_PSW,
+               rc  = put_guest_lc(vcpu, 0x2603, (u16 *)__LC_EXT_INT_CODE);
+               rc |= put_guest_lc(vcpu, 0x0680, (u16 *)__LC_EXT_CPU_ADDR);
+               rc |= write_guest_lc(vcpu, __LC_EXT_OLD_PSW,
+                                    &vcpu->arch.sie_block->gpsw,
+                                    sizeof(psw_t));
+               rc |= read_guest_lc(vcpu, __LC_EXT_NEW_PSW,
                                    &vcpu->arch.sie_block->gpsw, sizeof(psw_t));
-               rc |= copy_from_guest(vcpu, &vcpu->arch.sie_block->gpsw,
-                                     __LC_EXT_NEW_PSW, sizeof(psw_t));
-               rc |= put_guest(vcpu, inti->ext.ext_params2,
-                               (u64 __user *) __LC_EXT_PARAMS2);
+               rc |= put_guest_lc(vcpu, inti->ext.ext_params2,
+                                  (u64 *)__LC_EXT_PARAMS2);
                break;
        case KVM_S390_INT_VIRTIO:
                VCPU_EVENT(vcpu, 4, "interrupt: virtio parm:%x,parm64:%llx",
                trace_kvm_s390_deliver_interrupt(vcpu->vcpu_id, inti->type,
                                                 inti->ext.ext_params,
                                                 inti->ext.ext_params2);
-               rc  = put_guest(vcpu, 0x2603, (u16 __user *)__LC_EXT_INT_CODE);
-               rc |= put_guest(vcpu, 0x0d00, (u16 __user *)__LC_EXT_CPU_ADDR);
-               rc |= copy_to_guest(vcpu, __LC_EXT_OLD_PSW,
+               rc  = put_guest_lc(vcpu, 0x2603, (u16 *)__LC_EXT_INT_CODE);
+               rc |= put_guest_lc(vcpu, 0x0d00, (u16 *)__LC_EXT_CPU_ADDR);
+               rc |= write_guest_lc(vcpu, __LC_EXT_OLD_PSW,
+                                    &vcpu->arch.sie_block->gpsw,
+                                    sizeof(psw_t));
+               rc |= read_guest_lc(vcpu, __LC_EXT_NEW_PSW,
                                    &vcpu->arch.sie_block->gpsw, sizeof(psw_t));
-               rc |= copy_from_guest(vcpu, &vcpu->arch.sie_block->gpsw,
-                                     __LC_EXT_NEW_PSW, sizeof(psw_t));
-               rc |= put_guest(vcpu, inti->ext.ext_params,
-                               (u32 __user *)__LC_EXT_PARAMS);
-               rc |= put_guest(vcpu, inti->ext.ext_params2,
-                               (u64 __user *)__LC_EXT_PARAMS2);
+               rc |= put_guest_lc(vcpu, inti->ext.ext_params,
+                                  (u32 *)__LC_EXT_PARAMS);
+               rc |= put_guest_lc(vcpu, inti->ext.ext_params2,
+                                  (u64 *)__LC_EXT_PARAMS2);
                break;
        case KVM_S390_SIGP_STOP:
                VCPU_EVENT(vcpu, 4, "%s", "interrupt: cpu stop");
                                                 inti->mchk.mcic);
                rc  = kvm_s390_vcpu_store_status(vcpu,
                                                 KVM_S390_STORE_STATUS_PREFIXED);
-               rc |= put_guest(vcpu, inti->mchk.mcic, (u64 __user *) __LC_MCCK_CODE);
-               rc |= copy_to_guest(vcpu, __LC_MCK_OLD_PSW,
+               rc |= put_guest_lc(vcpu, inti->mchk.mcic, (u64 *)__LC_MCCK_CODE);
+               rc |= write_guest_lc(vcpu, __LC_MCK_OLD_PSW,
+                                    &vcpu->arch.sie_block->gpsw,
+                                    sizeof(psw_t));
+               rc |= read_guest_lc(vcpu, __LC_MCK_NEW_PSW,
                                    &vcpu->arch.sie_block->gpsw, sizeof(psw_t));
-               rc |= copy_from_guest(vcpu, &vcpu->arch.sie_block->gpsw,
-                                     __LC_MCK_NEW_PSW, sizeof(psw_t));
                break;
 
        case KVM_S390_INT_IO_MIN...KVM_S390_INT_IO_MAX:
                vcpu->stat.deliver_io_int++;
                trace_kvm_s390_deliver_interrupt(vcpu->vcpu_id, inti->type,
                                                 param0, param1);
-               rc  = put_guest(vcpu, inti->io.subchannel_id,
-                               (u16 __user *) __LC_SUBCHANNEL_ID);
-               rc |= put_guest(vcpu, inti->io.subchannel_nr,
-                               (u16 __user *) __LC_SUBCHANNEL_NR);
-               rc |= put_guest(vcpu, inti->io.io_int_parm,
-                               (u32 __user *) __LC_IO_INT_PARM);
-               rc |= put_guest(vcpu, inti->io.io_int_word,
-                               (u32 __user *) __LC_IO_INT_WORD);
-               rc |= copy_to_guest(vcpu, __LC_IO_OLD_PSW,
-                                   &vcpu->arch.sie_block->gpsw, sizeof(psw_t));
-               rc |= copy_from_guest(vcpu, &vcpu->arch.sie_block->gpsw,
-                                     __LC_IO_NEW_PSW, sizeof(psw_t));
+               rc  = put_guest_lc(vcpu, inti->io.subchannel_id,
+                                  (u16 *)__LC_SUBCHANNEL_ID);
+               rc |= put_guest_lc(vcpu, inti->io.subchannel_nr,
+                                  (u16 *)__LC_SUBCHANNEL_NR);
+               rc |= put_guest_lc(vcpu, inti->io.io_int_parm,
+                                  (u32 *)__LC_IO_INT_PARM);
+               rc |= put_guest_lc(vcpu, inti->io.io_int_word,
+                                  (u32 *)__LC_IO_INT_WORD);
+               rc |= write_guest_lc(vcpu, __LC_IO_OLD_PSW,
+                                    &vcpu->arch.sie_block->gpsw,
+                                    sizeof(psw_t));
+               rc |= read_guest_lc(vcpu, __LC_IO_NEW_PSW,
+                                   &vcpu->arch.sie_block->gpsw,
+                                   sizeof(psw_t));
                break;
        }
        default: