diff options
author | Joerg Roedel <joerg.roedel@amd.com> | 2009-01-09 13:01:56 +0100 |
---|---|---|
committer | Joerg Roedel <joerg.roedel@amd.com> | 2009-03-05 20:35:16 +0100 |
commit | 59d3daafa17265f01149df8eab3fb69b9b42cb2e (patch) | |
tree | b4c0f3525f976dd5ec37730dee76ed227dcd25d5 /lib/dma-debug.c | |
parent | 6bf078715c1998d4d10716251cc10ce45908594c (diff) | |
download | kernel-common-59d3daafa17265f01149df8eab3fb69b9b42cb2e.tar.gz kernel-common-59d3daafa17265f01149df8eab3fb69b9b42cb2e.tar.bz2 kernel-common-59d3daafa17265f01149df8eab3fb69b9b42cb2e.zip |
dma-debug: add kernel command line parameters
Impact: add dma_debug= and dma_debug_entries= kernel parameters
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
Diffstat (limited to 'lib/dma-debug.c')
-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; static u32 num_free_entries; static u32 min_free_entries; +/* number of preallocated entries requested by kernel cmdline */ +static u32 req_entries; + /* * Hash related functions * @@ -253,6 +256,9 @@ void dma_debug_init(u32 num_entries) dma_entry_hash[i].lock = SPIN_LOCK_UNLOCKED; } + if (req_entries) + num_entries = req_entries; + if (prealloc_memory(num_entries) != 0) { printk(KERN_ERR "DMA-API: debugging out of memory error " "- disabled\n"); @@ -264,3 +270,35 @@ void dma_debug_init(u32 num_entries) printk(KERN_INFO "DMA-API: debugging enabled by kernel config\n"); } +static __init int dma_debug_cmdline(char *str) +{ + if (!str) + return -EINVAL; + + if (strncmp(str, "off", 3) == 0) { + printk(KERN_INFO "DMA-API: debugging disabled on kernel " + "command line\n"); + global_disable = true; + } + + return 0; +} + +static __init int dma_debug_entries_cmdline(char *str) +{ + int res; + + if (!str) + return -EINVAL; + + res = get_option(&str, &req_entries); + + if (!res) + req_entries = 0; + + return 0; +} + +__setup("dma_debug=", dma_debug_cmdline); +__setup("dma_debug_entries=", dma_debug_entries_cmdline); + |