Skip to content

Commit 1edd532

Browse files
Sean Andersongregkh
authored andcommitted
dma-mapping: trace dma_alloc/free direction
[ Upstream commit 3afff77 ] In preparation for using these tracepoints in a few more places, trace the DMA direction as well. For coherent allocations this is always bidirectional. Signed-off-by: Sean Anderson <[email protected]> Reviewed-by: Steven Rostedt (Google) <[email protected]> Signed-off-by: Christoph Hellwig <[email protected]> Stable-dep-of: 7e2368a ("dma-debug: don't enforce dma mapping check on noncoherent allocations") Signed-off-by: Sasha Levin <[email protected]>
1 parent c39e848 commit 1edd532

File tree

2 files changed

+16
-8
lines changed

2 files changed

+16
-8
lines changed

include/trace/events/dma.h

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -116,15 +116,17 @@ DEFINE_EVENT(dma_unmap, dma_unmap_resource,
116116

117117
TRACE_EVENT(dma_alloc,
118118
TP_PROTO(struct device *dev, void *virt_addr, dma_addr_t dma_addr,
119-
size_t size, gfp_t flags, unsigned long attrs),
120-
TP_ARGS(dev, virt_addr, dma_addr, size, flags, attrs),
119+
size_t size, enum dma_data_direction dir, gfp_t flags,
120+
unsigned long attrs),
121+
TP_ARGS(dev, virt_addr, dma_addr, size, dir, flags, attrs),
121122

122123
TP_STRUCT__entry(
123124
__string(device, dev_name(dev))
124125
__field(void *, virt_addr)
125126
__field(u64, dma_addr)
126127
__field(size_t, size)
127128
__field(gfp_t, flags)
129+
__field(enum dma_data_direction, dir)
128130
__field(unsigned long, attrs)
129131
),
130132

@@ -137,8 +139,9 @@ TRACE_EVENT(dma_alloc,
137139
__entry->attrs = attrs;
138140
),
139141

140-
TP_printk("%s dma_addr=%llx size=%zu virt_addr=%p flags=%s attrs=%s",
142+
TP_printk("%s dir=%s dma_addr=%llx size=%zu virt_addr=%p flags=%s attrs=%s",
141143
__get_str(device),
144+
decode_dma_data_direction(__entry->dir),
142145
__entry->dma_addr,
143146
__entry->size,
144147
__entry->virt_addr,
@@ -148,14 +151,15 @@ TRACE_EVENT(dma_alloc,
148151

149152
TRACE_EVENT(dma_free,
150153
TP_PROTO(struct device *dev, void *virt_addr, dma_addr_t dma_addr,
151-
size_t size, unsigned long attrs),
152-
TP_ARGS(dev, virt_addr, dma_addr, size, attrs),
154+
size_t size, enum dma_data_direction dir, unsigned long attrs),
155+
TP_ARGS(dev, virt_addr, dma_addr, size, dir, attrs),
153156

154157
TP_STRUCT__entry(
155158
__string(device, dev_name(dev))
156159
__field(void *, virt_addr)
157160
__field(u64, dma_addr)
158161
__field(size_t, size)
162+
__field(enum dma_data_direction, dir)
159163
__field(unsigned long, attrs)
160164
),
161165

@@ -164,11 +168,13 @@ TRACE_EVENT(dma_free,
164168
__entry->virt_addr = virt_addr;
165169
__entry->dma_addr = dma_addr;
166170
__entry->size = size;
171+
__entry->dir = dir;
167172
__entry->attrs = attrs;
168173
),
169174

170-
TP_printk("%s dma_addr=%llx size=%zu virt_addr=%p attrs=%s",
175+
TP_printk("%s dir=%s dma_addr=%llx size=%zu virt_addr=%p attrs=%s",
171176
__get_str(device),
177+
decode_dma_data_direction(__entry->dir),
172178
__entry->dma_addr,
173179
__entry->size,
174180
__entry->virt_addr,

kernel/dma/mapping.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -619,7 +619,8 @@ void *dma_alloc_attrs(struct device *dev, size_t size, dma_addr_t *dma_handle,
619619
else
620620
return NULL;
621621

622-
trace_dma_alloc(dev, cpu_addr, *dma_handle, size, flag, attrs);
622+
trace_dma_alloc(dev, cpu_addr, *dma_handle, size, DMA_BIDIRECTIONAL,
623+
flag, attrs);
623624
debug_dma_alloc_coherent(dev, size, *dma_handle, cpu_addr, attrs);
624625
return cpu_addr;
625626
}
@@ -644,7 +645,8 @@ void dma_free_attrs(struct device *dev, size_t size, void *cpu_addr,
644645
if (!cpu_addr)
645646
return;
646647

647-
trace_dma_free(dev, cpu_addr, dma_handle, size, attrs);
648+
trace_dma_free(dev, cpu_addr, dma_handle, size, DMA_BIDIRECTIONAL,
649+
attrs);
648650
debug_dma_free_coherent(dev, size, cpu_addr, dma_handle);
649651
if (dma_alloc_direct(dev, ops))
650652
dma_direct_free(dev, size, cpu_addr, dma_handle, attrs);

0 commit comments

Comments
 (0)