diff options
author | Jan Glauber <jang@linux.vnet.ibm.com> | 2008-12-25 07:38:46 -0500 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2008-12-25 07:38:59 -0500 |
commit | 22f9934767f49012ffbae753b28b8055bd28348f (patch) | |
tree | 7cb58ceff25b9c6b5ade5646b6444b7689621f81 /drivers/s390/cio/qdio_thinint.c | |
parent | 9a1ce28aeb7a8b1666eaa9f104c1a2f5a149f9df (diff) |
[S390] qdio: rework debug feature logging
- make qdio_trace a per device view
- remove s390dbf exceptions
- remove CONFIG_QDIO_DEBUG, not needed anymore if we check for the level
before calling sprintf
- use snprintf for dbf entries
- add start markers to see if the dbf view wrapped
- add a global error view for all queues
Signed-off-by: Jan Glauber <jang@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'drivers/s390/cio/qdio_thinint.c')
-rw-r--r-- | drivers/s390/cio/qdio_thinint.c | 25 |
1 files changed, 8 insertions, 17 deletions
diff --git a/drivers/s390/cio/qdio_thinint.c b/drivers/s390/cio/qdio_thinint.c index c47f6699a434..47ee741d65b2 100644 --- a/drivers/s390/cio/qdio_thinint.c +++ b/drivers/s390/cio/qdio_thinint.c | |||
@@ -258,8 +258,6 @@ static void tiqdio_thinint_handler(void *ind, void *drv_data) | |||
258 | static int set_subchannel_ind(struct qdio_irq *irq_ptr, int reset) | 258 | static 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 | ||
328 | int __init tiqdio_register_thinints(void) | 322 | int __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 | ||
366 | void qdio_shutdown_thinint(struct qdio_irq *irq_ptr) | 357 | void qdio_shutdown_thinint(struct qdio_irq *irq_ptr) |