All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Thiago Jung Bauermann <bauerman@linux.ibm.com>
Cc: virtualization@lists.linux-foundation.org,
	linuxppc-devel@lists.ozlabs.org,
	iommu@lists.linux-foundation.org, linux-kernel@vger.kernel.org,
	Jason Wang <jasowang@redhat.com>, Christoph Hellwig <hch@lst.de>,
	David Gibson <david@gibson.dropbear.id.au>,
	Alexey Kardashevskiy <aik@linux.ibm.com>,
	Paul Mackerras <paulus@ozlabs.org>,
	Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	Ram Pai <linuxram@us.ibm.com>
Subject: Re: [RFC PATCH] virtio_ring: Use DMA API if guest memory is encrypted
Date: Sat, 10 Aug 2019 14:57:17 -0400	[thread overview]
Message-ID: <20190810143038-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <87zhrj8kcp.fsf@morokweng.localdomain>

On Tue, Jan 29, 2019 at 03:08:12PM -0200, Thiago Jung Bauermann wrote:
> 
> Hello,
> 
> With Christoph's rework of the DMA API that recently landed, the patch
> below is the only change needed in virtio to make it work in a POWER
> secure guest under the ultravisor.
> 
> The other change we need (making sure the device's dma_map_ops is NULL
> so that the dma-direct/swiotlb code is used) can be made in
> powerpc-specific code.
> 
> Of course, I also have patches (soon to be posted as RFC) which hook up
> <linux/mem_encrypt.h> to the powerpc secure guest support code.
> 
> What do you think?
> 
> >From d0629a36a75c678b4a72b853f8f7f8c17eedd6b3 Mon Sep 17 00:00:00 2001
> From: Thiago Jung Bauermann <bauerman@linux.ibm.com>
> Date: Thu, 24 Jan 2019 22:08:02 -0200
> Subject: [RFC PATCH] virtio_ring: Use DMA API if guest memory is encrypted
> 
> The host can't access the guest memory when it's encrypted, so using
> regular memory pages for the ring isn't an option. Go through the DMA API.
> 
> Signed-off-by: Thiago Jung Bauermann <bauerman@linux.ibm.com>
> ---
>  drivers/virtio/virtio_ring.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
> index cd7e755484e3..321a27075380 100644
> --- a/drivers/virtio/virtio_ring.c
> +++ b/drivers/virtio/virtio_ring.c
> @@ -259,8 +259,11 @@ static bool vring_use_dma_api(struct virtio_device *vdev)
>  	 * not work without an even larger kludge.  Instead, enable
>  	 * the DMA API if we're a Xen guest, which at least allows
>  	 * all of the sensible Xen configurations to work correctly.
> +	 *
> +	 * Also, if guest memory is encrypted the host can't access
> +	 * it directly. In this case, we'll need to use the DMA API.
>  	 */
> -	if (xen_domain())
> +	if (xen_domain() || sev_active())
>  		return true;
> 
>  	return false;

So I gave this lots of thought, and I'm coming round to
basically accepting something very similar to this patch.

But not exactly like this :).

Let's see what are the requirements.

If

1. We do not trust the device (so we want to use a bounce buffer with it)
2. DMA address is also a physical address of a buffer

then we should use DMA API with virtio.


sev_active() above is one way to put (1).  I can't say I love it but
it's tolerable.


But we also want promise from DMA API about 2.


Without promise 2 we simply can't use DMA API with a legacy device.


Otherwise, on a SEV system with an IOMMU which isn't 1:1
and with a virtio device without ACCESS_PLATFORM, we are trying
to pass a virtual address, and devices without ACCESS_PLATFORM
can only access CPU physical addresses.

So something like:

dma_addr_is_phys_addr?



-- 
MST

WARNING: multiple messages have this Message-ID (diff)
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Thiago Jung Bauermann <bauerman@linux.ibm.com>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	Jason Wang <jasowang@redhat.com>,
	Alexey Kardashevskiy <aik@linux.ibm.com>,
	Ram Pai <linuxram@us.ibm.com>,
	linux-kernel@vger.kernel.org,
	virtualization@lists.linux-foundation.org,
	Paul Mackerras <paulus@ozlabs.org>,
	iommu@lists.linux-foundation.org,
	linuxppc-devel@lists.ozlabs.org, Christoph Hellwig <hch@lst.de>,
	David Gibson <david@gibson.dropbear.id.au>
