| From caa470475d9b59eeff093ae650800d34612c4379 Mon Sep 17 00:00:00 2001 |
| From: Arnaldo Carvalho de Melo <acme@redhat.com> |
| Date: Fri, 11 Sep 2015 12:36:12 -0300 |
| Subject: perf header: Fixup reading of HEADER_NRCPUS feature |
| |
| From: Arnaldo Carvalho de Melo <acme@redhat.com> |
| |
| commit caa470475d9b59eeff093ae650800d34612c4379 upstream. |
| |
| The original patch introducing this header wrote the number of CPUs available |
| and online in one order and then swapped those values when reading, fix it. |
| |
| Before: |
| |
| # perf record usleep 1 |
| # perf report --header-only | grep 'nrcpus \(online\|avail\)' |
| # nrcpus online : 4 |
| # nrcpus avail : 4 |
| # echo 0 > /sys/devices/system/cpu/cpu2/online |
| # perf record usleep 1 |
| # perf report --header-only | grep 'nrcpus \(online\|avail\)' |
| # nrcpus online : 4 |
| # nrcpus avail : 3 |
| # echo 0 > /sys/devices/system/cpu/cpu1/online |
| # perf record usleep 1 |
| # perf report --header-only | grep 'nrcpus \(online\|avail\)' |
| # nrcpus online : 4 |
| # nrcpus avail : 2 |
| |
| After the fix, bringing back the CPUs online: |
| |
| # perf report --header-only | grep 'nrcpus \(online\|avail\)' |
| # nrcpus online : 2 |
| # nrcpus avail : 4 |
| # echo 1 > /sys/devices/system/cpu/cpu2/online |
| # perf record usleep 1 |
| # perf report --header-only | grep 'nrcpus \(online\|avail\)' |
| # nrcpus online : 3 |
| # nrcpus avail : 4 |
| # echo 1 > /sys/devices/system/cpu/cpu1/online |
| # perf record usleep 1 |
| # perf report --header-only | grep 'nrcpus \(online\|avail\)' |
| # nrcpus online : 4 |
| # nrcpus avail : 4 |
| |
| Acked-by: Namhyung Kim <namhyung@kernel.org> |
| Cc: Adrian Hunter <adrian.hunter@intel.com> |
| Cc: Borislav Petkov <bp@suse.de> |
| Cc: David Ahern <dsahern@gmail.com> |
| Cc: Frederic Weisbecker <fweisbec@gmail.com> |
| Cc: Jiri Olsa <jolsa@kernel.org> |
| Cc: Kan Liang <kan.liang@intel.com> |
| Cc: Stephane Eranian <eranian@google.com> |
| Cc: Wang Nan <wangnan0@huawei.com> |
| Fixes: fbe96f29ce4b ("perf tools: Make perf.data more self-descriptive (v8)") |
| Link: http://lkml.kernel.org/r/20150911153323.GP23511@kernel.org |
| Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| tools/perf/util/header.c | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| --- a/tools/perf/util/header.c |
| +++ b/tools/perf/util/header.c |
| @@ -1715,7 +1715,7 @@ static int process_nrcpus(struct perf_fi |
| if (ph->needs_swap) |
| nr = bswap_32(nr); |
| |
| - ph->env.nr_cpus_online = nr; |
| + ph->env.nr_cpus_avail = nr; |
| |
| ret = readn(fd, &nr, sizeof(nr)); |
| if (ret != sizeof(nr)) |
| @@ -1724,7 +1724,7 @@ static int process_nrcpus(struct perf_fi |
| if (ph->needs_swap) |
| nr = bswap_32(nr); |
| |
| - ph->env.nr_cpus_avail = nr; |
| + ph->env.nr_cpus_online = nr; |
| return 0; |
| } |
| |