diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/dma-debug.c | 38 |
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; | |||
64 | static u32 num_free_entries; | 64 | static u32 num_free_entries; |
65 | static u32 min_free_entries; | 65 | static u32 min_free_entries; |
66 | 66 | ||
67 | /* number of preallocated entries requested by kernel cmdline */ | ||
68 | static 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 | ||
273 | static __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 | |||
287 | static __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 | |||