[PATCH 07/16] dma-debug: add debugfs interface

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Joerg Roedel
Date: Friday, January 9, 2009 - 9:19 am

Impact: add debugfs interface for configuring DMA-API debugging

Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
---
 lib/dma-debug.c |   78 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 78 insertions(+), 0 deletions(-)

diff --git a/lib/dma-debug.c b/lib/dma-debug.c
index 4e58d09..ca0ccb1 100644
--- a/lib/dma-debug.c
+++ b/lib/dma-debug.c
@@ -19,6 +19,7 @@
 
 #include <linux/dma-debug.h>
 #include <linux/spinlock.h>
+#include <linux/debugfs.h>
 #include <linux/types.h>
 #include <linux/list.h>
 #include <linux/slab.h>
@@ -58,12 +59,29 @@ static DEFINE_SPINLOCK(free_entries_lock);
 /* Global disable flag - will be set in case of an error */
 static bool global_disable __read_mostly;
 
+/* Global error count */
+static u32 error_count;
+
+/* Global error show enable*/
+static u32 show_all_errors __read_mostly;
+/* Number of errors to show */
+static u32 show_num_errors = 1;
+
 static u32 num_free_entries;
 static u32 min_free_entries;
 
 /* number of preallocated entries requested by kernel cmdline */
 static u32 req_entries;
 
+/* debugfs dentry's for the stuff above */
+static struct dentry *dma_debug_dent;
+static struct dentry *global_disable_dent;
+static struct dentry *error_count_dent;
+static struct dentry *show_all_errors_dent;
+static struct dentry *show_num_errors_dent;
+static struct dentry *num_free_entries_dent;
+static struct dentry *min_free_entries_dent;
+
 /*
  * Hash related functions
  *
@@ -238,6 +256,58 @@ out_err:
 	return -ENOMEM;
 }
 
+static int dma_debug_fs_init(void)
+{
+	dma_debug_dent = debugfs_create_dir("dma-api", NULL);
+	if (!dma_debug_dent) {
+		printk(KERN_ERR "DMA-API: can not create debugfs directory\n");
+		return -ENOMEM;
+	}
+
+	global_disable_dent = debugfs_create_bool("disabled", 0444,
+			dma_debug_dent,
+			(u32 *)&global_disable);
+	if (!global_disable_dent)
+		goto out_err;
+
+	error_count_dent = debugfs_create_u32("error_count", 0444,
+			dma_debug_dent, &error_count);
+	if (!error_count_dent)
+		goto out_err;
+
+	show_all_errors_dent = debugfs_create_u32("all_errors", 0644,
+			dma_debug_dent,
+			&show_all_errors);
+	if (!show_all_errors_dent)
+		goto out_err;
+
+	show_num_errors_dent = debugfs_create_u32("num_errors", 0644,
+			dma_debug_dent,
+			&show_num_errors);
+	if (!show_num_errors_dent)
+		goto out_err;
+
+	num_free_entries_dent = debugfs_create_u32("num_free_entries", 0444,
+			dma_debug_dent,
+			&num_free_entries);
+	if (!num_free_entries_dent)
+		goto out_err;
+
+	min_free_entries_dent = debugfs_create_u32("min_free_entries", 0444,
+			dma_debug_dent,
+			&min_free_entries);
+	if (!min_free_entries_dent)
+		goto out_err;
+
+	return 0;
+
+out_err:
+	debugfs_remove_recursive(dma_debug_dent);
+
+	return -ENOMEM;
+}
+
+
 /*
  * Let the architectures decide how many entries should be preallocated.
  */
@@ -253,6 +323,14 @@ void dma_debug_init(u32 num_entries)
 		dma_entry_hash[i].lock = SPIN_LOCK_UNLOCKED;
 	}
 
+	if (dma_debug_fs_init() != 0) {
+		printk(KERN_ERR "DMA-API: error creating debugfs entries "
+				"- disabling\n");
+		global_disable = true;
+
+		return;
+	}
+
 	if (req_entries)
 		num_entries = req_entries;
 
-- 
1.5.6.4


