int rc, tmp_count = count, tmp_start = start, nr = q->nr, retried = 0;
        unsigned int ccq = 0;
 
-       BUG_ON(!q->irq_ptr->sch_token);
        qperf_inc(q, eqbs);
 
        if (!q->is_input_q)
        }
 
        if (rc == 2) {
-               BUG_ON(tmp_count == count);
                qperf_inc(q, eqbs_partial);
                DBF_DEV_EVENT(DBF_WARN, q->irq_ptr, "EQBS part:%02x",
                        tmp_count);
 
        if (!count)
                return 0;
-
-       BUG_ON(!q->irq_ptr->sch_token);
        qperf_inc(q, sqbs);
 
        if (!q->is_input_q)
        ccq = do_sqbs(q->irq_ptr->sch_token, state, nr, &tmp_start, &tmp_count);
        rc = qdio_check_ccq(q, ccq);
        if (!rc) {
-               WARN_ON(tmp_count);
+               WARN_ON_ONCE(tmp_count);
                return count - tmp_count;
        }
 
        unsigned char __state = 0;
        int i;
 
-       BUG_ON(bufnr > QDIO_MAX_BUFFERS_MASK);
-       BUG_ON(count > QDIO_MAX_BUFFERS_PER_Q);
-
        if (is_qebsm(q))
                return qdio_do_eqbs(q, state, bufnr, count, auto_ack);
 
 {
        int i;
 
-       BUG_ON(bufnr > QDIO_MAX_BUFFERS_MASK);
-       BUG_ON(count > QDIO_MAX_BUFFERS_PER_Q);
-
        if (is_qebsm(q))
                return qdio_do_sqbs(q, state, bufnr, count);
 
 
        /* hipersocket busy condition */
        if (unlikely(*busy_bit)) {
-               WARN_ON(queue_type(q) != QDIO_IQDIO_QFMT || cc != 2);
                retries++;
 
                if (!start_time) {
                DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "in nop");
                break;
        default:
-               BUG();
+               WARN_ON_ONCE(1);
        }
 out:
        return q->first_to_check;
                        if (aob == NULL)
                                continue;
 
-                       BUG_ON(q->u.out.sbal_state == NULL);
                        q->u.out.sbal_state[b].flags |=
                                QDIO_OUTBUF_STATE_FLAG_PENDING;
                        q->u.out.aobs[b] = NULL;
                } else if (state == SLSB_P_OUTPUT_EMPTY) {
-                       BUG_ON(q->u.out.sbal_state == NULL);
                        q->u.out.sbal_state[b].aob = NULL;
                }
                b = next_buf(b);
                q->aobs[bufnr] = aob;
        }
        if (q->aobs[bufnr]) {
-               BUG_ON(q->sbal_state == NULL);
                q->sbal_state[bufnr].flags = QDIO_OUTBUF_STATE_FLAG_NONE;
                q->sbal_state[bufnr].aob = q->aobs[bufnr];
                q->aobs[bufnr]->user1 = (u64) q->sbal_state[bufnr].user;
                phys_aob = virt_to_phys(q->aobs[bufnr]);
-               BUG_ON(phys_aob & 0xFF);
+               WARN_ON_ONCE(phys_aob & 0xFF);
        }
 
 out:
                goto out;
 
        switch (state) {
-       case SLSB_P_OUTPUT_PENDING:
-               BUG();
        case SLSB_P_OUTPUT_EMPTY:
                /* the adapter got it */
                DBF_DEV_EVENT(DBF_INFO, q->irq_ptr,
        case SLSB_P_OUTPUT_HALTED:
                break;
        default:
-               BUG();
+               WARN_ON_ONCE(1);
        }
 
 out:
 static void __qdio_outbound_processing(struct qdio_q *q)
 {
        qperf_inc(q, tasklet_outbound);
-       BUG_ON(atomic_read(&q->nr_buf_used) < 0);
+       WARN_ON_ONCE(atomic_read(&q->nr_buf_used) < 0);
 
        if (qdio_outbound_q_moved(q))
                qdio_kick_handler(q);
                irq_ptr->perf_stat.qdio_int++;
 
        if (IS_ERR(irb)) {
-               switch (PTR_ERR(irb)) {
-               case -EIO:
-                       DBF_ERROR("%4x IO error", irq_ptr->schid.sch_no);
-                       qdio_set_state(irq_ptr, QDIO_IRQ_STATE_ERR);
-                       wake_up(&cdev->private->wait_q);
-                       return;
-               default:
-                       WARN_ON(1);
-                       return;
-               }
+               DBF_ERROR("%4x IO error", irq_ptr->schid.sch_no);
+               qdio_set_state(irq_ptr, QDIO_IRQ_STATE_ERR);
+               wake_up(&cdev->private->wait_q);
+               return;
        }
        qdio_irq_check_sense(irq_ptr, irb);
        cstat = irb->scsw.cmd.cstat;
        case QDIO_IRQ_STATE_STOPPED:
                break;
        default:
-               WARN_ON(1);
+               WARN_ON_ONCE(1);
        }
        wake_up(&cdev->private->wait_q);
 }
        if (!irq_ptr)
                return -ENODEV;
 
-       BUG_ON(irqs_disabled());
+       WARN_ON_ONCE(irqs_disabled());
        DBF_EVENT("qshutdown:%4x", cdev->private->schid.sch_no);
 
        mutex_lock(&irq_ptr->setup_mutex);
        irq_ptr->qdr = (struct qdr *) get_zeroed_page(GFP_KERNEL | GFP_DMA);
        if (!irq_ptr->qdr)
                goto out_rel;
-       WARN_ON((unsigned long)irq_ptr->qdr & 0xfff);
 
        if (qdio_allocate_qs(irq_ptr, init_data->no_input_qs,
                             init_data->no_output_qs))
 
 set:
        count = set_buf_states(q, bufnr, SLSB_CU_INPUT_EMPTY, count);
-
        used = atomic_add_return(count, &q->nr_buf_used) - count;
-       BUG_ON(used + count > QDIO_MAX_BUFFERS_PER_Q);
 
        if (need_siga_in(q))
                return qdio_siga_input(q);
 
        count = set_buf_states(q, bufnr, SLSB_CU_OUTPUT_PRIMED, count);
        used = atomic_add_return(count, &q->nr_buf_used);
-       BUG_ON(used > QDIO_MAX_BUFFERS_PER_Q);
 
        if (used == QDIO_MAX_BUFFERS_PER_Q)
                qperf_inc(q, outbound_queue_full);
 {
        struct qdio_irq *irq_ptr;
 
-
        if (bufnr >= QDIO_MAX_BUFFERS_PER_Q || count > QDIO_MAX_BUFFERS_PER_Q)
                return -EINVAL;
 
                return -ENODEV;
        q = irq_ptr->input_qs[nr];
 
-       WARN_ON(queue_irqs_enabled(q));
-
        clear_nonshared_ind(irq_ptr);
        qdio_stop_polling(q);
        clear_bit(QDIO_QUEUE_IRQS_DISABLED, &q->u.in.queue_irq_state);
        if (!irq_ptr)
                return -ENODEV;
        q = irq_ptr->input_qs[nr];
-       WARN_ON(queue_irqs_enabled(q));
 
        /*
         * Cannot rely on automatic sync after interrupt since queues may