All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v1 1/2] perf, tools: Move perf_evsel__reset_weak_group into evlist
@ 2018-10-01 19:59 Andi Kleen
  2018-10-01 19:59 ` [PATCH v1 2/2] perf record: Support weak groups Andi Kleen
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Andi Kleen @ 2018-10-01 19:59 UTC (permalink / raw)
  To: acme; +Cc: jolsa, linux-kernel, Andi Kleen

From: Andi Kleen <ak@linux.intel.com>

- Move the function from builtin-stat to evlist for reuse
- Rename to evlist to match purpose better
- Pass the evlist as first argument.
- No functional changes

Signed-off-by: Andi Kleen <ak@linux.intel.com>
---
 tools/perf/builtin-stat.c | 29 ++---------------------------
 tools/perf/util/evlist.c  | 27 +++++++++++++++++++++++++++
 tools/perf/util/evlist.h  |  3 +++
 3 files changed, 32 insertions(+), 27 deletions(-)

diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
index 08a1e64078ca..e60f6991dbb8 100644
--- a/tools/perf/builtin-stat.c
+++ b/tools/perf/builtin-stat.c
@@ -567,32 +567,6 @@ static bool perf_evsel__should_store_id(struct perf_evsel *counter)
 	return STAT_RECORD || counter->attr.read_format & PERF_FORMAT_ID;
 }
 
-static struct perf_evsel *perf_evsel__reset_weak_group(struct perf_evsel *evsel)
-{
-	struct perf_evsel *c2, *leader;
-	bool is_open = true;
-
-	leader = evsel->leader;
-	pr_debug("Weak group for %s/%d failed\n",
-			leader->name, leader->nr_members);
-
-	/*
-	 * for_each_group_member doesn't work here because it doesn't
-	 * include the first entry.
-	 */
-	evlist__for_each_entry(evsel_list, c2) {
-		if (c2 == evsel)
-			is_open = false;
-		if (c2->leader == leader) {
-			if (is_open)
-				perf_evsel__close(c2);
-			c2->leader = c2;
-			c2->nr_members = 0;
-		}
-	}
-	return leader;
-}
-
 static int __run_perf_stat(int argc, const char **argv, int run_idx)
 {
 	int interval = stat_config.interval;
@@ -639,7 +613,8 @@ static int __run_perf_stat(int argc, const char **argv, int run_idx)
 			if ((errno == EINVAL || errno == EBADF) &&
 			    counter->leader != counter &&
 			    counter->weak_group) {
-				counter = perf_evsel__reset_weak_group(counter);
+				counter = perf_evlist__reset_weak_group(evsel_list,
+									counter);
 				goto try_again;
 			}
 
diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c
index e7a4b31a84fb..de90f9097e97 100644
--- a/tools/perf/util/evlist.c
+++ b/tools/perf/util/evlist.c
@@ -1810,3 +1810,30 @@ void perf_evlist__force_leader(struct perf_evlist *evlist)
 		leader->forced_leader = true;
 	}
 }
+
+struct perf_evsel *perf_evlist__reset_weak_group(struct perf_evlist *evsel_list,
+						 struct perf_evsel *evsel)
+{
+	struct perf_evsel *c2, *leader;
+	bool is_open = true;
+
+	leader = evsel->leader;
+	pr_debug("Weak group for %s/%d failed\n",
+			leader->name, leader->nr_members);
+
+	/*
+	 * for_each_group_member doesn't work here because it doesn't
+	 * include the first entry.
+	 */
+	evlist__for_each_entry(evsel_list, c2) {
+		if (c2 == evsel)
+			is_open = false;
+		if (c2->leader == leader) {
+			if (is_open)
+				perf_evsel__close(c2);
+			c2->leader = c2;
+			c2->nr_members = 0;
+		}
+	}
+	return leader;
+}
diff --git a/tools/perf/util/evlist.h b/tools/perf/util/evlist.h
index dc66436add98..9919eed6d15b 100644
--- a/tools/perf/util/evlist.h
+++ b/tools/perf/util/evlist.h
@@ -312,4 +312,7 @@ bool perf_evlist__exclude_kernel(struct perf_evlist *evlist);
 
 void perf_evlist__force_leader(struct perf_evlist *evlist);
 
+struct perf_evsel *perf_evlist__reset_weak_group(struct perf_evlist *evlist,
+						 struct perf_evsel *evsel);
+
 #endif /* __PERF_EVLIST_H */
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v1 2/2] perf record: Support weak groups
  2018-10-01 19:59 [PATCH v1 1/2] perf, tools: Move perf_evsel__reset_weak_group into evlist Andi Kleen
@ 2018-10-01 19:59 ` Andi Kleen
  2018-10-02 15:42   ` Jiri Olsa
  2018-11-06 19:13   ` [tip:perf/urgent] " tip-bot for Andi Kleen
  2018-10-02 15:41 ` [PATCH v1 1/2] perf, tools: Move perf_evsel__reset_weak_group into evlist Jiri Olsa
  2018-11-06 19:12 ` [tip:perf/urgent] perf evlist: " tip-bot for Andi Kleen
  2 siblings, 2 replies; 6+ messages in thread
