Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1436149 > unrolled thread

[PATCH v13 1/8] perf tools: Drop redundant evsel->overwrite indicator

Started byWang Nan <wangnan0@huawei.com>
First post2016-07-04 08:30 +0200
Last post2016-07-06 13:00 +0200
Articles 3 — 3 participants

Back to article view | Back to linux.kernel

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  [PATCH v13 1/8] perf tools: Drop redundant evsel->overwrite indicator Wang Nan <wangnan0@huawei.com> - 2016-07-04 08:30 +0200
    Re: [PATCH v13 1/8] perf tools: Drop redundant evsel->overwrite  indicator "Wangnan (F)" <wangnan0@huawei.com> - 2016-07-06 13:00 +0200
    Re: [PATCH v13 1/8] perf tools: Drop redundant evsel->overwrite  indicator Jiri Olsa <jolsa@redhat.com> - 2016-07-06 13:00 +0200

#1436149 — [PATCH v13 1/8] perf tools: Drop redundant evsel->overwrite indicator

FromWang Nan <wangnan0@huawei.com>
Date2016-07-04 08:30 +0200
Subject[PATCH v13 1/8] perf tools: Drop redundant evsel->overwrite indicator
Message-ID<rR5yh-2a2-11@gated-at.bofh.it>
From: Arnaldo Carvalho de Melo <acme@redhat.com>

evsel->overwrite indicator means an event should be put into
overwritable ring buffer. In current implementation, it equals to
evsel->attr.write_backward. To reduce compliexity, remove
evsel->overwrite, use evsel->attr.write_backward instead.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Wang Nan <wangnan0@huawei.com>
Cc: He Kuang <hekuang@huawei.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Zefan Li <lizefan@huawei.com>
Cc: Nilay Vaish <nilayvaish@gmail.com>
Cc: pi3orama@163.com
---
 tools/perf/tests/backward-ring-buffer.c |  1 +
 tools/perf/util/evlist.c                |  4 ++--
 tools/perf/util/evsel.c                 | 12 +++++-------
 tools/perf/util/evsel.h                 |  1 -
 4 files changed, 8 insertions(+), 10 deletions(-)

diff --git a/tools/perf/tests/backward-ring-buffer.c b/tools/perf/tests/backward-ring-buffer.c
index e70313f..1750ef2 100644
--- a/tools/perf/tests/backward-ring-buffer.c
+++ b/tools/perf/tests/backward-ring-buffer.c
@@ -101,6 +101,7 @@ int test__backward_ring_buffer(int subtest __maybe_unused)
 		return TEST_FAIL;
 	}
 
