Commit f74ee329 authored by Qinxin Xia's avatar Qinxin Xia Committed by Marek Szyprowski
Browse files

tools/dma: move dma_map_benchmark from selftests to tools/dma



dma_map_benchmark is a standalone developer tool rather than an
automated selftest. It has no pass/fail criteria, expects manual
invocation, and is built as a normal userspace binary. Move it to
tools/dma/ and add a minimal Makefile.

Suggested-by: default avatarMarek Szyprowski <m.szyprowski@samsung.com>
Suggested-by: default avatarBarry Song <baohua@kernel.org>
Signed-off-by: default avatarQinxin Xia <xiaqinxin@huawei.com>
Acked-by: default avatarBarry Song <baohua@kernel.org>
Signed-off-by: default avatarMarek Szyprowski <m.szyprowski@samsung.com>
Link: https://lore.kernel.org/r/20251028120900.2265511-3-xiaqinxin@huawei.com
parent 23ee8a25
Loading
Loading
Loading
Loading
+8 −5
Original line number Diff line number Diff line
/* SPDX-License-Identifier: GPL-2.0-only */
/* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */
/*
 * Copyright (C) 2022 HiSilicon Limited.
 * Copyright (C) 2022-2025 HiSilicon Limited.
 */

#ifndef _KERNEL_DMA_BENCHMARK_H
#define _KERNEL_DMA_BENCHMARK_H
#ifndef _UAPI_DMA_BENCHMARK_H
#define _UAPI_DMA_BENCHMARK_H

#include <linux/types.h>

#define DMA_MAP_BENCHMARK       _IOWR('d', 1, struct map_benchmark)
#define DMA_MAP_MAX_THREADS     1024
@@ -29,4 +31,5 @@ struct map_benchmark {
	__u32 granule;  /* how many PAGE_SIZE will do map/unmap once a time */
	__u8 expansion[76]; /* For future use */
};
#endif /* _KERNEL_DMA_BENCHMARK_H */

#endif /* _UAPI_DMA_BENCHMARK_H */
+1 −1
Original line number Diff line number Diff line
@@ -11,13 +11,13 @@
#include <linux/dma-mapping.h>
#include <linux/kernel.h>
#include <linux/kthread.h>
#include <linux/map_benchmark.h>
#include <linux/math64.h>
#include <linux/module.h>
#include <linux/pci.h>
#include <linux/platform_device.h>
#include <linux/slab.h>
#include <linux/timekeeping.h>
#include <uapi/linux/map_benchmark.h>

