lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-ID: <tip-b90dc17a5d14a881f9bb3b58edb3d71075d58afb@git.kernel.org> Date: Mon, 23 May 2016 22:45:59 -0700 From: tip-bot for Wang Nan <tipbot@...or.com> To: linux-tip-commits@...r.kernel.org Cc: hpa@...or.com, mhiramat@...nel.org, acme@...hat.com, jolsa@...nel.org, lizefan@...wei.com, tglx@...utronix.de, hekuang@...wei.com, mingo@...nel.org, namhyung@...nel.org, linux-kernel@...r.kernel.org, wangnan0@...wei.com Subject: [tip:perf/urgent] perf evsel: Add overwrite attribute and check write_backward Commit-ID: b90dc17a5d14a881f9bb3b58edb3d71075d58afb Gitweb: http://git.kernel.org/tip/b90dc17a5d14a881f9bb3b58edb3d71075d58afb Author: Wang Nan <wangnan0@...wei.com> AuthorDate: Fri, 20 May 2016 16:38:23 +0000 Committer: Arnaldo Carvalho de Melo <acme@...hat.com> CommitDate: Fri, 20 May 2016 14:54:23 -0300 perf evsel: Add overwrite attribute and check write_backward Add 'overwrite' attribute to evsel to mark whether this event is overwritable. The following commits will support syntax like: # perf record -e cycles/overwrite/ ... An overwritable evsel requires kernel support for the perf_event_attr.write_backward ring buffer feature. Add it to perf_missing_feature. Signed-off-by: Wang Nan <wangnan0@...wei.com> Cc: He Kuang <hekuang@...wei.com> Cc: Jiri Olsa <jolsa@...nel.org> Cc: Masami Hiramatsu <mhiramat@...nel.org> Cc: Namhyung Kim <namhyung@...nel.org> Cc: Zefan Li <lizefan@...wei.com> Cc: pi3orama@....com Link: http://lkml.kernel.org/r/1463762315-155689-2-git-send-email-wangnan0@huawei.com Signed-off-by: Arnaldo Carvalho de Melo <acme@...hat.com> --- tools/perf/util/evsel.c | 13 +++++++++++++ tools/perf/util/evsel.h | 1 + 2 files changed, 14 insertions(+) diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c index 964c7c3..02c177d 100644 --- a/tools/perf/util/evsel.c +++ b/tools/perf/util/evsel.c @@ -37,6 +37,7 @@ static struct { bool clockid; bool clockid_wrong; bool lbr_flags; + bool write_backward; } perf_missing_features; static clockid_t clockid; @@ -1376,6 +1377,8 @@ fallback_missing_features: if (perf_missing_features.lbr_flags) evsel->attr.branch_sample_type &= ~(PERF_SAMPLE_BRANCH_NO_FLAGS | PERF_SAMPLE_BRANCH_NO_CYCLES); + if (perf_missing_features.write_backward) + evsel->attr.write_backward = false; retry_sample_id: if (perf_missing_features.sample_id_all) evsel->attr.sample_id_all = 0; @@ -1438,6 +1441,12 @@ retry_open: err = -EINVAL; goto out_close; } + + if (evsel->overwrite && + perf_missing_features.write_backward) { + err = -EINVAL; + goto out_close; + } } } @@ -1500,6 +1509,10 @@ try_fallback: PERF_SAMPLE_BRANCH_NO_FLAGS))) { perf_missing_features.lbr_flags = true; goto fallback_missing_features; + } else if (!perf_missing_features.write_backward && + evsel->attr.write_backward) { + perf_missing_features.write_backward = true; + goto fallback_missing_features; } out_close: diff --git a/tools/perf/util/evsel.h b/tools/perf/util/evsel.h index 8a644fe..c1f1015 100644 --- a/tools/perf/util/evsel.h +++ b/tools/perf/util/evsel.h @@ -112,6 +112,7 @@ struct perf_evsel { bool tracking; bool per_pkg; bool precise_max; + bool overwrite; /* parse modifier helper */ int exclude_GH; int nr_members;
Powered by blists - more mailing lists