static void sca_clear_ext_call(struct kvm_vcpu *vcpu)
 {
-       struct kvm_s390_local_interrupt *li = &vcpu->arch.local_int;
        int rc, expect;
 
        if (!kvm_s390_use_sca_entries())
                return;
-       atomic_andnot(CPUSTAT_ECALL_PEND, li->cpuflags);
+       atomic_andnot(CPUSTAT_ECALL_PEND, &vcpu->arch.sie_block->cpuflags);
        read_lock(&vcpu->kvm->arch.sca_lock);
        if (vcpu->kvm->arch.use_esca) {
                struct esca_block *sca = vcpu->kvm->arch.sca;
 static void __set_cpu_idle(struct kvm_vcpu *vcpu)
 {
        atomic_or(CPUSTAT_WAIT, &vcpu->arch.sie_block->cpuflags);
-       set_bit(vcpu->vcpu_id, vcpu->arch.local_int.float_int->idle_mask);
+       set_bit(vcpu->vcpu_id, vcpu->kvm->arch.float_int.idle_mask);
 }
 
 static void __unset_cpu_idle(struct kvm_vcpu *vcpu)
 {
        atomic_andnot(CPUSTAT_WAIT, &vcpu->arch.sie_block->cpuflags);
-       clear_bit(vcpu->vcpu_id, vcpu->arch.local_int.float_int->idle_mask);
+       clear_bit(vcpu->vcpu_id, vcpu->kvm->arch.float_int.idle_mask);
 }
 
 static void __reset_intercept_indicators(struct kvm_vcpu *vcpu)
 
        li->irq.ext = irq->u.ext;
        set_bit(IRQ_PEND_PFAULT_INIT, &li->pending_irqs);
-       atomic_or(CPUSTAT_EXT_INT, li->cpuflags);
+       __set_cpuflag(vcpu, CPUSTAT_EXT_INT);
        return 0;
 }
 
        if (test_and_set_bit(IRQ_PEND_EXT_EXTERNAL, &li->pending_irqs))
                return -EBUSY;
        *extcall = irq->u.extcall;
-       atomic_or(CPUSTAT_EXT_INT, li->cpuflags);
+       __set_cpuflag(vcpu, CPUSTAT_EXT_INT);
        return 0;
 }
 
 
        set_bit(irq->u.emerg.code, li->sigp_emerg_pending);
        set_bit(IRQ_PEND_EXT_EMERGENCY, &li->pending_irqs);
-       atomic_or(CPUSTAT_EXT_INT, li->cpuflags);
+       __set_cpuflag(vcpu, CPUSTAT_EXT_INT);
        return 0;
 }
 
                                   0, 0);
 
        set_bit(IRQ_PEND_EXT_CLOCK_COMP, &li->pending_irqs);
-       atomic_or(CPUSTAT_EXT_INT, li->cpuflags);
+       __set_cpuflag(vcpu, CPUSTAT_EXT_INT);
        return 0;
 }
 
                                   0, 0);
 
        set_bit(IRQ_PEND_EXT_CPU_TIMER, &li->pending_irqs);
-       atomic_or(CPUSTAT_EXT_INT, li->cpuflags);
+       __set_cpuflag(vcpu, CPUSTAT_EXT_INT);
        return 0;
 }
 
 static void __floating_irq_kick(struct kvm *kvm, u64 type)
 {
        struct kvm_s390_float_interrupt *fi = &kvm->arch.float_int;
-       struct kvm_s390_local_interrupt *li;
        struct kvm_vcpu *dst_vcpu;
        int sigcpu, online_vcpus, nr_tries = 0;
 
        dst_vcpu = kvm_get_vcpu(kvm, sigcpu);
 
        /* make the VCPU drop out of the SIE, or wake it up if sleeping */
-       li = &dst_vcpu->arch.local_int;
        switch (type) {
        case KVM_S390_MCHK:
-               atomic_or(CPUSTAT_STOP_INT, li->cpuflags);
+               __set_cpuflag(dst_vcpu, CPUSTAT_STOP_INT);
                break;
        case KVM_S390_INT_IO_MIN...KVM_S390_INT_IO_MAX:
-               atomic_or(CPUSTAT_IO_INT, li->cpuflags);
+               __set_cpuflag(dst_vcpu, CPUSTAT_IO_INT);
                break;
        default:
-               atomic_or(CPUSTAT_EXT_INT, li->cpuflags);
+               __set_cpuflag(dst_vcpu, CPUSTAT_EXT_INT);
                break;
        }
        kvm_s390_vcpu_wakeup(dst_vcpu);
 
 static int __sigp_sense(struct kvm_vcpu *vcpu, struct kvm_vcpu *dst_vcpu,
                        u64 *reg)
 {
-       struct kvm_s390_local_interrupt *li;
        int cpuflags;
        int rc;
        int ext_call_pending;
 
-       li = &dst_vcpu->arch.local_int;
-
-       cpuflags = atomic_read(li->cpuflags);
+       cpuflags = atomic_read(&dst_vcpu->arch.sie_block->cpuflags);
        ext_call_pending = kvm_s390_ext_call_pending(dst_vcpu);
        if (!(cpuflags & CPUSTAT_STOPPED) && !ext_call_pending)
                rc = SIGP_CC_ORDER_CODE_ACCEPTED;
        int flags;
        int rc;
 
-       flags = atomic_read(dst_vcpu->arch.local_int.cpuflags);
+       flags = atomic_read(&dst_vcpu->arch.sie_block->cpuflags);
        if (!(flags & CPUSTAT_STOPPED)) {
                *reg &= 0xffffffff00000000UL;
                *reg |= SIGP_STATUS_INCORRECT_STATE;
 static int __sigp_sense_running(struct kvm_vcpu *vcpu,
                                struct kvm_vcpu *dst_vcpu, u64 *reg)
 {
-       struct kvm_s390_local_interrupt *li;
        int rc;
 
        if (!test_kvm_facility(vcpu->kvm, 9)) {
                return SIGP_CC_STATUS_STORED;
        }
 
-       li = &dst_vcpu->arch.local_int;
-       if (atomic_read(li->cpuflags) & CPUSTAT_RUNNING) {
+       if (atomic_read(&dst_vcpu->arch.sie_block->cpuflags) &
+           CPUSTAT_RUNNING) {
                /* running */
                rc = SIGP_CC_ORDER_CODE_ACCEPTED;
        } else {