All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Guilherme G. Piccoli" <gpiccoli@igalia.com>
To: akpm@linux-foundation.org, bhe@redhat.com, pmladek@suse.com,
	kexec@lists.infradead.org
Cc: linux-kernel@vger.kernel.org, linux-hyperv@vger.kernel.org,
	netdev@vger.kernel.org, x86@kernel.org, kernel-dev@igalia.com,
	kernel@gpiccoli.net, halves@canonical.com, fabiomirmar@gmail.com,
	alejandro.j.jimenez@oracle.com,
	andriy.shevchenko@linux.intel.com, arnd@arndb.de, bp@alien8.de,
	corbet@lwn.net, d.hatayama@jp.fujitsu.com,
	dave.hansen@linux.intel.com, dyoung@redhat.com,
	feng.tang@intel.com, gregkh@linuxfoundation.org,
	mikelley@microsoft.com, hidehiro.kawai.ez@hitachi.com,
	jgross@suse.com, john.ogness@linutronix.de,
	keescook@chromium.org, luto@kernel.org, mhiramat@kernel.org,
	mingo@redhat.com, paulmck@kernel.org, peterz@infradead.org,
	rostedt@goodmis.org, senozhatsky@chromium.org,
	stern@rowland.harvard.edu, tglx@linutronix.de, vgoyal@redhat.com,
	vkuznets@redhat.com, will@kernel.org, xuqiang36@huawei.com,
	"Guilherme G. Piccoli" <gpiccoli@igalia.com>,
	Andrea Parri <parri.andrea@gmail.com>,
	Dexuan Cui <decui@microsoft.com>,
	Haiyang Zhang <haiyangz@microsoft.com>,
	"K. Y. Srinivasan" <kys@microsoft.com>,
	Stephen Hemminger <sthemmin@microsoft.com>,
	Tianyu Lan <Tianyu.Lan@microsoft.com>,
	Wei Liu <wei.liu@kernel.org>
Subject: [PATCH V3 09/11] video/hyperv_fb: Avoid taking busy spinlock on panic path
Date: Fri, 19 Aug 2022 19:17:29 -0300	[thread overview]
Message-ID: <20220819221731.480795-10-gpiccoli@igalia.com> (raw)
In-Reply-To: <20220819221731.480795-1-gpiccoli@igalia.com>

The Hyper-V framebuffer code registers a panic notifier in order
to try updating its fbdev if the kernel crashed. The notifier
callback is straightforward, but it calls the vmbus_sendpacket()
routine eventually, and such function takes a spinlock for the
ring buffer operations.

Panic path runs in atomic context, with local interrupts and
preemption disabled, and all secondary CPUs shutdown. That said,
taking a spinlock might cause a lockup if a secondary CPU was
disabled with such lock taken. Fix it here by checking if the
ring buffer spinlock is busy on Hyper-V framebuffer panic notifier;
if so, bail-out avoiding the potential lockup scenario.

Cc: Andrea Parri (Microsoft) <parri.andrea@gmail.com>
Cc: Dexuan Cui <decui@microsoft.com>
Cc: Haiyang Zhang <haiyangz@microsoft.com>
Cc: "K. Y. Srinivasan" <kys@microsoft.com>
Cc: Michael Kelley <mikelley@microsoft.com>
Cc: Stephen Hemminger <sthemmin@microsoft.com>
Cc: Tianyu Lan <Tianyu.Lan@microsoft.com>
Cc: Wei Liu <wei.liu@kernel.org>
Tested-by: Fabio A M Martins <fabiomirmar@gmail.com>
Signed-off-by: Guilherme G. Piccoli <gpiccoli@igalia.com>

---

V3:
- simplified the code based on Michael's suggestion - thanks!

V2:
- new patch, based on the discussion in [0].
[0] https://lore.kernel.org/lkml/2787b476-6366-1c83-db80-0393da417497@igalia.com/


 drivers/hv/ring_buffer.c        | 13 +++++++++++++
 drivers/video/fbdev/hyperv_fb.c |  8 +++++++-
 include/linux/hyperv.h          |  2 ++
 3 files changed, 22 insertions(+), 1 deletion(-)