Subject: Re: [RFC PATCH] virtio_ring: Use DMA API if guest memory is encrypted
Date: Sat, 10 Aug 2019 14:57:17 -0400	[thread overview]
Message-ID: <20190810143038-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <87zhrj8kcp.fsf@morokweng.localdomain>

On Tue, Jan 29, 2019 at 03:08:12PM -0200, Thiago Jung Bauermann wrote:
> 
> Hello,
> 
> With Christoph's rework of the DMA API that recently landed, the patch
> below is the only change needed in virtio to make it work in a POWER
> secure guest under the ultravisor.
> 
> The other change we need (making sure the device's dma_map_ops is NULL
> so that the dma-direct/swiotlb code is used) can be made in
> powerpc-specific code.
> 
> Of course, I also have patches (soon to be posted as RFC) which hook up
> <linux/mem_encrypt.h> to the powerpc secure guest support code.
> 
> What do you think?
> 
> >From d0629a36a75c678b4a72b853f8f7f8c17eedd6b3 Mon Sep 17 00:00:00 2001
> From: Thiago Jung Bauermann <bauerman@linux.ibm.com>
> Date: Thu, 24 Jan 2019 22:08:02 -0200
> Subject: [RFC PATCH] virtio_ring: Use DMA API if guest memory is encrypted
> 
> The host can't access the guest memory when it's encrypted, so using
> regular memory pages for the ring isn't an option. Go through the DMA API.
> 
> Signed-off-by: Thiago Jung Bauermann <bauerman@linux.ibm.com>
> ---
>  drivers/virtio/virtio_ring.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
> index cd7e755484e3..321a27075380 100644
> --- a/drivers/virtio/virtio_ring.c
> +++ b/drivers/virtio/virtio_ring.c
> @@ -259,8 +259,11 @@ static bool vring_use_dma_api(struct virtio_device *vdev)
>  	 * not work without an even larger kludge.  Instead, enable
>  	 * the DMA API if we're a Xen guest, which at least allows
>  	 * all of the sensible Xen configurations to work correctly.
> +	 *
> +	 * Also, if guest memory is encrypted the host can't access
> +	 * it directly. In this case, we'll need to use the DMA API.
>  	 */
> -	if (xen_domain())
> +	if (xen_domain() || sev_active())
>  		return true;
> 
>  	return false;

So I gave this lots of thought, and I'm coming round to
basically accepting something very similar to this patch.

But not exactly like this :).

Let's see what are the requirements.

If

1. We do not trust the device (so we want to use a bounce buffer with it)
2. DMA address is also a physical address of a buffer

then we should use DMA API with virtio.


sev_active() above is one way to put (1).  I can't say I love it but
it's tolerable.


But we also want promise from DMA API about 2.


Without promise 2 we simply can't use DMA API with a legacy device.


Otherwise, on a SEV system with an IOMMU which isn't 1:1
and with a virtio device without ACCESS_PLATFORM, we are trying
to pass a virtual address, and devices without ACCESS_PLATFORM
can only access CPU physical addresses.

So something like:

dma_addr_is_phys_addr?



-- 
MST
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

WARNING: multiple messages have this Message-ID (diff)
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Thiago Jung Bauermann <bauerman@linux.ibm.com>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	Alexey Kardashevskiy <aik@linux.ibm.com>,
	Ram Pai <linuxram@us.ibm.com>,
	linux-kernel@vger.kernel.org,
	virtualization@lists.linux-foundation.org,
	Paul Mackerras <paulus@ozlabs.org>,
	iommu@lists.linux-foundation.org,
	linuxppc-devel@lists.ozlabs.org, Christoph Hellwig <hch@lst.de>,
	David Gibson <david@gibson.dropbear.id.au>
