* @qib_rflags: rflags to set
  * @no_input_qs: number of input queues
  * @no_output_qs: number of output queues
- * @input_handler: handler to be called for input queues
+ * @input_handler: handler to be called for input queues, and device-wide errors
  * @output_handler: handler to be called for output queues
  * @irq_poll: Data IRQ polling handler
  * @scan_threshold: # of in-use buffers that triggers scan on output queue
 
                                       unsigned long intparm, int cstat,
                                       int dstat)
 {
-       struct qdio_q *q;
+       unsigned int first_to_check = 0;
 
        DBF_ERROR("%4x ACT CHECK", irq_ptr->schid.sch_no);
        DBF_ERROR("intp :%lx", intparm);
        DBF_ERROR("ds: %2x cs:%2x", dstat, cstat);
 
-       if (irq_ptr->nr_input_qs) {
-               q = irq_ptr->input_qs[0];
-       } else if (irq_ptr->nr_output_qs) {
-               q = irq_ptr->output_qs[0];
-       } else {
-               dump_stack();
-               goto no_handler;
-       }
+       /* zfcp wants this: */
+       if (irq_ptr->nr_input_qs)
+               first_to_check = irq_ptr->input_qs[0]->first_to_check;
 
-       q->handler(irq_ptr->cdev, QDIO_ERROR_ACTIVATE, 0, q->first_to_check,
-                  0, irq_ptr->int_parm);
-no_handler:
+       irq_ptr->error_handler(irq_ptr->cdev, QDIO_ERROR_ACTIVATE, 0,
+                              first_to_check, 0, irq_ptr->int_parm);
        qdio_set_state(irq_ptr, QDIO_IRQ_STATE_STOPPED);
        /*
         * In case of z/VM LGR (Live Guest Migration) QDIO recovery will happen.
            init_data->no_output_qs > irq_ptr->max_output_qs)
                return -EINVAL;
 
-       if ((init_data->no_input_qs && !init_data->input_handler) ||
-           (init_data->no_output_qs && !init_data->output_handler))
+       /* Needed as error_handler: */
+       if (!init_data->input_handler)
+               return -EINVAL;
+
+       if (init_data->no_output_qs && !init_data->output_handler)
                return -EINVAL;
 
        if (!init_data->input_sbal_addr_array ||
 
        irq_ptr->debugfs_dev = NULL;
        irq_ptr->sch_token = irq_ptr->perf_stat_enabled = 0;
        irq_ptr->state = QDIO_IRQ_STATE_INACTIVE;
+       irq_ptr->error_handler = init_data->input_handler;
 
        irq_ptr->int_parm = init_data->int_parm;
        irq_ptr->nr_input_qs = init_data->no_input_qs;