struct map_benchmark_data {
	struct map_benchmark bparam;
+7 −6
Original line number Diff line number Diff line
@@ -14,6 +14,7 @@ help:
	@echo '  counter                - counter tools'
	@echo '  cpupower               - a tool for all things x86 CPU power'
	@echo '  debugging              - tools for debugging'
	@echo '  dma                    - tools for DMA mapping'
	@echo '  firewire               - the userspace part of nosy, an IEEE-1394 traffic sniffer'
	@echo '  firmware               - Firmware tools'
	@echo '  freefall               - laptop accelerometer program for disk protection'
@@ -69,7 +70,7 @@ acpi: FORCE
cpupower: FORCE
	$(call descend,power/$@)

counter firewire hv guest bootconfig spi usb virtio mm bpf iio gpio objtool leds wmi firmware debugging tracing: FORCE
counter dma firewire hv guest bootconfig spi usb virtio mm bpf iio gpio objtool leds wmi firmware debugging tracing: FORCE
	$(call descend,$@)

bpf/%: FORCE
@@ -122,7 +123,7 @@ kvm_stat: FORCE
ynl: FORCE
	$(call descend,net/ynl)

all: acpi counter cpupower gpio hv firewire \
all: acpi counter cpupower dma gpio hv firewire \
		perf selftests bootconfig spi turbostat usb \
		virtio mm bpf x86_energy_perf_policy \
		tmon freefall iio objtool kvm_stat wmi \
@@ -134,7 +135,7 @@ acpi_install:
cpupower_install:
	$(call descend,power/$(@:_install=),install)

counter_install firewire_install gpio_install hv_install iio_install perf_install bootconfig_install spi_install usb_install virtio_install mm_install bpf_install objtool_install wmi_install debugging_install tracing_install:
counter_install dma_install firewire_install gpio_install hv_install iio_install perf_install bootconfig_install spi_install usb_install virtio_install mm_install bpf_install objtool_install wmi_install debugging_install tracing_install:
	$(call descend,$(@:_install=),install)

selftests_install:
@@ -164,7 +165,7 @@ kvm_stat_install:
ynl_install:
	$(call descend,net/$(@:_install=),install)

install: acpi_install counter_install cpupower_install gpio_install \
install: acpi_install counter_install cpupower_install dma_install gpio_install \
		hv_install firewire_install iio_install \
		perf_install selftests_install turbostat_install usb_install \
		virtio_install mm_install bpf_install x86_energy_perf_policy_install \
@@ -178,7 +179,7 @@ acpi_clean:
cpupower_clean:
	$(call descend,power/cpupower,clean)

counter_clean hv_clean firewire_clean bootconfig_clean spi_clean usb_clean virtio_clean mm_clean wmi_clean bpf_clean iio_clean gpio_clean objtool_clean leds_clean firmware_clean debugging_clean tracing_clean:
counter_clean dma_clean hv_clean firewire_clean bootconfig_clean spi_clean usb_clean virtio_clean mm_clean wmi_clean bpf_clean iio_clean gpio_clean objtool_clean leds_clean firmware_clean debugging_clean tracing_clean:
	$(call descend,$(@:_clean=),clean)

libapi_clean:
@@ -224,7 +225,7 @@ build_clean:
ynl_clean:
	$(call descend,net/$(@:_clean=),clean)

clean: acpi_clean counter_clean cpupower_clean hv_clean firewire_clean \
clean: acpi_clean counter_clean cpupower_clean dma_clean hv_clean firewire_clean \
		perf_clean selftests_clean turbostat_clean bootconfig_clean spi_clean usb_clean virtio_clean \
		mm_clean bpf_clean iio_clean x86_energy_perf_policy_clean tmon_clean \
		freefall_clean build_clean libbpf_clean libsubcmd_clean \

tools/dma/.gitignore

0 → 100644
+3 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0-only
dma_map_benchmark
include/linux/map_benchmark.h

tools/dma/Makefile

0 → 100644
+55 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0
include ../scripts/Makefile.include

bindir ?= /usr/bin

# This will work when dma is built in tools env. where srctree
# isn't set and when invoked from selftests build, where srctree
# is set to ".". building_out_of_srctree is undefined for in srctree
# builds
ifndef building_out_of_srctree
srctree := $(patsubst %/,%,$(dir $(CURDIR)))
srctree := $(patsubst %/,%,$(dir $(srctree)))
endif

# Do not use make's built-in rules
# (this improves performance and avoids hard-to-debug behaviour);
MAKEFLAGS += -r

override CFLAGS += -O2 -Wall -g -D_GNU_SOURCE -I$(OUTPUT)include

ALL_TARGETS := dma_map_benchmark
ALL_PROGRAMS := $(patsubst %,$(OUTPUT)%,$(ALL_TARGETS))

all: $(ALL_PROGRAMS)

export srctree OUTPUT CC LD CFLAGS
include $(srctree)/tools/build/Makefile.include

#
# We need the following to be outside of kernel tree
#
$(OUTPUT)include/linux/map_benchmark.h: ../../include/uapi/linux/map_benchmark.h
	mkdir -p $(OUTPUT)include/linux 2>&1 || true
	ln -sf $(CURDIR)/../../include/uapi/linux/map_benchmark.h $@

prepare: $(OUTPUT)include/linux/map_benchmark.h

FORCE:

DMA_MAP_BENCHMARK = dma_map_benchmark
$(DMA_MAP_BENCHMARK): prepare FORCE
	$(CC) $(CFLAGS) $(DMA_MAP_BENCHMARK).c -o $(DMA_MAP_BENCHMARK)

clean:
	rm -f $(ALL_PROGRAMS)
	rm -rf $(OUTPUT)include
	find $(or $(OUTPUT),.) -name '*.o' -delete -o -name '\.*.d' -delete -o -name '\.*.cmd' -delete

install: $(ALL_PROGRAMS)
	install -d -m 755 $(DESTDIR)$(bindir);		\
	for program in $(ALL_PROGRAMS); do		\
		install $$program $(DESTDIR)$(bindir);	\
	done

.PHONY: all install clean prepare FORCE
Loading