--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[PATCH 0/16] DMA-API debugging facility v2, Joerg Roedel, (Fri Jan 9, 9:19 am)
[PATCH 01/16] dma-debug: add Kconfig entry, Joerg Roedel, (Fri Jan 9, 9:19 am)
[PATCH 04/16] dma-debug: add allocator code, Joerg Roedel, (Fri Jan 9, 9:19 am)
[PATCH 05/16] dma-debug: add initialization code, Joerg Roedel, (Fri Jan 9, 9:19 am)
[PATCH 07/16] dma-debug: add debugfs interface, Joerg Roedel, (Fri Jan 9, 9:19 am)
[PATCH 08/16] dma-debug: add core checking functions, Joerg Roedel, (Fri Jan 9, 9:19 am)
[PATCH 12/16] dma-debug: add checks for sync_single_*, Joerg Roedel, (Fri Jan 9, 9:19 am)
[PATCH 15/16] dma-debug: x86 architecture bindings, Joerg Roedel, (Fri Jan 9, 9:19 am)
[PATCH 16/16] dma-debug: Documentation update, Joerg Roedel, (Fri Jan 9, 9:19 am)
Re: [PATCH 05/16] dma-debug: add initialization code, Evgeniy Polyakov, (Fri Jan 9, 10:58 am)
Re: [PATCH 05/16] dma-debug: add initialization code, Joerg Roedel, (Fri Jan 9, 11:17 am)
Re: [PATCH 01/16] dma-debug: add Kconfig entry, Randy Dunlap, (Fri Jan 9, 1:12 pm)
Re: [PATCH 0/16] DMA-API debugging facility v2, Michael Chan, (Fri Jan 9, 2:24 pm)
Re: [PATCH 0/16] DMA-API debugging facility v2, Joerg Roedel, (Fri Jan 9, 3:33 pm)
Re: [PATCH 0/16] DMA-API debugging facility v2, Joerg Roedel, (Fri Jan 9, 3:37 pm)
Re: [PATCH 15/16] dma-debug: x86 architecture bindings, Ingo Molnar, (Sat Jan 10, 4:04 pm)
Re: [PATCH 07/16] dma-debug: add debugfs interface, Ingo Molnar, (Sat Jan 10, 4:08 pm)
Re: [PATCH 07/16] dma-debug: add debugfs interface, Ingo Molnar, (Sat Jan 10, 4:15 pm)
Re: [PATCH 04/16] dma-debug: add allocator code, Ingo Molnar, (Sat Jan 10, 4:43 pm)
Re: [PATCH 15/16] dma-debug: x86 architecture bindings, Ingo Molnar, (Sat Jan 10, 4:48 pm)
Re: [PATCH 0/16] DMA-API debugging facility v2, Ingo Molnar, (Sat Jan 10, 4:54 pm)
Re: [PATCH 0/16] DMA-API debugging facility v2, FUJITA Tomonori, (Sat Jan 10, 11:25 pm)
Re: [PATCH 15/16] dma-debug: x86 architecture bindings, FUJITA Tomonori, (Sat Jan 10, 11:25 pm)
Re: [PATCH 07/16] dma-debug: add debugfs interface, Joerg Roedel, (Sun Jan 11, 12:52 am)
Re: [PATCH 08/16] dma-debug: add core checking functions, Joerg Roedel, (Sun Jan 11, 12:54 am)
Re: [PATCH 08/16] dma-debug: add core checking functions, Joerg Roedel, (Sun Jan 11, 12:57 am)
Re: [PATCH 15/16] dma-debug: x86 architecture bindings, Joerg Roedel, (Sun Jan 11, 1:08 am)
Re: [PATCH 0/16] DMA-API debugging facility v2, Joerg Roedel, (Sun Jan 11, 1:11 am)
Re: [PATCH 07/16] dma-debug: add debugfs interface, Joerg Roedel, (Wed Jan 14, 8:22 am)
Re: [PATCH 0/16] DMA-API debugging facility v2, David Woodhouse, (Thu Feb 5, 3:52 pm)
Re: [PATCH 0/16] DMA-API debugging facility v2, Chris Wright, (Thu Feb 5, 7:05 pm)
Re: [PATCH 0/16] DMA-API debugging facility v2, Chris Wright, (Thu Feb 5, 7:27 pm)
Re: [PATCH 0/16] DMA-API debugging facility v2, David Woodhouse, (Fri Feb 6, 12:56 am)
Re: [PATCH 0/16] DMA-API debugging facility v2, Chris Wright, (Fri Feb 6, 9:08 am)
Re: [PATCH 0/16] DMA-API debugging facility v2, Chris Wright, (Fri Feb 6, 11:20 am)
Re: [PATCH 0/16] DMA-API debugging facility v2, Joerg Roedel, (Thu Feb 12, 7:48 am)
Re: [PATCH 0/16] DMA-API debugging facility v2, Joerg Roedel, (Thu Feb 12, 8:20 am)