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);
178 nr += q->irq_ptr->nr_input_qs;
180 ccq = do_sqbs(q->irq_ptr->sch_token, state, nr, &tmp_start, &tmp_count);
190 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "SQBS again:%2d", ccq);
197 q->handler(q->irq_ptr->cdev, QDIO_ERROR_SET_BUF_STATE, q->nr,
198 q->first_to_check, count, q->irq_ptr->int_parm);
282 static void qdio_init_buf_states(struct qdio_irq *irq_ptr)
287 for_each_input_queue(irq_ptr, q, i)
290 for_each_output_queue(irq_ptr, q, i)
298 unsigned long schid = *((u32 *) &q->irq_ptr->schid);
302 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "siga-s:%1d", q->nr);
306 schid = q->irq_ptr->sch_token;
327 unsigned long schid = *((u32 *) &q->irq_ptr->schid);
340 schid = q->irq_ptr->sch_token;
358 DBF_DEV_EVENT(DBF_WARN, q->irq_ptr,
360 DBF_DEV_EVENT(DBF_WARN, q->irq_ptr, "count:%u", retries);
367 unsigned long schid = *((u32 *) &q->irq_ptr->schid);
371 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "siga-r:%1d", q->nr);
375 schid = q->irq_ptr->sch_token;
391 if (pci_out_supported(q->irq_ptr))
433 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "OUTFULL FTC:%02x", start);
478 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "in prim:%1d %02x", q->nr,
484 if (q->irq_ptr->perf_stat_enabled)
488 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "in err:%1d %02x", q->nr,
495 if (q->irq_ptr->perf_stat_enabled)
499 if (q->irq_ptr->perf_stat_enabled)
501 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "in nop:%1d %#02x",
508 dev_WARN_ONCE(&q->irq_ptr->cdev->dev, 1,
560 if (unlikely(q->irq_ptr->state != QDIO_IRQ_STATE_ACTIVE))
565 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "kih s:%02x c:%02x", start, count);
568 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "koh: s:%02x c:%02x",
572 q->handler(q->irq_ptr->cdev, q->qdio_error, q->nr, start, count,
573 q->irq_ptr->int_parm);
581 if (likely(q->irq_ptr->state == QDIO_IRQ_STATE_ACTIVE)) {
649 !pci_out_supported(q->irq_ptr)) ||
666 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr,
670 if (q->irq_ptr->perf_stat_enabled)
676 if (q->irq_ptr->perf_stat_enabled)
681 if (q->irq_ptr->perf_stat_enabled)
683 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "out primed:%1d",
691 dev_WARN_ONCE(&q->irq_ptr->cdev->dev, 1,
711 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "out moved:%1d", q->nr);
733 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "siga-w:%1d", q->nr);
750 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "siga-w cc2:%1d", q->nr);
781 if (queue_type(q) == QDIO_ZFCP_QFMT && !pci_out_supported(q->irq_ptr) &&
797 likely(q->irq_ptr->state == QDIO_IRQ_STATE_ACTIVE))
840 qdio_check_outbound_pci_queues(q->irq_ptr);
845 static inline void qdio_set_state(struct qdio_irq *irq_ptr,
848 DBF_DEV_EVENT(DBF_INFO, irq_ptr, "newstate: %1d", state);
850 irq_ptr->state = state;
854 static void qdio_irq_check_sense(struct qdio_irq *irq_ptr, struct irb *irb)
857 DBF_ERROR("%4x sense:", irq_ptr->schid.sch_no);
864 static void qdio_int_handler_pci(struct qdio_irq *irq_ptr)
869 if (unlikely(irq_ptr->state != QDIO_IRQ_STATE_ACTIVE))
872 if (irq_ptr->irq_poll) {
873 if (!test_and_set_bit(QDIO_IRQ_DISABLED, &irq_ptr->poll_state))
874 irq_ptr->irq_poll(irq_ptr->cdev, irq_ptr->int_parm);
876 QDIO_PERF_STAT_INC(irq_ptr, int_discarded);
878 for_each_input_queue(irq_ptr, q, i)
882 if (!pci_out_supported(irq_ptr) || !irq_ptr->scan_threshold)
885 for_each_output_queue(irq_ptr, q, i) {
894 static void qdio_handle_activate_check(struct qdio_irq *irq_ptr,
900 DBF_ERROR("%4x ACT CHECK", irq_ptr->schid.sch_no);
904 if (irq_ptr->nr_input_qs) {
905 q = irq_ptr->input_qs[0];
906 } else if (irq_ptr->nr_output_qs) {
907 q = irq_ptr->output_qs[0];
913 q->handler(q->irq_ptr->cdev, QDIO_ERROR_ACTIVATE,
914 q->nr, q->first_to_check, 0, irq_ptr->int_parm);
916 qdio_set_state(irq_ptr, QDIO_IRQ_STATE_STOPPED);
924 static void qdio_establish_handle_irq(struct qdio_irq *irq_ptr, int cstat,
927 DBF_DEV_EVENT(DBF_INFO, irq_ptr, "qest irq");
935 qdio_set_state(irq_ptr, QDIO_IRQ_STATE_ESTABLISHED);
939 DBF_ERROR("%4x EQ:error", irq_ptr->schid.sch_no);
941 qdio_set_state(irq_ptr, QDIO_IRQ_STATE_ERR);
948 struct qdio_irq *irq_ptr = cdev->private->qdio_data;
952 if (!intparm || !irq_ptr) {
958 if (irq_ptr->perf_stat_enabled)
959 irq_ptr->perf_stat.qdio_int++;
962 DBF_ERROR("%4x IO error", irq_ptr->schid.sch_no);
963 qdio_set_state(irq_ptr, QDIO_IRQ_STATE_ERR);
967 qdio_irq_check_sense(irq_ptr, irb);
971 switch (irq_ptr->state) {
973 qdio_establish_handle_irq(irq_ptr, cstat, dstat);
976 qdio_set_state(irq_ptr, QDIO_IRQ_STATE_INACTIVE);
981 qdio_int_handler_pci(irq_ptr);
985 qdio_handle_activate_check(irq_ptr, intparm, cstat,
1018 static void qdio_shutdown_queues(struct qdio_irq *irq_ptr)
1023 for_each_input_queue(irq_ptr, q, i)
1026 for_each_output_queue(irq_ptr, q, i) {
1066 struct qdio_irq *irq_ptr = cdev->private->qdio_data;
1070 if (!irq_ptr)
1077 mutex_lock(&irq_ptr->setup_mutex);
1082 if (irq_ptr->state == QDIO_IRQ_STATE_INACTIVE) {
1083 mutex_unlock(&irq_ptr->setup_mutex);
1091 qdio_set_state(irq_ptr, QDIO_IRQ_STATE_STOPPED);
1093 tiqdio_remove_device(irq_ptr);
1094 qdio_shutdown_queues(irq_ptr);
1095 qdio_shutdown_debug_entries(irq_ptr);
1097 rc = qdio_cancel_ccw(irq_ptr, how);
1098 qdio_shutdown_thinint(irq_ptr);
1099 qdio_shutdown_irq(irq_ptr);
1101 qdio_set_state(irq_ptr, QDIO_IRQ_STATE_INACTIVE);
1102 mutex_unlock(&irq_ptr->setup_mutex);
1115 struct qdio_irq *irq_ptr = cdev->private->qdio_data;
1118 if (!irq_ptr)
1123 DBF_DEV_EVENT(DBF_ERR, irq_ptr, "dbf abandoned");
1124 mutex_lock(&irq_ptr->setup_mutex);
1126 irq_ptr->debug_area = NULL;
1128 mutex_unlock(&irq_ptr->setup_mutex);
1130 qdio_free_async_data(irq_ptr);
1131 qdio_free_queues(irq_ptr);
1132 free_page((unsigned long) irq_ptr->qdr);
1133 free_page(irq_ptr->chsc_page);
1134 free_page((unsigned long) irq_ptr);
1149 struct qdio_irq *irq_ptr;
1159 /* irq_ptr must be in GFP_DMA since it contains ccw1.cda */
1160 irq_ptr = (void *) get_zeroed_page(GFP_KERNEL | GFP_DMA);
1161 if (!irq_ptr)
1164 irq_ptr->cdev = cdev;
1165 mutex_init(&irq_ptr->setup_mutex);
1166 if (qdio_allocate_dbf(irq_ptr))
1169 DBF_DEV_EVENT(DBF_ERR, irq_ptr, "alloc niq:%1u noq:%1u", no_input_qs,
1178 irq_ptr->chsc_page = get_zeroed_page(GFP_KERNEL);
1179 if (!irq_ptr->chsc_page)
1183 irq_ptr->qdr = (struct qdr *) get_zeroed_page(GFP_KERNEL | GFP_DMA);
1184 if (!irq_ptr->qdr)
1187 rc = qdio_allocate_qs(irq_ptr, no_input_qs, no_output_qs);
1191 INIT_LIST_HEAD(&irq_ptr->entry);
1192 cdev->private->qdio_data = irq_ptr;
1193 qdio_set_state(irq_ptr, QDIO_IRQ_STATE_INACTIVE);
1197 free_page((unsigned long) irq_ptr->qdr);
1199 free_page(irq_ptr->chsc_page);
1202 free_page((unsigned long) irq_ptr);
1207 static void qdio_detect_hsicq(struct qdio_irq *irq_ptr)
1209 struct qdio_q *q = irq_ptr->input_qs[0];
1212 if (irq_ptr->nr_input_qs > 1 && queue_type(q) == QDIO_IQDIO_QFMT)
1215 for_each_output_queue(irq_ptr, q, i) {
1255 struct qdio_irq *irq_ptr = cdev->private->qdio_data;
1263 if (!irq_ptr)
1266 if (init_data->no_input_qs > irq_ptr->max_input_qs ||
1267 init_data->no_output_qs > irq_ptr->max_output_qs)
1278 mutex_lock(&irq_ptr->setup_mutex);
1279 qdio_trace_init_data(irq_ptr, init_data);
1280 qdio_setup_irq(irq_ptr, init_data);
1282 rc = qdio_establish_thinint(irq_ptr);
1287 irq_ptr->ccw.cmd_code = irq_ptr->equeue.cmd;
1288 irq_ptr->ccw.flags = CCW_FLAG_SLI;
1289 irq_ptr->ccw.count = irq_ptr->equeue.count;
1290 irq_ptr->ccw.cda = (u32)((addr_t)irq_ptr->qdr);
1295 rc = ccw_device_start(cdev, &irq_ptr->ccw, QDIO_DOING_ESTABLISH, 0, 0);
1298 DBF_ERROR("%4x est IO ERR", irq_ptr->schid.sch_no);
1304 irq_ptr->state == QDIO_IRQ_STATE_ESTABLISHED ||
1305 irq_ptr->state == QDIO_IRQ_STATE_ERR, HZ);
1311 if (irq_ptr->state != QDIO_IRQ_STATE_ESTABLISHED) {
1312 mutex_unlock(&irq_ptr->setup_mutex);
1317 qdio_setup_ssqd_info(irq_ptr);
1319 qdio_detect_hsicq(irq_ptr);
1322 qdio_init_buf_states(irq_ptr);
1324 mutex_unlock(&irq_ptr->setup_mutex);
1325 qdio_print_subchannel_info(irq_ptr);
1326 qdio_setup_debug_entries(irq_ptr);
1330 qdio_cancel_ccw(irq_ptr, QDIO_FLAG_CLEANUP_USING_CLEAR);
1332 qdio_shutdown_thinint(irq_ptr);
1334 qdio_shutdown_irq(irq_ptr);
1335 qdio_set_state(irq_ptr, QDIO_IRQ_STATE_INACTIVE);
1336 mutex_unlock(&irq_ptr->setup_mutex);
1347 struct qdio_irq *irq_ptr = cdev->private->qdio_data;
1354 if (!irq_ptr)
1357 mutex_lock(&irq_ptr->setup_mutex);
1358 if (irq_ptr->state == QDIO_IRQ_STATE_INACTIVE) {
1363 irq_ptr->ccw.cmd_code = irq_ptr->aqueue.cmd;
1364 irq_ptr->ccw.flags = CCW_FLAG_SLI;
1365 irq_ptr->ccw.count = irq_ptr->aqueue.count;
1366 irq_ptr->ccw.cda = 0;
1371 rc = ccw_device_start(cdev, &irq_ptr->ccw, QDIO_DOING_ACTIVATE,
1375 DBF_ERROR("%4x act IO ERR", irq_ptr->schid.sch_no);
1380 if (is_thinint_irq(irq_ptr))
1381 tiqdio_add_device(irq_ptr);
1386 switch (irq_ptr->state) {
1392 qdio_set_state(irq_ptr, QDIO_IRQ_STATE_ACTIVE);
1396 mutex_unlock(&irq_ptr->setup_mutex);
1442 const unsigned int scan_threshold = q->irq_ptr->scan_threshold;
1488 likely(q->irq_ptr->state == QDIO_IRQ_STATE_ACTIVE))
1504 struct qdio_irq *irq_ptr = cdev->private->qdio_data;
1509 if (!irq_ptr)
1512 DBF_DEV_EVENT(DBF_INFO, irq_ptr,
1515 if (irq_ptr->state != QDIO_IRQ_STATE_ACTIVE)
1520 return handle_inbound(irq_ptr->input_qs[q_nr],
1523 return handle_outbound(irq_ptr->output_qs[q_nr],
1540 struct qdio_irq *irq_ptr = cdev->private->qdio_data;
1543 if (!irq_ptr)
1546 for_each_input_queue(irq_ptr, q, i)
1549 clear_bit(QDIO_IRQ_DISABLED, &irq_ptr->poll_state);
1555 if (test_nonshared_ind(irq_ptr))
1558 for_each_input_queue(irq_ptr, q, i) {
1566 if (test_and_set_bit(QDIO_IRQ_DISABLED, &irq_ptr->poll_state))
1598 struct qdio_irq *irq_ptr = cdev->private->qdio_data;
1601 if (!irq_ptr)
1603 q = is_input ? irq_ptr->input_qs[nr] : irq_ptr->output_qs[nr];
1628 struct qdio_irq *irq_ptr = cdev->private->qdio_data;
1630 if (!irq_ptr)
1632 q = irq_ptr->input_qs[nr];
1641 qdio_check_outbound_pci_queues(irq_ptr);
1644 if (unlikely(q->irq_ptr->state != QDIO_IRQ_STATE_ACTIVE))
1661 struct qdio_irq *irq_ptr = cdev->private->qdio_data;
1663 if (!irq_ptr)
1666 if (test_and_set_bit(QDIO_IRQ_DISABLED, &irq_ptr->poll_state))