Lines Matching defs:irq_ptr
125 nr += q->irq_ptr->nr_input_qs;
127 ccq = do_eqbs(q->irq_ptr->sch_token, state, nr, &tmp_start, &tmp_count,
138 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "EQBS part:%02x",
143 DBF_DEV_EVENT(DBF_WARN, q->irq_ptr, "EQBS again:%2d", ccq);
149 q->handler(q->irq_ptr->cdev, QDIO_ERROR_GET_BUF_STATE, q->nr,
150 q->first_to_check, count, q->irq_ptr->int_parm);
176 nr += q->irq_ptr->nr_input_qs;
178 ccq = do_sqbs(q->irq_ptr->sch_token, state, nr, &tmp_start, &tmp_count);
188 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "SQBS again:%2d", ccq);
195 q->handler(q->irq_ptr->cdev, QDIO_ERROR_SET_BUF_STATE, q->nr,
196 q->first_to_check, count, q->irq_ptr->int_parm);
271 static void qdio_init_buf_states(struct qdio_irq *irq_ptr)
276 for_each_input_queue(irq_ptr, q, i)
279 for_each_output_queue(irq_ptr, q, i)
287 unsigned long schid = *((u32 *) &q->irq_ptr->schid);
291 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "siga-s:%1d", q->nr);
295 schid = q->irq_ptr->sch_token;
326 unsigned long schid = *((u32 *) &q->irq_ptr->schid);
339 schid = q->irq_ptr->sch_token;
357 DBF_DEV_EVENT(DBF_WARN, q->irq_ptr,
359 DBF_DEV_EVENT(DBF_WARN, q->irq_ptr, "count:%u", retries);
366 unsigned long schid = *((u32 *) &q->irq_ptr->schid);
370 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "siga-r:%1d", q->nr);
374 schid = q->irq_ptr->sch_token;
387 if (qdio_need_siga_sync(q->irq_ptr))
418 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "OUTFULL FTC:%02x", start);
454 if (qdio_need_siga_sync(q->irq_ptr))
463 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "in prim:%1d %02x", q->nr,
469 if (q->irq_ptr->perf_stat_enabled)
473 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "in err:%1d %02x", q->nr,
481 if (q->irq_ptr->perf_stat_enabled)
485 if (q->irq_ptr->perf_stat_enabled)
487 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "in nop:%1d %#02x",
494 dev_WARN_ONCE(&q->irq_ptr->cdev->dev, 1,
533 if (qdio_need_siga_sync(q->irq_ptr))
556 if (qdio_need_siga_sync(q->irq_ptr))
569 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr,
573 if (q->irq_ptr->perf_stat_enabled)
577 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "out error:%1d %02x",
583 if (q->irq_ptr->perf_stat_enabled)
588 if (q->irq_ptr->perf_stat_enabled)
590 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "out primed:%1d",
598 dev_WARN_ONCE(&q->irq_ptr->cdev->dev, 1,
636 if (!qdio_need_siga_out(q->irq_ptr))
639 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "siga-w:%1d", q->nr);
656 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "siga-w cc2:%1d", q->nr);
673 static inline void qdio_set_state(struct qdio_irq *irq_ptr,
676 DBF_DEV_EVENT(DBF_INFO, irq_ptr, "newstate: %1d", state);
678 irq_ptr->state = state;
682 static void qdio_irq_check_sense(struct qdio_irq *irq_ptr, struct irb *irb)
685 DBF_ERROR("%4x sense:", irq_ptr->schid.sch_no);
692 static void qdio_int_handler_pci(struct qdio_irq *irq_ptr)
694 if (unlikely(irq_ptr->state != QDIO_IRQ_STATE_ACTIVE))
697 qdio_deliver_irq(irq_ptr);
698 irq_ptr->last_data_irq_time = S390_lowcore.int_clock;
701 static void qdio_handle_activate_check(struct qdio_irq *irq_ptr,
707 DBF_ERROR("%4x ACT CHECK", irq_ptr->schid.sch_no);
712 if (irq_ptr->nr_input_qs)
713 first_to_check = irq_ptr->input_qs[0]->first_to_check;
715 irq_ptr->error_handler(irq_ptr->cdev, QDIO_ERROR_ACTIVATE, 0,
716 first_to_check, 0, irq_ptr->int_parm);
717 qdio_set_state(irq_ptr, QDIO_IRQ_STATE_STOPPED);
725 static void qdio_establish_handle_irq(struct qdio_irq *irq_ptr, int cstat,
728 DBF_DEV_EVENT(DBF_INFO, irq_ptr, "qest irq");
736 qdio_set_state(irq_ptr, QDIO_IRQ_STATE_ESTABLISHED);
740 DBF_ERROR("%4x EQ:error", irq_ptr->schid.sch_no);
742 qdio_set_state(irq_ptr, QDIO_IRQ_STATE_ERR);
749 struct qdio_irq *irq_ptr = cdev->private->qdio_data;
753 if (!intparm || !irq_ptr) {
759 if (irq_ptr->perf_stat_enabled)
760 irq_ptr->perf_stat.qdio_int++;
763 DBF_ERROR("%4x IO error", irq_ptr->schid.sch_no);
764 qdio_set_state(irq_ptr, QDIO_IRQ_STATE_ERR);
768 qdio_irq_check_sense(irq_ptr, irb);
772 switch (irq_ptr->state) {
774 qdio_establish_handle_irq(irq_ptr, cstat, dstat);
777 qdio_set_state(irq_ptr, QDIO_IRQ_STATE_INACTIVE);
782 qdio_int_handler_pci(irq_ptr);
786 qdio_handle_activate_check(irq_ptr, intparm, cstat,
856 struct qdio_irq *irq_ptr = cdev->private->qdio_data;
860 if (!irq_ptr)
867 mutex_lock(&irq_ptr->setup_mutex);
872 if (irq_ptr->state == QDIO_IRQ_STATE_INACTIVE) {
873 mutex_unlock(&irq_ptr->setup_mutex);
880 qdio_set_state(irq_ptr, QDIO_IRQ_STATE_STOPPED);
882 qdio_shutdown_debug_entries(irq_ptr);
884 rc = qdio_cancel_ccw(irq_ptr, how);
885 qdio_shutdown_thinint(irq_ptr);
886 qdio_shutdown_irq(irq_ptr);
888 qdio_set_state(irq_ptr, QDIO_IRQ_STATE_INACTIVE);
889 mutex_unlock(&irq_ptr->setup_mutex);
902 struct qdio_irq *irq_ptr = cdev->private->qdio_data;
905 if (!irq_ptr)
910 DBF_DEV_EVENT(DBF_ERR, irq_ptr, "dbf abandoned");
911 mutex_lock(&irq_ptr->setup_mutex);
913 irq_ptr->debug_area = NULL;
915 mutex_unlock(&irq_ptr->setup_mutex);
917 qdio_free_queues(irq_ptr);
918 free_page((unsigned long) irq_ptr->qdr);
919 free_page(irq_ptr->chsc_page);
920 kfree(irq_ptr->ccw);
921 free_page((unsigned long) irq_ptr);
936 struct qdio_irq *irq_ptr;
946 irq_ptr = (void *) get_zeroed_page(GFP_KERNEL);
947 if (!irq_ptr)
950 irq_ptr->ccw = kmalloc(sizeof(*irq_ptr->ccw), GFP_KERNEL | GFP_DMA);
951 if (!irq_ptr->ccw)
954 /* kmemleak doesn't scan the page-allocated irq_ptr: */
955 kmemleak_not_leak(irq_ptr->ccw);
957 irq_ptr->cdev = cdev;
958 mutex_init(&irq_ptr->setup_mutex);
959 if (qdio_allocate_dbf(irq_ptr))
962 DBF_DEV_EVENT(DBF_ERR, irq_ptr, "alloc niq:%1u noq:%1u", no_input_qs,
971 irq_ptr->chsc_page = get_zeroed_page(GFP_KERNEL);
972 if (!irq_ptr->chsc_page)
976 irq_ptr->qdr = (struct qdr *) get_zeroed_page(GFP_KERNEL | GFP_DMA);
977 if (!irq_ptr->qdr)
980 rc = qdio_allocate_qs(irq_ptr, no_input_qs, no_output_qs);
984 cdev->private->qdio_data = irq_ptr;
985 qdio_set_state(irq_ptr, QDIO_IRQ_STATE_INACTIVE);
989 free_page((unsigned long) irq_ptr->qdr);
991 free_page(irq_ptr->chsc_page);
994 kfree(irq_ptr->ccw);
996 free_page((unsigned long) irq_ptr);
1025 struct qdio_irq *irq_ptr = cdev->private->qdio_data;
1034 if (!irq_ptr)
1037 if (init_data->no_input_qs > irq_ptr->max_input_qs ||
1038 init_data->no_output_qs > irq_ptr->max_output_qs)
1061 mutex_lock(&irq_ptr->setup_mutex);
1062 qdio_trace_init_data(irq_ptr, init_data);
1063 qdio_setup_irq(irq_ptr, init_data);
1065 rc = qdio_establish_thinint(irq_ptr);
1070 irq_ptr->ccw->cmd_code = ciw->cmd;
1071 irq_ptr->ccw->flags = CCW_FLAG_SLI;
1072 irq_ptr->ccw->count = ciw->count;
1073 irq_ptr->ccw->cda = (u32) virt_to_phys(irq_ptr->qdr);
1078 rc = ccw_device_start(cdev, irq_ptr->ccw, QDIO_DOING_ESTABLISH, 0, 0);
1081 DBF_ERROR("%4x est IO ERR", irq_ptr->schid.sch_no);
1087 irq_ptr->state == QDIO_IRQ_STATE_ESTABLISHED ||
1088 irq_ptr->state == QDIO_IRQ_STATE_ERR, HZ);
1094 if (irq_ptr->state != QDIO_IRQ_STATE_ESTABLISHED) {
1099 qdio_setup_ssqd_info(irq_ptr);
1102 qdio_init_buf_states(irq_ptr);
1104 mutex_unlock(&irq_ptr->setup_mutex);
1105 qdio_print_subchannel_info(irq_ptr);
1106 qdio_setup_debug_entries(irq_ptr);
1110 qdio_cancel_ccw(irq_ptr, QDIO_FLAG_CLEANUP_USING_CLEAR);
1113 qdio_shutdown_thinint(irq_ptr);
1115 qdio_shutdown_irq(irq_ptr);
1116 qdio_set_state(irq_ptr, QDIO_IRQ_STATE_INACTIVE);
1117 mutex_unlock(&irq_ptr->setup_mutex);
1128 struct qdio_irq *irq_ptr = cdev->private->qdio_data;
1136 if (!irq_ptr)
1145 mutex_lock(&irq_ptr->setup_mutex);
1146 if (irq_ptr->state == QDIO_IRQ_STATE_INACTIVE) {
1151 irq_ptr->ccw->cmd_code = ciw->cmd;
1152 irq_ptr->ccw->flags = CCW_FLAG_SLI;
1153 irq_ptr->ccw->count = ciw->count;
1154 irq_ptr->ccw->cda = 0;
1159 rc = ccw_device_start(cdev, irq_ptr->ccw, QDIO_DOING_ACTIVATE,
1163 DBF_ERROR("%4x act IO ERR", irq_ptr->schid.sch_no);
1171 switch (irq_ptr->state) {
1177 qdio_set_state(irq_ptr, QDIO_IRQ_STATE_ACTIVE);
1181 mutex_unlock(&irq_ptr->setup_mutex);
1209 if (qdio_need_siga_in(q->irq_ptr))
1225 struct qdio_irq *irq_ptr = cdev->private->qdio_data;
1230 if (!irq_ptr)
1233 DBF_DEV_EVENT(DBF_INFO, irq_ptr, "addi b:%02x c:%02x", bufnr, count);
1235 if (irq_ptr->state != QDIO_IRQ_STATE_ACTIVE)
1240 return handle_inbound(irq_ptr->input_qs[q_nr], bufnr, count);
1270 } else if (qdio_need_siga_sync(q->irq_ptr)) {
1296 struct qdio_irq *irq_ptr = cdev->private->qdio_data;
1301 if (!irq_ptr)
1304 DBF_DEV_EVENT(DBF_INFO, irq_ptr, "addo b:%02x c:%02x", bufnr, count);
1306 if (irq_ptr->state != QDIO_IRQ_STATE_ACTIVE)
1311 return handle_outbound(irq_ptr->output_qs[q_nr], bufnr, count, aob);
1326 struct qdio_irq *irq_ptr = cdev->private->qdio_data;
1329 if (!irq_ptr)
1332 for_each_input_queue(irq_ptr, q, i)
1335 clear_bit(QDIO_IRQ_DISABLED, &irq_ptr->poll_state);
1341 if (test_nonshared_ind(irq_ptr))
1344 for_each_input_queue(irq_ptr, q, i) {
1352 if (test_and_set_bit(QDIO_IRQ_DISABLED, &irq_ptr->poll_state))
1370 struct qdio_irq *irq_ptr = cdev->private->qdio_data;
1372 if (!irq_ptr)
1375 if (test_and_set_bit(QDIO_IRQ_DISABLED, &irq_ptr->poll_state))