Merge remote-tracking branch 'torvalds/master' into perf/core
To pick up the fixes sent for v5.12 and continue development based on v5.12-rc2, i.e. without the swap on file bug. This also gets a slightly newer and better tools/perf/arch/arm/util/cs-etm.c patch version, using the BIT() macro, that had already been slated to v5.13 but ended up going to v5.12-rc1 on an older version. Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
@@ -182,14 +182,20 @@ int test__attr(struct test *test __maybe_unused, int subtest __maybe_unused)
|
||||
struct stat st;
|
||||
char path_perf[PATH_MAX];
|
||||
char path_dir[PATH_MAX];
|
||||
char *exec_path;
|
||||
|
||||
/* First try development tree tests. */
|
||||
if (!lstat("./tests", &st))
|
||||
return run_dir("./tests", "./perf");
|
||||
|
||||
exec_path = get_argv_exec_path();
|
||||
if (exec_path == NULL)
|
||||
return -1;
|
||||
|
||||
/* Then installed path. */
|
||||
snprintf(path_dir, PATH_MAX, "%s/tests", get_argv_exec_path());
|
||||
snprintf(path_dir, PATH_MAX, "%s/tests", exec_path);
|
||||
snprintf(path_perf, PATH_MAX, "%s/perf", BINDIR);
|
||||
free(exec_path);
|
||||
|
||||
if (!lstat(path_dir, &st) &&
|
||||
!lstat(path_perf, &st))
|
||||
|
||||
@@ -706,13 +706,9 @@ static int do_test_code_reading(bool try_kcore)
|
||||
out_put:
|
||||
thread__put(thread);
|
||||
out_err:
|
||||
|
||||
if (evlist) {
|
||||
evlist__delete(evlist);
|
||||
} else {
|
||||
perf_cpu_map__put(cpus);
|
||||
perf_thread_map__put(threads);
|
||||
}
|
||||
evlist__delete(evlist);
|
||||
perf_cpu_map__put(cpus);
|
||||
perf_thread_map__put(threads);
|
||||
machine__delete_threads(machine);
|
||||
machine__delete(machine);
|
||||
|
||||
|
||||
@@ -106,6 +106,8 @@ static int cpu_map_print(const char *str)
|
||||
return -1;
|
||||
|
||||
cpu_map__snprint(map, buf, sizeof(buf));
|
||||
perf_cpu_map__put(map);
|
||||
|
||||
return !strcmp(buf, str);
|
||||
}
|
||||
|
||||
|
||||
@@ -154,10 +154,9 @@ out_err:
|
||||
if (evlist) {
|
||||
evlist__disable(evlist);
|
||||
evlist__delete(evlist);
|
||||
} else {
|
||||
perf_cpu_map__put(cpus);
|
||||
perf_thread_map__put(threads);
|
||||
}
|
||||
perf_cpu_map__put(cpus);
|
||||
perf_thread_map__put(threads);
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -158,8 +158,6 @@ out_init:
|
||||
|
||||
out_delete_evlist:
|
||||
evlist__delete(evlist);
|
||||
cpus = NULL;
|
||||
threads = NULL;
|
||||
out_free_cpus:
|
||||
perf_cpu_map__put(cpus);
|
||||
out_free_threads:
|
||||
|
||||
@@ -167,6 +167,8 @@ next_event:
|
||||
|
||||
out_err:
|
||||
evlist__delete(evlist);
|
||||
perf_cpu_map__put(cpus);
|
||||
perf_thread_map__put(threads);
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
@@ -129,9 +129,6 @@ static bool samples_same(const struct perf_sample *s1,
|
||||
if (type & PERF_SAMPLE_WEIGHT)
|
||||
COMP(weight);
|
||||
|
||||
if (type & PERF_SAMPLE_WEIGHT_STRUCT)
|
||||
COMP(ins_lat);
|
||||
|
||||
if (type & PERF_SAMPLE_DATA_SRC)
|
||||
COMP(data_src);
|
||||
|
||||
@@ -245,7 +242,6 @@ static int do_test(u64 sample_type, u64 sample_regs, u64 read_format)
|
||||
.cgroup = 114,
|
||||
.data_page_size = 115,
|
||||
.code_page_size = 116,
|
||||
.ins_lat = 117,
|
||||
.aux_sample = {
|
||||
.size = sizeof(aux_data),
|
||||
.data = (void *)aux_data,
|
||||
|
||||
@@ -140,10 +140,10 @@ test_list()
|
||||
base=BASE
|
||||
|
||||
[session-size]
|
||||
run = -e cpu-clock
|
||||
run = -e cpu-clock -m 1 sleep 10
|
||||
|
||||
[session-time]
|
||||
run = -e task-clock
|
||||
run = -e task-clock -m 1 sleep 10
|
||||
EOF
|
||||
|
||||
sed -i -e "s|BASE|${base}|" ${config}
|
||||
@@ -159,14 +159,14 @@ EOF
|
||||
# check 1st session
|
||||
# pid:size:-e cpu-clock:base/size:base/size/output:base/size/control:base/size/ack:0
|
||||
local line=`perf daemon --config ${config} -x: | head -2 | tail -1`
|
||||
check_line_other "${line}" size "-e cpu-clock" ${base}/session-size \
|
||||
check_line_other "${line}" size "-e cpu-clock -m 1 sleep 10" ${base}/session-size \
|
||||
${base}/session-size/output ${base}/session-size/control \
|
||||
${base}/session-size/ack "0"
|
||||
|
||||
# check 2nd session
|
||||
# pid:time:-e task-clock:base/time:base/time/output:base/time/control:base/time/ack:0
|
||||
local line=`perf daemon --config ${config} -x: | head -3 | tail -1`
|
||||
check_line_other "${line}" time "-e task-clock" ${base}/session-time \
|
||||
check_line_other "${line}" time "-e task-clock -m 1 sleep 10" ${base}/session-time \
|
||||
${base}/session-time/output ${base}/session-time/control \
|
||||
${base}/session-time/ack "0"
|
||||
|
||||
@@ -190,10 +190,10 @@ test_reconfig()
|
||||
base=BASE
|
||||
|
||||
[session-size]
|
||||
run = -e cpu-clock
|
||||
run = -e cpu-clock -m 1 sleep 10
|
||||
|
||||
[session-time]
|
||||
run = -e task-clock
|
||||
run = -e task-clock -m 1 sleep 10
|
||||
EOF
|
||||
|
||||
sed -i -e "s|BASE|${base}|" ${config}
|
||||
@@ -204,7 +204,7 @@ EOF
|
||||
# check 2nd session
|
||||
# pid:time:-e task-clock:base/time:base/time/output:base/time/control:base/time/ack:0
|
||||
local line=`perf daemon --config ${config} -x: | head -3 | tail -1`
|
||||
check_line_other "${line}" time "-e task-clock" ${base}/session-time \
|
||||
check_line_other "${line}" time "-e task-clock -m 1 sleep 10" ${base}/session-time \
|
||||
${base}/session-time/output ${base}/session-time/control ${base}/session-time/ack "0"
|
||||
local pid=`echo "${line}" | awk 'BEGIN { FS = ":" } ; { print $1 }'`
|
||||
|
||||
@@ -215,10 +215,10 @@ EOF
|
||||
base=BASE
|
||||
|
||||
[session-size]
|
||||
run = -e cpu-clock
|
||||
run = -e cpu-clock -m 1 sleep 10
|
||||
|
||||
[session-time]
|
||||
run = -e cpu-clock
|
||||
run = -e cpu-clock -m 1 sleep 10
|
||||
EOF
|
||||
|
||||
# TEST 1 - change config
|
||||
@@ -238,7 +238,7 @@ EOF
|
||||
# check reconfigured 2nd session
|
||||
# pid:time:-e task-clock:base/time:base/time/output:base/time/control:base/time/ack:0
|
||||
local line=`perf daemon --config ${config} -x: | head -3 | tail -1`
|
||||
check_line_other "${line}" time "-e cpu-clock" ${base}/session-time \
|
||||
check_line_other "${line}" time "-e cpu-clock -m 1 sleep 10" ${base}/session-time \
|
||||
${base}/session-time/output ${base}/session-time/control ${base}/session-time/ack "0"
|
||||
|
||||
# TEST 2 - empty config
|
||||
@@ -309,10 +309,10 @@ test_stop()
|
||||
base=BASE
|
||||
|
||||
[session-size]
|
||||
run = -e cpu-clock
|
||||
run = -e cpu-clock -m 1 sleep 10
|
||||
|
||||
[session-time]
|
||||
run = -e task-clock
|
||||
run = -e task-clock -m 1 sleep 10
|
||||
EOF
|
||||
|
||||
sed -i -e "s|BASE|${base}|" ${config}
|
||||
@@ -361,7 +361,7 @@ test_signal()
|
||||
base=BASE
|
||||
|
||||
[session-test]
|
||||
run = -e cpu-clock --switch-output
|
||||
run = -e cpu-clock --switch-output -m 1 sleep 10
|
||||
EOF
|
||||
|
||||
sed -i -e "s|BASE|${base}|" ${config}
|
||||
@@ -400,10 +400,10 @@ test_ping()
|
||||
base=BASE
|
||||
|
||||
[session-size]
|
||||
run = -e cpu-clock
|
||||
run = -e cpu-clock -m 1 sleep 10
|
||||
|
||||
[session-time]
|
||||
run = -e task-clock
|
||||
run = -e task-clock -m 1 sleep 10
|
||||
EOF
|
||||
|
||||
sed -i -e "s|BASE|${base}|" ${config}
|
||||
@@ -439,7 +439,7 @@ test_lock()
|
||||
base=BASE
|
||||
|
||||
[session-size]
|
||||
run = -e cpu-clock
|
||||
run = -e cpu-clock -m 1 sleep 10
|
||||
EOF
|
||||
|
||||
sed -i -e "s|BASE|${base}|" ${config}
|
||||
|
||||
@@ -42,8 +42,8 @@ static int __test__sw_clock_freq(enum perf_sw_ids clock_id)
|
||||
.disabled = 1,
|
||||
.freq = 1,
|
||||
};
|
||||
struct perf_cpu_map *cpus;
|
||||
struct perf_thread_map *threads;
|
||||
struct perf_cpu_map *cpus = NULL;
|
||||
struct perf_thread_map *threads = NULL;
|
||||
struct mmap *md;
|
||||
|
||||
attr.sample_freq = 500;
|
||||
@@ -66,14 +66,11 @@ static int __test__sw_clock_freq(enum perf_sw_ids clock_id)
|
||||
if (!cpus || !threads) {
|
||||
err = -ENOMEM;
|
||||
pr_debug("Not enough memory to create thread/cpu maps\n");
|
||||
goto out_free_maps;
|
||||
goto out_delete_evlist;
|
||||
}
|
||||
|
||||
perf_evlist__set_maps(&evlist->core, cpus, threads);
|
||||
|
||||
cpus = NULL;
|
||||
threads = NULL;
|
||||
|
||||
if (evlist__open(evlist)) {
|
||||
const char *knob = "/proc/sys/kernel/perf_event_max_sample_rate";
|
||||
|
||||
@@ -129,10 +126,9 @@ out_init:
|
||||
err = -1;
|
||||
}
|
||||
|
||||
out_free_maps:
|
||||
out_delete_evlist:
|
||||
perf_cpu_map__put(cpus);
|
||||
perf_thread_map__put(threads);
|
||||
out_delete_evlist:
|
||||
evlist__delete(evlist);
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -574,10 +574,9 @@ out:
|
||||
if (evlist) {
|
||||
evlist__disable(evlist);
|
||||
evlist__delete(evlist);
|
||||
} else {
|
||||
perf_cpu_map__put(cpus);
|
||||
perf_thread_map__put(threads);
|
||||
}
|
||||
perf_cpu_map__put(cpus);
|
||||
perf_thread_map__put(threads);
|
||||
|
||||
return err;
|
||||
|
||||
|
||||
@@ -75,14 +75,11 @@ int test__task_exit(struct test *test __maybe_unused, int subtest __maybe_unused
|
||||
if (!cpus || !threads) {
|
||||
err = -ENOMEM;
|
||||
pr_debug("Not enough memory to create thread/cpu maps\n");
|
||||
goto out_free_maps;
|
||||
goto out_delete_evlist;
|
||||
}
|
||||
|
||||
perf_evlist__set_maps(&evlist->core, cpus, threads);
|
||||
|
||||
cpus = NULL;
|
||||
threads = NULL;
|
||||
|
||||
err = evlist__prepare_workload(evlist, &target, argv, false, workload_exec_failed_signal);
|
||||
if (err < 0) {
|
||||
pr_debug("Couldn't run the workload!\n");
|
||||
@@ -137,7 +134,7 @@ out_init:
|
||||
if (retry_count++ > 1000) {
|
||||
pr_debug("Failed after retrying 1000 times\n");
|
||||
err = -1;
|
||||
goto out_free_maps;
|
||||
goto out_delete_evlist;
|
||||
}
|
||||
|
||||
goto retry;
|
||||
@@ -148,10 +145,9 @@ out_init:
|
||||
err = -1;
|
||||
}
|
||||
|
||||
out_free_maps:
|
||||
out_delete_evlist:
|
||||
perf_cpu_map__put(cpus);
|
||||
perf_thread_map__put(threads);
|
||||
out_delete_evlist:
|
||||
evlist__delete(evlist);
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -102,6 +102,7 @@ int test__thread_map_synthesize(struct test *test __maybe_unused, int subtest __
|
||||
TEST_ASSERT_VAL("failed to synthesize map",
|
||||
!perf_event__synthesize_thread_map2(NULL, threads, process_event, NULL));
|
||||
|
||||
perf_thread_map__put(threads);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -109,12 +110,12 @@ int test__thread_map_remove(struct test *test __maybe_unused, int subtest __mayb
|
||||
{
|
||||
struct perf_thread_map *threads;
|
||||
char *str;
|
||||
int i;
|
||||
|
||||
TEST_ASSERT_VAL("failed to allocate map string",
|
||||
asprintf(&str, "%d,%d", getpid(), getppid()) >= 0);
|
||||
|
||||
threads = thread_map__new_str(str, NULL, 0, false);
|
||||
free(str);
|
||||
|
||||
TEST_ASSERT_VAL("failed to allocate thread_map",
|
||||
threads);
|
||||
@@ -141,9 +142,6 @@ int test__thread_map_remove(struct test *test __maybe_unused, int subtest __mayb
|
||||
TEST_ASSERT_VAL("failed to not remove thread",
|
||||
thread_map__remove(threads, 0));
|
||||
|
||||
for (i = 0; i < threads->nr; i++)
|
||||
zfree(&threads->map[i].comm);
|
||||
|
||||
free(threads);
|
||||
perf_thread_map__put(threads);
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user