linux-kernel.vger.kernel.org archive mirror
 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).