From: Andi Kleen @ 2018-10-01 19:59 UTC (permalink / raw)
  To: acme; +Cc: jolsa, linux-kernel, Andi Kleen

From: Andi Kleen <ak@linux.intel.com>

Implement a weak group fallback for perf record, similar to the existing perf stat support.
This allows to use groups that might be longer than the available counters without
failing.

Before:

$ perf record  -e '{cycles,cache-misses,cache-references,cpu_clk_unhalted.thread,cycles,cycles,cycles}' -a sleep 1
Error:
The sys_perf_event_open() syscall returned with 22 (Invalid argument) for event (cycles).
/bin/dmesg | grep -i perf may provide additional information.

After:

$ ./perf record  -e '{cycles,cache-misses,cache-references,cpu_clk_unhalted.thread,cycles,cycles,cycles}:W' -a sleep 1
WARNING: No sample_id_all support, falling back to unordered processing
[ perf record: Woken up 3 times to write data ]
[ perf record: Captured and wrote 8.136 MB perf.data (134069 samples) ]

Signed-off-by: Andi Kleen <ak@linux.intel.com>
---
 tools/perf/Documentation/perf-list.txt | 1 -
 tools/perf/builtin-record.c            | 7 ++++++-
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/tools/perf/Documentation/perf-list.txt b/tools/perf/Documentation/perf-list.txt
index 11300dbe35c5..c50ed1177984 100644
--- a/tools/perf/Documentation/perf-list.txt
+++ b/tools/perf/Documentation/perf-list.txt
@@ -49,7 +49,6 @@ counted. The following modifiers exist:
  S - read sample value (PERF_SAMPLE_READ)
  D - pin the event to the PMU
  W - group is weak and will fallback to non-group if not schedulable,
-     only supported in 'perf stat' for now.
 
 The 'p' modifier can be used for specifying how precise the instruction
 address should be. The 'p' modifier can be specified multiple times:
diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
index 22ebeb92ac51..504d89d67b3a 100644
--- a/tools/perf/builtin-record.c
+++ b/tools/perf/builtin-record.c
@@ -388,7 +388,12 @@ static int record__open(struct record *rec)
 					ui__warning("%s\n", msg);
 				goto try_again;
 			}
