Skip to content

Commit 5a31cc7

Browse files
committed
Merge tag 'linux-kselftest-next-6.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest
Pull Kselftest updates from Shuah Khan: "A mix of fixes, enhancements, and new tests. Bulk of the changes enhance and fix rseq and resctrl tests. In addition, user_events, dmabuf-heaps and perf_events are added to default kselftest build and test coverage. A futex test fix, enhance prctl test coverage, and minor fixes are included in this update" * tag 'linux-kselftest-next-6.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest: (32 commits) selftests: cachestat: use proper syscall number macro selftests: cachestat: properly link in librt selftests/futex: Order calls to futex_lock_pi selftests: Hook more tests into the build infrastructure selftests/user_events: Reenable build selftests/filesystems: Add six consecutive 'x' characters to mktemp selftests/rseq: Use rseq_unqual_scalar_typeof in macros selftests/rseq: Fix arm64 buggy load-acquire/store-release macros selftests/rseq: Implement rseq_unqual_scalar_typeof selftests/rseq: Fix CID_ID typo in Makefile selftests:prctl: add set-process-name to .gitignore selftests:prctl: Fix make clean override warning selftests/resctrl: Remove test type checks from cat_val() selftests/resctrl: Pass the real number of tests to show_cache_info() selftests/resctrl: Move CAT/CMT test global vars to function they are used in selftests/resctrl: Don't use variable argument list for ->setup() selftests/resctrl: Don't pass test name to fill_buf selftests/resctrl: Improve parameter consistency in fill_buf selftests/resctrl: Remove unnecessary startptr global from fill_buf selftests/resctrl: Remove "malloc_and_init_memory" param from run_fill_buf() ...
2 parents 3653478 + 9b1db73 commit 5a31cc7

29 files changed

Lines changed: 328 additions & 290 deletions

tools/testing/selftests/Makefile

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ TARGETS += core
1212
TARGETS += cpufreq
1313
TARGETS += cpu-hotplug
1414
TARGETS += damon
15+
TARGETS += dmabuf-heaps
1516
TARGETS += drivers/dma-buf
1617
TARGETS += drivers/s390x/uvdevice
1718
TARGETS += drivers/net/bonding
@@ -57,6 +58,7 @@ TARGETS += net/mptcp
5758
TARGETS += net/openvswitch
5859
TARGETS += netfilter
5960
TARGETS += nsfs
61+
TARGETS += perf_events
6062
TARGETS += pidfd
6163
TARGETS += pid_namespace
6264
TARGETS += powerpc
@@ -89,7 +91,9 @@ endif
8991
TARGETS += tmpfs
9092
TARGETS += tpm2
9193
TARGETS += tty
94+
TARGETS += uevents
9295
TARGETS += user
96+
TARGETS += user_events
9397
TARGETS += vDSO
9498
TARGETS += mm
9599
TARGETS += x86

tools/testing/selftests/cachestat/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@ TEST_GEN_PROGS := test_cachestat
33

44
CFLAGS += $(KHDR_INCLUDES)
55
CFLAGS += -Wall
6-
CFLAGS += -lrt
6+
LDLIBS += -lrt
77

88
include ../lib.mk

tools/testing/selftests/cachestat/test_cachestat.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ static const char * const dev_files[] = {
2323
"/dev/zero", "/dev/null", "/dev/urandom",
2424
"/proc/version", "/proc"
2525
};
26-
static const int cachestat_nr = 451;
2726

2827
void print_cachestat(struct cachestat *cs)
2928
{
@@ -144,7 +143,7 @@ static int test_cachestat(const char *filename, bool write_random, bool create,
144143
}
145144
}
146145

147-
syscall_ret = syscall(cachestat_nr, fd, &cs_range, &cs, 0);
146+
syscall_ret = syscall(__NR_cachestat, fd, &cs_range, &cs, 0);
148147

149148
ksft_print_msg("Cachestat call returned %ld\n", syscall_ret);
150149

@@ -172,7 +171,7 @@ static int test_cachestat(const char *filename, bool write_random, bool create,
172171
ksft_print_msg("fsync fails.\n");
173172
ret = KSFT_FAIL;
174173
} else {
175-
syscall_ret = syscall(cachestat_nr, fd, &cs_range, &cs, 0);
174+
syscall_ret = syscall(__NR_cachestat, fd, &cs_range, &cs, 0);
176175

177176
ksft_print_msg("Cachestat call (after fsync) returned %ld\n",
178177
syscall_ret);
@@ -233,7 +232,7 @@ bool test_cachestat_shmem(void)
233232
goto close_fd;
234233
}
235234

236-
syscall_ret = syscall(cachestat_nr, fd, &cs_range, &cs, 0);
235+
syscall_ret = syscall(__NR_cachestat, fd, &cs_range, &cs, 0);
237236

