diff options
author | Ingo Molnar <mingo@kernel.org> | 2016-07-10 11:11:17 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2016-07-10 11:11:17 -0400 |
commit | 08fb98f5bf95cef902fc30427b39617a6f6875c7 (patch) | |
tree | d709cdc500b447bb957fd1e7fbc9073005b8ce8e /tools | |
parent | 99aa22d0d8f70d9317727ab40c85b2ead740a6ca (diff) | |
parent | a017f583ec87d40b06eee6a6beeabe879c8113dd (diff) |
Merge branch 'linus' into x86/fpu, to pick up fixes before applying new changes
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/perf/util/data-convert-bt.c | 41 | ||||
-rw-r--r-- | tools/perf/util/event.c | 2 | ||||
-rw-r--r-- | tools/perf/util/symbol.c | 16 | ||||
-rw-r--r-- | tools/testing/selftests/ftrace/test.d/trigger/trigger-hist-mod.tc | 9 | ||||
-rw-r--r-- | tools/testing/selftests/ftrace/test.d/trigger/trigger-hist.tc | 9 | ||||
-rw-r--r-- | tools/testing/selftests/ftrace/test.d/trigger/trigger-multihist.tc | 9 | ||||
-rw-r--r-- | tools/testing/selftests/net/reuseport_bpf.c | 10 | ||||
-rw-r--r-- | tools/testing/selftests/vm/compaction_test.c | 2 | ||||
-rw-r--r-- | tools/virtio/ringtest/Makefile | 4 | ||||
-rw-r--r-- | tools/virtio/ringtest/README | 4 | ||||
-rw-r--r-- | tools/virtio/ringtest/noring.c | 69 | ||||
-rwxr-xr-x | tools/virtio/ringtest/run-on-all.sh | 4 | ||||
-rw-r--r-- | tools/vm/slabinfo.c | 2 |
13 files changed, 146 insertions, 35 deletions
diff --git a/tools/perf/util/data-convert-bt.c b/tools/perf/util/data-convert-bt.c index bbf69d248ec5..9f53020c3269 100644 --- a/tools/perf/util/data-convert-bt.c +++ b/tools/perf/util/data-convert-bt.c | |||
@@ -204,6 +204,44 @@ static unsigned long long adjust_signedness(unsigned long long value_int, int si | |||
204 | return (value_int & value_mask) | ~value_mask; | 204 | return (value_int & value_mask) | ~value_mask; |
205 | } | 205 | } |
206 | 206 | ||
207 | static int string_set_value(struct bt_ctf_field *field, const char *string) | ||
208 | { | ||
209 | char *buffer = NULL; | ||
210 | size_t len = strlen(string), i, p; | ||
211 | int err; | ||
212 | |||
213 | for (i = p = 0; i < len; i++, p++) { | ||
214 | if (isprint(string[i])) { | ||
215 | if (!buffer) | ||
216 | continue; | ||
217 | buffer[p] = string[i]; | ||
218 | } else { | ||
219 | char numstr[5]; | ||
220 | |||
221 | snprintf(numstr, sizeof(numstr), "\\x%02x", | ||
222 | (unsigned int)(string[i]) & 0xff); | ||
223 | |||
224 | if (!buffer) { | ||
225 | buffer = zalloc(i + (len - i) * 4 + 2); | ||
226 | if (!buffer) { | ||
227 | pr_err("failed to set unprintable string '%s'\n", string); | ||
228 | return bt_ctf_field_string_set_value(field, "UNPRINTABLE-STRING"); | ||
229 | } | ||
230 | if (i > 0) | ||
231 | strncpy(buffer, string, i); | ||
232 | } | ||
233 | strncat(buffer + p, numstr, 4); | ||
234 | p += 3; | ||
235 | } | ||
236 | } | ||
237 | |||
238 | if (!buffer) | ||
239 | return bt_ctf_field_string_set_value(field, string); | ||
240 | err = bt_ctf_field_string_set_value(field, buffer); | ||
241 | free(buffer); | ||
242 | return err; | ||
243 | } | ||
244 | |||
207 | static int add_tracepoint_field_value(struct ctf_writer *cw, | 245 | static int add_tracepoint_field_value(struct ctf_writer *cw, |
208 | struct bt_ctf_event_class *event_class, | 246 | struct bt_ctf_event_class *event_class, |
209 | struct bt_ctf_event *event, | 247 | struct bt_ctf_event *event, |
@@ -270,8 +308,7 @@ static int add_tracepoint_field_value(struct ctf_writer *cw, | |||
270 | } | 308 | } |
271 | 309 | ||
272 | if (flags & FIELD_IS_STRING) | 310 | if (flags & FIELD_IS_STRING) |
273 | ret = bt_ctf_field_string_set_value(field, | 311 | ret = string_set_value(field, data + offset + i * len); |
274 | data + offset + i * len); | ||
275 | else { | 312 | else { |
276 | unsigned long long value_int; | 313 | unsigned long long value_int; |
277 | 314 | ||
diff --git a/tools/perf/util/event.c b/tools/perf/util/event.c index f6fcc6832949..9b141f12329e 100644 --- a/tools/perf/util/event.c +++ b/tools/perf/util/event.c | |||
@@ -673,6 +673,8 @@ int perf_event__synthesize_kernel_mmap(struct perf_tool *tool, | |||
673 | int err; | 673 | int err; |
674 | union perf_event *event; | 674 | union perf_event *event; |
675 | 675 | ||
676 | if (symbol_conf.kptr_restrict) | ||
677 | return -1; | ||
676 | if (map == NULL) | 678 | if (map == NULL) |
677 | return -1; | 679 | return -1; |
678 | 680 | ||
diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c index 20f9cb32b703..54c4ff2b1cee 100644 --- a/tools/perf/util/symbol.c +++ b/tools/perf/util/symbol.c | |||
@@ -1933,17 +1933,17 @@ int setup_intlist(struct intlist **list, const char *list_str, | |||
1933 | static bool symbol__read_kptr_restrict(void) | 1933 | static bool symbol__read_kptr_restrict(void) |
1934 | { | 1934 | { |
1935 | bool value = false; | 1935 | bool value = false; |
1936 | FILE *fp = fopen("/proc/sys/kernel/kptr_restrict", "r"); | ||
1936 | 1937 | ||
1937 | if (geteuid() != 0) { | 1938 | if (fp != NULL) { |
1938 | FILE *fp = fopen("/proc/sys/kernel/kptr_restrict", "r"); | 1939 | char line[8]; |
1939 | if (fp != NULL) { | ||
1940 | char line[8]; | ||
1941 | 1940 | ||
1942 | if (fgets(line, sizeof(line), fp) != NULL) | 1941 | if (fgets(line, sizeof(line), fp) != NULL) |
1943 | value = atoi(line) != 0; | 1942 | value = (geteuid() != 0) ? |
1943 | (atoi(line) != 0) : | ||
1944 | (atoi(line) == 2); | ||
1944 | 1945 | ||
1945 | fclose(fp); | 1946 | fclose(fp); |
1946 | } | ||
1947 | } | 1947 | } |
1948 | 1948 | ||
1949 | return value; | 1949 | return value; |
diff --git a/tools/testing/selftests/ftrace/test.d/trigger/trigger-hist-mod.tc b/tools/testing/selftests/ftrace/test.d/trigger/trigger-hist-mod.tc index c2b61c4fda11..0bf5085281f3 100644 --- a/tools/testing/selftests/ftrace/test.d/trigger/trigger-hist-mod.tc +++ b/tools/testing/selftests/ftrace/test.d/trigger/trigger-hist-mod.tc | |||
@@ -23,15 +23,14 @@ if [ ! -f events/sched/sched_process_fork/trigger ]; then | |||
23 | exit_unsupported | 23 | exit_unsupported |
24 | fi | 24 | fi |
25 | 25 | ||
26 | reset_tracer | 26 | if [ ! -f events/sched/sched_process_fork/hist ]; then |
27 | do_reset | ||
28 | |||
29 | FEATURE=`grep hist events/sched/sched_process_fork/trigger` | ||
30 | if [ -z "$FEATURE" ]; then | ||
31 | echo "hist trigger is not supported" | 27 | echo "hist trigger is not supported" |
32 | exit_unsupported | 28 | exit_unsupported |
33 | fi | 29 | fi |
34 | 30 | ||
31 | reset_tracer | ||
32 | do_reset | ||
33 | |||
35 | echo "Test histogram with execname modifier" | 34 | echo "Test histogram with execname modifier" |
36 | 35 | ||
37 | echo 'hist:keys=common_pid.execname' > events/sched/sched_process_fork/trigger | 36 | echo 'hist:keys=common_pid.execname' > events/sched/sched_process_fork/trigger |
diff --git a/tools/testing/selftests/ftrace/test.d/trigger/trigger-hist.tc b/tools/testing/selftests/ftrace/test.d/trigger/trigger-hist.tc index b2902d42a537..a00184cd9c95 100644 --- a/tools/testing/selftests/ftrace/test.d/trigger/trigger-hist.tc +++ b/tools/testing/selftests/ftrace/test.d/trigger/trigger-hist.tc | |||
@@ -23,15 +23,14 @@ if [ ! -f events/sched/sched_process_fork/trigger ]; then | |||
23 | exit_unsupported | 23 | exit_unsupported |
24 | fi | 24 | fi |
25 | 25 | ||
26 | reset_tracer | 26 | if [ ! -f events/sched/sched_process_fork/hist ]; then |
27 | do_reset | ||
28 | |||
29 | FEATURE=`grep hist events/sched/sched_process_fork/trigger` | ||
30 | if [ -z "$FEATURE" ]; then | ||
31 | echo "hist trigger is not supported" | 27 | echo "hist trigger is not supported" |
32 | exit_unsupported | 28 | exit_unsupported |
33 | fi | 29 | fi |
34 | 30 | ||
31 | reset_tracer | ||
32 | do_reset | ||
33 | |||
35 | echo "Test histogram basic tigger" | 34 | echo "Test histogram basic tigger" |
36 | 35 | ||
37 | echo 'hist:keys=parent_pid:vals=child_pid' > events/sched/sched_process_fork/trigger | 36 | echo 'hist:keys=parent_pid:vals=child_pid' > events/sched/sched_process_fork/trigger |
diff --git a/tools/testing/selftests/ftrace/test.d/trigger/trigger-multihist.tc b/tools/testing/selftests/ftrace/test.d/trigger/trigger-multihist.tc index 03c4a46561fc..3478b00ead57 100644 --- a/tools/testing/selftests/ftrace/test.d/trigger/trigger-multihist.tc +++ b/tools/testing/selftests/ftrace/test.d/trigger/trigger-multihist.tc | |||
@@ -23,15 +23,14 @@ if [ ! -f events/sched/sched_process_fork/trigger ]; then | |||
23 | exit_unsupported | 23 | exit_unsupported |
24 | fi | 24 | fi |
25 | 25 | ||
26 | reset_tracer | 26 | if [ ! -f events/sched/sched_process_fork/hist ]; then |
27 | do_reset | ||
28 | |||
29 | FEATURE=`grep hist events/sched/sched_process_fork/trigger` | ||
30 | if [ -z "$FEATURE" ]; then | ||
31 | echo "hist trigger is not supported" | 27 | echo "hist trigger is not supported" |
32 | exit_unsupported | 28 | exit_unsupported |
33 | fi | 29 | fi |
34 | 30 | ||
31 | reset_tracer | ||
32 | do_reset | ||
33 | |||
35 | reset_trigger | 34 | reset_trigger |
36 | 35 | ||
37 | echo "Test histogram multiple tiggers" | 36 | echo "Test histogram multiple tiggers" |
diff --git a/tools/testing/selftests/net/reuseport_bpf.c b/tools/testing/selftests/net/reuseport_bpf.c index 96ba386b1b7b..4a8217448f20 100644 --- a/tools/testing/selftests/net/reuseport_bpf.c +++ b/tools/testing/selftests/net/reuseport_bpf.c | |||
@@ -111,9 +111,9 @@ static void attach_ebpf(int fd, uint16_t mod) | |||
111 | memset(&attr, 0, sizeof(attr)); | 111 | memset(&attr, 0, sizeof(attr)); |
112 | attr.prog_type = BPF_PROG_TYPE_SOCKET_FILTER; | 112 | attr.prog_type = BPF_PROG_TYPE_SOCKET_FILTER; |
113 | attr.insn_cnt = ARRAY_SIZE(prog); | 113 | attr.insn_cnt = ARRAY_SIZE(prog); |
114 | attr.insns = (uint64_t)prog; | 114 | attr.insns = (unsigned long) &prog; |
115 | attr.license = (uint64_t)bpf_license; | 115 | attr.license = (unsigned long) &bpf_license; |
116 | attr.log_buf = (uint64_t)bpf_log_buf; | 116 | attr.log_buf = (unsigned long) &bpf_log_buf; |
117 | attr.log_size = sizeof(bpf_log_buf); | 117 | attr.log_size = sizeof(bpf_log_buf); |
118 | attr.log_level = 1; | 118 | attr.log_level = 1; |
119 | attr.kern_version = 0; | 119 | attr.kern_version = 0; |
@@ -351,8 +351,8 @@ static void test_filter_no_reuseport(const struct test_params p) | |||
351 | memset(&eprog, 0, sizeof(eprog)); | 351 | memset(&eprog, 0, sizeof(eprog)); |
352 | eprog.prog_type = BPF_PROG_TYPE_SOCKET_FILTER; | 352 | eprog.prog_type = BPF_PROG_TYPE_SOCKET_FILTER; |
353 | eprog.insn_cnt = ARRAY_SIZE(ecode); | 353 | eprog.insn_cnt = ARRAY_SIZE(ecode); |
354 | eprog.insns = (uint64_t)ecode; | 354 | eprog.insns = (unsigned long) &ecode; |
355 | eprog.license = (uint64_t)bpf_license; | 355 | eprog.license = (unsigned long) &bpf_license; |
356 | eprog.kern_version = 0; | 356 | eprog.kern_version = 0; |
357 | 357 | ||
358 | memset(&cprog, 0, sizeof(cprog)); | 358 | memset(&cprog, 0, sizeof(cprog)); |
diff --git a/tools/testing/selftests/vm/compaction_test.c b/tools/testing/selftests/vm/compaction_test.c index 932ff577ffc0..00c4f65d12da 100644 --- a/tools/testing/selftests/vm/compaction_test.c +++ b/tools/testing/selftests/vm/compaction_test.c | |||
@@ -136,7 +136,7 @@ int check_compaction(unsigned long mem_free, unsigned int hugepage_size) | |||
136 | printf("No of huge pages allocated = %d\n", | 136 | printf("No of huge pages allocated = %d\n", |
137 | (atoi(nr_hugepages))); | 137 | (atoi(nr_hugepages))); |
138 | 138 | ||
139 | if (write(fd, initial_nr_hugepages, sizeof(initial_nr_hugepages)) | 139 | if (write(fd, initial_nr_hugepages, strlen(initial_nr_hugepages)) |
140 | != strlen(initial_nr_hugepages)) { | 140 | != strlen(initial_nr_hugepages)) { |
141 | perror("Failed to write to /proc/sys/vm/nr_hugepages\n"); | 141 | perror("Failed to write to /proc/sys/vm/nr_hugepages\n"); |
142 | goto close_fd; | 142 | goto close_fd; |
diff --git a/tools/virtio/ringtest/Makefile b/tools/virtio/ringtest/Makefile index 6ba745529833..6173adae9f08 100644 --- a/tools/virtio/ringtest/Makefile +++ b/tools/virtio/ringtest/Makefile | |||
@@ -1,6 +1,6 @@ | |||
1 | all: | 1 | all: |
2 | 2 | ||
3 | all: ring virtio_ring_0_9 virtio_ring_poll virtio_ring_inorder | 3 | all: ring virtio_ring_0_9 virtio_ring_poll virtio_ring_inorder noring |
4 | 4 | ||
5 | CFLAGS += -Wall | 5 | CFLAGS += -Wall |
6 | CFLAGS += -pthread -O2 -ggdb | 6 | CFLAGS += -pthread -O2 -ggdb |
@@ -15,11 +15,13 @@ ring: ring.o main.o | |||
15 | virtio_ring_0_9: virtio_ring_0_9.o main.o | 15 | virtio_ring_0_9: virtio_ring_0_9.o main.o |
16 | virtio_ring_poll: virtio_ring_poll.o main.o | 16 | virtio_ring_poll: virtio_ring_poll.o main.o |
17 | virtio_ring_inorder: virtio_ring_inorder.o main.o | 17 | virtio_ring_inorder: virtio_ring_inorder.o main.o |
18 | noring: noring.o main.o | ||
18 | clean: | 19 | clean: |
19 | -rm main.o | 20 | -rm main.o |
20 | -rm ring.o ring | 21 | -rm ring.o ring |
21 | -rm virtio_ring_0_9.o virtio_ring_0_9 | 22 | -rm virtio_ring_0_9.o virtio_ring_0_9 |
22 | -rm virtio_ring_poll.o virtio_ring_poll | 23 | -rm virtio_ring_poll.o virtio_ring_poll |
23 | -rm virtio_ring_inorder.o virtio_ring_inorder | 24 | -rm virtio_ring_inorder.o virtio_ring_inorder |
25 | -rm noring.o noring | ||
24 | 26 | ||
25 | .PHONY: all clean | 27 | .PHONY: all clean |
diff --git a/tools/virtio/ringtest/README b/tools/virtio/ringtest/README index 34e94c46104f..d83707a336c9 100644 --- a/tools/virtio/ringtest/README +++ b/tools/virtio/ringtest/README | |||
@@ -1,2 +1,6 @@ | |||
1 | Partial implementation of various ring layouts, useful to tune virtio design. | 1 | Partial implementation of various ring layouts, useful to tune virtio design. |
2 | Uses shared memory heavily. | 2 | Uses shared memory heavily. |
3 | |||
4 | Typical use: | ||
5 | |||
6 | # sh run-on-all.sh perf stat -r 10 --log-fd 1 -- ./ring | ||
diff --git a/tools/virtio/ringtest/noring.c b/tools/virtio/ringtest/noring.c new file mode 100644 index 000000000000..eda2f4824130 --- /dev/null +++ b/tools/virtio/ringtest/noring.c | |||
@@ -0,0 +1,69 @@ | |||
1 | #define _GNU_SOURCE | ||
2 | #include "main.h" | ||
3 | #include <assert.h> | ||
4 | |||
5 | /* stub implementation: useful for measuring overhead */ | ||
6 | void alloc_ring(void) | ||
7 | { | ||
8 | } | ||
9 | |||
10 | /* guest side */ | ||
11 | int add_inbuf(unsigned len, void *buf, void *datap) | ||
12 | { | ||
13 | return 0; | ||
14 | } | ||
15 | |||
16 | /* | ||
17 | * skb_array API provides no way for producer to find out whether a given | ||
18 | * buffer was consumed. Our tests merely require that a successful get_buf | ||
19 | * implies that add_inbuf succeed in the past, and that add_inbuf will succeed, | ||
20 | * fake it accordingly. | ||
21 | */ | ||
22 | void *get_buf(unsigned *lenp, void **bufp) | ||
23 | { | ||
24 | return "Buffer"; | ||
25 | } | ||
26 | |||
27 | void poll_used(void) | ||
28 | { | ||
29 | } | ||
30 | |||
31 | void disable_call() | ||
32 | { | ||
33 | assert(0); | ||
34 | } | ||
35 | |||
36 | bool enable_call() | ||
37 | { | ||
38 | assert(0); | ||
39 | } | ||
40 | |||
41 | void kick_available(void) | ||
42 | { | ||
43 | assert(0); | ||
44 | } | ||
45 | |||
46 | /* host side */ | ||
47 | void disable_kick() | ||
48 | { | ||
49 | assert(0); | ||
50 | } | ||
51 | |||
52 | bool enable_kick() | ||
53 | { | ||
54 | assert(0); | ||
55 | } | ||
56 | |||
57 | void poll_avail(void) | ||
58 | { | ||
59 | } | ||
60 | |||
61 | bool use_buf(unsigned *lenp, void **bufp) | ||
62 | { | ||
63 | return true; | ||
64 | } | ||
65 | |||
66 | void call_used(void) | ||
67 | { | ||
68 | assert(0); | ||
69 | } | ||
diff --git a/tools/virtio/ringtest/run-on-all.sh b/tools/virtio/ringtest/run-on-all.sh index 52b0f71ffa8d..2e69ca812b4c 100755 --- a/tools/virtio/ringtest/run-on-all.sh +++ b/tools/virtio/ringtest/run-on-all.sh | |||
@@ -3,10 +3,10 @@ | |||
3 | #use last CPU for host. Why not the first? | 3 | #use last CPU for host. Why not the first? |
4 | #many devices tend to use cpu0 by default so | 4 | #many devices tend to use cpu0 by default so |
5 | #it tends to be busier | 5 | #it tends to be busier |
6 | HOST_AFFINITY=$(cd /dev/cpu; ls|grep -v '[a-z]'|sort -n|tail -1) | 6 | HOST_AFFINITY=$(lscpu -p=cpu | tail -1) |
7 | 7 | ||
8 | #run command on all cpus | 8 | #run command on all cpus |
9 | for cpu in $(cd /dev/cpu; ls|grep -v '[a-z]'|sort -n); | 9 | for cpu in $(seq 0 $HOST_AFFINITY) |
10 | do | 10 | do |
11 | #Don't run guest and host on same CPU | 11 | #Don't run guest and host on same CPU |
12 | #It actually works ok if using signalling | 12 | #It actually works ok if using signalling |
diff --git a/tools/vm/slabinfo.c b/tools/vm/slabinfo.c index 1889163f2f05..7cf6e1769903 100644 --- a/tools/vm/slabinfo.c +++ b/tools/vm/slabinfo.c | |||
@@ -492,7 +492,7 @@ static void slab_stats(struct slabinfo *s) | |||
492 | s->deactivate_to_head + s->deactivate_to_tail + s->deactivate_bypass; | 492 | s->deactivate_to_head + s->deactivate_to_tail + s->deactivate_bypass; |
493 | 493 | ||
494 | if (total) { | 494 | if (total) { |
495 | printf("\nSlab Deactivation Ocurrences %%\n"); | 495 | printf("\nSlab Deactivation Occurrences %%\n"); |
496 | printf("-------------------------------------------------\n"); | 496 | printf("-------------------------------------------------\n"); |
497 | printf("Slab full %7lu %3lu%%\n", | 497 | printf("Slab full %7lu %3lu%%\n", |
498 | s->deactivate_full, (s->deactivate_full * 100) / total); | 498 | s->deactivate_full, (s->deactivate_full * 100) / total); |