-
+			if ((errno == EINVAL || errno == EBADF) &&
+			    pos->leader != pos &&
+			    pos->weak_group) {
+			        pos = perf_evlist__reset_weak_group(evlist, pos);
+				goto try_again;
+			}
 			rc = -errno;
 			perf_evsel__open_strerror(pos, &opts->target,
 						  errno, msg, sizeof(msg));
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v1 1/2] perf, tools: Move perf_evsel__reset_weak_group into evlist
  2018-10-01 19:59 [PATCH v1 1/2] perf, tools: Move perf_evsel__reset_weak_group into evlist Andi Kleen
  2018-10-01 19:59 ` [PATCH v1 2/2] perf record: Support weak groups Andi Kleen
@ 2018-10-02 15:41 ` Jiri Olsa
  2018-11-06 19:12 ` [tip:perf/urgent] perf evlist: " tip-bot for Andi Kleen
  2 siblings, 0 replies; 6+ messages in thread
From: Jiri Olsa @ 2018-10-02 15:41 UTC (permalink / raw)
  To: Andi Kleen; +Cc: acme, jolsa, linux-kernel, Andi Kleen

On Mon, Oct 01, 2018 at 12:59:26PM -0700, Andi Kleen wrote:
> From: Andi Kleen <ak@linux.intel.com>
> 
> - Move the function from builtin-stat to evlist for reuse
> - Rename to evlist to match purpose better
> - Pass the evlist as first argument.
> - No functional changes
> 
> Signed-off-by: Andi Kleen <ak@linux.intel.com>

Acked-by: Jiri Olsa <jolsa@kernel.org>

thanks,
jirka

> ---
>  tools/perf/builtin-stat.c | 29 ++---------------------------
>  tools/perf/util/evlist.c  | 27 +++++++++++++++++++++++++++
>  tools/perf/util/evlist.h  |  3 +++
>  3 files changed, 32 insertions(+), 27 deletions(-)
> 
> diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
> index 08a1e64078ca..e60f6991dbb8 100644
> --- a/tools/perf/builtin-stat.c
> +++ b/tools/perf/builtin-stat.c
> @@ -567,32 +567,6 @@ static bool perf_evsel__should_store_id(struct perf_evsel *counter)
>  	return STAT_RECORD || counter->attr.read_format & PERF_FORMAT_ID;
>  }
>  
> -static struct perf_evsel *perf_evsel__reset_weak_group(struct perf_evsel *evsel)
> -{
> -	struct perf_evsel *c2, *leader;
> -	bool is_open = true;
> -
> -	leader = evsel->leader;
> -	pr_debug("Weak group for %s/%d failed\n",
> -			leader->name, leader->nr_members);
> -
> -	/*
> -	 * for_each_group_member doesn't work here because it doesn't
> -	 * include the first entry.
> -	 */
> -	evlist__for_each_entry(evsel_list, c2) {
> -		if (c2 == evsel)
> -			is_open = false;
> -		if (c2->leader == leader) {
> -			if (is_open)
> -				perf_evsel__close(c2);
> -			c2->leader = c2;
> -			c2->nr_members = 0;
> -		}
> -	}
> -	return leader;
> -}
> -
>  static int __run_perf_stat(int argc, const char **argv, int run_idx)
>  {
>  	int interval = stat_config.interval;
> @@ -639,7 +613,8 @@ static int __run_perf_stat(int argc, const char **argv, int run_idx)
>  			if ((errno == EINVAL || errno == EBADF) &&
>  			    counter->leader != counter &&
>  			    counter->weak_group) {
> -				counter = perf_evsel__reset_weak_group(counter);
> +				counter = perf_evlist__reset_weak_group(evsel_list,
> +									counter);
>  				goto try_again;
>  			}
>  
> diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c
> index e7a4b31a84fb..de90f9097e97 100644
> --- a/tools/perf/util/evlist.c
> +++ b/tools/perf/util/evlist.c
> @@ -1810,3 +1810,30 @@ void perf_evlist__force_leader(struct perf_evlist *evlist)
>  		leader->forced_leader = true;
>  	}
>  }
> +
> +struct perf_evsel *perf_evlist__reset_weak_group(struct perf_evlist *evsel_list,
> +						 struct perf_evsel *evsel)
> +{
> +	struct perf_evsel *c2, *leader;
> +	bool is_open = true;
> +
> +	leader = evsel->leader;
> +	pr_debug("Weak group for %s/%d failed\n",
> +			leader->name, leader->nr_members);
> +
> +	/*
> +	 * for_each_group_member doesn't work here because it doesn't
> +	 * include the first entry.
> +	 */
> +	evlist__for_each_entry(evsel_list, c2) {
> +		if (c2 == evsel)
> +			is_open = false;
> +		if (c2->leader == leader) {
> +			if (is_open)
> +				perf_evsel__close(c2);
> +			c2->leader = c2;
> +			c2->nr_members = 0;
> +		}
> +	}
> +	return leader;
> +}
> diff --git a/tools/perf/util/evlist.h b/tools/perf/util/evlist.h
> index dc66436add98..9919eed6d15b 100644
> --- a/tools/perf/util/evlist.h
> +++ b/tools/perf/util/evlist.h
> @@ -312,4 +312,7 @@ bool perf_evlist__exclude_kernel(struct perf_evlist *evlist);
>  
>  void perf_evlist__force_leader(struct perf_evlist *evlist);
>  
> +struct perf_evsel *perf_evlist__reset_weak_group(struct perf_evlist *evlist,
> +						 struct perf_evsel *evsel);
> +
>  #endif /* __PERF_EVLIST_H */
> -- 
> 2.17.1
> 

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v1 2/2] perf record: Support weak groups
  2018-10-01 19:59 ` [PATCH v1 2/2] perf record: Support weak groups Andi Kleen
