Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'dma-mapping-6.12-2024-09-29' of git://git.infradead.org/users/hch/dma-mapping

Pull dma-mapping fix from Christoph Hellwig:

- handle chained SGLs in the new tracing code (Christoph Hellwig)

* tag 'dma-mapping-6.12-2024-09-29' of git://git.infradead.org/users/hch/dma-mapping:
dma-mapping: fix DMA API tracing for chained scatterlists

+19 -18
+19 -18
include/trace/events/dma.h
··· 176 176 ); 177 177 178 178 TRACE_EVENT(dma_map_sg, 179 - TP_PROTO(struct device *dev, struct scatterlist *sg, int nents, 179 + TP_PROTO(struct device *dev, struct scatterlist *sgl, int nents, 180 180 int ents, enum dma_data_direction dir, unsigned long attrs), 181 - TP_ARGS(dev, sg, nents, ents, dir, attrs), 181 + TP_ARGS(dev, sgl, nents, ents, dir, attrs), 182 182 183 183 TP_STRUCT__entry( 184 184 __string(device, dev_name(dev)) ··· 190 190 ), 191 191 192 192 TP_fast_assign( 193 + struct scatterlist *sg; 193 194 int i; 194 195 195 196 __assign_str(device); 196 - for (i = 0; i < nents; i++) 197 - ((u64 *)__get_dynamic_array(phys_addrs))[i] = 198 - sg_phys(sg + i); 199 - for (i = 0; i < ents; i++) { 197 + for_each_sg(sgl, sg, nents, i) 198 + ((u64 *)__get_dynamic_array(phys_addrs))[i] = sg_phys(sg); 199 + for_each_sg(sgl, sg, ents, i) { 200 200 ((u64 *)__get_dynamic_array(dma_addrs))[i] = 201 - sg_dma_address(sg + i); 201 + sg_dma_address(sg); 202 202 ((unsigned int *)__get_dynamic_array(lengths))[i] = 203 - sg_dma_len(sg + i); 203 + sg_dma_len(sg); 204 204 } 205 205 __entry->dir = dir; 206 206 __entry->attrs = attrs; ··· 222 222 ); 223 223 224 224 TRACE_EVENT(dma_unmap_sg, 225 - TP_PROTO(struct device *dev, struct scatterlist *sg, int nents, 225 + TP_PROTO(struct device *dev, struct scatterlist *sgl, int nents, 226 226 enum dma_data_direction dir, unsigned long attrs), 227 - TP_ARGS(dev, sg, nents, dir, attrs), 227 + TP_ARGS(dev, sgl, nents, dir, attrs), 228 228 229 229 TP_STRUCT__entry( 230 230 __string(device, dev_name(dev)) ··· 234 234 ), 235 235 236 236 TP_fast_assign( 237 + struct scatterlist *sg; 237 238 int i; 238 239 239 240 __assign_str(device); 240 - for (i = 0; i < nents; i++) 241 - ((u64 *)__get_dynamic_array(addrs))[i] = 242 - sg_phys(sg + i); 241 + for_each_sg(sgl, sg, nents, i) 242 + ((u64 *)__get_dynamic_array(addrs))[i] = sg_phys(sg); 243 243 __entry->dir = dir; 244 244 __entry->attrs = attrs; 245 245 ), ··· 290 290 TP_ARGS(dev, dma_addr, size, dir)); 291 291 292 292 DECLARE_EVENT_CLASS(dma_sync_sg, 293 - TP_PROTO(struct device *dev, struct scatterlist *sg, int nents, 293 + TP_PROTO(struct device *dev, struct scatterlist *sgl, int nents, 294 294 enum dma_data_direction dir), 295 - TP_ARGS(dev, sg, nents, dir), 295 + TP_ARGS(dev, sgl, nents, dir), 296 296 297 297 TP_STRUCT__entry( 298 298 __string(device, dev_name(dev)) ··· 302 302 ), 303 303 304 304 TP_fast_assign( 305 + struct scatterlist *sg; 305 306 int i; 306 307 307 308 __assign_str(device); 308 - for (i = 0; i < nents; i++) { 309 + for_each_sg(sgl, sg, nents, i) { 309 310 ((u64 *)__get_dynamic_array(dma_addrs))[i] = 310 - sg_dma_address(sg + i); 311 + sg_dma_address(sg); 311 312 ((unsigned int *)__get_dynamic_array(lengths))[i] = 312 - sg_dma_len(sg + i); 313 + sg_dma_len(sg); 313 314 } 314 315 __entry->dir = dir; 315 316 ),