aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/dma-debug.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/lib/dma-debug.c b/lib/dma-debug.c
index 5b50bb31f7c6..2ede46308024 100644
--- a/lib/dma-debug.c
+++ b/lib/dma-debug.c
@@ -64,6 +64,9 @@ static bool global_disable __read_mostly;
64static u32 num_free_entries; 64static u32 num_free_entries;
65static u32 min_free_entries; 65static u32 min_free_entries;
66 66
67/* number of preallocated entries requested by kernel cmdline */
68static u32 req_entries;
69
67/* 70/*
68 * Hash related functions 71 * Hash related functions
69 * 72 *
@@ -253,6 +256,9 @@ void dma_debug_init(u32 num_entries)
253 dma_entry_hash[i].lock = SPIN_LOCK_UNLOCKED; 256 dma_entry_hash[i].lock = SPIN_LOCK_UNLOCKED;
254 } 257 }
255 258
259 if (req_entries)
260 num_entries = req_entries;
261
256 if (prealloc_memory(num_entries) != 0) { 262 if (prealloc_memory(num_entries) != 0) {
257 printk(KERN_ERR "DMA-API: debugging out of memory error " 263 printk(KERN_ERR "DMA-API: debugging out of memory error "
258 "- disabled\n"); 264 "- disabled\n");
@@ -264,3 +270,35 @@ void dma_debug_init(u32 num_entries)
264 printk(KERN_INFO "DMA-API: debugging enabled by kernel config\n"); 270 printk(KERN_INFO "DMA-API: debugging enabled by kernel config\n");
265} 271}
266 272
273static __init int dma_debug_cmdline(char *str)
274{
275 if (!str)
276 return -EINVAL;
277
278 if (strncmp(str, "off", 3) == 0) {
279 printk(KERN_INFO "DMA-API: debugging disabled on kernel "
280 "command line\n");
281 global_disable = true;
282 }
283
284 return 0;
285}
286
287static __init int dma_debug_entries_cmdline(char *str)
288{
289 int res;
290
291 if (!str)
292 return -EINVAL;
293
294 res = get_option(&str, &req_entries);
295
296 if (!res)
297 req_entries = 0;
298
299 return 0;
300}
301
302__setup("dma_debug=", dma_debug_cmdline);
303__setup("dma_debug_entries=", dma_debug_entries_cmdline);
304