All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Josh Triplett <josh@joshtriplett.org>
Cc: linux-kernel@vger.kernel.org, mingo@kernel.org,
	jiangshanlai@gmail.com, dipankar@in.ibm.com,
	akpm@linux-foundation.org, mathieu.desnoyers@efficios.com,
	tglx@linutronix.de, peterz@infradead.org, rostedt@goodmis.org,
	dhowells@redhat.com, edumazet@google.com, fweisbec@gmail.com,
	oleg@redhat.com, bobby.prani@gmail.com
Subject: Re: [PATCH v2 tip/core/rcu 02/11] lockdep: Use "WARNING" tag on lockdep splats
Date: Wed, 19 Apr 2017 09:26:10 -0700	[thread overview]
Message-ID: <20170419162610.GT3956@linux.vnet.ibm.com> (raw)
In-Reply-To: <20170419150022.GB17080@cloud>

On Wed, Apr 19, 2017 at 08:00:22AM -0700, Josh Triplett wrote:
> On Mon, Apr 17, 2017 at 04:28:49PM -0700, Paul E. McKenney wrote:
> > This commit changes lockdep splats to begin lines with "WARNING" and
> > to use pr_warn() instead of printk().  This change eases scripted
> > analysis of kernel console output.
> > 
> > Reported-by: Dmitry Vyukov <dvyukov@google.com>
> > Reported-by: Ingo Molnar <mingo@kernel.org>
> > Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
> > Acked-by: Dmitry Vyukov <dvyukov@google.com>
> 
> Reviewed-by: Josh Triplett <josh@joshtriplett.org>

Thank you!

> Any reason not to change the adjacent calls to printk (without a
> priority) to pr_warn?

There was some discussion of changing them all throughout the file,
not sure where we left that.

							Thanx, Paul

