Messages in this thread | | | Date | Sat, 13 Jul 2019 15:42:40 +0300 | From | Konstantin Kharlamov <> | Subject | Re: [PATCH 4/8] perf evsel: Do not rely on errno values for precise_ip fallback |
| |
Thank you very much! Just wondering, would it maybe worth to backport the fix to stable kernel too?
В Пн, июл 8, 2019 at 12:42, Arnaldo Carvalho de Melo <acme@kernel.org> написал: > From: Jiri Olsa <jolsa@kernel.org> > > Konstantin reported problem with default perf record command, which > fails on some AMD servers, because of the default maximum precise > config. > > The current fallback mechanism counts on getting ENOTSUP errno for > precise_ip fails, but that's not the case on some AMD servers. > > We can fix this by removing the errno check completely, because the > precise_ip fallback is separated. We can just try (if requested by > evsel->precise_max) all possible precise_ip, and if one succeeds we > win, > if not, we continue with standard fallback. > > Reported-by: Konstantin Kharlamov <Hi-Angel@yandex.ru> > Signed-off-by: Jiri Olsa <jolsa@kernel.org> > Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> > Cc: Andi Kleen <ak@linux.intel.com> > Cc: Namhyung Kim <namhyung@kernel.org> > Cc: Peter Zijlstra <peterz@infradead.org> > Cc: Quentin Monnet <quentin.monnet@netronome.com> > Cc: Kim Phillips <kim.phillips@amd.com> > Link: http://lkml.kernel.org/r/20190703080949.10356-1-jolsa@kernel.org > Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> > --- > tools/perf/util/evsel.c | 10 ++-------- > 1 file changed, 2 insertions(+), 8 deletions(-) > > diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c > index 4a5947625c5c..69beb9f80f07 100644 > --- a/tools/perf/util/evsel.c > +++ b/tools/perf/util/evsel.c > @@ -1785,14 +1785,8 @@ static int perf_event_open(struct perf_evsel > *evsel, > if (fd >= 0) > break; > > - /* > - * Do quick precise_ip fallback if: > - * - there is precise_ip set in perf_event_attr > - * - maximum precise is requested > - * - sys_perf_event_open failed with ENOTSUP error, > - * which is associated with wrong precise_ip > - */ > - if (!precise_ip || !evsel->precise_max || (errno != ENOTSUP)) > + /* Do not try less precise if not requested. */ > + if (!evsel->precise_max) > break; > > /* > -- > 2.20.1 >
| |