Hi Shuah,
On 2/25/22 1:02 AM, tan.shaopeng@fujitsu.com wrote:
Hi Shuah,
On 2/22/22 12:55 AM, tan.shaopeng@fujitsu.com wrote:
Hi Khan,
On 2/15/22 7:26 PM, Shaopeng Tan wrote:
In kselftest framework, all tests can be build/run at a time, and a sub test also can be build/run individually. As follows: $ make -C tools/testing/selftests run_tests $ make -C tools/testing/selftests TARGETS=ptrace run_tests
However, resctrl_tests cannot be run using kselftest framework, users have to change directory to tools/testing/selftests/resctrl/, run "make" to build executable file "resctrl_tests", and run "sudo ./resctrl_tests" to execute the test.
To build/run resctrl_tests using kselftest framework. Modify tools/testing/selftests/Makefile and tools/testing/selftests/resctrl/Makefile.
Even after this change, users can still build/run resctrl_tests without using framework as before.
Signed-off-by: Shaopeng Tan tan.shaopeng@jp.fujitsu.com
Some important feedbacks from v1&v2 are addressed as follows:
- The changelog mentions that changes were made to the resctrl selftest Makefile but it does not describe what the change
accomplish
or why they are needed. => By changing the Makefile, resctrl_tests can use kselftest framework like other sub tests. I described this in changelog.
- The changelog did not describe how a user may use the kselftest framework to run the resctrl tests nor the requested information on how existing workflows are impacted. => I described how to build/run resctrl_tests with kselftest
framework,
and described the existing workflows are not impacted that
users
can
build/run resctrl_tests without using kselftest framework
as
before.
- tools/testing/selftests/resctrl/README should be updated. => I separate the update of README to a new patch.[patch v3
3/5]
Why is the meaning of "EXTRA_SOURCES" (i.e. what is "extra"?) and why is "SRCS" no longer sufficient? => I referred to other Makefiles, and found "SRCS" is better than "EXTRA_SOURCES". So, I updated it to use "SRCS".
tools/testing/selftests/Makefile | 1 + tools/testing/selftests/resctrl/Makefile | 20
++++++--------------
2 files changed, 7 insertions(+), 14 deletions(-)
diff --git a/tools/testing/selftests/Makefile b/tools/testing/selftests/Makefile index c852eb40c4f7..7df397c6893c 100644 --- a/tools/testing/selftests/Makefile +++ b/tools/testing/selftests/Makefile @@ -51,6 +51,7 @@ TARGETS += proc TARGETS += pstore TARGETS += ptrace TARGETS += openat2 +TARGETS += resctrl TARGETS += rlimits TARGETS += rseq TARGETS += rtc diff --git a/tools/testing/selftests/resctrl/Makefile b/tools/testing/selftests/resctrl/Makefile index 6bcee2ec91a9..de26638540ba 100644 --- a/tools/testing/selftests/resctrl/Makefile +++ b/tools/testing/selftests/resctrl/Makefile @@ -1,17 +1,9 @@ -CC = $(CROSS_COMPILE)gcc -CFLAGS = -g -Wall -O2 -D_FORTIFY_SOURCE=2
-SRCS=$(wildcard *.c)
-OBJS=$(SRCS:.c=.o) +CFLAGS += -g -Wall -O2 -D_FORTIFY_SOURCE=2
-all: resctrl_tests +TEST_GEN_PROGS := resctrl_tests +SRCS := $(wildcard *.c)
-$(OBJS): $(SRCS)
- $(CC) $(CFLAGS) -c $(SRCS)
+all: $(TEST_GEN_PROGS)
-resctrl_tests: $(OBJS)
- $(CC) $(CFLAGS) -o $@ $^
-.PHONY: clean
-clean:
- $(RM) $(OBJS) resctrl_tests
+$(TEST_GEN_PROGS): $(SRCS)
This patch breaks the test build - the below use-cases fail
make kselftest-all TARGETS=resctrl make -C tools/testing/selftests/ TARGETS=resctrl
Also a simple make in tools/testing/selftests/resctr
Thanks for your feedbacks. I applied these patches to the source below and built resctrl_tests successfully using above use-cases on x86/arm machine. (1) https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git Tag: v5.16 (2) https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git Tag: next-20220217
Could you tell me which kernel source you used to build and what error message you got?
I tried this on Linux 5.17-rc4
I tried these patches on Linux 5.17-rc4 with gcc version 8.4.1 and resctrl_tests is still built successfully.
Could you tell me what error message you got when you built it?
Here it is:
make gcc resctrl_tests.o cache.c cat_test.c cmt_test.c fill_buf.c mba_test.c mbm_test.c resctrlfs.c resctrl_tests.c resctrl_val.c -o resctrl_tests /usr/bin/ld: /tmp/ccoarGr4.o:(.bss+0x0): multiple definition of `is_amd'; resctrl_tests.o:/linux/linux_5.17/tools/testing/selftests/resctrl/resctrl_tests.c :16: first defined here /usr/bin/ld: /tmp/ccoarGr4.o: in function `detect_amd': resctrl_tests.c:(.text+0x63b): multiple definition of `detect_amd'; resctrl_tests.o:/linux/linux_5.17/tools/testing/selftests/resctrl/resctrl_tests.c :19: first defined here /usr/bin/ld: /tmp/ccoarGr4.o: in function `tests_cleanup': resctrl_tests.c:(.text+0x780): multiple definition of `tests_cleanup'; resctrl_tests.o:/linux/linux_5.17/tools/testing/selftests/resctrl/resctrl_tests.c :50: first defined here /usr/bin/ld: /tmp/ccoarGr4.o: in function `main': resctrl_tests.c:(.text+0xadd): multiple definition of `main'; resctrl_tests.o:/linux/linux_5.17/tools/testing/selftests/resctrl/resctrl_tests.c :129: first defined here collect2: error: ld returned 1 exit status make: *** [<builtin>: resctrl_tests] Error 1
I think resctrl_tests.o is an old file you left before applying this patch. Please remove it before rebuilding.
Before applying this patch, the resctrl_tests.o file was generated and saved in the current directory(tools/testing/selftests/resctrl/). After applying this patch, the resctrl_tests.o file was not generated and the compilation and linking work is done at one time by gcc. These errors were caused by the previously left resctrl_tests.o file.
I have gcc (Ubuntu 11.2.0-7ubuntu2) 11.2.0
Take a look at the changes to tools/testing/selftests/resctrl/Makefile
I don't think you need to make the changes you made. I would start small with including lib.mk and work from there.
Thanks for your advice. Only the following codes can build resctrl_tests. + TEST_GEN_PROGS := resctrl_tests + include ../lib.mk + $(OUTPUT)/resctrl_tests: $(wildcard *.c) I will use these codes in next version(v4).
Best regards, Tan Shaopeng