Subject: Re: [RFC PATCH] virtio_ring: Use DMA API if guest memory is encrypted
Date: Sat, 10 Aug 2019 14:57:17 -0400	[thread overview]
Message-ID: <20190810143038-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <87zhrj8kcp.fsf@morokweng.localdomain>

On Tue, Jan 29, 2019 at 03:08:12PM -0200, Thiago Jung Bauermann wrote:
> 
> Hello,
> 
> With Christoph's rework of the DMA API that recently landed, the patch
> below is the only change needed in virtio to make it work in a POWER
> secure guest under the ultravisor.
> 
> The other change we need (making sure the device's dma_map_ops is NULL
> so that the dma-direct/swiotlb code is used) can be made in
> powerpc-specific code.
> 
> Of course, I also have patches (soon to be posted as RFC) which hook up
> <linux/mem_encrypt.h> to the powerpc secure guest support code.
> 
> What do you think?
> 
> >From d0629a36a75c678b4a72b853f8f7f8c17eedd6b3 Mon Sep 17 00:00:00 2001
> From: Thiago Jung Bauermann <bauerman@linux.ibm.com>
> Date: Thu, 24 Jan 2019 22:08:02 -0200
> Subject: [RFC PATCH] virtio_ring: Use DMA API if guest memory is encrypted
> 
> The host can't access the guest memory when it's encrypted, so using
> regular memory pages for the ring isn't an option. Go through the DMA API.
> 
> Signed-off-by: Thiago Jung Bauermann <bauerman@linux.ibm.com>
> ---
>  drivers/virtio/virtio_ring.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
> index cd7e755484e3..321a27075380 100644
> --- a/drivers/virtio/virtio_ring.c
> +++ b/drivers/virtio/virtio_ring.c
> @@ -259,8 +259,11 @@ static bool vring_use_dma_api(struct virtio_device *vdev)
>  	 * not work without an even larger kludge.  Instead, enable
>  	 * the DMA API if we're a Xen guest, which at least allows
>  	 * all of the sensible Xen configurations to work correctly.
> +	 *
> +	 * Also, if guest memory is encrypted the host can't access
> +	 * it directly. In this case, we'll need to use the DMA API.
>  	 */
> -	if (xen_domain())
> +	if (xen_domain() || sev_active())
>  		return true;
> 
>  	return false;

So I gave this lots of thought, and I'm coming round to
basically accepting something very similar to this patch.

But not exactly like this :).

Let's see what are the requirements.

If

1. We do not trust the device (so we want to use a bounce buffer with it)
2. DMA address is also a physical address of a buffer

then we should use DMA API with virtio.


sev_active() above is one way to put (1).  I can't say I love it but
it's tolerable.


But we also want promise from DMA API about 2.


Without promise 2 we simply can't use DMA API with a legacy device.


Otherwise, on a SEV system with an IOMMU which isn't 1:1
and with a virtio device without ACCESS_PLATFORM, we are trying
to pass a virtual address, and devices without ACCESS_PLATFORM
can only access CPU physical addresses.

So something like:

dma_addr_is_phys_addr?



-- 
MST

  parent reply	other threads:[~2019-08-10 18:58 UTC|newest]

