mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
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: Marek Szyprowski <m.szyprowski@samsung.com> Suggested-by: Barry Song <baohua@kernel.org> Signed-off-by: Qinxin Xia <xiaqinxin@huawei.com> Acked-by: Barry Song <baohua@kernel.org> Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com> Link: https://lore.kernel.org/r/20251028120900.2265511-3-xiaqinxin@huawei.com
This commit is contained in:
committed by
Marek Szyprowski
parent
23ee8a2563
commit
f74ee32963
@@ -1,10 +1,12 @@
|
||||
/* 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 */
|
||||
@@ -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;
|
||||
|
||||
@@ -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 \
|
||||
|
||||
3
tools/dma/.gitignore
vendored
Normal file
3
tools/dma/.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
dma_map_benchmark
|
||||
include/linux/map_benchmark.h
|
||||
55
tools/dma/Makefile
Normal file
55
tools/dma/Makefile
Normal file
@@ -0,0 +1,55 @@
|
||||
# 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
|
||||
@@ -10,7 +10,6 @@
|
||||
#include <unistd.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <sys/mman.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/map_benchmark.h>
|
||||
|
||||
#define NSEC_PER_MSEC 1000000L
|
||||
@@ -1,7 +0,0 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
CFLAGS += -I../../../../usr/include/
|
||||
CFLAGS += -I../../../../include/
|
||||
|
||||
TEST_GEN_PROGS := dma_map_benchmark
|
||||
|
||||
include ../lib.mk
|
||||
Reference in New Issue
Block a user