238237
if (syscall_ret) {
239238
ksft_print_msg("Cachestat returned non-zero.\n");

tools/testing/selftests/filesystems/fat/run_fat_tests.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ set -u
1212
set -o pipefail
1313

1414
BASE_DIR="$(dirname $0)"
15-
TMP_DIR="$(mktemp -d /tmp/fat_tests_tmp.XXXX)"
15+
TMP_DIR="$(mktemp -d /tmp/fat_tests_tmp.XXXXXX)"
1616
IMG_PATH="${TMP_DIR}/fat.img"
1717
MNT_PATH="${TMP_DIR}/mnt"
1818

tools/testing/selftests/futex/functional/futex_wait_timeout.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424

2525
static long timeout_ns = 100000; /* 100us default timeout */
2626
static futex_t futex_pi;
27+
static pthread_barrier_t barrier;
2728

2829
void usage(char *prog)
2930
{
@@ -48,6 +49,8 @@ void *get_pi_lock(void *arg)
4849
if (ret != 0)
4950
error("futex_lock_pi failed\n", ret);
5051

52+
pthread_barrier_wait(&barrier);
53+
5154
/* Blocks forever */
5255
ret = futex_wait(&lock, 0, NULL, 0);
5356
error("futex_wait failed\n", ret);
@@ -130,6 +133,7 @@ int main(int argc, char *argv[])
130133
basename(argv[0]));
131134
ksft_print_msg("\tArguments: timeout=%ldns\n", timeout_ns);
132135

136+
pthread_barrier_init(&barrier, NULL, 2);
133137
pthread_create(&thread, NULL, get_pi_lock, NULL);
134138

135139
/* initialize relative timeout */
@@ -163,6 +167,9 @@ int main(int argc, char *argv[])
163167
res = futex_wait_requeue_pi(&f1, f1, &futex_pi, &to, 0);
164168
test_timeout(res, &ret, "futex_wait_requeue_pi monotonic", ETIMEDOUT);
165169

170+
/* Wait until the other thread calls futex_lock_pi() */
171+
pthread_barrier_wait(&barrier);
172+
pthread_barrier_destroy(&barrier);
166173
/*
167174
* FUTEX_LOCK_PI with CLOCK_REALTIME
168175
* Due to historical reasons, FUTEX_LOCK_PI supports only realtime

tools/testing/selftests/prctl/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@ disable-tsc-ctxt-sw-stress-test
33
disable-tsc-on-off-stress-test
44
disable-tsc-test
55
set-anon-vma-name-test
6+
set-process-name

tools/testing/selftests/prctl/Makefile

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,10 @@ ARCH ?= $(shell echo $(uname_M) | sed -e s/i.86/x86/ -e s/x86_64/x86/)
55

66
ifeq ($(ARCH),x86)
77
TEST_PROGS := disable-tsc-ctxt-sw-stress-test disable-tsc-on-off-stress-test \
8-
disable-tsc-test set-anon-vma-name-test
8+
disable-tsc-test set-anon-vma-name-test set-process-name
99
all: $(TEST_PROGS)
1010

1111
include ../lib.mk
1212

13-
clean:
14-
rm -fr $(TEST_PROGS)
1513
endif
1614
endif
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
// SPDX-License-Identifier: GPL-2.0
2+
/*
3+
* This test covers the PR_SET_NAME functionality of prctl calls
4+
*/
5+
6+
#include <errno.h>
7+
#include <sys/prctl.h>
8+
#include <string.h>
9+
10+
#include "../kselftest_harness.h"
11+
12+
#define CHANGE_NAME "changename"
13+
#define EMPTY_NAME ""
14+
#define TASK_COMM_LEN 16
15+
16+
int set_name(char *name)
17+
{
18+
int res;
19+
20+
res = prctl(PR_SET_NAME, name, NULL, NULL, NULL);
21+
22+
if (res < 0)
23+
return -errno;
24+
return res;
25+
}
26+
27+
int check_is_name_correct(char *check_name)
28+
{
29+
char name[TASK_COMM_LEN];
30+
int res;
31+
32+
res = prctl(PR_GET_NAME, name, NULL, NULL, NULL);
33+
34+
if (res < 0)
35+
return -errno;
36+
37+
return !strcmp(name, check_name);
38+
}
39+
40+
int check_null_pointer(char *check_name)
41+
{
42+
char *name = NULL;
43+
int res;
44+
45+
res = prctl(PR_GET_NAME, name, NULL, NULL, NULL);
46+
47+
return res;
48+
}
49+
50+
TEST(rename_process) {
51+
52+
EXPECT_GE(set_name(CHANGE_NAME), 0);
53+
EXPECT_TRUE(check_is_name_correct(CHANGE_NAME));
54+
55+
EXPECT_GE(set_name(EMPTY_NAME), 0);
56+
EXPECT_TRUE(check_is_name_correct(EMPTY_NAME));
57+
58+
EXPECT_GE(set_name(CHANGE_NAME), 0);
59+
EXPECT_LT(check_null_pointer(CHANGE_NAME), 0);
60+
}
61+
62+
TEST_HARNESS_MAIN

tools/testing/selftests/resctrl/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@ TEST_GEN_PROGS := resctrl_tests
77

88
include ../lib.mk
99

10-
$(OUTPUT)/resctrl_tests: $(wildcard *.c)
10+
$(OUTPUT)/resctrl_tests: $(wildcard *.[ch])

tools/testing/selftests/resctrl/cache.c

Lines changed: 31 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -87,21 +87,19 @@ static int reset_enable_llc_perf(pid_t pid, int cpu_no)
8787
static int get_llc_perf(unsigned long *llc_perf_miss)
8888
{
8989
__u64 total_misses;
90+
int ret;
9091

9192
/* Stop counters after one span to get miss rate */
9293

9394
ioctl(fd_lm, PERF_EVENT_IOC_DISABLE, 0);
9495

95-
if (read(fd_lm, &rf_cqm, sizeof(struct read_format)) == -1) {
96+
ret = read(fd_lm, &rf_cqm, sizeof(struct read_format));
97+
if (ret == -1) {
9698
perror("Could not get llc misses through perf");
97-
9899
return -1;
99100
}
100101

101102
total_misses = rf_cqm.values[0].value;
102-
103-
close(fd_lm);
104-
105103
*llc_perf_miss = total_misses;
106104

107105
return 0;
@@ -212,7 +210,7 @@ int measure_cache_vals(struct resctrl_val_param *param, int bm_pid)
212210
*/
213211
int cat_val(struct resctrl_val_param *param)
214212
{
215-
int malloc_and_init_memory = 1, memflush = 1, operation = 0, ret = 0;
213+
int memflush = 1, operation = 0, ret = 0;
216214
char *resctrl_val = param->resctrl_val;
217215
pid_t bm_pid;
218216

@@ -232,40 +230,38 @@ int cat_val(struct resctrl_val_param *param)
232230
if (ret)
233231
return ret;
234232

235-
if (!strncmp(resctrl_val, CAT_STR, sizeof(CAT_STR)))
236-
initialize_llc_perf();
233+
initialize_llc_perf();
237234

238235
/* Test runs until the callback setup() tells the test to stop. */
239236
while (1) {
240-
if (!strncmp(resctrl_val, CAT_STR, sizeof(CAT_STR))) {
241-
ret = param->setup(1, param);
242-
if (ret == END_OF_TESTS) {
243-
ret = 0;
244-
break;
245-
}
246-
if (ret < 0)
247-
break;
248-
ret = reset_enable_llc_perf(bm_pid, param->cpu_no);
249-
if (ret)
250-
break;
251-
252-
if (run_fill_buf(param->span, malloc_and_init_memory,
253-
memflush, operation, resctrl_val)) {
254-
fprintf(stderr, "Error-running fill buffer\n");
255-
ret = -1;
256-
break;
257-
}
258-
259-
sleep(1);
260-
ret = measure_cache_vals(param, bm_pid);
261-
if (ret)
262-
break;
263-
} else {
237+
ret = param->setup(param);
238+
if (ret == END_OF_TESTS) {
239+
ret = 0;
240+
break;
241+
}
242+
if (ret < 0)
243+
break;
244+
ret = reset_enable_llc_perf(bm_pid, param->cpu_no);
245+
if (ret)
264246
break;
247+
248+
if (run_fill_buf(param->span, memflush, operation, true)) {
249+
fprintf(stderr, "Error-running fill buffer\n");
250+
ret = -1;
251+
goto pe_close;
265252
}
253+
254+
sleep(1);
255+
ret = measure_cache_vals(param, bm_pid);
256+
if (ret)
257+
goto pe_close;
266258
}
267259

268260
return ret;
261+
262+
pe_close:
263+
close(fd_lm);
264+
return ret;
269265
}
270266

271267
/*
@@ -282,7 +278,7 @@ int cat_val(struct resctrl_val_param *param)
282278
* Return: 0 on success. non-zero on failure.
283279
*/
284280
int show_cache_info(unsigned long sum_llc_val, int no_of_bits,
285-
unsigned long cache_span, unsigned long max_diff,
281+
size_t cache_span, unsigned long max_diff,
286282
unsigned long max_diff_percent, unsigned long num_of_runs,
287283
bool platform, bool cmt)
288284
{
@@ -291,7 +287,7 @@ int show_cache_info(unsigned long sum_llc_val, int no_of_bits,
291287
long avg_diff = 0;
292288
int ret;
293289

294-
avg_llc_val = sum_llc_val / (num_of_runs - 1);
290+
avg_llc_val = sum_llc_val / num_of_runs;
295291
avg_diff = (long)abs(cache_span - avg_llc_val);
296292
diff_percent = ((float)cache_span - avg_llc_val) / cache_span * 100;
297293

@@ -304,7 +300,7 @@ int show_cache_info(unsigned long sum_llc_val, int no_of_bits,
304300
ksft_print_msg("Percent diff=%d\n", abs((int)diff_percent));
305301
ksft_print_msg("Number of bits: %d\n", no_of_bits);
306302
ksft_print_msg("Average LLC val: %lu\n", avg_llc_val);
307-
ksft_print_msg("Cache span (%s): %lu\n", cmt ? "bytes" : "lines",
303+
ksft_print_msg("Cache span (%s): %zu\n", cmt ? "bytes" : "lines",
308304
cache_span);
309305

310306
return ret;

0 commit comments

Comments
 (0)