Skip to content

Commit

Permalink
dma-debug: add checks for sync_single_sg_*
Browse files Browse the repository at this point in the history
Impact: add debug callbacks for dma_sync_sg_* functions

Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
  • Loading branch information
Joerg Roedel committed Mar 5, 2009
1 parent 948408b commit a31fba5
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 0 deletions.
20 changes: 20 additions & 0 deletions include/linux/dma-debug.h
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,14 @@ extern void debug_dma_sync_single_range_for_device(struct device *dev,
unsigned long offset,
size_t size, int direction);

extern void debug_dma_sync_sg_for_cpu(struct device *dev,
struct scatterlist *sg,
int nelems, int direction);

extern void debug_dma_sync_sg_for_device(struct device *dev,
struct scatterlist *sg,
int nelems, int direction);

#else /* CONFIG_DMA_API_DEBUG */

static inline void dma_debug_init(u32 num_entries)
Expand Down Expand Up @@ -136,6 +144,18 @@ static inline void debug_dma_sync_single_range_for_device(struct device *dev,
{
}

static inline void debug_dma_sync_sg_for_cpu(struct device *dev,
struct scatterlist *sg,
int nelems, int direction)
{
}

static inline void debug_dma_sync_sg_for_device(struct device *dev,
struct scatterlist *sg,
int nelems, int direction)
{
}

#endif /* CONFIG_DMA_API_DEBUG */

#endif /* __DMA_DEBUG_H */
32 changes: 32 additions & 0 deletions lib/dma-debug.c
Original file line number Diff line number Diff line change
Expand Up @@ -782,3 +782,35 @@ void debug_dma_sync_single_range_for_device(struct device *dev,
}
EXPORT_SYMBOL(debug_dma_sync_single_range_for_device);

void debug_dma_sync_sg_for_cpu(struct device *dev, struct scatterlist *sg,
int nelems, int direction)
{
struct scatterlist *s;
int i;

if (unlikely(global_disable))
return;

for_each_sg(sg, s, nelems, i) {
check_sync(dev, s->dma_address, s->dma_length, 0,
direction, true);
}
}
EXPORT_SYMBOL(debug_dma_sync_sg_for_cpu);

void debug_dma_sync_sg_for_device(struct device *dev, struct scatterlist *sg,
int nelems, int direction)
{
struct scatterlist *s;
int i;

if (unlikely(global_disable))
return;

for_each_sg(sg, s, nelems, i) {
check_sync(dev, s->dma_address, s->dma_length, 0,
direction, false);
}
}
EXPORT_SYMBOL(debug_dma_sync_sg_for_device);

0 comments on commit a31fba5

Please sign in to comment.