Lines Matching refs:map

38 	struct map_benchmark_data *map = data;  in map_benchmark_thread()  local
39 int npages = map->bparam.granule; in map_benchmark_thread()
58 if (map->dir != DMA_FROM_DEVICE) in map_benchmark_thread()
62 dma_addr = dma_map_single(map->dev, buf, size, map->dir); in map_benchmark_thread()
63 if (unlikely(dma_mapping_error(map->dev, dma_addr))) { in map_benchmark_thread()
65 dev_name(map->dev)); in map_benchmark_thread()
73 ndelay(map->bparam.dma_trans_ns); in map_benchmark_thread()
76 dma_unmap_single(map->dev, dma_addr, size, map->dir); in map_benchmark_thread()
87 atomic64_add(map_100ns, &map->sum_map_100ns); in map_benchmark_thread()
88 atomic64_add(unmap_100ns, &map->sum_unmap_100ns); in map_benchmark_thread()
89 atomic64_add(map_sq, &map->sum_sq_map); in map_benchmark_thread()
90 atomic64_add(unmap_sq, &map->sum_sq_unmap); in map_benchmark_thread()
91 atomic64_inc(&map->loops); in map_benchmark_thread()
99 static int do_map_benchmark(struct map_benchmark_data *map) in do_map_benchmark() argument
102 int threads = map->bparam.threads; in do_map_benchmark()
103 int node = map->bparam.node; in do_map_benchmark()
113 get_device(map->dev); in do_map_benchmark()
116 tsk[i] = kthread_create_on_node(map_benchmark_thread, map, in do_map_benchmark()
117 map->bparam.node, "dma-map-benchmark/%d", i); in do_map_benchmark()
129 atomic64_set(&map->sum_map_100ns, 0); in do_map_benchmark()
130 atomic64_set(&map->sum_unmap_100ns, 0); in do_map_benchmark()
131 atomic64_set(&map->sum_sq_map, 0); in do_map_benchmark()
132 atomic64_set(&map->sum_sq_unmap, 0); in do_map_benchmark()
133 atomic64_set(&map->loops, 0); in do_map_benchmark()
140 msleep_interruptible(map->bparam.seconds * 1000); in do_map_benchmark()
149 loops = atomic64_read(&map->loops); in do_map_benchmark()
152 u64 sum_map = atomic64_read(&map->sum_map_100ns); in do_map_benchmark()
153 u64 sum_unmap = atomic64_read(&map->sum_unmap_100ns); in do_map_benchmark()
154 u64 sum_sq_map = atomic64_read(&map->sum_sq_map); in do_map_benchmark()
155 u64 sum_sq_unmap = atomic64_read(&map->sum_sq_unmap); in do_map_benchmark()
158 map->bparam.avg_map_100ns = div64_u64(sum_map, loops); in do_map_benchmark()
159 map->bparam.avg_unmap_100ns = div64_u64(sum_unmap, loops); in do_map_benchmark()
163 map->bparam.avg_map_100ns * in do_map_benchmark()
164 map->bparam.avg_map_100ns; in do_map_benchmark()
166 map->bparam.avg_unmap_100ns * in do_map_benchmark()
167 map->bparam.avg_unmap_100ns; in do_map_benchmark()
168 map->bparam.map_stddev = int_sqrt64(map_variance); in do_map_benchmark()
169 map->bparam.unmap_stddev = int_sqrt64(unmap_variance); in do_map_benchmark()
175 put_device(map->dev); in do_map_benchmark()
183 struct map_benchmark_data *map = file->private_data; in map_benchmark_ioctl() local
188 if (copy_from_user(&map->bparam, argp, sizeof(map->bparam))) in map_benchmark_ioctl()
193 if (map->bparam.threads == 0 || in map_benchmark_ioctl()
194 map->bparam.threads > DMA_MAP_MAX_THREADS) { in map_benchmark_ioctl()
199 if (map->bparam.seconds == 0 || in map_benchmark_ioctl()
200 map->bparam.seconds > DMA_MAP_MAX_SECONDS) { in map_benchmark_ioctl()
205 if (map->bparam.dma_trans_ns > DMA_MAP_MAX_TRANS_DELAY) { in map_benchmark_ioctl()
210 if (map->bparam.node != NUMA_NO_NODE && in map_benchmark_ioctl()
211 !node_possible(map->bparam.node)) { in map_benchmark_ioctl()
216 if (map->bparam.granule < 1 || map->bparam.granule > 1024) { in map_benchmark_ioctl()
221 switch (map->bparam.dma_dir) { in map_benchmark_ioctl()
223 map->dir = DMA_BIDIRECTIONAL; in map_benchmark_ioctl()
226 map->dir = DMA_FROM_DEVICE; in map_benchmark_ioctl()
229 map->dir = DMA_TO_DEVICE; in map_benchmark_ioctl()
236 old_dma_mask = dma_get_mask(map->dev); in map_benchmark_ioctl()
238 ret = dma_set_mask(map->dev, in map_benchmark_ioctl()
239 DMA_BIT_MASK(map->bparam.dma_bits)); in map_benchmark_ioctl()
242 dev_name(map->dev)); in map_benchmark_ioctl()
246 ret = do_map_benchmark(map); in map_benchmark_ioctl()
254 dma_set_mask(map->dev, old_dma_mask); in map_benchmark_ioctl()
260 if (copy_to_user(argp, &map->bparam, sizeof(map->bparam))) in map_benchmark_ioctl()
273 struct map_benchmark_data *map = (struct map_benchmark_data *)data; in map_benchmark_remove_debugfs() local
275 debugfs_remove(map->debugfs); in map_benchmark_remove_debugfs()
281 struct map_benchmark_data *map; in __map_benchmark_probe() local
284 map = devm_kzalloc(dev, sizeof(*map), GFP_KERNEL); in __map_benchmark_probe()
285 if (!map) in __map_benchmark_probe()
287 map->dev = dev; in __map_benchmark_probe()
289 ret = devm_add_action(dev, map_benchmark_remove_debugfs, map); in __map_benchmark_probe()
299 entry = debugfs_create_file("dma_map_benchmark", 0600, NULL, map, in __map_benchmark_probe()
303 map->debugfs = entry; in __map_benchmark_probe()