diff options
author | Andi Kleen <ak@suse.de> | 2008-04-28 05:12:37 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-04-28 11:58:20 -0400 |
commit | b5ee5befa75e33e55d34584ad10286c5005cb1de (patch) | |
tree | cc8953411811c75eeffe53dc387fad66dec92144 | |
parent | a43361cf3cb6fb6431fdbfb0f3ef26a334826160 (diff) |
dmapool: enable debugging for CONFIG_SLUB_DEBUG_ON too
Previously it was only enabled for CONFIG_DEBUG_SLAB.
Not hooked into the slub runtime debug configuration, so you currently only
get it with CONFIG_SLUB_DEBUG_ON, not plain CONFIG_SLUB_DEBUG
Acked-by: Matthew Wilcox <willy@linux.intel.com>
Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | mm/dmapool.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/mm/dmapool.c b/mm/dmapool.c index 34aaac451a96..b1f0885dda22 100644 --- a/mm/dmapool.c +++ b/mm/dmapool.c | |||
@@ -37,6 +37,10 @@ | |||
37 | #include <linux/types.h> | 37 | #include <linux/types.h> |
38 | #include <linux/wait.h> | 38 | #include <linux/wait.h> |
39 | 39 | ||
40 | #if defined(CONFIG_DEBUG_SLAB) || defined(CONFIG_SLUB_DEBUG_ON) | ||
41 | #define DMAPOOL_DEBUG 1 | ||
42 | #endif | ||
43 | |||
40 | struct dma_pool { /* the pool */ | 44 | struct dma_pool { /* the pool */ |
41 | struct list_head page_list; | 45 | struct list_head page_list; |
42 | spinlock_t lock; | 46 | spinlock_t lock; |
@@ -216,7 +220,7 @@ static struct dma_page *pool_alloc_page(struct dma_pool *pool, gfp_t mem_flags) | |||
216 | page->vaddr = dma_alloc_coherent(pool->dev, pool->allocation, | 220 | page->vaddr = dma_alloc_coherent(pool->dev, pool->allocation, |
217 | &page->dma, mem_flags); | 221 | &page->dma, mem_flags); |
218 | if (page->vaddr) { | 222 | if (page->vaddr) { |
219 | #ifdef CONFIG_DEBUG_SLAB | 223 | #ifdef DMAPOOL_DEBUG |
220 | memset(page->vaddr, POOL_POISON_FREED, pool->allocation); | 224 | memset(page->vaddr, POOL_POISON_FREED, pool->allocation); |
221 | #endif | 225 | #endif |
222 | pool_initialise_page(pool, page); | 226 | pool_initialise_page(pool, page); |
@@ -239,7 +243,7 @@ static void pool_free_page(struct dma_pool *pool, struct dma_page *page) | |||
239 | { | 243 | { |
240 | dma_addr_t dma = page->dma; | 244 | dma_addr_t dma = page->dma; |
241 | 245 | ||
242 | #ifdef CONFIG_DEBUG_SLAB | 246 | #ifdef DMAPOOL_DEBUG |
243 | memset(page->vaddr, POOL_POISON_FREED, pool->allocation); | 247 | memset(page->vaddr, POOL_POISON_FREED, pool->allocation); |
244 | #endif | 248 | #endif |
245 | dma_free_coherent(pool->dev, pool->allocation, page->vaddr, dma); | 249 | dma_free_coherent(pool->dev, pool->allocation, page->vaddr, dma); |
@@ -336,7 +340,7 @@ void *dma_pool_alloc(struct dma_pool *pool, gfp_t mem_flags, | |||
336 | page->offset = *(int *)(page->vaddr + offset); | 340 | page->offset = *(int *)(page->vaddr + offset); |
337 | retval = offset + page->vaddr; | 341 | retval = offset + page->vaddr; |
338 | *handle = offset + page->dma; | 342 | *handle = offset + page->dma; |
339 | #ifdef CONFIG_DEBUG_SLAB | 343 | #ifdef DMAPOOL_DEBUG |
340 | memset(retval, POOL_POISON_ALLOCATED, pool->size); | 344 | memset(retval, POOL_POISON_ALLOCATED, pool->size); |
341 | #endif | 345 | #endif |
342 | done: | 346 | done: |
@@ -391,7 +395,7 @@ void dma_pool_free(struct dma_pool *pool, void *vaddr, dma_addr_t dma) | |||
391 | } | 395 | } |
392 | 396 | ||
393 | offset = vaddr - page->vaddr; | 397 | offset = vaddr - page->vaddr; |
394 | #ifdef CONFIG_DEBUG_SLAB | 398 | #ifdef DMAPOOL_DEBUG |
395 | if ((dma - page->dma) != offset) { | 399 | if ((dma - page->dma) != offset) { |
396 | if (pool->dev) | 400 | if (pool->dev) |
397 | dev_err(pool->dev, | 401 | dev_err(pool->dev, |