+	evlist->backward = true;
 	err = perf_evlist__create_maps(evlist, &opts.target);
 	if (err < 0) {
 		pr_debug("Not enough memory to create thread/cpu maps\n");
diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c
index 1135077..7228596 100644
--- a/tools/perf/util/evlist.c
+++ b/tools/perf/util/evlist.c
@@ -1003,7 +1003,7 @@ static bool
 perf_evlist__should_poll(struct perf_evlist *evlist __maybe_unused,
 			 struct perf_evsel *evsel)
 {
-	if (evsel->overwrite)
+	if (evsel->attr.write_backward)
 		return false;
 	return true;
 }
@@ -1018,7 +1018,7 @@ static int perf_evlist__mmap_per_evsel(struct perf_evlist *evlist, int idx,
 	evlist__for_each_entry(evlist, evsel) {
 		int fd;
 
-		if (evsel->overwrite != (evlist->overwrite && evlist->backward))
+		if (!!evsel->attr.write_backward != (evlist->overwrite && evlist->backward))
 			continue;
 
 		if (evsel->system_wide && thread)
diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c
index 0fea724..3abe519 100644
--- a/tools/perf/util/evsel.c
+++ b/tools/perf/util/evsel.c
@@ -1359,6 +1359,9 @@ static int __perf_evsel__open(struct perf_evsel *evsel, struct cpu_map *cpus,
 	int pid = -1, err;
 	enum { NO_CHANGE, SET_TO_MAX, INCREASED_MAX } set_rlimit = NO_CHANGE;
 
+	if (perf_missing_features.write_backward && evsel->attr.write_backward)
+		return -EINVAL;
+
 	if (evsel->system_wide)
 		nthreads = 1;
 	else
@@ -1389,11 +1392,6 @@ 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) {
-		if (evsel->overwrite)
-			return -EINVAL;
-		evsel->attr.write_backward = false;
-	}
 retry_sample_id:
 	if (perf_missing_features.sample_id_all)
 		evsel->attr.sample_id_all = 0;
@@ -1495,7 +1493,7 @@ try_fallback:
 	 */
 	if (!perf_missing_features.write_backward && evsel->attr.write_backward) {
 		perf_missing_features.write_backward = true;
-		goto fallback_missing_features;
+		goto out_close;
 	} else if (!perf_missing_features.clockid_wrong && evsel->attr.use_clockid) {
 		perf_missing_features.clockid_wrong = true;
 		goto fallback_missing_features;
@@ -2404,7 +2402,7 @@ int perf_evsel__open_strerror(struct perf_evsel *evsel, struct target *target,
 	"We found oprofile daemon running, please stop it and try again.");
 		break;
 	case EINVAL:
-		if (evsel->overwrite && perf_missing_features.write_backward)
+		if (evsel->attr.write_backward && perf_missing_features.write_backward)
 			return scnprintf(msg, size, "Reading from overwrite event is not supported by this kernel.");
 		if (perf_missing_features.clockid)
 			return scnprintf(msg, size, "clockid feature not supported.");
diff --git a/tools/perf/util/evsel.h b/tools/perf/util/evsel.h
index 86fed7a..a31ee2d 100644
--- a/tools/perf/util/evsel.h
+++ b/tools/perf/util/evsel.h
@@ -114,7 +114,6 @@ struct perf_evsel {
 	bool			tracking;
 	bool			per_pkg;
 	bool			precise_max;
-	bool			overwrite;
 	/* parse modifier helper */
 	int			exclude_GH;
 	int			nr_members;
-- 
1.8.3.4

[toc] | [next] | [standalone]


#1437636 — Re: [PATCH v13 1/8] perf tools: Drop redundant evsel->overwrite indicator

From"Wangnan (F)" <wangnan0@huawei.com>
Date2016-07-06 13:00 +0200
SubjectRe: [PATCH v13 1/8] perf tools: Drop redundant evsel->overwrite indicator
Message-ID<rRSIF-88t-19@gated-at.bofh.it>
In reply to#1436149

On 2016/7/6 18:53, Jiri Olsa wrote:
> On Mon, Jul 04, 2016 at 06:20:02AM +0000, Wang Nan wrote:
>
> SNIP
>
>> diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c
>> index 0fea724..3abe519 100644
>> --- a/tools/perf/util/evsel.c
>> +++ b/tools/perf/util/evsel.c
>> @@ -1359,6 +1359,9 @@ static int __perf_evsel__open(struct perf_evsel *evsel, struct cpu_map *cpus,
>>   	int pid = -1, err;
>>   	enum { NO_CHANGE, SET_TO_MAX, INCREASED_MAX } set_rlimit = NO_CHANGE;
>>   
>> +	if (perf_missing_features.write_backward && evsel->attr.write_backward)
>> +		return -EINVAL;
>> +
>>   	if (evsel->system_wide)
>>   		nthreads = 1;
>>   	else
>> @@ -1389,11 +1392,6 @@ 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) {
>> -		if (evsel->overwrite)
>> -			return -EINVAL;
>> -		evsel->attr.write_backward = false;
>> -	}
> so we don't change the attr.write_backward anymore?
> based on the kernel support..

We don't need fallback here. If evsel->attr.write_backward is selected
and it is missing, we should fail.

> we do it for other features, why not here? also changelog
> did not mentioned it at all ;-)
>
> thanks,
> jirka

[toc] | [prev] | [next] | [standalone]


#1437637 — Re: [PATCH v13 1/8] perf tools: Drop redundant evsel->overwrite indicator

FromJiri Olsa <jolsa@redhat.com>
Date2016-07-06 13:00 +0200
SubjectRe: [PATCH v13 1/8] perf tools: Drop redundant evsel->overwrite indicator
Message-ID<rRSIF-88t-21@gated-at.bofh.it>
In reply to#1436149
On Mon, Jul 04, 2016 at 06:20:02AM +0000, Wang Nan wrote:

SNIP

> diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c
> index 0fea724..3abe519 100644
> --- a/tools/perf/util/evsel.c
> +++ b/tools/perf/util/evsel.c
> @@ -1359,6 +1359,9 @@ static int __perf_evsel__open(struct perf_evsel *evsel, struct cpu_map *cpus,
>  	int pid = -1, err;
>  	enum { NO_CHANGE, SET_TO_MAX, INCREASED_MAX } set_rlimit = NO_CHANGE;
>  
> +	if (perf_missing_features.write_backward && evsel->attr.write_backward)
> +		return -EINVAL;
> +
>  	if (evsel->system_wide)
>  		nthreads = 1;
>  	else
> @@ -1389,11 +1392,6 @@ 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) {
> -		if (evsel->overwrite)
> -			return -EINVAL;
> -		evsel->attr.write_backward = false;
> -	}

so we don't change the attr.write_backward anymore?
based on the kernel support.. 

we do it for other features, why not here? also changelog
did not mentioned it at all ;-)

thanks,
jirka

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web