Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branch 'perf/urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux-2.6 into perf/urgent

+16 -4
+9 -4
tools/perf/builtin-test.c
··· 380 380 for (cpu = 0; cpu < cpus->nr; ++cpu) { 381 381 unsigned int ncalls = nr_open_calls + cpu; 382 382 383 - CPU_SET(cpu, cpu_set); 384 - sched_setaffinity(0, cpu_set_size, cpu_set); 383 + CPU_SET_S(cpus->map[cpu], cpu_set_size, cpu_set); 384 + if (sched_setaffinity(0, cpu_set_size, cpu_set) < 0) { 385 + pr_debug("sched_setaffinity() failed on CPU %d: %s ", 386 + cpus->map[cpu], 387 + strerror(errno)); 388 + goto out_close_fd; 389 + } 385 390 for (i = 0; i < ncalls; ++i) { 386 391 fd = open("/etc/passwd", O_RDONLY); 387 392 close(fd); 388 393 } 389 - CPU_CLR(cpu, cpu_set); 394 + CPU_CLR_S(cpus->map[cpu], cpu_set_size, cpu_set); 390 395 } 391 396 392 397 /* ··· 415 410 expected = nr_open_calls + cpu; 416 411 if (evsel->counts->cpu[cpu].val != expected) { 417 412 pr_debug("perf_evsel__read_on_cpu: expected to intercept %d calls on cpu %d, got %Ld\n", 418 - expected, cpu, evsel->counts->cpu[cpu].val); 413 + expected, cpus->map[cpu], evsel->counts->cpu[cpu].val); 419 414 goto out_close_fd; 420 415 } 421 416 }
+7
tools/perf/util/symbol.c
··· 1161 1161 1162 1162 section_name = elf_sec__name(&shdr, secstrs); 1163 1163 1164 + /* On ARM, symbols for thumb functions have 1 added to 1165 + * the symbol address as a flag - remove it */ 1166 + if ((ehdr.e_machine == EM_ARM) && 1167 + (map->type == MAP__FUNCTION) && 1168 + (sym.st_value & 1)) 1169 + --sym.st_value; 1170 + 1164 1171 if (self->kernel != DSO_TYPE_USER || kmodule) { 1165 1172 char dso_name[PATH_MAX]; 1166 1173