> >  kernel/locking/lockdep.c       | 86 +++++++++++++++++++++---------------------
> >  kernel/locking/rtmutex-debug.c |  9 +++--
> >  2 files changed, 48 insertions(+), 47 deletions(-)
> > 
> > diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c
> > index a95e5d1f4a9c..e9d4f85b290c 100644
> > --- a/kernel/locking/lockdep.c
> > +++ b/kernel/locking/lockdep.c
> > @@ -1144,10 +1144,10 @@ print_circular_bug_header(struct lock_list *entry, unsigned int depth,
> >  		return 0;
> >  
> >  	printk("\n");
> > -	printk("======================================================\n");
> > -	printk("[ INFO: possible circular locking dependency detected ]\n");
> > +	pr_warn("======================================================\n");
> > +	pr_warn("WARNING: possible circular locking dependency detected\n");
> >  	print_kernel_ident();
> > -	printk("-------------------------------------------------------\n");
> > +	pr_warn("------------------------------------------------------\n");
> >  	printk("%s/%d is trying to acquire lock:\n",
> >  		curr->comm, task_pid_nr(curr));
> >  	print_lock(check_src);
> > @@ -1482,11 +1482,11 @@ print_bad_irq_dependency(struct task_struct *curr,
> >  		return 0;
> >  
> >  	printk("\n");
> > -	printk("======================================================\n");
> > -	printk("[ INFO: %s-safe -> %s-unsafe lock order detected ]\n",
> > +	pr_warn("=====================================================\n");
> > +	pr_warn("WARNING: %s-safe -> %s-unsafe lock order detected\n",
> >  		irqclass, irqclass);
> >  	print_kernel_ident();
> > -	printk("------------------------------------------------------\n");
> > +	pr_warn("-----------------------------------------------------\n");
> >  	printk("%s/%d [HC%u[%lu]:SC%u[%lu]:HE%u:SE%u] is trying to acquire:\n",
> >  		curr->comm, task_pid_nr(curr),
> >  		curr->hardirq_context, hardirq_count() >> HARDIRQ_SHIFT,
> > @@ -1711,10 +1711,10 @@ print_deadlock_bug(struct task_struct *curr, struct held_lock *prev,
> >  		return 0;
> >  
> >  	printk("\n");
> > -	printk("=============================================\n");
> > -	printk("[ INFO: possible recursive locking detected ]\n");
> > +	pr_warn("============================================\n");
> > +	pr_warn("WARNING: possible recursive locking detected\n");
> >  	print_kernel_ident();
> > -	printk("---------------------------------------------\n");
> > +	pr_warn("--------------------------------------------\n");
> >  	printk("%s/%d is trying to acquire lock:\n",
> >  		curr->comm, task_pid_nr(curr));
> >  	print_lock(next);
> > @@ -2061,10 +2061,10 @@ static void print_collision(struct task_struct *curr,
> >  			struct lock_chain *chain)
> >  {
> >  	printk("\n");
> > -	printk("======================\n");
> > -	printk("[chain_key collision ]\n");
> > +	pr_warn("============================\n");
> > +	pr_warn("WARNING: chain_key collision\n");
> >  	print_kernel_ident();
> > -	printk("----------------------\n");
> > +	pr_warn("----------------------------\n");
> >  	printk("%s/%d: ", current->comm, task_pid_nr(current));
> >  	printk("Hash chain already cached but the contents don't match!\n");
> >  
> > @@ -2360,10 +2360,10 @@ print_usage_bug(struct task_struct *curr, struct held_lock *this,
> >  		return 0;
> >  
> >  	printk("\n");
> > -	printk("=================================\n");
> > -	printk("[ INFO: inconsistent lock state ]\n");
> > +	pr_warn("================================\n");
> > +	pr_warn("WARNING: inconsistent lock state\n");
> >  	print_kernel_ident();
> > -	printk("---------------------------------\n");
> > +	pr_warn("--------------------------------\n");
> >  
> >  	printk("inconsistent {%s} -> {%s} usage.\n",
> >  		usage_str[prev_bit], usage_str[new_bit]);
> > @@ -2425,10 +2425,10 @@ print_irq_inversion_bug(struct task_struct *curr,
> >  		return 0;
> >  
> >  	printk("\n");
> > -	printk("=========================================================\n");
> > -	printk("[ INFO: possible irq lock inversion dependency detected ]\n");
> > +	pr_warn("========================================================\n");
> > +	pr_warn("WARNING: possible irq lock inversion dependency detected\n");
> >  	print_kernel_ident();
> > -	printk("---------------------------------------------------------\n");
> > +	pr_warn("--------------------------------------------------------\n");
> >  	printk("%s/%d just changed the state of lock:\n",
> >  		curr->comm, task_pid_nr(curr));
> >  	print_lock(this);
> > @@ -3170,10 +3170,10 @@ print_lock_nested_lock_not_held(struct task_struct *curr,
> >  		return 0;
> >  
> >  	printk("\n");
> > -	printk("==================================\n");
> > -	printk("[ BUG: Nested lock was not taken ]\n");
> > +	pr_warn("==================================\n");
> > +	pr_warn("WARNING: Nested lock was not taken\n");
> >  	print_kernel_ident();
> > -	printk("----------------------------------\n");
> > +	pr_warn("----------------------------------\n");
> >  
> >  	printk("%s/%d is trying to lock:\n", curr->comm, task_pid_nr(curr));
> >  	print_lock(hlock);
> > @@ -3383,10 +3383,10 @@ print_unlock_imbalance_bug(struct task_struct *curr, struct lockdep_map *lock,
> >  		return 0;
> >  
> >  	printk("\n");
> > -	printk("=====================================\n");
> > -	printk("[ BUG: bad unlock balance detected! ]\n");
> > +	pr_warn("=====================================\n");
> > +	pr_warn("WARNING: bad unlock balance detected!\n");
> >  	print_kernel_ident();
> > -	printk("-------------------------------------\n");
> > +	pr_warn("-------------------------------------\n");
> >  	printk("%s/%d is trying to release lock (",
> >  		curr->comm, task_pid_nr(curr));
> >  	print_lockdep_cache(lock);
> > @@ -3880,10 +3880,10 @@ print_lock_contention_bug(struct task_struct *curr, struct lockdep_map *lock,
> >  		return 0;
> >  
> >  	printk("\n");
> > -	printk("=================================\n");
> > -	printk("[ BUG: bad contention detected! ]\n");
> > +	pr_warn("=================================\n");
> > +	pr_warn("WARNING: bad contention detected!\n");
> >  	print_kernel_ident();
> > -	printk("---------------------------------\n");
> > +	pr_warn("---------------------------------\n");
> >  	printk("%s/%d is trying to contend lock (",
> >  		curr->comm, task_pid_nr(curr));
> >  	print_lockdep_cache(lock);
> > @@ -4244,10 +4244,10 @@ print_freed_lock_bug(struct task_struct *curr, const void *mem_from,
> >  		return;
> >  
> >  	printk("\n");
> > -	printk("=========================\n");
> > -	printk("[ BUG: held lock freed! ]\n");
> > +	pr_warn("=========================\n");
> > +	pr_warn("WARNING: held lock freed!\n");
> >  	print_kernel_ident();
> > -	printk("-------------------------\n");
> > +	pr_warn("-------------------------\n");
> >  	printk("%s/%d is freeing memory %p-%p, with a lock still held there!\n",
> >  		curr->comm, task_pid_nr(curr), mem_from, mem_to-1);
> >  	print_lock(hlock);
> > @@ -4302,11 +4302,11 @@ static void print_held_locks_bug(void)
> >  		return;
> >  
> >  	printk("\n");
> > -	printk("=====================================\n");
> > -	printk("[ BUG: %s/%d still has locks held! ]\n",
> > +	pr_warn("====================================\n");
> > +	pr_warn("WARNING: %s/%d still has locks held!\n",
> >  	       current->comm, task_pid_nr(current));
> >  	print_kernel_ident();
> > -	printk("-------------------------------------\n");
> > +	pr_warn("------------------------------------\n");
> >  	lockdep_print_held_locks(current);
> >  	printk("\nstack backtrace:\n");
> >  	dump_stack();
> > @@ -4371,7 +4371,7 @@ void debug_show_all_locks(void)
> >  	} while_each_thread(g, p);
> >  
> >  	printk("\n");
> > -	printk("=============================================\n\n");
> > +	pr_warn("=============================================\n\n");
> >  
> >  	if (unlock)
> >  		read_unlock(&tasklist_lock);
> > @@ -4401,10 +4401,10 @@ asmlinkage __visible void lockdep_sys_exit(void)
> >  		if (!debug_locks_off())
> >  			return;
> >  		printk("\n");
> > -		printk("================================================\n");
> > -		printk("[ BUG: lock held when returning to user space! ]\n");
> > +		pr_warn("================================================\n");
> > +		pr_warn("WARNING: lock held when returning to user space!\n");
> >  		print_kernel_ident();
> > -		printk("------------------------------------------------\n");
> > +		pr_warn("------------------------------------------------\n");
> >  		printk("%s/%d is leaving the kernel with locks still held!\n",
> >  				curr->comm, curr->pid);
> >  		lockdep_print_held_locks(curr);
> > @@ -4421,13 +4421,13 @@ void lockdep_rcu_suspicious(const char *file, const int line, const char *s)
> >  #endif /* #ifdef CONFIG_PROVE_RCU_REPEATEDLY */
> >  	/* Note: the following can be executed concurrently, so be careful. */
> >  	printk("\n");
> > -	pr_err("===============================\n");
> > -	pr_err("[ ERR: suspicious RCU usage.  ]\n");
> > +	pr_warn("=============================\n");
> > +	pr_warn("WARNING: suspicious RCU usage\n");
> >  	print_kernel_ident();
> > -	pr_err("-------------------------------\n");
> > -	pr_err("%s:%d %s!\n", file, line, s);
> > -	pr_err("\nother info that might help us debug this:\n\n");
> > -	pr_err("\n%srcu_scheduler_active = %d, debug_locks = %d\n",
> > +	pr_warn("-----------------------------\n");
> > +	printk("%s:%d %s!\n", file, line, s);
> > +	printk("\nother info that might help us debug this:\n\n");
> > +	printk("\n%srcu_scheduler_active = %d, debug_locks = %d\n",
> >  	       !rcu_lockdep_current_cpu_online()
> >  			? "RCU used illegally from offline CPU!\n"
> >  			: !rcu_is_watching()
> > diff --git a/kernel/locking/rtmutex-debug.c b/kernel/locking/rtmutex-debug.c
> > index 97ee9df32e0f..db4f55211b04 100644
> > --- a/kernel/locking/rtmutex-debug.c
> > +++ b/kernel/locking/rtmutex-debug.c
> > @@ -102,10 +102,11 @@ void debug_rt_mutex_print_deadlock(struct rt_mutex_waiter *waiter)
> >  		return;
> >  	}
> >  
> > -	printk("\n============================================\n");
> > -	printk(  "[ BUG: circular locking deadlock detected! ]\n");
> > -	printk("%s\n", print_tainted());
> > -	printk(  "--------------------------------------------\n");
> > +	pr_warn("\n");
> > +	pr_warn("============================================\n");
> > +	pr_warn("WARNING: circular locking deadlock detected!\n");
> > +	pr_warn("%s\n", print_tainted());
> > +	pr_warn("--------------------------------------------\n");
> >  	printk("%s/%d is deadlocking current task %s/%d\n\n",
> >  	       task->comm, task_pid_nr(task),
> >  	       current->comm, task_pid_nr(current));
> > -- 
> > 2.5.2
> > 
> 

  reply	other threads:[~2017-04-19 16:26 UTC|newest]

Thread overview: 119+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-12 16:54 [PATCH tip/core/rcu 0/13] Miscellaneous fixes for 4.12 Paul E. McKenney
2017-04-12 16:55 ` [PATCH tip/core/rcu 01/13] mm: Rename SLAB_DESTROY_BY_RCU to SLAB_TYPESAFE_BY_RCU Paul E. McKenney
2017-04-12 16:55   ` Paul E. McKenney
2017-04-13  9:12   ` Peter Zijlstra
2017-04-13  9:12     ` Peter Zijlstra
2017-04-13 11:06     ` Vlastimil Babka
2017-04-13 11:06       ` Vlastimil Babka
2017-04-13 16:00       ` Paul E. McKenney
2017-04-13 16:00         ` Paul E. McKenney
2017-04-13 16:17       ` Peter Zijlstra
2017-04-13 16:17         ` Peter Zijlstra
2017-04-13 17:24         ` Paul E. McKenney
2017-04-13 17:24           ` Paul E. McKenney
2017-04-13 21:30         ` Eric Dumazet
2017-04-13 21:30           ` Eric Dumazet
2017-04-14  8:45           ` Peter Zijlstra
2017-04-14  8:45             ` Peter Zijlstra
2017-04-14 13:39             ` Paul E. McKenney
2017-04-14 13:39               ` Paul E. McKenney
2017-04-12 16:55 ` [PATCH tip/core/rcu 02/13] lockdep: Use "WARNING" tag on lockdep splats Paul E. McKenney
2017-04-13  9:14   ` Peter Zijlstra
2017-04-13 16:01     ` Paul E. McKenney
2017-04-12 16:55 ` [PATCH tip/core/rcu 03/13] types: Update obsolete callback_head comment Paul E. McKenney
2017-04-12 16:55 ` [PATCH tip/core/rcu 04/13] rcu: Make RCU_FANOUT_LEAF help text more explicit about skew_tick Paul E. McKenney
2017-04-13  9:15   ` Peter Zijlstra
2017-04-13 16:03     ` Paul E. McKenney
2017-04-13 16:19       ` Peter Zijlstra
2017-04-13 16:55         ` Paul E. McKenney
2017-04-13 17:04           ` Peter Zijlstra
2017-04-13 17:31             ` Paul E. McKenney
2017-04-13 17:46               ` Peter Zijlstra
2017-04-13 18:19                 ` Paul E. McKenney
2017-04-13 18:23                   ` Peter Zijlstra
2017-04-13 18:42                     ` Paul E. McKenney
2017-04-19 13:22                       ` Peter Zijlstra
2017-04-19 13:48                         ` Peter Zijlstra
2017-04-19 15:08                           ` Paul E. McKenney
2017-04-19 15:40                             ` Peter Zijlstra
2017-04-19 16:13                               ` Paul E. McKenney
2017-04-19 14:50                         ` Paul E. McKenney
2017-04-13 18:29               ` Peter Zijlstra
2017-04-13 19:42                 ` Paul E. McKenney
2017-04-12 16:55 ` [PATCH tip/core/rcu 05/13] rcu: Remove obsolete comment from rcu_future_gp_cleanup() header Paul E. McKenney
2017-04-12 16:55 ` [PATCH tip/core/rcu 06/13] hlist_add_tail_rcu disable sparse warning Paul E. McKenney
2017-04-12 16:55 ` [PATCH tip/core/rcu 07/13] rcu: Add smp_mb__after_atomic() to sync_exp_work_done() Paul E. McKenney
2017-04-13  9:18   ` Peter Zijlstra
2017-04-13  9:33     ` Peter Zijlstra
2017-04-13 16:10     ` Paul E. McKenney
2017-04-13 16:24       ` Peter Zijlstra
2017-04-13 16:57         ` Paul E. McKenney
2017-04-13 17:10           ` Peter Zijlstra
2017-04-13 17:39             ` Paul E. McKenney
2017-04-13 17:51               ` Peter Zijlstra
2017-04-13 17:59                 ` Peter Zijlstra
2017-04-19 23:24                   ` Paul E. McKenney
2017-04-19 23:23                 ` Paul E. McKenney
2017-04-20 11:17                   ` Peter Zijlstra
2017-04-20 15:03                     ` Paul E. McKenney
2017-04-20 15:08                       ` Peter Zijlstra
2017-06-09 22:56                         ` Paul E. McKenney
2017-06-12 14:51                           ` Dmitry Vyukov
2017-06-12 21:54                             ` Paul E. McKenney
2017-04-12 16:55 ` [PATCH tip/core/rcu 08/13] rcu: Improve comments for hotplug/suspend/hibernate functions Paul E. McKenney
2017-04-12 16:55 ` [PATCH tip/core/rcu 09/13] mm: Use static initialization for "srcu" Paul E. McKenney
2017-04-12 16:55   ` Paul E. McKenney
2017-04-12 16:55 ` [PATCH tip/core/rcu 10/13] torture: Use correct path for Kconfig fragment for duplicates Paul E. McKenney
2017-04-12 16:55 ` [PATCH tip/core/rcu 11/13] rcu: Use bool value directly Paul E. McKenney
2017-04-12 16:55 ` [PATCH tip/core/rcu 12/13] rcu: Use true/false in assignment to bool Paul E. McKenney
2017-04-12 16:55 ` [PATCH tip/core/rcu 13/13] rcu: Fix typo in PER_RCU_NODE_PERIOD header comment Paul E. McKenney
2017-04-17 23:27 ` [PATCH v2 tip/core/rcu 0/13] Miscellaneous fixes for 4.12 Paul E. McKenney
2017-04-17 23:28   ` [PATCH v2 tip/core/rcu 01/11] mm: Rename SLAB_DESTROY_BY_RCU to SLAB_TYPESAFE_BY_RCU Paul E. McKenney
2017-04-17 23:28     ` Paul E. McKenney
2017-04-18  0:14     ` David Rientjes
2017-04-18  0:14       ` David Rientjes
2017-04-17 23:28   ` [PATCH v2 tip/core/rcu 02/11] lockdep: Use "WARNING" tag on lockdep splats Paul E. McKenney
2017-04-19 15:00     ` Josh Triplett
2017-04-19 16:26       ` Paul E. McKenney [this message]
2017-04-17 23:28   ` [PATCH v2 tip/core/rcu 03/11] types: Update obsolete callback_head comment Paul E. McKenney
2017-04-17 23:28   ` [PATCH v2 tip/core/rcu 04/11] rcu: Make RCU_FANOUT_LEAF help text more explicit about skew_tick Paul E. McKenney
2017-04-18  0:18     ` Josh Triplett
2017-04-18 18:42       ` Paul E. McKenney
2017-04-17 23:28   ` [PATCH v2 tip/core/rcu 05/11] rcu: Remove obsolete comment from rcu_future_gp_cleanup() header Paul E. McKenney
2017-04-17 23:28   ` [PATCH v2 tip/core/rcu 06/11] hlist_add_tail_rcu disable sparse warning Paul E. McKenney
2017-04-17 23:28   ` [PATCH v2 tip/core/rcu 07/11] rcu: Improve comments for hotplug/suspend/hibernate functions Paul E. McKenney
2017-04-17 23:28   ` [PATCH v2 tip/core/rcu 08/11] torture: Use correct path for Kconfig fragment for duplicates Paul E. McKenney
2017-04-17 23:28   ` [PATCH v2 tip/core/rcu 09/11] rcu: Use bool value directly Paul E. McKenney
2017-04-17 23:28   ` [PATCH v2 tip/core/rcu 10/11] rcu: Use true/false in assignment to bool Paul E. McKenney
2017-04-17 23:28   ` [PATCH v2 tip/core/rcu 11/11] rcu: Fix typo in PER_RCU_NODE_PERIOD header comment Paul E. McKenney
2017-04-19 11:28   ` [PATCH v2 tip/core/rcu 0/13] Miscellaneous fixes for 4.12 Peter Zijlstra
2017-04-19 11:35     ` Peter Zijlstra
2017-04-19 11:48     ` Christian Borntraeger
2017-04-19 12:08       ` Peter Zijlstra
2017-04-19 12:51         ` Marc Zyngier
2017-04-19 14:47         ` Paul E. McKenney
2017-04-19 14:52           ` Peter Zijlstra
2017-04-19 15:13             ` Paul E. McKenney
2017-04-19 14:58           ` Josh Triplett
2017-04-19 15:03             ` Peter Zijlstra
2017-04-19 15:17               ` Paul E. McKenney
2017-04-19 13:22       ` Paul E. McKenney
2017-04-19 13:25         ` Christian Borntraeger
2017-04-19 13:02     ` Paul E. McKenney
2017-04-19 13:15       ` Peter Zijlstra
2017-04-19 15:37         ` Paul E. McKenney
2017-04-19 15:43           ` Peter Zijlstra
2017-04-19 16:12             ` Paul E. McKenney
2017-04-19 16:45   ` Paul E. McKenney
2017-04-19 16:46     ` [PATCH v3 tip/core/rcu 01/11] mm: Rename SLAB_DESTROY_BY_RCU to SLAB_TYPESAFE_BY_RCU Paul E. McKenney
2017-04-19 16:46       ` Paul E. McKenney
2017-04-19 16:46     ` [PATCH v3 tip/core/rcu 02/11] lockdep: Use "WARNING" tag on lockdep splats Paul E. McKenney
2017-04-19 16:46     ` [PATCH v3 tip/core/rcu 03/11] types: Update obsolete callback_head comment Paul E. McKenney
2017-04-19 16:46     ` [PATCH v3 tip/core/rcu 04/11] rcu: Make RCU_FANOUT_LEAF help text more explicit about skew_tick Paul E. McKenney
2017-04-19 16:46     ` [PATCH v3 tip/core/rcu 05/11] rcu: Remove obsolete comment from rcu_future_gp_cleanup() header Paul E. McKenney
2017-04-19 16:46     ` [PATCH v3 tip/core/rcu 06/11] hlist_add_tail_rcu disable sparse warning Paul E. McKenney
2017-04-19 16:46     ` [PATCH v3 tip/core/rcu 07/11] rcu: Improve comments for hotplug/suspend/hibernate functions Paul E. McKenney
2017-04-19 16:46     ` [PATCH v3 tip/core/rcu 08/11] torture: Use correct path for Kconfig fragment for duplicates Paul E. McKenney
2017-04-19 16:46     ` [PATCH v3 tip/core/rcu 09/11] rcu: Use bool value directly Paul E. McKenney
2017-04-19 16:46     ` [PATCH v3 tip/core/rcu 10/11] rcu: Use true/false in assignment to bool Paul E. McKenney
2017-04-19 16:46     ` [PATCH v3 tip/core/rcu 11/11] rcu: Fix typo in PER_RCU_NODE_PERIOD header comment Paul E. McKenney

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170419162610.GT3956@linux.vnet.ibm.com \
    --to=paulmck@linux.vnet.ibm.com \
    --cc=akpm@linux-foundation.org \
    --cc=bobby.prani@gmail.com \
    --cc=dhowells@redhat.com \
    --cc=dipankar@in.ibm.com \
    --cc=edumazet@google.com \
    --cc=fweisbec@gmail.com \
    --cc=jiangshanlai@gmail.com \
    --cc=josh@joshtriplett.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mathieu.desnoyers@efficios.com \
    --cc=mingo@kernel.org \
    --cc=oleg@redhat.com \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=tglx@linutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.