* [PATCH V2 00/10] selftests: Fix separate output directory builds
@ 2022-01-19 10:15 Muhammad Usama Anjum
2022-01-19 10:15 ` [PATCH V2 01/10] selftests: set the BUILD variable to absolute path Muhammad Usama Anjum
` (9 more replies)
0 siblings, 10 replies; 15+ messages in thread
From: Muhammad Usama Anjum @ 2022-01-19 10:15 UTC (permalink / raw)
To: Shuah Khan, Thomas Gleixner, Ingo Molnar, Peter Zijlstra,
Darren Hart, Davidlohr Bueso, André Almeida, Paolo Bonzini,
Mickaël Salaün, David S. Miller, Jakub Kicinski,
Mat Martineau, Matthieu Baerts, Andrew Morton, chiminghao,
open list:KERNEL SELFTEST FRAMEWORK, open list,
open list:KERNEL VIRTUAL MACHINE (KVM),
open list:LANDLOCK SECURITY MODULE,
open list:NETWORKING [GENERAL], open list:NETWORKING [MPTCP],
open list:MEMORY MANAGEMENT
Cc: Muhammad Usama Anjum, kernel
Build of several selftests fail if separate output directory is
specified by the following methods:
1) make -C tools/testing/selftests O=<build_dir>
2) export KBUILD_OUTPUT="build_dir"; make -C tools/testing/selftests
Build fails because of several reasons:
1) The kernel headers aren't found.
2) The path of output objects is wrong and hence unaccessible.
These problems can be solved by:
1) Including the correct path of uapi header files
2) By setting the BUILD variable correctly inside Makefile
Following different build scenarios have been tested after making these
changes to verify that nothing gets broken with these changes:
make -C tools/testing/selftests
make -C tools/testing/selftests/futex
make -C tools/testing/selftests/kvm
make -C tools/testing/selftests/landlock
make -C tools/testing/selftests/net
make -C tools/testing/selftests/net/mptcp
make -C tools/testing/selftests/vm
make -C tools/testing/selftests O=build
make -C tools/testing/selftests o=/opt/build
export KBUILD_OUTPUT="/opt/build"; make -C tools/testing/selftests
export KBUILD_OUTPUT="build"; make -C tools/testing/selftests
cd <any_dir>; make -C <src_path>/tools/testing/selftests
cd <any_dir>; make -C <src_path>/tools/testing/selftests O=build
---
Changes in V2:
Revert the excessive cleanup which was breaking the individual
test build.
Muhammad Usama Anjum (10):
selftests: set the BUILD variable to absolute path
selftests: Add and export a kernel uapi headers path
selftests: Correct the headers install path
selftests: futex: Add the uapi headers include variable
selftests: kvm: Add the uapi headers include variable
selftests: landlock: Add the uapi headers include variable
selftests: net: Add the uapi headers include variable
selftests: mptcp: Add the uapi headers include variable
selftests: vm: Add the uapi headers include variable
selftests: vm: remove dependecy from internal kernel macros
tools/testing/selftests/Makefile | 32 +++++++++++++------
.../selftests/futex/functional/Makefile | 5 ++-
tools/testing/selftests/kvm/Makefile | 2 +-
tools/testing/selftests/landlock/Makefile | 2 +-
tools/testing/selftests/net/Makefile | 2 +-
tools/testing/selftests/net/mptcp/Makefile | 2 +-
tools/testing/selftests/vm/Makefile | 2 +-
tools/testing/selftests/vm/userfaultfd.c | 3 ++
8 files changed, 32 insertions(+), 18 deletions(-)
--
2.30.2
^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH V2 01/10] selftests: set the BUILD variable to absolute path
2022-01-19 10:15 [PATCH V2 00/10] selftests: Fix separate output directory builds Muhammad Usama Anjum
@ 2022-01-19 10:15 ` Muhammad Usama Anjum
2022-01-19 10:15 ` [PATCH V2 02/10] selftests: Add and export a kernel uapi headers path Muhammad Usama Anjum
` (8 subsequent siblings)
9 siblings, 0 replies; 15+ messages in thread
From: Muhammad Usama Anjum @ 2022-01-19 10:15 UTC (permalink / raw)
To: Shuah Khan, Thomas Gleixner, Ingo Molnar, Peter Zijlstra,
Darren Hart, Davidlohr Bueso, André Almeida, Paolo Bonzini,
Mickaël Salaün, David S. Miller, Jakub Kicinski,
Mat Martineau, Matthieu Baerts, Andrew Morton, chiminghao,
open list:KERNEL SELFTEST FRAMEWORK, open list,
open list:KERNEL VIRTUAL MACHINE (KVM),
open list:LANDLOCK SECURITY MODULE,
open list:NETWORKING [GENERAL], open list:NETWORKING [MPTCP],
open list:MEMORY MANAGEMENT
Cc: Muhammad Usama Anjum, kernel
The build of kselftests fails if relative path is specified through
KBUILD_OUTPUT or O=<path> method. BUILD variable is used to determine
the path of the output objects. When make is run from other directories
with relative paths, the exact path of the build objects is ambiguous
and build fails.
make[1]: Entering directory '/home/usama/repos/kernel/linux_mainline2/tools/testing/selftests/alsa'
gcc mixer-test.c -L/usr/lib/x86_64-linux-gnu -lasound -o build/kselftest/alsa/mixer-test
/usr/bin/ld: cannot open output file build/kselftest/alsa/mixer-test
Set the BUILD variable to the absolute path of the output directory.
Make the logic readable and easy to follow. Use spaces instead of tabs
for indentation as if with tab indentation is considered recipe in make.
Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
---
tools/testing/selftests/Makefile | 26 +++++++++++++++++---------
1 file changed, 17 insertions(+), 9 deletions(-)
diff --git a/tools/testing/selftests/Makefile b/tools/testing/selftests/Makefile
index d08fe4cfe811..a7b63860b7bc 100644
--- a/tools/testing/selftests/Makefile
+++ b/tools/testing/selftests/Makefile
@@ -114,19 +114,27 @@ ifdef building_out_of_srctree
override LDFLAGS =
endif
-ifneq ($(O),)
- BUILD := $(O)/kselftest
+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
else
- ifneq ($(KBUILD_OUTPUT),)
- BUILD := $(KBUILD_OUTPUT)/kselftest
- else
- BUILD := $(shell pwd)
- DEFAULT_INSTALL_HDR_PATH := 1
- endif
+ BUILD := $(CURDIR)
+ DEFAULT_INSTALL_HDR_PATH := 1
endif
# Prepare for headers install
-top_srcdir ?= ../../..
include $(top_srcdir)/scripts/subarch.include
ARCH ?= $(SUBARCH)
export KSFT_KHDR_INSTALL_DONE := 1
--
2.30.2
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH V2 02/10] selftests: Add and export a kernel uapi headers path
2022-01-19 10:15 [PATCH V2 00/10] selftests: Fix separate output directory builds Muhammad Usama Anjum
2022-01-19 10:15 ` [PATCH V2 01/10] selftests: set the BUILD variable to absolute path Muhammad Usama Anjum
@ 2022-01-19 10:15 ` Muhammad Usama Anjum
2022-01-19 10:15 ` [PATCH V2 03/10] selftests: Correct the headers install path Muhammad Usama Anjum
` (7 subsequent siblings)
9 siblings, 0 replies; 15+ messages in thread
From: Muhammad Usama Anjum @ 2022-01-19 10:15 UTC (permalink / raw)
To: Shuah Khan, Thomas Gleixner, Ingo Molnar, Peter Zijlstra,
Darren Hart, Davidlohr Bueso, André Almeida, Paolo Bonzini,
Mickaël Salaün, David S. Miller, Jakub Kicinski,
Mat Martineau, Matthieu Baerts, Andrew Morton, chiminghao,
open list:KERNEL SELFTEST FRAMEWORK, open list,
open list:KERNEL VIRTUAL MACHINE (KVM),
open list:LANDLOCK SECURITY MODULE,
open list:NETWORKING [GENERAL], open list:NETWORKING [MPTCP],
open list:MEMORY MANAGEMENT
Cc: Muhammad Usama Anjum, kernel
Kernel uapi headers can be present at different paths depending upon
how the build was invoked. It becomes impossible for the tests to
include the correct headers directory. Set and export KHDR_INCLUDES
variable to make it possible for sub make files to include the header
files.
Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
---
tools/testing/selftests/Makefile | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/tools/testing/selftests/Makefile b/tools/testing/selftests/Makefile
index a7b63860b7bc..21f983dfd047 100644
--- a/tools/testing/selftests/Makefile
+++ b/tools/testing/selftests/Makefile
@@ -129,8 +129,11 @@ ifneq ($(KBUILD_OUTPUT),)
# $(realpath ...) resolves symlinks
abs_objtree := $(realpath $(abs_objtree))
BUILD := $(abs_objtree)/kselftest
+ KHDR_INCLUDES := -I${abs_objtree}/usr/include
else
BUILD := $(CURDIR)
+ abs_srctree := $(shell cd $(top_srcdir) && pwd)
+ KHDR_INCLUDES := -I${abs_srctree}/usr/include
DEFAULT_INSTALL_HDR_PATH := 1
endif
@@ -139,6 +142,7 @@ include $(top_srcdir)/scripts/subarch.include
ARCH ?= $(SUBARCH)
export KSFT_KHDR_INSTALL_DONE := 1
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.
--
2.30.2
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH V2 03/10] selftests: Correct the headers install path
2022-01-19 10:15 [PATCH V2 00/10] selftests: Fix separate output directory builds Muhammad Usama Anjum
2022-01-19 10:15 ` [PATCH V2 01/10] selftests: set the BUILD variable to absolute path Muhammad Usama Anjum
2022-01-19 10:15 ` [PATCH V2 02/10] selftests: Add and export a kernel uapi headers path Muhammad Usama Anjum
@ 2022-01-19 10:15 ` Muhammad Usama Anjum
2022-01-19 10:15 ` [PATCH V2 04/10] selftests: futex: Add the uapi headers include variable Muhammad Usama Anjum
` (6 subsequent siblings)
9 siblings, 0 replies; 15+ messages in thread
From: Muhammad Usama Anjum @ 2022-01-19 10:15 UTC (permalink / raw)
To: Shuah Khan, Thomas Gleixner, Ingo Molnar, Peter Zijlstra,
Darren Hart, Davidlohr Bueso, André Almeida, Paolo Bonzini,
Mickaël Salaün, David S. Miller, Jakub Kicinski,
Mat Martineau, Matthieu Baerts, Andrew Morton, chiminghao,
open list:KERNEL SELFTEST FRAMEWORK, open list,
open list:KERNEL VIRTUAL MACHINE (KVM),
open list:LANDLOCK SECURITY MODULE,
open list:NETWORKING [GENERAL], open list:NETWORKING [MPTCP],
open list:MEMORY MANAGEMENT
Cc: Muhammad Usama Anjum, kernel
uapi headers should be installed at the top of the object tree,
"<obj_tree>/usr/include". There is no need for kernel headers to
be present at kselftest build directory, "<obj_tree>/kselftest/usr/
include" as well. This duplication can be avoided by correctly
specifying the INSTALL_HDR_PATH.
Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
---
tools/testing/selftests/Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/testing/selftests/Makefile b/tools/testing/selftests/Makefile
index 21f983dfd047..80e5498eab92 100644
--- a/tools/testing/selftests/Makefile
+++ b/tools/testing/selftests/Makefile
@@ -167,7 +167,7 @@ khdr:
ifeq (1,$(DEFAULT_INSTALL_HDR_PATH))
$(MAKE) --no-builtin-rules ARCH=$(ARCH) -C $(top_srcdir) headers_install
else
- $(MAKE) --no-builtin-rules INSTALL_HDR_PATH=$$BUILD/usr \
+ $(MAKE) --no-builtin-rules INSTALL_HDR_PATH=$(abs_objtree)/usr \
ARCH=$(ARCH) -C $(top_srcdir) headers_install
endif
--
2.30.2
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH V2 04/10] selftests: futex: Add the uapi headers include variable
2022-01-19 10:15 [PATCH V2 00/10] selftests: Fix separate output directory builds Muhammad Usama Anjum
` (2 preceding siblings ...)
2022-01-19 10:15 ` [PATCH V2 03/10] selftests: Correct the headers install path Muhammad Usama Anjum
@ 2022-01-19 10:15 ` Muhammad Usama Anjum
2022-01-19 10:15 ` [PATCH V2 05/10] selftests: kvm: " Muhammad Usama Anjum
` (5 subsequent siblings)
9 siblings, 0 replies; 15+ messages in thread
From: Muhammad Usama Anjum @ 2022-01-19 10:15 UTC (permalink / raw)
To: Shuah Khan, Thomas Gleixner, Ingo Molnar, Peter Zijlstra,
Darren Hart, Davidlohr Bueso, André Almeida, Paolo Bonzini,
Mickaël Salaün, David S. Miller, Jakub Kicinski,
Mat Martineau, Matthieu Baerts, Andrew Morton, chiminghao,
open list:KERNEL SELFTEST FRAMEWORK, open list,
open list:KERNEL VIRTUAL MACHINE (KVM),
open list:LANDLOCK SECURITY MODULE,
open list:NETWORKING [GENERAL], open list:NETWORKING [MPTCP],
open list:MEMORY MANAGEMENT
Cc: Muhammad Usama Anjum, kernel
Out of tree build of this test fails if relative path of the output
directory is specified. KBUILD_OUTPUT also doesn't point to the correct
directory when relative path is used. Thus out of tree builds fail.
Remove the un-needed include paths and use KHDR_INCLUDES to correctly
reach the headers.
Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
---
Changes in V2:
Revert the excessive cleanup which was breaking the individual
test build.
---
tools/testing/selftests/futex/functional/Makefile | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/tools/testing/selftests/futex/functional/Makefile b/tools/testing/selftests/futex/functional/Makefile
index 5cc38de9d8ea..2a12b174cb04 100644
--- a/tools/testing/selftests/futex/functional/Makefile
+++ b/tools/testing/selftests/futex/functional/Makefile
@@ -1,7 +1,6 @@
# SPDX-License-Identifier: GPL-2.0
-INCLUDES := -I../include -I../../ -I../../../../../usr/include/ \
- -I$(KBUILD_OUTPUT)/kselftest/usr/include
-CFLAGS := $(CFLAGS) -g -O2 -Wall -D_GNU_SOURCE -pthread $(INCLUDES)
+INCLUDES := -I../include -I../../ -I../../../../../usr/include/
+CFLAGS := $(CFLAGS) -g -O2 -Wall -D_GNU_SOURCE -pthread $(INCLUDES) $(KHDR_INCLUDES)
LDLIBS := -lpthread -lrt
HEADERS := \
--
2.30.2
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH V2 05/10] selftests: kvm: Add the uapi headers include variable
2022-01-19 10:15 [PATCH V2 00/10] selftests: Fix separate output directory builds Muhammad Usama Anjum
` (3 preceding siblings ...)
2022-01-19 10:15 ` [PATCH V2 04/10] selftests: futex: Add the uapi headers include variable Muhammad Usama Anjum
@ 2022-01-19 10:15 ` Muhammad Usama Anjum
2022-01-19 10:15 ` [PATCH V2 06/10] selftests: landlock: " Muhammad Usama Anjum
` (4 subsequent siblings)
9 siblings, 0 replies; 15+ messages in thread
From: Muhammad Usama Anjum @ 2022-01-19 10:15 UTC (permalink / raw)
To: Shuah Khan, Thomas Gleixner, Ingo Molnar, Peter Zijlstra,
Darren Hart, Davidlohr Bueso, André Almeida, Paolo Bonzini,
Mickaël Salaün, David S. Miller, Jakub Kicinski,
Mat Martineau, Matthieu Baerts, Andrew Morton, chiminghao,
open list:KERNEL SELFTEST FRAMEWORK, open list,
open list:KERNEL VIRTUAL MACHINE (KVM),
open list:LANDLOCK SECURITY MODULE,
open list:NETWORKING [GENERAL], open list:NETWORKING [MPTCP],
open list:MEMORY MANAGEMENT
Cc: Muhammad Usama Anjum, kernel
Out of tree build of this test fails if relative path of the output
directory is specified. Add KHDR_INCLUDES to correctly reach the
headers.
Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
---
Changes in V2:
Revert the excessive cleanup which was breaking the individual
test build.
---
tools/testing/selftests/kvm/Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/testing/selftests/kvm/Makefile b/tools/testing/selftests/kvm/Makefile
index ee8cf2149824..556da71c33b8 100644
--- a/tools/testing/selftests/kvm/Makefile
+++ b/tools/testing/selftests/kvm/Makefile
@@ -147,7 +147,7 @@ endif
CFLAGS += -Wall -Wstrict-prototypes -Wuninitialized -O2 -g -std=gnu99 \
-fno-stack-protector -fno-PIE -I$(LINUX_TOOL_INCLUDE) \
-I$(LINUX_TOOL_ARCH_INCLUDE) -I$(LINUX_HDR_PATH) -Iinclude \
- -I$(<D) -Iinclude/$(UNAME_M) -I.. $(EXTRA_CFLAGS)
+ -I$(<D) -Iinclude/$(UNAME_M) -I.. $(EXTRA_CFLAGS) $(KHDR_INCLUDES)
no-pie-option := $(call try-run, echo 'int main() { return 0; }' | \
$(CC) -Werror -no-pie -x c - -o "$$TMP", -no-pie)
--
2.30.2
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH V2 06/10] selftests: landlock: Add the uapi headers include variable
2022-01-19 10:15 [PATCH V2 00/10] selftests: Fix separate output directory builds Muhammad Usama Anjum
` (4 preceding siblings ...)
2022-01-19 10:15 ` [PATCH V2 05/10] selftests: kvm: " Muhammad Usama Anjum
@ 2022-01-19 10:15 ` Muhammad Usama Anjum
2022-01-20 18:20 ` Mickaël Salaün
2022-01-19 10:15 ` [PATCH V2 07/10] selftests: net: " Muhammad Usama Anjum
` (3 subsequent siblings)
9 siblings, 1 reply; 15+ messages in thread
From: Muhammad Usama Anjum @ 2022-01-19 10:15 UTC (permalink / raw)
To: Shuah Khan, Thomas Gleixner, Ingo Molnar, Peter Zijlstra,
Darren Hart, Davidlohr Bueso, André Almeida, Paolo Bonzini,
Mickaël Salaün, David S. Miller, Jakub Kicinski,
Mat Martineau, Matthieu Baerts, Andrew Morton, chiminghao,
open list:KERNEL SELFTEST FRAMEWORK, open list,
open list:KERNEL VIRTUAL MACHINE (KVM),
open list:LANDLOCK SECURITY MODULE,
open list:NETWORKING [GENERAL], open list:NETWORKING [MPTCP],
open list:MEMORY MANAGEMENT
Cc: Muhammad Usama Anjum, kernel
Out of tree build of this test fails if relative path of the output
directory is specified. Add the KHDR_INCLUDES to correctly reach the
headers.
Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
---
Changes in V2:
Revert the excessive cleanup which was breaking the individual
test build.
---
tools/testing/selftests/landlock/Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/testing/selftests/landlock/Makefile b/tools/testing/selftests/landlock/Makefile
index a99596ca9882..0b0049e133bb 100644
--- a/tools/testing/selftests/landlock/Makefile
+++ b/tools/testing/selftests/landlock/Makefile
@@ -1,6 +1,6 @@
# SPDX-License-Identifier: GPL-2.0
-CFLAGS += -Wall -O2
+CFLAGS += -Wall -O2 $(KHDR_INCLUDES)
src_test := $(wildcard *_test.c)
--
2.30.2
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH V2 07/10] selftests: net: Add the uapi headers include variable
2022-01-19 10:15 [PATCH V2 00/10] selftests: Fix separate output directory builds Muhammad Usama Anjum
` (5 preceding siblings ...)
2022-01-19 10:15 ` [PATCH V2 06/10] selftests: landlock: " Muhammad Usama Anjum
@ 2022-01-19 10:15 ` Muhammad Usama Anjum
2022-01-19 10:15 ` [PATCH V2 08/10] selftests: mptcp: " Muhammad Usama Anjum
` (2 subsequent siblings)
9 siblings, 0 replies; 15+ messages in thread
From: Muhammad Usama Anjum @ 2022-01-19 10:15 UTC (permalink / raw)
To: Shuah Khan, Thomas Gleixner, Ingo Molnar, Peter Zijlstra,
Darren Hart, Davidlohr Bueso, André Almeida, Paolo Bonzini,
Mickaël Salaün, David S. Miller, Jakub Kicinski,
Mat Martineau, Matthieu Baerts, Andrew Morton, chiminghao,
open list:KERNEL SELFTEST FRAMEWORK, open list,
open list:KERNEL VIRTUAL MACHINE (KVM),
open list:LANDLOCK SECURITY MODULE,
open list:NETWORKING [GENERAL], open list:NETWORKING [MPTCP],
open list:MEMORY MANAGEMENT
Cc: Muhammad Usama Anjum, kernel
Out of tree build of this test fails if relative path of the output
directory is specified. Add the KHDR_INCLUDES to correctly reach the
headers.
Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
---
Changes in V2:
Revert the excessive cleanup which was breaking the individual
test build.
---
tools/testing/selftests/net/Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/testing/selftests/net/Makefile b/tools/testing/selftests/net/Makefile
index 9897fa9ab953..0b1488616c55 100644
--- a/tools/testing/selftests/net/Makefile
+++ b/tools/testing/selftests/net/Makefile
@@ -2,7 +2,7 @@
# Makefile for net selftests
CFLAGS = -Wall -Wl,--no-as-needed -O2 -g
-CFLAGS += -I../../../../usr/include/
+CFLAGS += -I../../../../usr/include/ $(KHDR_INCLUDES)
TEST_PROGS := run_netsocktests run_afpackettests test_bpf.sh netdevice.sh \
rtnetlink.sh xfrm_policy.sh test_blackhole_dev.sh
--
2.30.2
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH V2 08/10] selftests: mptcp: Add the uapi headers include variable
2022-01-19 10:15 [PATCH V2 00/10] selftests: Fix separate output directory builds Muhammad Usama Anjum
` (6 preceding siblings ...)
2022-01-19 10:15 ` [PATCH V2 07/10] selftests: net: " Muhammad Usama Anjum
@ 2022-01-19 10:15 ` Muhammad Usama Anjum
2022-01-19 22:35 ` Matthieu Baerts
2022-01-19 10:15 ` [PATCH V2 09/10] selftests: vm: " Muhammad Usama Anjum
2022-01-19 10:15 ` [PATCH V2 10/10] selftests: vm: remove dependecy from internal kernel macros Muhammad Usama Anjum
9 siblings, 1 reply; 15+ messages in thread
From: Muhammad Usama Anjum @ 2022-01-19 10:15 UTC (permalink / raw)
To: Shuah Khan, Thomas Gleixner, Ingo Molnar, Peter Zijlstra,
Darren Hart, Davidlohr Bueso, André Almeida, Paolo Bonzini,
Mickaël Salaün, David S. Miller, Jakub Kicinski,
Mat Martineau, Matthieu Baerts, Andrew Morton, chiminghao,
open list:KERNEL SELFTEST FRAMEWORK, open list,
open list:KERNEL VIRTUAL MACHINE (KVM),
open list:LANDLOCK SECURITY MODULE,
open list:NETWORKING [GENERAL], open list:NETWORKING [MPTCP],
open list:MEMORY MANAGEMENT
Cc: Muhammad Usama Anjum, kernel
Out of tree build of this test fails if relative path of the output
directory is specified. Add the KHDR_INCLUDES to correctly reach the
headers.
Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
---
Changes in V2:
Revert the excessive cleanup which was breaking the individual
test build.
---
tools/testing/selftests/net/mptcp/Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/testing/selftests/net/mptcp/Makefile b/tools/testing/selftests/net/mptcp/Makefile
index 0356c4501c99..f905d5358e68 100644
--- a/tools/testing/selftests/net/mptcp/Makefile
+++ b/tools/testing/selftests/net/mptcp/Makefile
@@ -3,7 +3,7 @@
top_srcdir = ../../../../..
KSFT_KHDR_INSTALL := 1
-CFLAGS = -Wall -Wl,--no-as-needed -O2 -g -I$(top_srcdir)/usr/include
+CFLAGS = -Wall -Wl,--no-as-needed -O2 -g -I$(top_srcdir)/usr/include $(KHDR_INCLUDES)
TEST_PROGS := mptcp_connect.sh pm_netlink.sh mptcp_join.sh diag.sh \
simult_flows.sh mptcp_sockopt.sh
--
2.30.2
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH V2 09/10] selftests: vm: Add the uapi headers include variable
2022-01-19 10:15 [PATCH V2 00/10] selftests: Fix separate output directory builds Muhammad Usama Anjum
` (7 preceding siblings ...)
2022-01-19 10:15 ` [PATCH V2 08/10] selftests: mptcp: " Muhammad Usama Anjum
@ 2022-01-19 10:15 ` Muhammad Usama Anjum
2022-01-20 1:18 ` Alistair Popple
2022-01-19 10:15 ` [PATCH V2 10/10] selftests: vm: remove dependecy from internal kernel macros Muhammad Usama Anjum
9 siblings, 1 reply; 15+ messages in thread
From: Muhammad Usama Anjum @ 2022-01-19 10:15 UTC (permalink / raw)
To: Shuah Khan, Thomas Gleixner, Ingo Molnar, Peter Zijlstra,
Darren Hart, Davidlohr Bueso, André Almeida, Paolo Bonzini,
Mickaël Salaün, David S. Miller, Jakub Kicinski,
Mat Martineau, Matthieu Baerts, Andrew Morton, chiminghao,
open list:KERNEL SELFTEST FRAMEWORK, open list,
open list:KERNEL VIRTUAL MACHINE (KVM),
open list:LANDLOCK SECURITY MODULE,
open list:NETWORKING [GENERAL], open list:NETWORKING [MPTCP],
open list:MEMORY MANAGEMENT
Cc: Muhammad Usama Anjum, kernel
Out of tree build of this test fails if relative path of the output
directory is specified. Add the KHDR_INCLUDES to correctly reach the
headers.
Acked-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
---
Changes in V2:
Revert the excessive cleanup which was breaking the individual
test build.
---
tools/testing/selftests/vm/Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/testing/selftests/vm/Makefile b/tools/testing/selftests/vm/Makefile
index 7d100a7dc462..96714d2d49dc 100644
--- a/tools/testing/selftests/vm/Makefile
+++ b/tools/testing/selftests/vm/Makefile
@@ -23,7 +23,7 @@ MACHINE ?= $(shell echo $(uname_M) | sed -e 's/aarch64.*/arm64/' -e 's/ppc64.*/p
# LDLIBS.
MAKEFLAGS += --no-builtin-rules
-CFLAGS = -Wall -I ../../../../usr/include $(EXTRA_CFLAGS)
+CFLAGS = -Wall -I ../../../../usr/include $(EXTRA_CFLAGS) $(KHDR_INCLUDES)
LDLIBS = -lrt -lpthread
TEST_GEN_FILES = compaction_test
TEST_GEN_FILES += gup_test
--
2.30.2
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH V2 10/10] selftests: vm: remove dependecy from internal kernel macros
2022-01-19 10:15 [PATCH V2 00/10] selftests: Fix separate output directory builds Muhammad Usama Anjum
` (8 preceding siblings ...)
2022-01-19 10:15 ` [PATCH V2 09/10] selftests: vm: " Muhammad Usama Anjum
@ 2022-01-19 10:15 ` Muhammad Usama Anjum
2022-01-20 1:20 ` Alistair Popple
9 siblings, 1 reply; 15+ messages in thread
From: Muhammad Usama Anjum @ 2022-01-19 10:15 UTC (permalink / raw)
To: Shuah Khan, Thomas Gleixner, Ingo Molnar, Peter Zijlstra,
Darren Hart, Davidlohr Bueso, André Almeida, Paolo Bonzini,
Mickaël Salaün, David S. Miller, Jakub Kicinski,
Mat Martineau, Matthieu Baerts, Andrew Morton, chiminghao,
open list:KERNEL SELFTEST FRAMEWORK, open list,
open list:KERNEL VIRTUAL MACHINE (KVM),
open list:LANDLOCK SECURITY MODULE,
open list:NETWORKING [GENERAL], open list:NETWORKING [MPTCP],
open list:MEMORY MANAGEMENT
Cc: Muhammad Usama Anjum, kernel
The defination of swap() is used from kernel's internal header when this
test is built in source tree. The build fails when this test is built
out of source tree as defination of swap() isn't found. Selftests
shouldn't depend on kernel's internal header files. They can only depend
on uapi header files. Add the defination of swap() to fix the build
error:
gcc -Wall -I/linux_mainline2/build/usr/include -no-pie userfaultfd.c -lrt -lpthread -o /linux_mainline2/build/kselftest/vm/userfaultfd
userfaultfd.c: In function ‘userfaultfd_stress’:
userfaultfd.c:1530:3: warning: implicit declaration of function ‘swap’; did you mean ‘swab’? [-Wimplicit-function-declaration]
1530 | swap(area_src, area_dst);
| ^~~~
| swab
/usr/bin/ld: /tmp/cclUUH7V.o: in function `userfaultfd_stress':
userfaultfd.c:(.text+0x4d64): undefined reference to `swap'
/usr/bin/ld: userfaultfd.c:(.text+0x4d82): undefined reference to `swap'
collect2: error: ld returned 1 exit status
Fixes: 2c769ed7137a ("tools/testing/selftests/vm/userfaultfd.c: use swap() to make code cleaner")
Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
---
tools/testing/selftests/vm/userfaultfd.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/tools/testing/selftests/vm/userfaultfd.c b/tools/testing/selftests/vm/userfaultfd.c
index d3fd24f9fae8..d2480ab93037 100644
--- a/tools/testing/selftests/vm/userfaultfd.c
+++ b/tools/testing/selftests/vm/userfaultfd.c
@@ -119,6 +119,9 @@ struct uffd_stats {
~(unsigned long)(sizeof(unsigned long long) \
- 1)))
+#define swap(a, b) \
+ do { typeof(a) __tmp = (a); (a) = (b); (b) = __tmp; } while (0)
+
const char *examples =
"# Run anonymous memory test on 100MiB region with 99999 bounces:\n"
"./userfaultfd anon 100 99999\n\n"
--
2.30.2
^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [PATCH V2 08/10] selftests: mptcp: Add the uapi headers include variable
2022-01-19 10:15 ` [PATCH V2 08/10] selftests: mptcp: " Muhammad Usama Anjum
@ 2022-01-19 22:35 ` Matthieu Baerts
0 siblings, 0 replies; 15+ messages in thread
From: Matthieu Baerts @ 2022-01-19 22:35 UTC (permalink / raw)
To: Muhammad Usama Anjum, Shuah Khan, Thomas Gleixner, Ingo Molnar,
Peter Zijlstra, Darren Hart, Davidlohr Bueso, André Almeida,
Paolo Bonzini, Mickaël Salaün, David S. Miller,
Jakub Kicinski, Mat Martineau, Andrew Morton, chiminghao,
open list:KERNEL SELFTEST FRAMEWORK, open list,
open list:KERNEL VIRTUAL MACHINE (KVM),
open list:LANDLOCK SECURITY MODULE,
open list:NETWORKING [GENERAL], open list:NETWORKING [MPTCP],
open list:MEMORY MANAGEMENT
Cc: kernel
Hi Muhammad,
On 19/01/2022 11:15, Muhammad Usama Anjum wrote:
> Out of tree build of this test fails if relative path of the output
> directory is specified. Add the KHDR_INCLUDES to correctly reach the
> headers.
>
> Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
> ---
> Changes in V2:
> Revert the excessive cleanup which was breaking the individual
> test build.
Thank you for the v2, it looks safer that way and it no longer breaks
our CI!
Reviewed-by: Matthieu Baerts <matthieu.baerts@tessares.net>
Cheers,
Matt
--
Tessares | Belgium | Hybrid Access Solutions
www.tessares.net
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH V2 09/10] selftests: vm: Add the uapi headers include variable
2022-01-19 10:15 ` [PATCH V2 09/10] selftests: vm: " Muhammad Usama Anjum
@ 2022-01-20 1:18 ` Alistair Popple
0 siblings, 0 replies; 15+ messages in thread
From: Alistair Popple @ 2022-01-20 1:18 UTC (permalink / raw)
To: Shuah Khan, Thomas Gleixner, Ingo Molnar, Peter Zijlstra,
Darren Hart, Davidlohr Bueso, André Almeida, Paolo Bonzini,
Mickaël Salaün, David S. Miller, Jakub Kicinski,
Mat Martineau, Matthieu Baerts, Andrew Morton, chiminghao,
open list:KERNEL SELFTEST FRAMEWORK, open list,
open list:KERNEL VIRTUAL MACHINE (KVM),
open list:LANDLOCK SECURITY MODULE,
open list:NETWORKING [GENERAL], open list:NETWORKING [MPTCP],
open list:MEMORY MANAGEMENT, Muhammad Usama Anjum, kernel
Thanks for fixing this! It has been annoying me for a while but I never found
the time to investigate properly. Feel free to add:
Tested-by: Alistair Popple <apopple@nvidia.com>
On Wednesday, 19 January 2022 9:15:30 PM AEDT Muhammad Usama Anjum wrote:
> Out of tree build of this test fails if relative path of the output
> directory is specified. Add the KHDR_INCLUDES to correctly reach the
> headers.
>
> Acked-by: Paolo Bonzini <pbonzini@redhat.com>
> Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
> ---
> Changes in V2:
> Revert the excessive cleanup which was breaking the individual
> test build.
> ---
> tools/testing/selftests/vm/Makefile | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/tools/testing/selftests/vm/Makefile b/tools/testing/selftests/vm/Makefile
> index 7d100a7dc462..96714d2d49dc 100644
> --- a/tools/testing/selftests/vm/Makefile
> +++ b/tools/testing/selftests/vm/Makefile
> @@ -23,7 +23,7 @@ MACHINE ?= $(shell echo $(uname_M) | sed -e 's/aarch64.*/arm64/' -e 's/ppc64.*/p
> # LDLIBS.
> MAKEFLAGS += --no-builtin-rules
>
> -CFLAGS = -Wall -I ../../../../usr/include $(EXTRA_CFLAGS)
> +CFLAGS = -Wall -I ../../../../usr/include $(EXTRA_CFLAGS) $(KHDR_INCLUDES)
> LDLIBS = -lrt -lpthread
> TEST_GEN_FILES = compaction_test
> TEST_GEN_FILES += gup_test
>
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH V2 10/10] selftests: vm: remove dependecy from internal kernel macros
2022-01-19 10:15 ` [PATCH V2 10/10] selftests: vm: remove dependecy from internal kernel macros Muhammad Usama Anjum
@ 2022-01-20 1:20 ` Alistair Popple
0 siblings, 0 replies; 15+ messages in thread
From: Alistair Popple @ 2022-01-20 1:20 UTC (permalink / raw)
To: Shuah Khan, Thomas Gleixner, Ingo Molnar, Peter Zijlstra,
Darren Hart, Davidlohr Bueso, André Almeida, Paolo Bonzini,
Mickaël Salaün, David S. Miller, Jakub Kicinski,
Mat Martineau, Matthieu Baerts, Andrew Morton, chiminghao,
open list:KERNEL SELFTEST FRAMEWORK, open list,
open list:KERNEL VIRTUAL MACHINE (KVM),
open list:LANDLOCK SECURITY MODULE,
open list:NETWORKING [GENERAL], open list:NETWORKING [MPTCP],
open list:MEMORY MANAGEMENT, Muhammad Usama Anjum
Cc: Muhammad Usama Anjum, kernel
Reviewed-by: Alistair Popple <apopple@nvidia.com>
On Wednesday, 19 January 2022 9:15:31 PM AEDT Muhammad Usama Anjum wrote:
> The defination of swap() is used from kernel's internal header when this
> test is built in source tree. The build fails when this test is built
> out of source tree as defination of swap() isn't found. Selftests
> shouldn't depend on kernel's internal header files. They can only depend
> on uapi header files. Add the defination of swap() to fix the build
> error:
>
> gcc -Wall -I/linux_mainline2/build/usr/include -no-pie userfaultfd.c -lrt -lpthread -o /linux_mainline2/build/kselftest/vm/userfaultfd
> userfaultfd.c: In function âuserfaultfd_stressâ:
> userfaultfd.c:1530:3: warning: implicit declaration of function âswapâ; did you mean âswabâ? [-Wimplicit-function-declaration]
> 1530 | swap(area_src, area_dst);
> | ^~~~
> | swab
> /usr/bin/ld: /tmp/cclUUH7V.o: in function `userfaultfd_stress':
> userfaultfd.c:(.text+0x4d64): undefined reference to `swap'
> /usr/bin/ld: userfaultfd.c:(.text+0x4d82): undefined reference to `swap'
> collect2: error: ld returned 1 exit status
>
> Fixes: 2c769ed7137a ("tools/testing/selftests/vm/userfaultfd.c: use swap() to make code cleaner")
> Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
> ---
> tools/testing/selftests/vm/userfaultfd.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/tools/testing/selftests/vm/userfaultfd.c b/tools/testing/selftests/vm/userfaultfd.c
> index d3fd24f9fae8..d2480ab93037 100644
> --- a/tools/testing/selftests/vm/userfaultfd.c
> +++ b/tools/testing/selftests/vm/userfaultfd.c
> @@ -119,6 +119,9 @@ struct uffd_stats {
> ~(unsigned long)(sizeof(unsigned long long) \
> - 1)))
>
> +#define swap(a, b) \
> + do { typeof(a) __tmp = (a); (a) = (b); (b) = __tmp; } while (0)
> +
> const char *examples =
> "# Run anonymous memory test on 100MiB region with 99999 bounces:\n"
> "./userfaultfd anon 100 99999\n\n"
>
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH V2 06/10] selftests: landlock: Add the uapi headers include variable
2022-01-19 10:15 ` [PATCH V2 06/10] selftests: landlock: " Muhammad Usama Anjum
@ 2022-01-20 18:20 ` Mickaël Salaün
0 siblings, 0 replies; 15+ messages in thread
From: Mickaël Salaün @ 2022-01-20 18:20 UTC (permalink / raw)
To: Muhammad Usama Anjum, Shuah Khan, Thomas Gleixner, Ingo Molnar,
Peter Zijlstra, Darren Hart, Davidlohr Bueso, André Almeida,
Paolo Bonzini, David S. Miller, Jakub Kicinski, Mat Martineau,
Matthieu Baerts, Andrew Morton, chiminghao,
open list:KERNEL SELFTEST FRAMEWORK, open list,
open list:KERNEL VIRTUAL MACHINE (KVM),
open list:LANDLOCK SECURITY MODULE,
open list:NETWORKING [GENERAL], open list:NETWORKING [MPTCP],
open list:MEMORY MANAGEMENT
Cc: kernel
On 19/01/2022 11:15, Muhammad Usama Anjum wrote:
> Out of tree build of this test fails if relative path of the output
> directory is specified. Add the KHDR_INCLUDES to correctly reach the
> headers.
>
> Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
> ---
> Changes in V2:
> Revert the excessive cleanup which was breaking the individual
> test build.
> ---
> tools/testing/selftests/landlock/Makefile | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/tools/testing/selftests/landlock/Makefile b/tools/testing/selftests/landlock/Makefile
> index a99596ca9882..0b0049e133bb 100644
> --- a/tools/testing/selftests/landlock/Makefile
> +++ b/tools/testing/selftests/landlock/Makefile
> @@ -1,6 +1,6 @@
> # SPDX-License-Identifier: GPL-2.0
>
> -CFLAGS += -Wall -O2
> +CFLAGS += -Wall -O2 $(KHDR_INCLUDES)
Reviewed-by: Mickaël Salaün <mic@linux.microsoft.com>
It works for me, but I'm wondering if a missing -I path could cause any
issue (cf. -I$(khdr_dir) bellow in this file). My GCC and clang ignore
such non-existent paths unless -Wmissing-include-dirs is used, which
would print a warning on your CI, but I guess that's OK.
>
> src_test := $(wildcard *_test.c)
>
^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2022-01-20 18:20 UTC | newest]
Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-19 10:15 [PATCH V2 00/10] selftests: Fix separate output directory builds Muhammad Usama Anjum
2022-01-19 10:15 ` [PATCH V2 01/10] selftests: set the BUILD variable to absolute path Muhammad Usama Anjum
2022-01-19 10:15 ` [PATCH V2 02/10] selftests: Add and export a kernel uapi headers path Muhammad Usama Anjum
2022-01-19 10:15 ` [PATCH V2 03/10] selftests: Correct the headers install path Muhammad Usama Anjum
2022-01-19 10:15 ` [PATCH V2 04/10] selftests: futex: Add the uapi headers include variable Muhammad Usama Anjum
2022-01-19 10:15 ` [PATCH V2 05/10] selftests: kvm: " Muhammad Usama Anjum
2022-01-19 10:15 ` [PATCH V2 06/10] selftests: landlock: " Muhammad Usama Anjum
2022-01-20 18:20 ` Mickaël Salaün
2022-01-19 10:15 ` [PATCH V2 07/10] selftests: net: " Muhammad Usama Anjum
2022-01-19 10:15 ` [PATCH V2 08/10] selftests: mptcp: " Muhammad Usama Anjum
2022-01-19 22:35 ` Matthieu Baerts
2022-01-19 10:15 ` [PATCH V2 09/10] selftests: vm: " Muhammad Usama Anjum
2022-01-20 1:18 ` Alistair Popple
2022-01-19 10:15 ` [PATCH V2 10/10] selftests: vm: remove dependecy from internal kernel macros Muhammad Usama Anjum
2022-01-20 1:20 ` Alistair Popple
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).