mirror of
https://github.com/torvalds/linux.git
synced 2025-04-09 14:45:27 +00:00

-----BEGIN PGP SIGNATURE----- iQJEBAABCAAuFiEEwPw5LcreJtl1+l5K99NY+ylx4KYFAmfe8DcQHGF4Ym9lQGtl cm5lbC5kawAKCRD301j7KXHgprzNEADPOOfi05F0f4KOMLYOiRlB+D9yGtnbcu8k foPATU++L5fFDUpjAGobi38AXqHtF/Bx0CjCkPCvy4GjygcszYDY81FQmRlSFdeH CnYV/bm5myyupc8xANcWGJYpxf/ZAw7ugOAgcR3Xxk/qXdD5hYJ1jG4477o8v4IJ jyzE4vQCnWBogIoqpWTQyY3FSP5fdjeQlYdFGIFCx68rFTO9zEpuHhFr2OMfJtSu y1dLkeqbu1BZ0fhgRog9k9ZWk0uRQJI7d7EUXf9iwXOfkUyzCaV+nHvNGRdhJ/XO zj/qePw4lFyCgc+kuIejjIaPf/g84paCzshz/PIxOZTsvo6X78zj72RPM0Makhga amgtEqegWHtKSya1zew57oDwqwaIe6b+56PtNSP7K8IrwcJLheszoPKJIwiiynIL ZqvWseqYQXs58S9qZzSZlyEpwLVFcvyNt7Z/q7b56vhvXHabxOccPkUHt+UscVoQ qpG0R9+zmIiDfzY6Vfu7JyH2Uspdq3WjGYiaoVUko1rJXY+HFPd3be9pIbckyaA8 ZQHIxB+h8IlxhpQ8HJKQpZhtYiluxEu6wDdvtpwC0KiGp5g4Q5eg9SkVyvETIEN8 yW2tHqMAJJtJjDAPwJOV+GIyWQMIexzLmMP7Fq8R5VIoAox+Xn3flgNNEnMZdl/r kTc/hRjHvQ== =VEQr -----END PGP SIGNATURE----- Merge tag 'for-6.15/io_uring-20250322' of git://git.kernel.dk/linux Pull io_uring updates from Jens Axboe: "This is the first of the io_uring pull requests for the 6.15 merge window, there will be others once the net tree has gone in. This contains: - Cleanup and unification of cancelation handling across various request types. - Improvement for bundles, supporting them both for incrementally consumed buffers, and for non-multishot requests. - Enable toggling of using iowait while waiting on io_uring events or not. Unfortunately this is still tied with CPU frequency boosting on short waits, as the scheduler side has not been very receptive to splitting the (useless) iowait stat from the cpufreq implied boost. - Add support for kbuf nodes, enabling zero-copy support for the ublk block driver. - Various cleanups for resource node handling. - Series greatly cleaning up the legacy provided (non-ring based) buffers. For years, we've been pushing the ring provided buffers as the way to go, and that is what people have been using. Reduce the complexity and code associated with legacy provided buffers. - Series cleaning up the compat handling. - Series improving and cleaning up the recvmsg/sendmsg iovec and msg handling. - Series of cleanups for io-wq. - Start adding a bunch of selftests. The liburing repository generally carries feature and regression tests for everything, but at least for ublk initially, we'll try and go the route of having it in selftests as well. We'll see how this goes, might decide to migrate more tests this way in the future. - Various little cleanups and fixes" * tag 'for-6.15/io_uring-20250322' of git://git.kernel.dk/linux: (108 commits) selftests: ublk: add stripe target selftests: ublk: simplify loop io completion selftests: ublk: enable zero copy for null target selftests: ublk: prepare for supporting stripe target selftests: ublk: move common code into common.c selftests: ublk: increase max buffer size to 1MB selftests: ublk: add single sqe allocator helper selftests: ublk: add generic_01 for verifying sequential IO order selftests: ublk: fix starting ublk device io_uring: enable toggle of iowait usage when waiting on CQEs selftests: ublk: fix write cache implementation selftests: ublk: add variable for user to not show test result selftests: ublk: don't show `modprobe` failure selftests: ublk: add one dependency header io_uring/kbuf: enable bundles for incrementally consumed buffers Revert "io_uring/rsrc: simplify the bvec iter count calculation" selftests: ublk: improve test usability selftests: ublk: add stress test for covering IO vs. killing ublk server selftests: ublk: add one stress test for covering IO vs. removing device selftests: ublk: load/unload ublk_drv when preparing & cleaning up tests ...
309 lines
8.6 KiB
Makefile
309 lines
8.6 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0
|
|
TARGETS += acct
|
|
TARGETS += alsa
|
|
TARGETS += amd-pstate
|
|
TARGETS += arm64
|
|
TARGETS += bpf
|
|
TARGETS += breakpoints
|
|
TARGETS += cachestat
|
|
TARGETS += capabilities
|
|
TARGETS += cgroup
|
|
TARGETS += clone3
|
|
TARGETS += connector
|
|
TARGETS += core
|
|
TARGETS += cpufreq
|
|
TARGETS += cpu-hotplug
|
|
TARGETS += damon
|
|
TARGETS += devices/error_logs
|
|
TARGETS += devices/probe
|
|
TARGETS += dmabuf-heaps
|
|
TARGETS += drivers/dma-buf
|
|
TARGETS += drivers/ntsync
|
|
TARGETS += drivers/s390x/uvdevice
|
|
TARGETS += drivers/net
|
|
TARGETS += drivers/net/bonding
|
|
TARGETS += drivers/net/team
|
|
TARGETS += drivers/net/virtio_net
|
|
TARGETS += drivers/platform/x86/intel/ifs
|
|
TARGETS += dt
|
|
TARGETS += efivarfs
|
|
TARGETS += exec
|
|
TARGETS += fchmodat2
|
|
TARGETS += filesystems
|
|
TARGETS += filesystems/binderfs
|
|
TARGETS += filesystems/epoll
|
|
TARGETS += filesystems/fat
|
|
TARGETS += filesystems/overlayfs
|
|
TARGETS += filesystems/statmount
|
|
TARGETS += filesystems/mount-notify
|
|
TARGETS += firmware
|
|
TARGETS += fpu
|
|
TARGETS += ftrace
|
|
TARGETS += futex
|
|
TARGETS += gpio
|
|
TARGETS += hid
|
|
TARGETS += intel_pstate
|
|
TARGETS += iommu
|
|
TARGETS += ipc
|
|
TARGETS += ir
|
|
TARGETS += kcmp
|
|
TARGETS += kexec
|
|
TARGETS += kvm
|
|
TARGETS += landlock
|
|
TARGETS += lib
|
|
TARGETS += livepatch
|
|
TARGETS += lkdtm
|
|
TARGETS += lsm
|
|
TARGETS += membarrier
|
|
TARGETS += memfd
|
|
TARGETS += memory-hotplug
|
|
TARGETS += mincore
|
|
TARGETS += mount
|
|
TARGETS += mount_setattr
|
|
TARGETS += move_mount_set_group
|
|
TARGETS += mqueue
|
|
TARGETS += nci
|
|
TARGETS += net
|
|
TARGETS += net/af_unix
|
|
TARGETS += net/forwarding
|
|
TARGETS += net/hsr
|
|
TARGETS += net/mptcp
|
|
TARGETS += net/netfilter
|
|
TARGETS += net/openvswitch
|
|
TARGETS += net/packetdrill
|
|
TARGETS += net/rds
|
|
TARGETS += net/tcp_ao
|
|
TARGETS += nsfs
|
|
TARGETS += pci_endpoint
|
|
TARGETS += pcie_bwctrl
|
|
TARGETS += perf_events
|
|
TARGETS += pidfd
|
|
TARGETS += pid_namespace
|
|
TARGETS += power_supply
|
|
TARGETS += powerpc
|
|
TARGETS += prctl
|
|
TARGETS += proc
|
|
TARGETS += pstore
|
|
TARGETS += ptrace
|
|
TARGETS += openat2
|
|
TARGETS += resctrl
|
|
TARGETS += riscv
|
|
TARGETS += rlimits
|
|
TARGETS += rseq
|
|
TARGETS += rtc
|
|
TARGETS += rust
|
|
TARGETS += sched_ext
|
|
TARGETS += seccomp
|
|
TARGETS += sgx
|
|
TARGETS += signal
|
|
TARGETS += size
|
|
TARGETS += sparc64
|
|
TARGETS += splice
|
|
TARGETS += static_keys
|
|
TARGETS += sync
|
|
TARGETS += syscall_user_dispatch
|
|
TARGETS += sysctl
|
|
TARGETS += tc-testing
|
|
TARGETS += tdx
|
|
TARGETS += thermal/intel/power_floor
|
|
TARGETS += thermal/intel/workload_hint
|
|
TARGETS += timens
|
|
ifneq (1, $(quicktest))
|
|
TARGETS += timers
|
|
endif
|
|
TARGETS += tmpfs
|
|
TARGETS += tpm2
|
|
TARGETS += tty
|
|
TARGETS += ublk
|
|
TARGETS += uevent
|
|
TARGETS += user_events
|
|
TARGETS += vDSO
|
|
TARGETS += mm
|
|
TARGETS += x86
|
|
TARGETS += zram
|
|
#Please keep the TARGETS list alphabetically sorted
|
|
# Run "make quicktest=1 run_tests" or
|
|
# "make quicktest=1 kselftest" from top level Makefile
|
|
|
|
TARGETS_HOTPLUG = cpu-hotplug
|
|
TARGETS_HOTPLUG += memory-hotplug
|
|
|
|
# Networking tests want the net/lib target, include it automatically
|
|
ifneq ($(filter net drivers/net drivers/net/hw,$(TARGETS)),)
|
|
ifeq ($(filter net/lib,$(TARGETS)),)
|
|
INSTALL_DEP_TARGETS := net/lib
|
|
endif
|
|
endif
|
|
|
|
# User can optionally provide a TARGETS skiplist. By default we skip
|
|
# targets using BPF since it has cutting edge build time dependencies
|
|
# which require more effort to install.
|
|
SKIP_TARGETS ?= bpf sched_ext
|
|
ifneq ($(SKIP_TARGETS),)
|
|
TMP := $(filter-out $(SKIP_TARGETS), $(TARGETS))
|
|
override TARGETS := $(TMP)
|
|
endif
|
|
|
|
# User can set FORCE_TARGETS to 1 to require all targets to be successfully
|
|
# built; make will fail if any of the targets cannot be built. If
|
|
# FORCE_TARGETS is not set (the default), make will succeed if at least one
|
|
# of the targets gets built.
|
|
FORCE_TARGETS ?=
|
|
|
|
# Clear LDFLAGS and MAKEFLAGS when implicit rules are missing. This provides
|
|
# implicit rules to sub-test Makefiles which avoids build failures in test
|
|
# Makefile that don't have explicit build rules.
|
|
ifeq (,$(LINK.c))
|
|
override LDFLAGS =
|
|
override MAKEFLAGS =
|
|
endif
|
|
|
|
# Append kselftest to KBUILD_OUTPUT and O to avoid cluttering
|
|
# KBUILD_OUTPUT with selftest objects and headers installed
|
|
# by selftests Makefile or lib.mk.
|
|
ifdef building_out_of_srctree
|
|
override LDFLAGS =
|
|
endif
|
|
|
|
top_srcdir ?= ../../..
|
|
|
|
ifeq ("$(origin O)", "command line")
|
|
KBUILD_OUTPUT := $(O)
|
|
endif
|
|
|
|
ifneq ($(KBUILD_OUTPUT),)
|
|
# Make's built-in functions such as $(abspath ...), $(realpath ...) cannot
|
|
# expand a shell special character '~'. We use a somewhat tedious way here.
|
|
abs_objtree := $(shell cd $(top_srcdir) && mkdir -p $(KBUILD_OUTPUT) && cd $(KBUILD_OUTPUT) && pwd)
|
|
$(if $(abs_objtree),, \
|
|
$(error failed to create output directory "$(KBUILD_OUTPUT)"))
|
|
# $(realpath ...) resolves symlinks
|
|
abs_objtree := $(realpath $(abs_objtree))
|
|
BUILD := $(abs_objtree)/kselftest
|
|
KHDR_INCLUDES := -isystem ${abs_objtree}/usr/include
|
|
else
|
|
BUILD := $(CURDIR)
|
|
abs_srctree := $(shell cd $(top_srcdir) && pwd)
|
|
KHDR_INCLUDES := -isystem ${abs_srctree}/usr/include
|
|
DEFAULT_INSTALL_HDR_PATH := 1
|
|
endif
|
|
|
|
# Prepare for headers install
|
|
include $(top_srcdir)/scripts/subarch.include
|
|
ARCH ?= $(SUBARCH)
|
|
export BUILD
|
|
export KHDR_INCLUDES
|
|
|
|
# set default goal to all, so make without a target runs all, even when
|
|
# all isn't the first target in the file.
|
|
.DEFAULT_GOAL := all
|
|
|
|
all:
|
|
@ret=1; \
|
|
for TARGET in $(TARGETS); do \
|
|
BUILD_TARGET=$$BUILD/$$TARGET; \
|
|
mkdir $$BUILD_TARGET -p; \
|
|
$(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET \
|
|
O=$(abs_objtree) \
|
|
$(if $(FORCE_TARGETS),|| exit); \
|
|
ret=$$((ret * $$?)); \
|
|
done; exit $$ret;
|
|
|
|
run_tests: all
|
|
@for TARGET in $(TARGETS); do \
|
|
BUILD_TARGET=$$BUILD/$$TARGET; \
|
|
$(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET run_tests \
|
|
SRC_PATH=$(shell readlink -e $$(pwd)) \
|
|
OBJ_PATH=$(BUILD) \
|
|
O=$(abs_objtree); \
|
|
done;
|
|
|
|
hotplug:
|
|
@for TARGET in $(TARGETS_HOTPLUG); do \
|
|
BUILD_TARGET=$$BUILD/$$TARGET; \
|
|
$(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET;\
|
|
done;
|
|
|
|
run_hotplug: hotplug
|
|
@for TARGET in $(TARGETS_HOTPLUG); do \
|
|
BUILD_TARGET=$$BUILD/$$TARGET; \
|
|
$(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET run_full_test;\
|
|
done;
|
|
|
|
clean_hotplug:
|
|
@for TARGET in $(TARGETS_HOTPLUG); do \
|
|
BUILD_TARGET=$$BUILD/$$TARGET; \
|
|
$(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET clean;\
|
|
done;
|
|
|
|
run_pstore_crash:
|
|
$(MAKE) -C pstore run_crash
|
|
|
|
# Use $BUILD as the default install root. $BUILD points to the
|
|
# right output location for the following cases:
|
|
# 1. output_dir=kernel_src
|
|
# 2. a separate output directory is specified using O= KBUILD_OUTPUT
|
|
# 3. a separate output directory is specified using KBUILD_OUTPUT
|
|
# Avoid conflict with INSTALL_PATH set by the main Makefile
|
|
#
|
|
KSFT_INSTALL_PATH ?= $(BUILD)/kselftest_install
|
|
KSFT_INSTALL_PATH := $(abspath $(KSFT_INSTALL_PATH))
|
|
# Avoid changing the rest of the logic here and lib.mk.
|
|
INSTALL_PATH := $(KSFT_INSTALL_PATH)
|
|
ALL_SCRIPT := $(INSTALL_PATH)/run_kselftest.sh
|
|
TEST_LIST := $(INSTALL_PATH)/kselftest-list.txt
|
|
|
|
install: all
|
|
ifdef INSTALL_PATH
|
|
@# Ask all targets to install their files
|
|
mkdir -p $(INSTALL_PATH)/kselftest
|
|
install -m 744 kselftest/module.sh $(INSTALL_PATH)/kselftest/
|
|
install -m 744 kselftest/runner.sh $(INSTALL_PATH)/kselftest/
|
|
install -m 744 kselftest/prefix.pl $(INSTALL_PATH)/kselftest/
|
|
install -m 744 kselftest/ktap_helpers.sh $(INSTALL_PATH)/kselftest/
|
|
install -m 744 kselftest/ksft.py $(INSTALL_PATH)/kselftest/
|
|
install -m 744 run_kselftest.sh $(INSTALL_PATH)/
|
|
rm -f $(TEST_LIST)
|
|
@ret=1; \
|
|
for TARGET in $(TARGETS) $(INSTALL_DEP_TARGETS); do \
|
|
BUILD_TARGET=$$BUILD/$$TARGET; \
|
|
$(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET install \
|
|
INSTALL_PATH=$(INSTALL_PATH)/$$TARGET \
|
|
SRC_PATH=$(shell readlink -e $$(pwd)) \
|
|
OBJ_PATH=$(INSTALL_PATH) \
|
|
O=$(abs_objtree) \
|
|
$(if $(FORCE_TARGETS),|| exit); \
|
|
ret=$$((ret * $$?)); \
|
|
done; exit $$ret;
|
|
|
|
|
|
@# Ask all targets to emit their test scripts
|
|
@# While building kselftest-list.text skip also non-existent TARGET dirs:
|
|
@# they could be the result of a build failure and should NOT be
|
|
@# included in the generated runlist.
|
|
for TARGET in $(TARGETS); do \
|
|
BUILD_TARGET=$$BUILD/$$TARGET; \
|
|
[ ! -d $(INSTALL_PATH)/$$TARGET ] && printf "Skipping non-existent dir: $$TARGET\n" && continue; \
|
|
printf "Emit Tests for $$TARGET\n"; \
|
|
$(MAKE) -s --no-print-directory OUTPUT=$$BUILD_TARGET COLLECTION=$$TARGET \
|
|
-C $$TARGET emit_tests >> $(TEST_LIST); \
|
|
done;
|
|
else
|
|
$(error Error: set INSTALL_PATH to use install)
|
|
endif
|
|
|
|
FORMAT ?= .gz
|
|
TAR_PATH = $(abspath ${INSTALL_PATH}/kselftest-packages/kselftest.tar${FORMAT})
|
|
gen_tar: install
|
|
@mkdir -p ${INSTALL_PATH}/kselftest-packages/
|
|
@tar caf ${TAR_PATH} --exclude=kselftest-packages -C ${INSTALL_PATH} .
|
|
@echo "Created ${TAR_PATH}"
|
|
|
|
clean:
|
|
@for TARGET in $(TARGETS); do \
|
|
BUILD_TARGET=$$BUILD/$$TARGET; \
|
|
$(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET clean;\
|
|
done;
|
|
|
|
.PHONY: all run_tests hotplug run_hotplug clean_hotplug run_pstore_crash install clean gen_tar
|