aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/cio/qdio_thinint.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/s390/cio/qdio_thinint.c')
-rw-r--r--drivers/s390/cio/qdio_thinint.c29
1 files changed, 10 insertions, 19 deletions
diff --git a/drivers/s390/cio/qdio_thinint.c b/drivers/s390/cio/qdio_thinint.c
index ea7f61400267..8e90e147b746 100644
--- a/drivers/s390/cio/qdio_thinint.c
+++ b/drivers/s390/cio/qdio_thinint.c
@@ -125,13 +125,13 @@ void tiqdio_remove_input_queues(struct qdio_irq *irq_ptr)
125 125
126static inline int tiqdio_inbound_q_done(struct qdio_q *q) 126static inline int tiqdio_inbound_q_done(struct qdio_q *q)
127{ 127{
128 unsigned char state; 128 unsigned char state = 0;
129 129
130 if (!atomic_read(&q->nr_buf_used)) 130 if (!atomic_read(&q->nr_buf_used))
131 return 1; 131 return 1;
132 132
133 qdio_siga_sync_q(q); 133 qdio_siga_sync_q(q);
134 get_buf_state(q, q->first_to_check, &state); 134 get_buf_state(q, q->first_to_check, &state, 0);
135 135
136 if (state == SLSB_P_INPUT_PRIMED) 136 if (state == SLSB_P_INPUT_PRIMED)
137 /* more work coming */ 137 /* more work coming */
@@ -258,8 +258,6 @@ static void tiqdio_thinint_handler(void *ind, void *drv_data)
258static int set_subchannel_ind(struct qdio_irq *irq_ptr, int reset) 258static int set_subchannel_ind(struct qdio_irq *irq_ptr, int reset)
259{ 259{
260 struct scssc_area *scssc_area; 260 struct scssc_area *scssc_area;
261 char dbf_text[15];
262 void *ptr;
263 int rc; 261 int rc;
264 262
265 scssc_area = (struct scssc_area *)irq_ptr->chsc_page; 263 scssc_area = (struct scssc_area *)irq_ptr->chsc_page;
@@ -294,19 +292,15 @@ static int set_subchannel_ind(struct qdio_irq *irq_ptr, int reset)
294 292
295 rc = chsc_error_from_response(scssc_area->response.code); 293 rc = chsc_error_from_response(scssc_area->response.code);
296 if (rc) { 294 if (rc) {
297 sprintf(dbf_text, "sidR%4x", scssc_area->response.code); 295 DBF_ERROR("%4x SSI r:%4x", irq_ptr->schid.sch_no,
298 QDIO_DBF_TEXT1(0, trace, dbf_text); 296 scssc_area->response.code);
299 QDIO_DBF_TEXT1(0, setup, dbf_text); 297 DBF_ERROR_HEX(&scssc_area->response, sizeof(void *));
300 ptr = &scssc_area->response;
301 QDIO_DBF_HEX2(1, setup, &ptr, QDIO_DBF_SETUP_LEN);
302 return rc; 298 return rc;
303 } 299 }
304 300
305 QDIO_DBF_TEXT2(0, setup, "setscind"); 301 DBF_EVENT("setscind");
306 QDIO_DBF_HEX2(0, setup, &scssc_area->summary_indicator_addr, 302 DBF_HEX(&scssc_area->summary_indicator_addr, sizeof(unsigned long));
307 sizeof(unsigned long)); 303 DBF_HEX(&scssc_area->subchannel_indicator_addr, sizeof(unsigned long));
308 QDIO_DBF_HEX2(0, setup, &scssc_area->subchannel_indicator_addr,
309 sizeof(unsigned long));
310 return 0; 304 return 0;
311} 305}
312 306
@@ -327,14 +321,11 @@ void tiqdio_free_memory(void)
327 321
328int __init tiqdio_register_thinints(void) 322int __init tiqdio_register_thinints(void)
329{ 323{
330 char dbf_text[20];
331
332 isc_register(QDIO_AIRQ_ISC); 324 isc_register(QDIO_AIRQ_ISC);
333 tiqdio_alsi = s390_register_adapter_interrupt(&tiqdio_thinint_handler, 325 tiqdio_alsi = s390_register_adapter_interrupt(&tiqdio_thinint_handler,
334 NULL, QDIO_AIRQ_ISC); 326 NULL, QDIO_AIRQ_ISC);
335 if (IS_ERR(tiqdio_alsi)) { 327 if (IS_ERR(tiqdio_alsi)) {
336 sprintf(dbf_text, "regthn%lx", PTR_ERR(tiqdio_alsi)); 328 DBF_EVENT("RTI:%lx", PTR_ERR(tiqdio_alsi));
337 QDIO_DBF_TEXT0(0, setup, dbf_text);
338 tiqdio_alsi = NULL; 329 tiqdio_alsi = NULL;
339 isc_unregister(QDIO_AIRQ_ISC); 330 isc_unregister(QDIO_AIRQ_ISC);
340 return -ENOMEM; 331 return -ENOMEM;
@@ -360,7 +351,7 @@ void qdio_setup_thinint(struct qdio_irq *irq_ptr)
360 if (!is_thinint_irq(irq_ptr)) 351 if (!is_thinint_irq(irq_ptr))
361 return; 352 return;
362 irq_ptr->dsci = get_indicator(); 353 irq_ptr->dsci = get_indicator();
363 QDIO_DBF_HEX1(0, setup, &irq_ptr->dsci, sizeof(void *)); 354 DBF_HEX(&irq_ptr->dsci, sizeof(void *));
364} 355}
365 356
366void qdio_shutdown_thinint(struct qdio_irq *irq_ptr) 357void qdio_shutdown_thinint(struct qdio_irq *irq_ptr)