@ 2018-10-02 15:42   ` Jiri Olsa
  2018-11-06 19:13   ` [tip:perf/urgent] " tip-bot for Andi Kleen
  1 sibling, 0 replies; 6+ messages in thread
From: Jiri Olsa @ 2018-10-02 15:42 UTC (permalink / raw)
  To: Andi Kleen; +Cc: acme, jolsa, linux-kernel, Andi Kleen

On Mon, Oct 01, 2018 at 12:59:27PM -0700, Andi Kleen wrote:
> From: Andi Kleen <ak@linux.intel.com>
> 
> Implement a weak group fallback for perf record, similar to the existing perf stat support.
> This allows to use groups that might be longer than the available counters without
> failing.
> 
> Before:
> 
> $ perf record  -e '{cycles,cache-misses,cache-references,cpu_clk_unhalted.thread,cycles,cycles,cycles}' -a sleep 1
> Error:
> The sys_perf_event_open() syscall returned with 22 (Invalid argument) for event (cycles).
> /bin/dmesg | grep -i perf may provide additional information.
> 
> After:
> 
> $ ./perf record  -e '{cycles,cache-misses,cache-references,cpu_clk_unhalted.thread,cycles,cycles,cycles}:W' -a sleep 1
> WARNING: No sample_id_all support, falling back to unordered processing
> [ perf record: Woken up 3 times to write data ]
> [ perf record: Captured and wrote 8.136 MB perf.data (134069 samples) ]
> 
> Signed-off-by: Andi Kleen <ak@linux.intel.com>

Acked-by: Jiri Olsa <jolsa@kernel.org>

thanks,
jirka

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [tip:perf/urgent] perf evlist: Move perf_evsel__reset_weak_group into evlist
  2018-10-01 19:59 [PATCH v1 1/2] perf, tools: Move perf_evsel__reset_weak_group into evlist Andi Kleen
  2018-10-01 19:59 ` [PATCH v1 2/2] perf record: Support weak groups Andi Kleen
  2018-10-02 15:41 ` [PATCH v1 1/2] perf, tools: Move perf_evsel__reset_weak_group into evlist Jiri Olsa
