powerpc: Add CONFIG_DMA_API_DEBUG support
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:
committed by
Benjamin Herrenschmidt
parent
4a9a6bfe70
commit
80d3e8abb7
@@ -121,6 +121,7 @@ config PPC
|
|||||||
select HAVE_ARCH_TRACEHOOK
|
select HAVE_ARCH_TRACEHOOK
|
||||||
select HAVE_LMB
|
select HAVE_LMB
|
||||||
select HAVE_DMA_ATTRS
|
select HAVE_DMA_ATTRS
|
||||||
|
select HAVE_DMA_API_DEBUG
|
||||||
select USE_GENERIC_SMP_HELPERS if SMP
|
select USE_GENERIC_SMP_HELPERS if SMP
|
||||||
select HAVE_OPROFILE
|
select HAVE_OPROFILE
|
||||||
select HAVE_SYSCALL_WRAPPERS if PPC64
|
select HAVE_SYSCALL_WRAPPERS if PPC64
|
||||||
|
@@ -127,9 +127,15 @@ static inline void *dma_alloc_coherent(struct device *dev, size_t size,
|
|||||||
dma_addr_t *dma_handle, gfp_t flag)
|
dma_addr_t *dma_handle, gfp_t flag)
|
||||||
{
|
{
|
||||||
struct dma_map_ops *dma_ops = get_dma_ops(dev);
|
struct dma_map_ops *dma_ops = get_dma_ops(dev);
|
||||||
|
void *cpu_addr;
|
||||||
|
|
||||||
BUG_ON(!dma_ops);
|
BUG_ON(!dma_ops);
|
||||||
return dma_ops->alloc_coherent(dev, size, dma_handle, flag);
|
|
||||||
|
cpu_addr = dma_ops->alloc_coherent(dev, size, dma_handle, flag);
|
||||||
|
|
||||||
|
debug_dma_alloc_coherent(dev, size, *dma_handle, cpu_addr);
|
||||||
|
|
||||||
|
return cpu_addr;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void dma_free_coherent(struct device *dev, size_t size,
|
static inline void dma_free_coherent(struct device *dev, size_t size,
|
||||||
@@ -138,6 +144,9 @@ static inline void dma_free_coherent(struct device *dev, size_t size,
|
|||||||
struct dma_map_ops *dma_ops = get_dma_ops(dev);
|
struct dma_map_ops *dma_ops = get_dma_ops(dev);
|
||||||
|
|
||||||
BUG_ON(!dma_ops);
|
BUG_ON(!dma_ops);
|
||||||
|
|
||||||
|
debug_dma_free_coherent(dev, size, cpu_addr, dma_handle);
|
||||||
|
|
||||||
dma_ops->free_coherent(dev, size, cpu_addr, dma_handle);
|
dma_ops->free_coherent(dev, size, cpu_addr, dma_handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -7,6 +7,7 @@
|
|||||||
|
|
||||||
#include <linux/device.h>
|
#include <linux/device.h>
|
||||||
#include <linux/dma-mapping.h>
|
#include <linux/dma-mapping.h>
|
||||||
|
#include <linux/dma-debug.h>
|
||||||
#include <linux/lmb.h>
|
#include <linux/lmb.h>
|
||||||
#include <asm/bug.h>
|
#include <asm/bug.h>
|
||||||
#include <asm/abs_addr.h>
|
#include <asm/abs_addr.h>
|
||||||
@@ -156,3 +157,13 @@ struct dma_map_ops dma_direct_ops = {
|
|||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
EXPORT_SYMBOL(dma_direct_ops);
|
EXPORT_SYMBOL(dma_direct_ops);
|
||||||
|
|
||||||
|
#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16)
|
||||||
|
|
||||||
|
static int __init dma_init(void)
|
||||||
|
{
|
||||||
|
dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
fs_initcall(dma_init);
|
||||||
|
Reference in New Issue
Block a user