return rc;
 }
 
-static int __sigp_restart(struct kvm_vcpu *vcpu, u16 cpu_addr)
+/* Test whether the destination CPU is available and not busy */
+static int sigp_check_callable(struct kvm_vcpu *vcpu, u16 cpu_addr)
 {
        struct kvm_s390_float_interrupt *fi = &vcpu->kvm->arch.float_int;
        struct kvm_s390_local_interrupt *li;
        spin_lock_bh(&li->lock);
        if (li->action_bits & ACTION_STOP_ON_STOP)
                rc = SIGP_CC_BUSY;
-       else
-               VCPU_EVENT(vcpu, 4, "sigp restart %x to handle userspace",
-                       cpu_addr);
        spin_unlock_bh(&li->lock);
 out:
        spin_unlock(&fi->lock);
                break;
        case SIGP_RESTART:
                vcpu->stat.instruction_sigp_restart++;
-               rc = __sigp_restart(vcpu, cpu_addr);
-               if (rc == SIGP_CC_BUSY)
-                       break;
-               /* user space must know about restart */
+               rc = sigp_check_callable(vcpu, cpu_addr);
+               if (rc == SIGP_CC_ORDER_CODE_ACCEPTED) {
+                       VCPU_EVENT(vcpu, 4,
+                                  "sigp restart %x to handle userspace",
+                                  cpu_addr);
+                       /* user space must know about restart */
+                       rc = -EOPNOTSUPP;
+               }
+               break;
        default:
                return -EOPNOTSUPP;
        }