@ 2018-11-06 19:12 ` tip-bot for Andi Kleen
  2 siblings, 0 replies; 6+ messages in thread
From: tip-bot for Andi Kleen @ 2018-11-06 19:12 UTC (permalink / raw)
  To: linux-tip-commits; +Cc: hpa, mingo, linux-kernel, acme, tglx, jolsa, ak

Commit-ID:  c3537fc251503af18085b8f84126d13743663970
Gitweb:     https://git.kernel.org/tip/c3537fc251503af18085b8f84126d13743663970
Author:     Andi Kleen <ak@linux.intel.com>
AuthorDate: Mon, 1 Oct 2018 12:59:26 -0700
Committer:  Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Mon, 5 Nov 2018 14:37:09 -0300

perf evlist: Move perf_evsel__reset_weak_group into evlist

- Move the function from builtin-stat to evlist for reuse
- Rename to evlist to match purpose better
- Pass the evlist as first argument.
- No functional changes

Signed-off-by: Andi Kleen <ak@linux.intel.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Link: http://lkml.kernel.org/r/20181001195927.14211-1-andi@firstfloor.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/builtin-stat.c | 28 +---------------------------
 tools/perf/util/evlist.c  | 27 +++++++++++++++++++++++++++
 tools/perf/util/evlist.h  |  3 +++
 3 files changed, 31 insertions(+), 27 deletions(-)

diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
index d1028d7755bb..a635abfa77b6 100644
--- a/tools/perf/builtin-stat.c
+++ b/tools/perf/builtin-stat.c
@@ -383,32 +383,6 @@ static bool perf_evsel__should_store_id(struct perf_evsel *counter)
 	return STAT_RECORD || counter->attr.read_format & PERF_FORMAT_ID;
 }
 
-static struct perf_evsel *perf_evsel__reset_weak_group(struct perf_evsel *evsel)
-{
-	struct perf_evsel *c2, *leader;
-	bool is_open = true;
-
-	leader = evsel->leader;
-	pr_debug("Weak group for %s/%d failed\n",
-			leader->name, leader->nr_members);
-
-	/*
-	 * for_each_group_member doesn't work here because it doesn't
-	 * include the first entry.
-	 */
-	evlist__for_each_entry(evsel_list, c2) {
-		if (c2 == evsel)
-			is_open = false;
-		if (c2->leader == leader) {
-			if (is_open)
-				perf_evsel__close(c2);
-			c2->leader = c2;
-			c2->nr_members = 0;
-		}
-	}
-	return leader;
-}
-
 static bool is_target_alive(struct target *_target,
 			    struct thread_map *threads)
 {
@@ -477,7 +451,7 @@ try_again:
 			if ((errno == EINVAL || errno == EBADF) &&
 			    counter->leader != counter &&
 			    counter->weak_group) {
-				counter = perf_evsel__reset_weak_group(counter);
+				counter = perf_evlist__reset_weak_group(evsel_list, counter);
 				goto try_again;
 			}
 
diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c
index e88e6f9b1463..668d2a9ef0f4 100644
--- a/tools/perf/util/evlist.c
+++ b/tools/perf/util/evlist.c
@@ -1810,3 +1810,30 @@ void perf_evlist__force_leader(struct perf_evlist *evlist)
 		leader->forced_leader = true;
 	}
 }
+
+struct perf_evsel *perf_evlist__reset_weak_group(struct perf_evlist *evsel_list,
+						 struct perf_evsel *evsel)
+{
+	struct perf_evsel *c2, *leader;
+	bool is_open = true;
+
+	leader = evsel->leader;
+	pr_debug("Weak group for %s/%d failed\n",
+			leader->name, leader->nr_members);
+
+	/*
+	 * for_each_group_member doesn't work here because it doesn't
+	 * include the first entry.
+	 */
+	evlist__for_each_entry(evsel_list, c2) {
+		if (c2 == evsel)
+			is_open = false;
+		if (c2->leader == leader) {
+			if (is_open)
+				perf_evsel__close(c2);
+			c2->leader = c2;
+			c2->nr_members = 0;
+		}
+	}
+	return leader;
+}
diff --git a/tools/perf/util/evlist.h b/tools/perf/util/evlist.h
index dc66436add98..9919eed6d15b 100644
--- a/tools/perf/util/evlist.h
+++ b/tools/perf/util/evlist.h
@@ -312,4 +312,7 @@ bool perf_evlist__exclude_kernel(struct perf_evlist *evlist);
 
 void perf_evlist__force_leader(struct perf_evlist *evlist);
 
+struct perf_evsel *perf_evlist__reset_weak_group(struct perf_evlist *evlist,
+						 struct perf_evsel *evsel);
+
 #endif /* __PERF_EVLIST_H */

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [tip:perf/urgent] perf record: Support weak groups
  2018-10-01 19:59 ` [PATCH v1 2/2] perf record: Support weak groups Andi Kleen
  2018-10-02 15:42   ` Jiri Olsa
@ 2018-11-06 19:13   ` tip-bot for Andi Kleen
  1 sibling, 0 replies; 6+ messages in thread
