Skip to contentSkip to conversation

Conversion of some s390 drivers to DTI

RFC PATCH In review Tom Zanussi 1 participant 1 message Jun 30, 2007

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

RFC PATCH 3/6 Conversion of some s390 drivers to DTI

This patch does a first pass at converting some of the s390 drivers from s390dbf to DTI. The others can be converted later if DTI is ever merged. Note that the location of the trace files is now under /sys/kernel/debug/dti rather than /sys/kernel/debug/s390dbf. There are also some other differences e.g. there are no longer 'hex views' in the kernel - this would be done instead via the userspace 'dtiprint' utility. Also, dynamic resizing isn't currently supported.

---
 block/dasd.c     |   18 ++++++++----------
 block/dasd_int.h |   54 ++++++++++++++++++++++++++++--------------------------
 char/tape.h      |    9 +++++----
 char/tape_34xx.c |    9 ++++-----
 char/tape_3590.c |    9 ++++-----
 char/tape_core.c |    9 ++++-----
 cio/cio.c        |   27 ++++++++++++---------------
 cio/cio_debug.h  |   19 ++++++++-----------
 8 files changed, 73 insertions(+), 81 deletions(-)
drivers/s390/block/dasd.c +8 -10
index bfeca57..eafdaa7 100644
@@ -17,6 +17,7 @@
 #include <linux/slab.h>
 #include <linux/buffer_head.h>
 #include <linux/hdreg.h>
+#include <linux/dti.h>
 
 #include <asm/ccwdev.h>
 #include <asm/ebcdic.h>
@@ -35,7 +36,7 @@
 /*
  * SECTION: exported variables of dasd.c
  */
-debug_info_t *dasd_debug_area;
+struct dti_info *dasd_debug_area;
 struct dasd_discipline *dasd_diag_discipline_pointer;
 void dasd_int_handler(struct ccw_device *, unsigned long, struct irb *);
 
@@ -181,10 +182,8 @@ dasd_state_known_to_basic(struct dasd_device * device)
 		return rc;
 
 	/* register 'device' debug area, used for all DBF_DEV_XXX calls */
-	device->debug_area = debug_register(device->cdev->dev.bus_id, 1, 2,
-					    8 * sizeof (long));
-	debug_register_view(device->debug_area, &debug_sprintf_view);
-	debug_set_level(device->debug_area, DBF_WARNING);
+	device->debug_area = dti_register(device->cdev->dev.bus_id, 4096, 4);
+	dti_set_level(device->debug_area, DBF_WARNING);
 	DBF_DEV_EVENT(DBF_EMERG, device, "%s", "debug area created");
 
 	device->state = DASD_STATE_BASIC;
@@ -207,7 +206,7 @@ dasd_state_basic_to_known(struct dasd_device * device)
 
 	DBF_DEV_EVENT(DBF_EMERG, device, "%p debug area deleted", device);
 	if (device->debug_area != NULL) {
-		debug_unregister(device->debug_area);
+		dti_unregister(device->debug_area);
 		device->debug_area = NULL;
 	}
 	device->state = DASD_STATE_KNOWN;
@@ -1924,7 +1923,7 @@ dasd_exit(void)
 	dasd_gendisk_exit();
 	dasd_devmap_exit();
 	if (dasd_debug_area != NULL) {
-		debug_unregister(dasd_debug_area);
+		dti_unregister(dasd_debug_area);
 		dasd_debug_area = NULL;
 	}
 }
@@ -2231,13 +2230,12 @@ dasd_init(void)
 	init_waitqueue_head(&dasd_flush_wq);
 
 	/* register 'common' DASD debug area, used for all DBF_XXX calls */
-	dasd_debug_area = debug_register("dasd", 1, 2, 8 * sizeof (long));
+	dasd_debug_area = dti_register("dasd", 4096, 4);
 	if (dasd_debug_area == NULL) {
 		rc = -ENOMEM;
 		goto failed;
 	}
-	debug_register_view(dasd_debug_area, &debug_sprintf_view);
-	debug_set_level(dasd_debug_area, DBF_WARNING);
+	dti_set_level(dasd_debug_area, DBF_WARNING);
 
 	DBF_EVENT(DBF_EMERG, "%s", "debug area created");
 
drivers/s390/block/dasd_int.h +28 -26

93 lines not on this page · raw message

drivers/s390/char/tape.h +5 -4
index 3b52f5c..e3a2566 100644
@@ -22,6 +22,7 @@
 #include <linux/mtio.h>
 #include <linux/interrupt.h>
 #include <linux/workqueue.h>
+#include <linux/dti.h>
 
 struct gendisk;
 
