diff options
author | Joerg Roedel <joerg.roedel@amd.com> | 2009-01-09 07:01:56 -0500 |
---|---|---|
committer | Joerg Roedel <joerg.roedel@amd.com> | 2009-03-05 14:35:16 -0500 |
commit | 59d3daafa17265f01149df8eab3fb69b9b42cb2e (patch) | |
tree | b4c0f3525f976dd5ec37730dee76ed227dcd25d5 | |
parent | 6bf078715c1998d4d10716251cc10ce45908594c (diff) |
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>
-rw-r--r-- | Documentation/kernel-parameters.txt | 10 | ||||
-rw-r--r-- | lib/dma-debug.c | 38 |
2 files changed, 48 insertions, 0 deletions
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index 54f21a5c262b..0fa3c0545994 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt | |||
@@ -491,6 +491,16 @@ and is between 256 and 4096 characters. It is defined in the file | |||
491 | Range: 0 - 8192 | 491 | Range: 0 - 8192 |
492 | Default: 64 | 492 | Default: 64 |
493 | 493 | ||
494 | dma_debug=off If the kernel is compiled with DMA_API_DEBUG support | ||
495 | this option disables the debugging code at boot. | ||
496 | |||
497 | dma_debug_entries=<number> | ||
498 | This option allows to tune the number of preallocated | ||
499 | entries for DMA-API debugging code. One entry is | ||
500 | required per DMA-API allocation. Use this if the | ||
501 | DMA-API debugging code disables itself because the | ||
502 | architectural default is too low. | ||
503 | |||
494 | hpet= [X86-32,HPET] option to control HPET usage | 504 | hpet= [X86-32,HPET] option to control HPET usage |
495 | Format: { enable (default) | disable | force } | 505 | Format: { enable (default) | disable | force } |
496 | disable: disable HPET and use PIT instead | 506 | disable: disable HPET and use PIT instead |
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 | |||