From: tip-bot for Andi Kleen @ 2018-11-06 19:13 UTC (permalink / raw)
  To: linux-tip-commits; +Cc: tglx, mingo, jolsa, ak, linux-kernel, acme, hpa

Commit-ID:  cf99ad1424c54fc84b84d3a3deb57a48c340c30a
Gitweb:     https://git.kernel.org/tip/cf99ad1424c54fc84b84d3a3deb57a48c340c30a
Author:     Andi Kleen <ak@linux.intel.com>
AuthorDate: Mon, 1 Oct 2018 12:59:27 -0700
Committer:  Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Mon, 5 Nov 2018 14:37:10 -0300

perf record: Support weak groups

Implement a weak group fallback for 'perf record', similar to the
existing 'perf stat' support.  This allows to use groups that might be
longer than the available counters without failing.

Before:

  $ perf record  -e '{cycles,cache-misses,cache-references,cpu_clk_unhalted.thread,cycles,cycles,cycles}' -a sleep 1
  Error:
  The sys_perf_event_open() syscall returned with 22 (Invalid argument) for event (cycles).
  /bin/dmesg | grep -i perf may provide additional information.

After:

  $ ./perf record  -e '{cycles,cache-misses,cache-references,cpu_clk_unhalted.thread,cycles,cycles,cycles}:W' -a sleep 1
  WARNING: No sample_id_all support, falling back to unordered processing
  [ perf record: Woken up 3 times to write data ]
  [ perf record: Captured and wrote 8.136 MB perf.data (134069 samples) ]

Signed-off-by: Andi Kleen <ak@linux.intel.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Link: http://lkml.kernel.org/r/20181001195927.14211-2-andi@firstfloor.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/Documentation/perf-list.txt | 1 -
 tools/perf/builtin-record.c            | 7 ++++++-
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/tools/perf/Documentation/perf-list.txt b/tools/perf/Documentation/perf-list.txt
index 236b9b97dfdb..667c14e56031 100644
--- a/tools/perf/Documentation/perf-list.txt
+++ b/tools/perf/Documentation/perf-list.txt
@@ -55,7 +55,6 @@ counted. The following modifiers exist:
  S - read sample value (PERF_SAMPLE_READ)
  D - pin the event to the PMU
  W - group is weak and will fallback to non-group if not schedulable,
-     only supported in 'perf stat' for now.
 
 The 'p' modifier can be used for specifying how precise the instruction
 address should be. The 'p' modifier can be specified multiple times:
diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
index 10cf889c6d75..488779bc4c8d 100644
--- a/tools/perf/builtin-record.c
+++ b/tools/perf/builtin-record.c
@@ -391,7 +391,12 @@ try_again:
 					ui__warning("%s\n", msg);
 				goto try_again;
 			}
-
+			if ((errno == EINVAL || errno == EBADF) &&
+			    pos->leader != pos &&
+			    pos->weak_group) {
+			        pos = perf_evlist__reset_weak_group(evlist, pos);
+				goto try_again;
+			}
 			rc = -errno;
 			perf_evsel__open_strerror(pos, &opts->target,
 						  errno, msg, sizeof(msg));

^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2018-11-06 19:13 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-10-01 19:59 [PATCH v1 1/2] perf, tools: Move perf_evsel__reset_weak_group into evlist Andi Kleen
2018-10-01 19:59 ` [PATCH v1 2/2] perf record: Support weak groups Andi Kleen
2018-10-02 15:42   ` Jiri Olsa
2018-11-06 19:13   ` [tip:perf/urgent] " tip-bot for Andi Kleen
2018-10-02 15:41 ` [PATCH v1 1/2] perf, tools: Move perf_evsel__reset_weak_group into evlist Jiri Olsa
2018-11-06 19:12 ` [tip:perf/urgent] perf evlist: " tip-bot for Andi Kleen

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.