@@ -32,7 +33,7 @@ struct gendisk;
 #ifdef  DBF_LIKE_HELL
 #define DBF_LH(level, str, ...) \
 do { \
-	debug_sprintf_event(TAPE_DBF_AREA, level, str, ## __VA_ARGS__); \
+	__dti_printk(TAPE_DBF_AREA, level, str, ## __VA_ARGS__); \
 } while (0)
 #else
 #define DBF_LH(level, str, ...) do {} while(0)
@@ -43,12 +44,12 @@ do { \
  */
 #define DBF_EVENT(d_level, d_str...) \
 do { \
-	debug_sprintf_event(TAPE_DBF_AREA, d_level, d_str); \
+	__dti_printk(TAPE_DBF_AREA, d_level, d_str); \
 } while (0)
 
 #define DBF_EXCEPTION(d_level, d_str...) \
 do { \
-	debug_sprintf_exception(TAPE_DBF_AREA, d_level, d_str); \
+	__dti_printk(TAPE_DBF_AREA, d_level, d_str); \
 } while (0)
 
 #define TAPE_VERSION_MAJOR 2
@@ -330,7 +331,7 @@ extern void tape_dump_sense_dbf(struct tape_device *, struct tape_request *,
 extern void tape_med_state_set(struct tape_device *, enum tape_medium_state);
 
 /* The debug area */
-extern debug_info_t *TAPE_DBF_AREA;
+extern struct dti_info *TAPE_DBF_AREA;
 
 /* functions for building ccws */
 static inline struct ccw1 *
drivers/s390/char/tape_34xx.c +4 -5
index e765875..2233e20 100644
@@ -23,7 +23,7 @@
 /*
  * Pointer to debug area.
  */
-debug_info_t *TAPE_DBF_AREA = NULL;
+struct dti_info *TAPE_DBF_AREA = NULL;
 EXPORT_SYMBOL(TAPE_DBF_AREA);
 
 #define TAPE34XX_FMT_3480	0
@@ -1343,10 +1343,9 @@ tape_34xx_init (void)
 {
 	int rc;
 
-	TAPE_DBF_AREA = debug_register ( "tape_34xx", 2, 2, 4*sizeof(long));
-	debug_register_view(TAPE_DBF_AREA, &debug_sprintf_view);
+	TAPE_DBF_AREA = dti_register ( "tape_34xx", 4096, 4);
 #ifdef DBF_LIKE_HELL
-	debug_set_level(TAPE_DBF_AREA, 6);
+	dti_set_level(TAPE_DBF_AREA, 6);
 #endif
 
 	DBF_EVENT(3, "34xx init\n");
@@ -1364,7 +1363,7 @@ tape_34xx_exit(void)
 {
 	ccw_driver_unregister(&tape_34xx_driver);
 
-	debug_unregister(TAPE_DBF_AREA);
+	dti_unregister(TAPE_DBF_AREA);
 }
 
 MODULE_DEVICE_TABLE(ccw, tape_34xx_ids);
drivers/s390/char/tape_3590.c +4 -5
index 7e2b2ab..bf01c1a 100644
@@ -22,7 +22,7 @@
 /*
  * Pointer to debug area.
  */
-debug_info_t *TAPE_DBF_AREA = NULL;
+struct dti_info *TAPE_DBF_AREA = NULL;
 EXPORT_SYMBOL(TAPE_DBF_AREA);
 
 /*******************************************************************
@@ -1730,10 +1730,9 @@ tape_3590_init(void)
 {
 	int rc;
 
-	TAPE_DBF_AREA = debug_register("tape_3590", 2, 2, 4 * sizeof(long));
-	debug_register_view(TAPE_DBF_AREA, &debug_sprintf_view);
+	TAPE_DBF_AREA = dti_register("tape_3590", 4096, 4);
 #ifdef DBF_LIKE_HELL
-	debug_set_level(TAPE_DBF_AREA, 6);
+	dti_set_level(TAPE_DBF_AREA, 6);
 #endif
 
 	DBF_EVENT(3, "3590 init\n");
@@ -1751,7 +1750,7 @@ tape_3590_exit(void)
 {
 	ccw_driver_unregister(&tape_3590_driver);
 
-	debug_unregister(TAPE_DBF_AREA);
+	dti_unregister(TAPE_DBF_AREA);
 }
 
 MODULE_DEVICE_TABLE(ccw, tape_3590_ids);
drivers/s390/char/tape_core.c +4 -5
index 2fae633..23e38c7 100644
@@ -43,7 +43,7 @@ static DEFINE_RWLOCK(tape_device_lock);
 /*
  * Pointer to debug area.
  */
-debug_info_t *TAPE_DBF_AREA = NULL;
+struct dti_info *TAPE_DBF_AREA = NULL;
 EXPORT_SYMBOL(TAPE_DBF_AREA);
 
 /*
@@ -1297,10 +1297,9 @@ tape_mtop(struct tape_device *device, int mt_op, int mt_count)
 static int
 tape_init (void)
 {
-	TAPE_DBF_AREA = debug_register ( "tape", 2, 2, 4*sizeof(long));
-	debug_register_view(TAPE_DBF_AREA, &debug_sprintf_view);
+	TAPE_DBF_AREA = dti_register ( "tape", 4096, 4);
 #ifdef DBF_LIKE_HELL
-	debug_set_level(TAPE_DBF_AREA, 6);
+	dti_set_level(TAPE_DBF_AREA, 6);
 #endif
 	DBF_EVENT(3, "tape init\n");
 	tape_proc_init();
@@ -1321,7 +1320,7 @@ tape_exit(void)
 	tapechar_exit();
 	tapeblock_exit();
 	tape_proc_cleanup();
-	debug_unregister (TAPE_DBF_AREA);
+	dti_unregister (TAPE_DBF_AREA);
 }
 
 MODULE_AUTHOR("(C) 2001 IBM Deutschland Entwicklung GmbH by Carsten Otte and "
drivers/s390/cio/cio.c +12 -15
index ea1defb..8fba334 100644
@@ -33,9 +33,9 @@
 #include "chp.h"
 #include "../s390mach.h"
 
-debug_info_t *cio_debug_msg_id;
-debug_info_t *cio_debug_trace_id;
-debug_info_t *cio_debug_crw_id;
+struct dti_info *cio_debug_msg_id;
+struct dti_info *cio_debug_trace_id;
+struct dti_info *cio_debug_crw_id;
 
 int cio_show_msg;
 
@@ -65,31 +65,28 @@ __setup ("cio_msg=", cio_setup);
 static int __init
 cio_debug_init (void)
 {
-	cio_debug_msg_id = debug_register ("cio_msg", 16, 4, 16*sizeof (long));
+	cio_debug_msg_id = dti_register ("cio_msg", 4096, 4);
 	if (!cio_debug_msg_id)
 		goto out_unregister;
-	debug_register_view (cio_debug_msg_id, &debug_sprintf_view);
-	debug_set_level (cio_debug_msg_id, 2);
-	cio_debug_trace_id = debug_register ("cio_trace", 16, 4, 16);
+	dti_set_level (cio_debug_msg_id, 2);
+	cio_debug_trace_id = dti_register ("cio_trace", 4096, 4);
 	if (!cio_debug_trace_id)
 		goto out_unregister;
-	debug_register_view (cio_debug_trace_id, &debug_hex_ascii_view);
-	debug_set_level (cio_debug_trace_id, 2);
-	cio_debug_crw_id = debug_register ("cio_crw", 4, 4, 16*sizeof (long));
+	dti_set_level (cio_debug_trace_id, 2);
+	cio_debug_crw_id = dti_register ("cio_crw", 4096, 4);
 	if (!cio_debug_crw_id)
 		goto out_unregister;
-	debug_register_view (cio_debug_crw_id, &debug_sprintf_view);
-	debug_set_level (cio_debug_crw_id, 2);
+	dti_set_level (cio_debug_crw_id, 2);
 	pr_debug("debugging initialized\n");
 	return 0;
 
 out_unregister:
 	if (cio_debug_msg_id)
-		debug_unregister (cio_debug_msg_id);
+		dti_unregister (cio_debug_msg_id);
 	if (cio_debug_trace_id)
-		debug_unregister (cio_debug_trace_id);
+		dti_unregister (cio_debug_trace_id);
 	if (cio_debug_crw_id)
-		debug_unregister (cio_debug_crw_id);
+		dti_unregister (cio_debug_crw_id);
 	pr_debug("could not initialize debugging\n");
 	return -1;
 }
drivers/s390/cio/cio_debug.h +8 -11
index f88844a..5b2298c 100644
@@ -1,33 +1,30 @@
 #ifndef CIO_DEBUG_H
 #define CIO_DEBUG_H
 
+#include <linux/dti.h>
 #include <asm/debug.h>
 
 /* for use of debug feature */
-extern debug_info_t *cio_debug_msg_id;
-extern debug_info_t *cio_debug_trace_id;
-extern debug_info_t *cio_debug_crw_id;
+extern struct dti_info *cio_debug_msg_id;
+extern struct dti_info *cio_debug_trace_id;
+extern struct dti_info *cio_debug_crw_id;
 
 #define CIO_TRACE_EVENT(imp, txt) do { \
-		debug_text_event(cio_debug_trace_id, imp, txt); \
+		__dti_event(cio_debug_trace_id, imp, txt, strlen(txt));\
 	} while (0)
 
 #define CIO_MSG_EVENT(imp, args...) do { \
-		debug_sprintf_event(cio_debug_msg_id, imp , ##args); \
+		__dti_printk(cio_debug_msg_id, imp , ##args); \
 	} while (0)
 
 #define CIO_CRW_EVENT(imp, args...) do { \
-		debug_sprintf_event(cio_debug_crw_id, imp , ##args); \
+		__dti_printk(cio_debug_crw_id, imp , ##args); \
 	} while (0)
 
 static inline void
 CIO_HEX_EVENT(int level, void *data, int length)
 {
-	while (length > 0) {
-		debug_event(cio_debug_trace_id, level, data, length);
-		length -= cio_debug_trace_id->buf_size;
-		data += cio_debug_trace_id->buf_size;
-	}
+	__dti_event(cio_debug_trace_id, level, data, length);
 }
 
 #define CIO_DEBUG(printk_level,event_level,msg...) ({ \