Thread overview: 198+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-01-29 17:08 [RFC PATCH] virtio_ring: Use DMA API if guest memory is encrypted Thiago Jung Bauermann
2019-01-29 17:08 ` Thiago Jung Bauermann
2019-01-29 17:42 ` Thiago Jung Bauermann
2019-01-29 17:42   ` Thiago Jung Bauermann
2019-01-29 19:02   ` Michael S. Tsirkin
2019-01-29 19:02     ` Michael S. Tsirkin
2019-01-30  2:24     ` Jason Wang
2019-01-30  2:24       ` Jason Wang
2019-01-30  2:36       ` Michael S. Tsirkin
2019-01-30  2:36       ` Michael S. Tsirkin
2019-01-30  2:36         ` Michael S. Tsirkin
2019-01-30  3:05         ` Jason Wang
2019-01-30  3:05         ` Jason Wang
2019-01-30  3:05           ` Jason Wang
2019-01-30  3:26           ` Michael S. Tsirkin
2019-01-30  3:26           ` Michael S. Tsirkin
2019-01-30  3:26             ` Michael S. Tsirkin
2019-01-30  7:44         ` Christoph Hellwig
2019-01-30  7:44         ` Christoph Hellwig
2019-01-30  7:44           ` Christoph Hellwig
2019-02-04 18:15           ` Thiago Jung Bauermann
2019-02-04 18:15           ` Thiago Jung Bauermann
2019-02-04 18:15             ` Thiago Jung Bauermann
2019-02-04 21:38             ` Michael S. Tsirkin
2019-02-04 21:38               ` Michael S. Tsirkin
2019-02-05  7:24               ` Christoph Hellwig
2019-02-05  7:24                 ` Christoph Hellwig
2019-02-05 16:13                 ` Michael S. Tsirkin
2019-02-05 16:13                 ` Michael S. Tsirkin
2019-02-05 16:13                   ` Michael S. Tsirkin
2019-02-05 16:13                   ` Michael S. Tsirkin
2019-02-05  7:24               ` Christoph Hellwig
2019-02-04 21:38             ` Michael S. Tsirkin
2019-03-26 16:53           ` Michael S. Tsirkin
2019-03-26 16:53           ` Michael S. Tsirkin
2019-03-26 16:53             ` Michael S. Tsirkin
2019-01-30  2:24     ` Jason Wang
2019-02-04 18:14     ` Thiago Jung Bauermann
2019-02-04 18:14     ` Thiago Jung Bauermann
2019-02-04 18:14       ` Thiago Jung Bauermann
2019-02-04 20:23       ` Michael S. Tsirkin
2019-02-04 20:23         ` Michael S. Tsirkin
2019-03-20 16:13         ` Thiago Jung Bauermann
2019-03-20 16:13           ` Thiago Jung Bauermann
2019-03-20 16:13           ` Thiago Jung Bauermann
2019-03-20 21:17           ` Michael S. Tsirkin
2019-03-20 21:17           ` Michael S. Tsirkin
2019-03-20 21:17             ` Michael S. Tsirkin
2019-03-22  0:05             ` Thiago Jung Bauermann
2019-03-22  0:05             ` Thiago Jung Bauermann
2019-03-22  0:05               ` Thiago Jung Bauermann
2019-03-23 21:01               ` Michael S. Tsirkin
2019-03-23 21:01                 ` Michael S. Tsirkin
2019-03-23 21:01                 ` Michael S. Tsirkin
2019-03-25  0:57                 ` David Gibson
2019-03-25  0:57                   ` David Gibson
2019-03-25  0:57                   ` David Gibson
2019-04-17 21:42                   ` Thiago Jung Bauermann
2019-04-17 21:42                     ` Thiago Jung Bauermann
2019-04-17 21:42                     ` Thiago Jung Bauermann
2019-04-17 21:42                     ` Thiago Jung Bauermann
2019-04-17 21:42                 ` Thiago Jung Bauermann
2019-04-17 21:42                 ` Thiago Jung Bauermann
2019-04-17 21:42                   ` Thiago Jung Bauermann
2019-04-17 21:42                   ` Thiago Jung Bauermann
2019-04-17 21:42                   ` Thiago Jung Bauermann
2019-04-19 23:09                   ` Michael S. Tsirkin
2019-04-19 23:09                   ` Michael S. Tsirkin
2019-04-19 23:09                     ` Michael S. Tsirkin
2019-04-19 23:09                     ` Michael S. Tsirkin
2019-04-25  1:01                     ` Thiago Jung Bauermann
2019-04-25  1:01                       ` Thiago Jung Bauermann
2019-04-25  1:01                       ` Thiago Jung Bauermann
2019-04-25  1:18                       ` Michael S. Tsirkin
2019-04-25  1:18                       ` Michael S. Tsirkin
2019-04-25  1:18                         ` Michael S. Tsirkin
2019-04-25  1:18                         ` Michael S. Tsirkin
2019-04-25  1:18                         ` Michael S. Tsirkin
2019-04-26 23:56                         ` Thiago Jung Bauermann
2019-04-26 23:56                         ` Thiago Jung Bauermann
2019-04-26 23:56                           ` Thiago Jung Bauermann
2019-04-26 23:56                           ` Thiago Jung Bauermann
2019-05-20 13:08                           ` Michael S. Tsirkin
2019-05-20 13:08                             ` Michael S. Tsirkin
2019-05-20 13:08                             ` Michael S. Tsirkin
2019-05-20 13:08                             ` Michael S. Tsirkin
2019-04-25  1:01                     ` Thiago Jung Bauermann
2019-05-20 13:16                   ` Michael S. Tsirkin
2019-05-20 13:16                   ` Michael S. Tsirkin
2019-05-20 13:16                     ` Michael S. Tsirkin
2019-05-20 13:16                     ` Michael S. Tsirkin
2019-06-04  1:13                     ` Thiago Jung Bauermann
2019-06-04  1:13                       ` Thiago Jung Bauermann
2019-06-04  1:13                       ` Thiago Jung Bauermann
2019-06-04  1:42                       ` Michael S. Tsirkin
2019-06-04  1:42                         ` Michael S. Tsirkin
2019-06-04  1:42                         ` Michael S. Tsirkin
2019-06-04  1:42                         ` Michael S. Tsirkin
2019-06-28  1:58                         ` Thiago Jung Bauermann
2019-06-28  1:58                         ` Thiago Jung Bauermann
2019-06-28  1:58                           ` Thiago Jung Bauermann
2019-06-28  1:58                           ` Thiago Jung Bauermann
2019-07-01 14:17                           ` Michael S. Tsirkin
2019-07-01 14:17                           ` Michael S. Tsirkin
2019-07-01 14:17                             ` Michael S. Tsirkin
2019-07-01 14:17                             ` Michael S. Tsirkin
2019-07-14  5:51                             ` Thiago Jung Bauermann
2019-07-14  5:51                             ` Thiago Jung Bauermann
2019-07-14  5:51                               ` Thiago Jung Bauermann
2019-07-14  5:51                               ` Thiago Jung Bauermann
2019-07-15 14:35                               ` Michael S. Tsirkin
2019-07-15 14:35                               ` Michael S. Tsirkin
2019-07-15 14:35                                 ` Michael S. Tsirkin
2019-07-15 14:35                                 ` Michael S. Tsirkin
2019-07-15 20:29                                 ` Thiago Jung Bauermann
2019-07-15 20:29                                   ` Thiago Jung Bauermann
2019-07-15 20:29                                   ` Thiago Jung Bauermann
2019-07-15 20:36                                   ` Michael S. Tsirkin
2019-07-15 20:36                                   ` Michael S. Tsirkin
2019-07-15 20:36                                     ` Michael S. Tsirkin
2019-07-15 20:36                                     ` Michael S. Tsirkin
2019-07-15 22:03                                     ` Thiago Jung Bauermann
2019-07-15 22:03                                       ` Thiago Jung Bauermann
2019-07-15 22:03                                       ` Thiago Jung Bauermann
2019-07-15 22:03                                       ` Thiago Jung Bauermann
2019-07-15 22:16                                       ` Michael S. Tsirkin
2019-07-15 22:16                                       ` Michael S. Tsirkin
2019-07-15 22:16                                         ` Michael S. Tsirkin
2019-07-15 22:16                                         ` Michael S. Tsirkin
2019-07-15 23:05                                         ` Thiago Jung Bauermann
2019-07-15 23:05                                           ` Thiago Jung Bauermann
2019-07-15 23:05                                           ` Thiago Jung Bauermann
2019-07-15 23:05                                         ` Thiago Jung Bauermann
2019-07-15 23:24                                       ` Benjamin Herrenschmidt
2019-07-15 23:24                                       ` Benjamin Herrenschmidt
2019-07-15 23:24                                         ` Benjamin Herrenschmidt
2019-07-15 23:24                                         ` Benjamin Herrenschmidt
2019-07-15 20:29                                 ` Thiago Jung Bauermann
2019-07-18  3:39                               ` Thiago Jung Bauermann
2019-07-18  3:39                                 ` Thiago Jung Bauermann
2019-07-18  3:39                               ` Thiago Jung Bauermann
2019-06-04  1:13                     ` Thiago Jung Bauermann
2019-03-20 16:13         ` Thiago Jung Bauermann
2019-02-04 20:23       ` Michael S. Tsirkin
2019-01-29 19:02   ` Michael S. Tsirkin
2019-01-29 17:42 ` Thiago Jung Bauermann
2019-08-10 18:57 ` Michael S. Tsirkin [this message]
2019-08-10 18:57   ` Michael S. Tsirkin
2019-08-10 18:57   ` Michael S. Tsirkin
2019-08-10 22:07   ` Ram Pai
2019-08-10 22:07   ` Ram Pai
2019-08-10 22:07     ` Ram Pai
2019-08-11  5:56     ` Christoph Hellwig
2019-08-11  5:56       ` Christoph Hellwig
2019-08-11  5:56       ` Christoph Hellwig
2019-08-11  6:46       ` Ram Pai
2019-08-11  6:46         ` Ram Pai
2019-08-11  6:46         ` Ram Pai
2019-08-11  8:44         ` Michael S. Tsirkin
2019-08-11  8:44           ` Michael S. Tsirkin
2019-08-11  8:44           ` Michael S. Tsirkin
2019-08-12 12:13         ` Christoph Hellwig
2019-08-12 12:13         ` Christoph Hellwig
2019-08-12 12:13           ` Christoph Hellwig
2019-08-12 20:29           ` Ram Pai
2019-08-12 20:29             ` Ram Pai
2019-08-12 20:29           ` Ram Pai
2019-08-11  8:42       ` Michael S. Tsirkin
2019-08-11  8:42         ` Michael S. Tsirkin
2019-08-11  8:42       ` Michael S. Tsirkin
2019-08-11  8:55       ` Michael S. Tsirkin
2019-08-11  8:55       ` Michael S. Tsirkin
2019-08-11  8:55         ` Michael S. Tsirkin
2019-08-12 12:15         ` Christoph Hellwig
2019-08-12 12:15         ` Christoph Hellwig
2019-08-12 12:15           ` Christoph Hellwig
2019-09-06  5:07           ` Michael S. Tsirkin
2019-09-06  5:07             ` Michael S. Tsirkin
2019-09-06  5:07             ` Michael S. Tsirkin
2019-08-12  9:51       ` David Gibson
2019-08-12  9:51       ` David Gibson
2019-08-12  9:51         ` David Gibson
2019-08-13 13:26         ` Christoph Hellwig
2019-08-13 13:26           ` Christoph Hellwig
2019-08-13 14:24           ` David Gibson
2019-08-13 14:24             ` David Gibson
2019-08-13 15:45             ` Ram Pai
2019-08-13 15:45               ` Ram Pai
2019-08-13 15:45               ` Ram Pai
2019-08-26 17:48               ` Ram Pai
2019-08-26 17:48                 ` Ram Pai
2019-08-26 17:48               ` Ram Pai
2019-08-13 14:24           ` David Gibson
2019-08-13 13:26         ` Christoph Hellwig
2019-08-11  8:12     ` Michael S. Tsirkin
2019-08-11  8:12       ` Michael S. Tsirkin
2019-08-11  8:12       ` Michael S. Tsirkin
  -- strict thread matches above, loose matches on Subject: below --
2019-01-29 17:08 Thiago Jung Bauermann

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=20190810143038-mutt-send-email-mst@kernel.org \
    --to=mst@redhat.com \
    --cc=aik@linux.ibm.com \
    --cc=bauerman@linux.ibm.com \
    --cc=benh@kernel.crashing.org \
    --cc=david@gibson.dropbear.id.au \
    --cc=hch@lst.de \
    --cc=iommu@lists.linux-foundation.org \
    --cc=jasowang@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxppc-devel@lists.ozlabs.org \
    --cc=linuxram@us.ibm.com \
    --cc=paulus@ozlabs.org \
    --cc=virtualization@lists.linux-foundation.org \
    /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.