/* another external call is pending */
                return -EBUSY;
        }
-       atomic_or(CPUSTAT_ECALL_PEND, &vcpu->arch.sie_block->cpuflags);
+       kvm_s390_set_cpuflags(vcpu, CPUSTAT_ECALL_PEND);
        return 0;
 }
 
 
 static void __set_cpu_idle(struct kvm_vcpu *vcpu)
 {
-       atomic_or(CPUSTAT_WAIT, &vcpu->arch.sie_block->cpuflags);
+       kvm_s390_set_cpuflags(vcpu, CPUSTAT_WAIT);
        set_bit(vcpu->vcpu_id, vcpu->kvm->arch.float_int.idle_mask);
 }
 
 
 {
 
        gmap_enable(vcpu->arch.enabled_gmap);
-       atomic_or(CPUSTAT_RUNNING, &vcpu->arch.sie_block->cpuflags);
+       kvm_s390_set_cpuflags(vcpu, CPUSTAT_RUNNING);
        if (vcpu->arch.cputm_enabled && !is_vcpu_idle(vcpu))
                __start_cpu_timer_accounting(vcpu);
        vcpu->cpu = cpu;
                                                    CPUSTAT_STOPPED);
 
        if (test_kvm_facility(vcpu->kvm, 78))
-               atomic_or(CPUSTAT_GED2, &vcpu->arch.sie_block->cpuflags);
+               kvm_s390_set_cpuflags(vcpu, CPUSTAT_GED2);
        else if (test_kvm_facility(vcpu->kvm, 8))
-               atomic_or(CPUSTAT_GED, &vcpu->arch.sie_block->cpuflags);
+               kvm_s390_set_cpuflags(vcpu, CPUSTAT_GED);
 
        kvm_s390_vcpu_setup_model(vcpu);
 
        vcpu->arch.sie_block->riccbd = (unsigned long) &vcpu->run->s.regs.riccb;
 
        if (sclp.has_kss)
-               atomic_or(CPUSTAT_KSS, &vcpu->arch.sie_block->cpuflags);
+               kvm_s390_set_cpuflags(vcpu, CPUSTAT_KSS);
        else
                vcpu->arch.sie_block->ictl |= ICTL_ISKE | ICTL_SSKE | ICTL_RRBE;
 
  * return immediately. */
 void exit_sie(struct kvm_vcpu *vcpu)
 {
-       atomic_or(CPUSTAT_STOP_INT, &vcpu->arch.sie_block->cpuflags);
+       kvm_s390_set_cpuflags(vcpu, CPUSTAT_STOP_INT);
        while (vcpu->arch.sie_block->prog0c & PROG_IN_SIE)
                cpu_relax();
 }
        if (dbg->control & KVM_GUESTDBG_ENABLE) {
                vcpu->guest_debug = dbg->control;
                /* enforce guest PER */
-               atomic_or(CPUSTAT_P, &vcpu->arch.sie_block->cpuflags);
+               kvm_s390_set_cpuflags(vcpu, CPUSTAT_P);
 
                if (dbg->control & KVM_GUESTDBG_USE_HW_BP)
                        rc = kvm_s390_import_bp_data(vcpu, dbg);
        if (kvm_check_request(KVM_REQ_ENABLE_IBS, vcpu)) {
                if (!ibs_enabled(vcpu)) {
                        trace_kvm_s390_enable_disable_ibs(vcpu->vcpu_id, 1);
-                       atomic_or(CPUSTAT_IBS,
-                                       &vcpu->arch.sie_block->cpuflags);
+                       kvm_s390_set_cpuflags(vcpu, CPUSTAT_IBS);
                }
                goto retry;
        }
        /* SIGP STOP and SIGP STOP AND STORE STATUS has been fully processed */
        kvm_s390_clear_stop_irq(vcpu);
 
-       atomic_or(CPUSTAT_STOPPED, &vcpu->arch.sie_block->cpuflags);
+       kvm_s390_set_cpuflags(vcpu, CPUSTAT_STOPPED);
        __disable_ibs_on_vcpu(vcpu);
 
        for (i = 0; i < online_vcpus; i++) {