diff --git a/drivers/hv/ring_buffer.c b/drivers/hv/ring_buffer.c
index 59a4aa86d1f3..c6692fd5ab15 100644
--- a/drivers/hv/ring_buffer.c
+++ b/drivers/hv/ring_buffer.c
@@ -280,6 +280,19 @@ void hv_ringbuffer_cleanup(struct hv_ring_buffer_info *ring_info)
 	ring_info->pkt_buffer_size = 0;
 }
 
+/*
+ * Check if the ring buffer spinlock is available to take or not; used on
+ * atomic contexts, like panic path (see the Hyper-V framebuffer driver).
+ */
+
+bool hv_ringbuffer_spinlock_busy(struct vmbus_channel *channel)
+{
+	struct hv_ring_buffer_info *rinfo = &channel->outbound;
+
+	return spin_is_locked(&rinfo->ring_lock);
+}
+EXPORT_SYMBOL_GPL(hv_ringbuffer_spinlock_busy);
+
 /* Write to the ring buffer. */
 int hv_ringbuffer_write(struct vmbus_channel *channel,
 			const struct kvec *kv_list, u32 kv_count,
diff --git a/drivers/video/fbdev/hyperv_fb.c b/drivers/video/fbdev/hyperv_fb.c
index 886c564787f1..e1b65a01fb96 100644
--- a/drivers/video/fbdev/hyperv_fb.c
+++ b/drivers/video/fbdev/hyperv_fb.c
@@ -783,12 +783,18 @@ static void hvfb_ondemand_refresh_throttle(struct hvfb_par *par,
 static int hvfb_on_panic(struct notifier_block *nb,
 			 unsigned long e, void *p)
 {
+	struct hv_device *hdev;
 	struct hvfb_par *par;
 	struct fb_info *info;
 
 	par = container_of(nb, struct hvfb_par, hvfb_panic_nb);
-	par->synchronous_fb = true;
 	info = par->info;
+	hdev = device_to_hv_device(info->device);
+
+	if (hv_ringbuffer_spinlock_busy(hdev->channel))
+		return NOTIFY_DONE;
+
+	par->synchronous_fb = true;
 	if (par->need_docopy)
 		hvfb_docopy(par, 0, dio_fb_size);
 	synthvid_update(info, 0, 0, INT_MAX, INT_MAX);
diff --git a/include/linux/hyperv.h b/include/linux/hyperv.h
index 3b42264333ef..646f1da9f27e 100644
--- a/include/linux/hyperv.h
+++ b/include/linux/hyperv.h
@@ -1341,6 +1341,8 @@ struct hv_ring_buffer_debug_info {
 int hv_ringbuffer_get_debuginfo(struct hv_ring_buffer_info *ring_info,
 				struct hv_ring_buffer_debug_info *debug_info);
 
+bool hv_ringbuffer_spinlock_busy(struct vmbus_channel *channel);
+
 /* Vmbus interface */
 #define vmbus_driver_register(driver)	\
 	__vmbus_driver_register(driver, THIS_MODULE, KBUILD_MODNAME)
-- 
2.37.2


WARNING: multiple messages have this Message-ID (diff)
From: "Guilherme G. Piccoli" <gpiccoli@igalia.com>
To: akpm@linux-foundation.org, bhe@redhat.com, pmladek@suse.com,
	kexec@lists.infradead.org
Cc: linux-hyperv@vger.kernel.org, halves@canonical.com,
	peterz@infradead.org, dave.hansen@linux.intel.com,
	feng.tang@intel.com, mikelley@microsoft.com,
	"K. Y. Srinivasan" <kys@microsoft.com>,
	will@kernel.org, Wei Liu <wei.liu@kernel.org>,
	Stephen Hemminger <sthemmin@microsoft.com>,
	arnd@arndb.de, corbet@lwn.net, paulmck@kernel.org,
	fabiomirmar@gmail.com, x86@kernel.org,
	Dexuan Cui <decui@microsoft.com>,
	mingo@redhat.com, stern@rowland.harvard.edu, dyoung@redhat.com,
	vgoyal@redhat.com, Andrea Parri <parri.andrea@gmail.com>,
	alejandro.j.jimenez@oracle.com,
	Tianyu Lan <Tianyu.Lan@microsoft.com>,
	keescook@chromium.org, john.ogness@linutronix.de,
	Haiyang Zhang <haiyangz@microsoft.com>,
	rostedt@goodmis.org, bp@alien8.de, luto@kernel.org,
	hidehiro.kawai.ez@hitachi.com, tglx@linutronix.de,
	andriy.shevchenko@linux.intel.com, jgross@suse.com,
	gregkh@linuxfoundation.org, kernel@gpiccoli.net,
	linux-kernel@vger.kernel.org, xuqiang36@huawei.com,
	senozhatsky@chromium.org, d.hatayama@jp.fujitsu.com,
	mhiramat@kernel.org, kernel-dev@igalia.com,
	netdev@vger.kernel.org, vkuznets@redhat.com
Subject: [PATCH V3 09/11] video/hyperv_fb: Avoid taking busy spinlock on panic path
Date: Fri, 19 Aug 2022 19:17:29 -0300	[thread overview]
Message-ID: <20220819221731.480795-10-gpiccoli@igalia.com> (raw)
In-Reply-To: <20220819221731.480795-1-gpiccoli@igalia.com>

The Hyper-V framebuffer code registers a panic notifier in order
to try updating its fbdev if the kernel crashed. The notifier
callback is straightforward, but it calls the vmbus_sendpacket()
routine eventually, and such function takes a spinlock for the
ring buffer operations.

Panic path runs in atomic context, with local interrupts and
preemption disabled, and all secondary CPUs shutdown. That said,
taking a spinlock might cause a lockup if a secondary CPU was
disabled with such lock taken. Fix it here by checking if the
ring buffer spinlock is busy on Hyper-V framebuffer panic notifier;
if so, bail-out avoiding the potential lockup scenario.

Cc: Andrea Parri (Microsoft) <parri.andrea@gmail.com>
Cc: Dexuan Cui <decui@microsoft.com>
Cc: Haiyang Zhang <haiyangz@microsoft.com>
Cc: "K. Y. Srinivasan" <kys@microsoft.com>
Cc: Michael Kelley <mikelley@microsoft.com>
Cc: Stephen Hemminger <sthemmin@microsoft.com>
Cc: Tianyu Lan <Tianyu.Lan@microsoft.com>
Cc: Wei Liu <wei.liu@kernel.org>
Tested-by: Fabio A M Martins <fabiomirmar@gmail.com>
Signed-off-by: Guilherme G. Piccoli <gpiccoli@igalia.com>

---

V3:
- simplified the code based on Michael's suggestion - thanks!

V2:
- new patch, based on the discussion in [0].
[0] https://lore.kernel.org/lkml/2787b476-6366-1c83-db80-0393da417497@igalia.com/


 drivers/hv/ring_buffer.c        | 13 +++++++++++++
 drivers/video/fbdev/hyperv_fb.c |  8 +++++++-
 include/linux/hyperv.h          |  2 ++
 3 files changed, 22 insertions(+), 1 deletion(-)

diff --git a/drivers/hv/ring_buffer.c b/drivers/hv/ring_buffer.c
index 59a4aa86d1f3..c6692fd5ab15 100644
--- a/drivers/hv/ring_buffer.c
+++ b/drivers/hv/ring_buffer.c
@@ -280,6 +280,19 @@ void hv_ringbuffer_cleanup(struct hv_ring_buffer_info *ring_info)
 	ring_info->pkt_buffer_size = 0;
 }
 
+/*
+ * Check if the ring buffer spinlock is available to take or not; used on
+ * atomic contexts, like panic path (see the Hyper-V framebuffer driver).
+ */
+
+bool hv_ringbuffer_spinlock_busy(struct vmbus_channel *channel)
+{
+	struct hv_ring_buffer_info *rinfo = &channel->outbound;
+
+	return spin_is_locked(&rinfo->ring_lock);
+}
+EXPORT_SYMBOL_GPL(hv_ringbuffer_spinlock_busy);
+
 /* Write to the ring buffer. */
 int hv_ringbuffer_write(struct vmbus_channel *channel,
 			const struct kvec *kv_list, u32 kv_count,
diff --git a/drivers/video/fbdev/hyperv_fb.c b/drivers/video/fbdev/hyperv_fb.c
index 886c564787f1..e1b65a01fb96 100644
--- a/drivers/video/fbdev/hyperv_fb.c
+++ b/drivers/video/fbdev/hyperv_fb.c
@@ -783,12 +783,18 @@ static void hvfb_ondemand_refresh_throttle(struct hvfb_par *par,
 static int hvfb_on_panic(struct notifier_block *nb,
 			 unsigned long e, void *p)
 {
+	struct hv_device *hdev;
 	struct hvfb_par *par;
 	struct fb_info *info;
 
 	par = container_of(nb, struct hvfb_par, hvfb_panic_nb);
-	par->synchronous_fb = true;
 	info = par->info;
+	hdev = device_to_hv_device(info->device);
+
+	if (hv_ringbuffer_spinlock_busy(hdev->channel))
+		return NOTIFY_DONE;
+
+	par->synchronous_fb = true;
 	if (par->need_docopy)
 		hvfb_docopy(par, 0, dio_fb_size);
 	synthvid_update(info, 0, 0, INT_MAX, INT_MAX);
diff --git a/include/linux/hyperv.h b/include/linux/hyperv.h
index 3b42264333ef..646f1da9f27e 100644
--- a/include/linux/hyperv.h
+++ b/include/linux/hyperv.h
@@ -1341,6 +1341,8 @@ struct hv_ring_buffer_debug_info {
 int hv_ringbuffer_get_debuginfo(struct hv_ring_buffer_info *ring_info,
 				struct hv_ring_buffer_debug_info *debug_info);
 
+bool hv_ringbuffer_spinlock_busy(struct vmbus_channel *channel);
+
 /* Vmbus interface */
 #define vmbus_driver_register(driver)	\
 	__vmbus_driver_register(driver, THIS_MODULE, KBUILD_MODNAME)
-- 
2.37.2


_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec

  parent reply	other threads:[~2022-08-19 22:24 UTC|newest]

Thread overview: 128+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-19 22:17 [PATCH V3 00/11] The panic notifiers refactor - fixes/clean-ups (V3) Guilherme G. Piccoli
2022-08-19 22:17 ` Guilherme G. Piccoli
2022-08-19 22:17 ` Guilherme G. Piccoli
2022-08-19 22:17 ` Guilherme G. Piccoli
2022-08-19 22:17 ` Guilherme G. Piccoli
2022-08-19 22:17 ` [PATCH V3 01/11] ARM: Disable FIQs (but not IRQs) on CPUs shutdown paths Guilherme G. Piccoli
2022-08-19 22:17   ` Guilherme G. Piccoli
2022-08-19 22:17   ` Guilherme G. Piccoli
2022-09-18 13:58   ` Guilherme G. Piccoli
2022-09-18 13:58     ` Guilherme G. Piccoli
2022-09-18 13:58     ` Guilherme G. Piccoli
2022-10-17 14:00     ` Guilherme G. Piccoli
2022-10-17 14:00       ` Guilherme G. Piccoli
2022-10-17 14:00       ` Guilherme G. Piccoli
2022-10-17 14:17       ` Russell King (Oracle)
2022-10-17 14:17         ` Russell King (Oracle)
2022-10-17 14:17         ` Russell King (Oracle)
2022-10-17 14:50         ` Guilherme G. Piccoli
2022-10-17 14:50           ` Guilherme G. Piccoli
2022-10-17 14:50           ` Guilherme G. Piccoli
2022-10-17 17:47           ` Russell King (Oracle)
2022-10-17 17:47             ` Russell King (Oracle)
2022-10-17 17:47             ` Russell King (Oracle)
2022-10-17 19:43             ` Guilherme G. Piccoli
2022-10-17 19:43               ` Guilherme G. Piccoli
2022-10-17 19:43               ` Guilherme G. Piccoli
2022-08-19 22:17 ` [PATCH V3 02/11] notifier: Add panic notifiers info and purge trailing whitespaces Guilherme G. Piccoli
2022-08-19 22:17   ` Guilherme G. Piccoli
2022-11-22 13:19   ` Guilherme G. Piccoli
2022-11-22 13:19     ` Guilherme G. Piccoli
2022-08-19 22:17 ` [PATCH V3 03/11] alpha: Clean-up the panic notifier code Guilherme G. Piccoli
2022-08-19 22:17   ` Guilherme G. Piccoli
2022-08-19 22:17   ` Guilherme G. Piccoli
2022-11-22 13:22   ` Guilherme G. Piccoli
2022-11-22 13:22     ` Guilherme G. Piccoli
2022-11-22 13:22     ` Guilherme G. Piccoli
2022-08-19 22:17 ` [PATCH V3 04/11] um: Improve panic notifiers consistency and ordering Guilherme G. Piccoli
2022-08-19 22:17   ` Guilherme G. Piccoli
2022-08-19 22:17   ` Guilherme G. Piccoli
2022-09-18 14:00   ` Guilherme G. Piccoli
2022-09-18 14:00     ` Guilherme G. Piccoli
2022-09-18 14:00     ` Guilherme G. Piccoli
2022-09-18 21:19     ` Richard Weinberger
2022-09-18 21:19       ` Richard Weinberger
2022-09-18 21:19       ` Richard Weinberger
2022-09-19 11:44       ` Guilherme G. Piccoli
2022-09-19 11:44         ` Guilherme G. Piccoli
2022-09-19 11:44         ` Guilherme G. Piccoli
2022-10-17 14:01       ` Guilherme G. Piccoli
2022-10-17 14:01         ` Guilherme G. Piccoli
2022-10-17 14:10         ` Richard Weinberger
2022-10-17 14:10           ` Richard Weinberger
2022-10-17 14:22           ` Guilherme G. Piccoli
2022-10-17 14:22             ` Guilherme G. Piccoli
2022-08-19 22:17 ` [PATCH V3 05/11] parisc: Replace regular spinlock with spin_trylock on panic path Guilherme G. Piccoli
2022-08-19 22:17   ` Guilherme G. Piccoli
2022-08-19 22:17 ` [PATCH V3 06/11] tracing: Improve panic/die notifiers Guilherme G. Piccoli
2022-08-19 22:17   ` Guilherme G. Piccoli
2022-09-18 14:04   ` Guilherme G. Piccoli
2022-09-18 14:04     ` Guilherme G. Piccoli
2022-10-17 14:02   ` Guilherme G. Piccoli
2022-10-17 14:02     ` Guilherme G. Piccoli
2022-10-20 21:29   ` Steven Rostedt
2022-10-20 21:29     ` Steven Rostedt
2022-10-20 21:53     ` Guilherme G. Piccoli
2022-10-20 21:53       ` Guilherme G. Piccoli
2022-10-20 22:22       ` Steven Rostedt
2022-10-20 22:22         ` Steven Rostedt
2022-10-20 22:37         ` Guilherme G. Piccoli
2022-10-20 22:37           ` Guilherme G. Piccoli
2022-11-22 13:27         ` Guilherme G. Piccoli
2022-11-22 13:27           ` Guilherme G. Piccoli
2022-12-13 23:51     ` Guilherme G. Piccoli
2022-12-13 23:51       ` Guilherme G. Piccoli
2022-12-14  0:06       ` Steven Rostedt
2022-12-14  0:06         ` Steven Rostedt
2022-12-14  0:52         ` Guilherme G. Piccoli
2022-12-14  0:52           ` Guilherme G. Piccoli
2022-08-19 22:17 ` [PATCH V3 07/11] notifiers: Add tracepoints to the notifiers infrastructure Guilherme G. Piccoli
2022-08-19 22:17   ` Guilherme G. Piccoli
2022-09-18 14:07   ` Guilherme G. Piccoli
2022-09-18 14:07     ` Guilherme G. Piccoli
2022-10-17 14:04   ` Guilherme G. Piccoli
2022-10-17 14:04     ` Guilherme G. Piccoli
2022-11-22 13:30   ` Guilherme G. Piccoli
2022-11-22 13:30     ` Guilherme G. Piccoli
2022-08-19 22:17 ` [PATCH V3 08/11] EDAC/altera: Skip the panic notifier if kdump is loaded Guilherme G. Piccoli
2022-08-19 22:17   ` Guilherme G. Piccoli
2022-09-18 14:10   ` Guilherme G. Piccoli
2022-09-18 14:10     ` Guilherme G. Piccoli
2022-10-17 14:05     ` Guilherme G. Piccoli
2022-10-17 14:05       ` Guilherme G. Piccoli
2022-11-22 13:33     ` Guilherme G. Piccoli
2022-11-22 13:33       ` Guilherme G. Piccoli
2022-11-22 15:06       ` Borislav Petkov
2022-11-22 15:06         ` Borislav Petkov
2023-02-10 16:01         ` Guilherme G. Piccoli
2023-02-10 16:01           ` Guilherme G. Piccoli
2022-12-09 16:03   ` Petr Mladek
2022-12-09 16:03     ` Petr Mladek
2022-08-19 22:17 ` Guilherme G. Piccoli [this message]
2022-08-19 22:17   ` [PATCH V3 09/11] video/hyperv_fb: Avoid taking busy spinlock on panic path Guilherme G. Piccoli
2022-09-18 14:12   ` Guilherme G. Piccoli
2022-09-18 14:12     ` Guilherme G. Piccoli
2022-10-04 16:17   ` Michael Kelley (LINUX)
2022-10-04 16:17     ` Michael Kelley (LINUX)
2022-08-19 22:17 ` [PATCH V3 10/11] drivers/hv/vmbus, video/hyperv_fb: Untangle and refactor Hyper-V panic notifiers Guilherme G. Piccoli
2022-08-19 22:17   ` Guilherme G. Piccoli
2022-10-04 16:24   ` Michael Kelley (LINUX)
2022-10-04 16:24     ` Michael Kelley (LINUX)
2022-10-04 17:20     ` Guilherme G. Piccoli
2022-10-04 17:20       ` Guilherme G. Piccoli
2022-10-17 15:26       ` Michael Kelley (LINUX)
2022-10-17 15:26         ` Michael Kelley (LINUX)
2022-11-10 21:32         ` Guilherme G. Piccoli
2022-11-10 21:32           ` Guilherme G. Piccoli
2022-11-11 22:47           ` Wei Liu
2022-11-11 22:47             ` Wei Liu
2022-11-11 23:16             ` Wei Liu
2022-11-11 23:16               ` Wei Liu
2022-11-12 21:53               ` Guilherme G. Piccoli
2022-11-12 21:53                 ` Guilherme G. Piccoli
2022-08-19 22:17 ` [PATCH V3 11/11] panic: Fixes the panic_print NMI backtrace setting Guilherme G. Piccoli
2022-08-19 22:17   ` Guilherme G. Piccoli
2022-09-18 14:13   ` Guilherme G. Piccoli
2022-09-18 14:13     ` Guilherme G. Piccoli
2022-11-22 13:35   ` Guilherme G. Piccoli
2022-11-22 13:35     ` Guilherme G. Piccoli

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=20220819221731.480795-10-gpiccoli@igalia.com \
    --to=gpiccoli@igalia.com \
    --cc=Tianyu.Lan@microsoft.com \
    --cc=akpm@linux-foundation.org \
    --cc=alejandro.j.jimenez@oracle.com \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=arnd@arndb.de \
    --cc=bhe@redhat.com \
    --cc=bp@alien8.de \
    --cc=corbet@lwn.net \
    --cc=d.hatayama@jp.fujitsu.com \
    --cc=dave.hansen@linux.intel.com \
    --cc=decui@microsoft.com \
    --cc=dyoung@redhat.com \
    --cc=fabiomirmar@gmail.com \
    --cc=feng.tang@intel.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=haiyangz@microsoft.com \
    --cc=halves@canonical.com \
    --cc=hidehiro.kawai.ez@hitachi.com \
    --cc=jgross@suse.com \
    --cc=john.ogness@linutronix.de \
    --cc=keescook@chromium.org \
    --cc=kernel-dev@igalia.com \
    --cc=kernel@gpiccoli.net \
    --cc=kexec@lists.infradead.org \
    --cc=kys@microsoft.com \
    --cc=linux-hyperv@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luto@kernel.org \
    --cc=mhiramat@kernel.org \
    --cc=mikelley@microsoft.com \
    --cc=mingo@redhat.com \
    --cc=netdev@vger.kernel.org \
    --cc=parri.andrea@gmail.com \
    --cc=paulmck@kernel.org \
    --cc=peterz@infradead.org \
    --cc=pmladek@suse.com \
    --cc=rostedt@goodmis.org \
    --cc=senozhatsky@chromium.org \
    --cc=stern@rowland.harvard.edu \
    --cc=sthemmin@microsoft.com \
    --cc=tglx@linutronix.de \
    --cc=vgoyal@redhat.com \
    --cc=vkuznets@redhat.com \
    --cc=wei.liu@kernel.org \
    --cc=will@kernel.org \
    --cc=x86@kernel.org \
    --cc=xuqiang36@huawei.com \
    /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.