All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: linux-kernel@vger.kernel.org
Cc: David Miller <davem@davemloft.net>,
	cornelia.huck@de.ibm.com, rusty@au1.ibm.com, nab@linux-iscsi.org,
	pbonzini@redhat.com, thuth@linux.vnet.ibm.com,
	dahi@linux.vnet.ibm.com, Rusty Russell <rusty@rustcorp.com.au>,
	Ohad Ben-Cohen <ohad@wizery.com>,
	Christian Borntraeger <borntraeger@de.ibm.com>,
	linux390@de.ibm.com, Martin Schwidefsky <schwidefsky@de.ibm.com>,
	Heiko Carstens <heiko.carstens@de.ibm.com>,
	Pawel Moll <pawel.moll@arm.com>,
	Ashutosh Dixit <ashutosh.dixit@intel.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Sudeep Dutt <sudeep.dutt@intel.com>,
	Siva Yerramreddy <yshivakrishna@gmail.com>,
	lguest@lists.ozlabs.org, linux-s390@vger.kernel.org,
	virtualization@lists.linux-foundation.org
Subject: [PATCH v5 04/45] virtio: assert 32 bit features in transports
Date: Thu, 27 Nov 2014 14:30:21 +0200	[thread overview]
Message-ID: <1417091078-24611-5-git-send-email-mst@redhat.com> (raw)
In-Reply-To: <1417091078-24611-1-git-send-email-mst@redhat.com>

At this point, no transports set any of the high 32 feature bits.
Since transports generally can't (yet) cope with such bits, add BUG_ON
checks to make sure they are not set by mistake.

Based on rproc patch by Rusty.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
 drivers/lguest/lguest_device.c         | 3 +++
 drivers/misc/mic/card/mic_virtio.c     | 3 +++
 drivers/remoteproc/remoteproc_virtio.c | 3 +++
 drivers/s390/kvm/kvm_virtio.c          | 3 +++
 drivers/s390/kvm/virtio_ccw.c          | 3 +++
 drivers/virtio/virtio_mmio.c           | 3 +++
 drivers/virtio/virtio_pci.c            | 3 +++
 7 files changed, 21 insertions(+)

diff --git a/drivers/lguest/lguest_device.c b/drivers/lguest/lguest_device.c
index 49d04d5..43ce390 100644
--- a/drivers/lguest/lguest_device.c
+++ b/drivers/lguest/lguest_device.c
@@ -136,6 +136,9 @@ static void lg_finalize_features(struct virtio_device *vdev)
 	/* Give virtio_ring a chance to accept features. */
 	vring_transport_features(vdev);
 
+	/* Make sure we don't have any features > 32 bits! */
+	BUG_ON((u32)vdev->features != vdev->features);
+
 	/*
 	 * Since lguest is currently x86-only, we're little-endian.  That
 	 * means we could just memcpy.  But it's not time critical, and in
diff --git a/drivers/misc/mic/card/mic_virtio.c b/drivers/misc/mic/card/mic_virtio.c
index d037f57..dbeff38 100644
--- a/drivers/misc/mic/card/mic_virtio.c
+++ b/drivers/misc/mic/card/mic_virtio.c
@@ -96,6 +96,9 @@ static void mic_finalize_features(struct virtio_device *vdev)
 	/* Give virtio_ring a chance to accept features. */
 	vring_transport_features(vdev);
 
+	/* Make sure we don't have any features > 32 bits! */
+	BUG_ON((u32)vdev->features != vdev->features);
+
 	memset_io(out_features, 0, feature_len);
 	bits = min_t(unsigned, feature_len,
 		sizeof(vdev->features)) * 8;
diff --git a/drivers/remoteproc/remoteproc_virtio.c b/drivers/remoteproc/remoteproc_virtio.c
index 62897db..627737e 100644
--- a/drivers/remoteproc/remoteproc_virtio.c
+++ b/drivers/remoteproc/remoteproc_virtio.c
@@ -227,6 +227,9 @@ static void rproc_virtio_finalize_features(struct virtio_device *vdev)
 	/* Give virtio_ring a chance to accept features */
 	vring_transport_features(vdev);
 
+	/* Make sure we don't have any features > 32 bits! */
+	BUG_ON((u32)vdev->features != vdev->features);
+
 	/*
 	 * Remember the finalized features of our vdev, and provide it
 	 * to the remote processor once it is powered on.
diff --git a/drivers/s390/kvm/kvm_virtio.c b/drivers/s390/kvm/kvm_virtio.c
index 1455a9a..15f112d 100644
--- a/drivers/s390/kvm/kvm_virtio.c
+++ b/drivers/s390/kvm/kvm_virtio.c
@@ -103,6 +103,9 @@ static void kvm_finalize_features(struct virtio_device *vdev)
 	/* Give virtio_ring a chance to accept features. */
 	vring_transport_features(vdev);
 
+	/* Make sure we don't have any features > 32 bits! */
+	BUG_ON((u32)vdev->features != vdev->features);
+
 	memset(out_features, 0, desc->feature_len);
 	bits = min_t(unsigned, desc->feature_len, sizeof(vdev->features)) * 8;
 	for (i = 0; i < bits; i++) {
diff --git a/drivers/s390/kvm/virtio_ccw.c b/drivers/s390/kvm/virtio_ccw.c
index 56d7895..244d611 100644
--- a/drivers/s390/kvm/virtio_ccw.c
+++ b/drivers/s390/kvm/virtio_ccw.c
@@ -714,6 +714,9 @@ static void virtio_ccw_finalize_features(struct virtio_device *vdev)
 	/* Give virtio_ring a chance to accept features. */
 	vring_transport_features(vdev);
 
+	/* Make sure we don't have any features > 32 bits! */
+	BUG_ON((u32)vdev->features != vdev->features);
+
 	features->index = 0;
 	features->features = cpu_to_le32(vdev->features);
 	/* Write the feature bits to the host. */
diff --git a/drivers/virtio/virtio_mmio.c b/drivers/virtio/virtio_mmio.c
index c63d0ef..aec1dae 100644
--- a/drivers/virtio/virtio_mmio.c
+++ b/drivers/virtio/virtio_mmio.c
@@ -159,6 +159,9 @@ static void vm_finalize_features(struct virtio_device *vdev)
 	/* Give virtio_ring a chance to accept features. */
 	vring_transport_features(vdev);
 
+	/* Make sure we don't have any features > 32 bits! */
+	BUG_ON((u32)vdev->features != vdev->features);
+
 	writel(0, vm_dev->base + VIRTIO_MMIO_GUEST_FEATURES_SEL);
 	writel(vdev->features, vm_dev->base + VIRTIO_MMIO_GUEST_FEATURES);
 }
diff --git a/drivers/virtio/virtio_pci.c b/drivers/virtio/virtio_pci.c
index 80be24a..8eeaadd 100644
--- a/drivers/virtio/virtio_pci.c
+++ b/drivers/virtio/virtio_pci.c
@@ -119,6 +119,9 @@ static void vp_finalize_features(struct virtio_device *vdev)
 	/* Give virtio_ring a chance to accept features. */
 	vring_transport_features(vdev);
 
+	/* Make sure we don't have any features > 32 bits! */
+	BUG_ON((u32)vdev->features != vdev->features);
+
 	/* We only support 32 feature bits. */
 	iowrite32(vdev->features, vp_dev->ioaddr+VIRTIO_PCI_GUEST_FEATURES);
 }
-- 
MST

WARNING: multiple messages have this Message-ID (diff)
From: "Michael S. Tsirkin" <mst@redhat.com>
To: linux-kernel@vger.kernel.org
Cc: linux-s390@vger.kernel.org, lguest@lists.ozlabs.org,
	thuth@linux.vnet.ibm.com, Pawel Moll <pawel.moll@arm.com>,
	Christian Borntraeger <borntraeger@de.ibm.com>,
	rusty@au1.ibm.com,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Heiko Carstens <heiko.carstens@de.ibm.com>,
	Sudeep Dutt <sudeep.dutt@intel.com>,
	virtualization@lists.linux-foundation.org,
	Ashutosh Dixit <ashutosh.dixit@intel.com>,
	dahi@linux.vnet.ibm.com,
	Siva Yerramreddy <yshivakrishna@gmail.com>,
	linux390@de.ibm.com, pbonzini@redhat.com,
	David Miller <davem@davemloft.net>,
	Martin Schwidefsky <schwidefsky@de.ibm.com>
Subject: [PATCH v5 04/45] virtio: assert 32 bit features in transports
Date: Thu, 27 Nov 2014 14:30:21 +0200	[thread overview]
Message-ID: <1417091078-24611-5-git-send-email-mst@redhat.com> (raw)
In-Reply-To: <1417091078-24611-1-git-send-email-mst@redhat.com>

At this point, no transports set any of the high 32 feature bits.
Since transports generally can't (yet) cope with such bits, add BUG_ON
checks to make sure they are not set by mistake.

Based on rproc patch by Rusty.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
 drivers/lguest/lguest_device.c         | 3 +++
 drivers/misc/mic/card/mic_virtio.c     | 3 +++
 drivers/remoteproc/remoteproc_virtio.c | 3 +++
 drivers/s390/kvm/kvm_virtio.c          | 3 +++
 drivers/s390/kvm/virtio_ccw.c          | 3 +++
 drivers/virtio/virtio_mmio.c           | 3 +++
 drivers/virtio/virtio_pci.c            | 3 +++
 7 files changed, 21 insertions(+)

diff --git a/drivers/lguest/lguest_device.c b/drivers/lguest/lguest_device.c
index 49d04d5..43ce390 100644
--- a/drivers/lguest/lguest_device.c
+++ b/drivers/lguest/lguest_device.c
@@ -136,6 +136,9 @@ static void lg_finalize_features(struct virtio_device *vdev)
 	/* Give virtio_ring a chance to accept features. */
 	vring_transport_features(vdev);
 
+	/* Make sure we don't have any features > 32 bits! */
+	BUG_ON((u32)vdev->features != vdev->features);
+
 	/*
 	 * Since lguest is currently x86-only, we're little-endian.  That
 	 * means we could just memcpy.  But it's not time critical, and in
diff --git a/drivers/misc/mic/card/mic_virtio.c b/drivers/misc/mic/card/mic_virtio.c
index d037f57..dbeff38 100644
--- a/drivers/misc/mic/card/mic_virtio.c
+++ b/drivers/misc/mic/card/mic_virtio.c
@@ -96,6 +96,9 @@ static void mic_finalize_features(struct virtio_device *vdev)
 	/* Give virtio_ring a chance to accept features. */
 	vring_transport_features(vdev);
 
+	/* Make sure we don't have any features > 32 bits! */
+	BUG_ON((u32)vdev->features != vdev->features);
+
 	memset_io(out_features, 0, feature_len);
 	bits = min_t(unsigned, feature_len,
 		sizeof(vdev->features)) * 8;
diff --git a/drivers/remoteproc/remoteproc_virtio.c b/drivers/remoteproc/remoteproc_virtio.c
index 62897db..627737e 100644
--- a/drivers/remoteproc/remoteproc_virtio.c
+++ b/drivers/remoteproc/remoteproc_virtio.c
@@ -227,6 +227,9 @@ static void rproc_virtio_finalize_features(struct virtio_device *vdev)
 	/* Give virtio_ring a chance to accept features */
 	vring_transport_features(vdev);
 
+	/* Make sure we don't have any features > 32 bits! */
+	BUG_ON((u32)vdev->features != vdev->features);
+
 	/*
 	 * Remember the finalized features of our vdev, and provide it
 	 * to the remote processor once it is powered on.
diff --git a/drivers/s390/kvm/kvm_virtio.c b/drivers/s390/kvm/kvm_virtio.c
index 1455a9a..15f112d 100644
--- a/drivers/s390/kvm/kvm_virtio.c
+++ b/drivers/s390/kvm/kvm_virtio.c
@@ -103,6 +103,9 @@ static void kvm_finalize_features(struct virtio_device *vdev)
 	/* Give virtio_ring a chance to accept features. */
 	vring_transport_features(vdev);
 
+	/* Make sure we don't have any features > 32 bits! */
+	BUG_ON((u32)vdev->features != vdev->features);
+
 	memset(out_features, 0, desc->feature_len);
 	bits = min_t(unsigned, desc->feature_len, sizeof(vdev->features)) * 8;
 	for (i = 0; i < bits; i++) {
diff --git a/drivers/s390/kvm/virtio_ccw.c b/drivers/s390/kvm/virtio_ccw.c
index 56d7895..244d611 100644
--- a/drivers/s390/kvm/virtio_ccw.c
+++ b/drivers/s390/kvm/virtio_ccw.c
@@ -714,6 +714,9 @@ static void virtio_ccw_finalize_features(struct virtio_device *vdev)
 	/* Give virtio_ring a chance to accept features. */
 	vring_transport_features(vdev);
 
+	/* Make sure we don't have any features > 32 bits! */
+	BUG_ON((u32)vdev->features != vdev->features);
+
 	features->index = 0;
 	features->features = cpu_to_le32(vdev->features);
 	/* Write the feature bits to the host. */
diff --git a/drivers/virtio/virtio_mmio.c b/drivers/virtio/virtio_mmio.c
index c63d0ef..aec1dae 100644
--- a/drivers/virtio/virtio_mmio.c
+++ b/drivers/virtio/virtio_mmio.c
@@ -159,6 +159,9 @@ static void vm_finalize_features(struct virtio_device *vdev)
 	/* Give virtio_ring a chance to accept features. */
 	vring_transport_features(vdev);
 
+	/* Make sure we don't have any features > 32 bits! */
+	BUG_ON((u32)vdev->features != vdev->features);
+
 	writel(0, vm_dev->base + VIRTIO_MMIO_GUEST_FEATURES_SEL);
 	writel(vdev->features, vm_dev->base + VIRTIO_MMIO_GUEST_FEATURES);
 }
diff --git a/drivers/virtio/virtio_pci.c b/drivers/virtio/virtio_pci.c
index 80be24a..8eeaadd 100644
--- a/drivers/virtio/virtio_pci.c
+++ b/drivers/virtio/virtio_pci.c
@@ -119,6 +119,9 @@ static void vp_finalize_features(struct virtio_device *vdev)
 	/* Give virtio_ring a chance to accept features. */
 	vring_transport_features(vdev);
 
+	/* Make sure we don't have any features > 32 bits! */
+	BUG_ON((u32)vdev->features != vdev->features);
+
 	/* We only support 32 feature bits. */
 	iowrite32(vdev->features, vp_dev->ioaddr+VIRTIO_PCI_GUEST_FEATURES);
 }
-- 
MST

  parent reply	other threads:[~2014-11-27 12:30 UTC|newest]

Thread overview: 85+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-27 12:29 [PATCH v5 00/45] linux: towards virtio-1 guest support Michael S. Tsirkin
2014-11-27 12:29 ` [PATCH v5 01/45] virtio: use u32, not bitmap for struct virtio_device's features Michael S. Tsirkin
2014-11-27 12:29   ` Michael S. Tsirkin
2014-11-27 16:15   ` David Hildenbrand
2014-11-27 16:15     ` David Hildenbrand
2014-11-27 16:28     ` Michael S. Tsirkin
2014-11-27 16:28       ` Michael S. Tsirkin
2014-11-27 16:34       ` David Hildenbrand
2014-11-27 16:34         ` David Hildenbrand
2014-11-27 12:30 ` [PATCH v5 02/45] mic_virtio: robust feature array size calculation Michael S. Tsirkin
2014-11-27 12:30 ` [PATCH v5 03/45] virtio: add support for 64 bit features Michael S. Tsirkin
2014-11-27 12:30   ` Michael S. Tsirkin
2014-11-27 12:30 ` Michael S. Tsirkin [this message]
2014-11-27 12:30   ` [PATCH v5 04/45] virtio: assert 32 bit features in transports Michael S. Tsirkin
2014-11-27 12:30 ` [PATCH v5 05/45] virtio_ccw: add support for 64 bit features Michael S. Tsirkin
2014-11-27 12:30 ` [PATCH v5 06/45] virtio: add virtio 1.0 feature bit Michael S. Tsirkin
2014-11-27 12:30   ` Michael S. Tsirkin
2014-11-27 12:30 ` [PATCH v5 07/45] virtio: memory access APIs Michael S. Tsirkin
2014-11-27 12:30 ` Michael S. Tsirkin
2014-11-27 12:30 ` [PATCH v5 08/45] virtio_ring: switch to new " Michael S. Tsirkin
2014-11-27 12:30   ` Michael S. Tsirkin
2014-11-27 12:30 ` [PATCH v5 09/45] virtio_config: endian conversion for v1.0 Michael S. Tsirkin
2014-11-27 12:30 ` Michael S. Tsirkin
2014-11-27 12:30 ` [PATCH v5 10/45] virtio: allow transports to get avail/used addresses Michael S. Tsirkin
2014-11-27 12:30   ` Michael S. Tsirkin
2014-11-27 12:31 ` [PATCH v5 11/45] virtio: set FEATURES_OK Michael S. Tsirkin
2014-11-27 12:31   ` Michael S. Tsirkin
2014-11-27 12:31 ` [PATCH v5 12/45] virtio: simplify feature bit handling Michael S. Tsirkin
2014-11-27 12:31 ` Michael S. Tsirkin
2014-11-27 12:31 ` [PATCH v5 13/45] virtio: add legacy feature table support Michael S. Tsirkin
2014-11-27 12:31 ` Michael S. Tsirkin
2014-11-27 12:31 ` [PATCH v5 14/45] virtio_net: v1.0 endianness Michael S. Tsirkin
2014-11-27 12:31   ` Michael S. Tsirkin
2014-11-27 12:31 ` [PATCH v5 15/45] virtio_blk: v1.0 support Michael S. Tsirkin
2014-11-27 12:31 ` Michael S. Tsirkin
2014-11-27 12:31 ` [PATCH v5 16/45] KVM: s390: Set virtio-ccw transport revision Michael S. Tsirkin
2014-11-27 16:01   ` David Hildenbrand
2014-11-27 12:31 ` [PATCH v5 17/45] KVM: s390: virtio-ccw revision 1 SET_VQ Michael S. Tsirkin
2014-11-27 12:31 ` [PATCH v5 18/45] KVM: s390 allow virtio_ccw status writes to fail Michael S. Tsirkin
2014-11-27 12:31 ` [PATCH v5 19/45] KVM: s390: enable virtio-ccw revision 1 Michael S. Tsirkin
2014-11-27 12:31 ` [PATCH v5 20/45] virtio_blk: make serial attribute static Michael S. Tsirkin
2014-11-27 12:31 ` Michael S. Tsirkin
2014-11-27 12:31 ` [PATCH v5 21/45] virtio_blk: fix race at module removal Michael S. Tsirkin
2014-11-27 12:31 ` Michael S. Tsirkin
2014-11-27 12:31 ` [PATCH v5 22/45] virtio_net: pass vi around Michael S. Tsirkin
2014-11-27 12:31 ` Michael S. Tsirkin
2014-11-27 12:32 ` [PATCH v5 23/45] virtio_net: get rid of virtio_net_hdr/skb_vnet_hdr Michael S. Tsirkin
2014-11-27 12:32 ` Michael S. Tsirkin
2014-11-27 12:32 ` [PATCH v5 24/45] virtio_net: stricter short buffer length checks Michael S. Tsirkin
2014-11-27 12:32   ` Michael S. Tsirkin
2014-11-27 12:32 ` [PATCH v5 25/45] virtio_net: bigger header when VERSION_1 is set Michael S. Tsirkin
2014-11-27 12:32 ` Michael S. Tsirkin
2014-11-27 12:32 ` [PATCH v5 26/45] virtio_net: enable v1.0 support Michael S. Tsirkin
2014-11-27 12:32   ` Michael S. Tsirkin
2014-11-27 12:32 ` [PATCH v5 27/45] vhost: make features 64 bit Michael S. Tsirkin
2014-11-27 12:32   ` Michael S. Tsirkin
2014-11-27 12:32 ` [PATCH v5 28/45] vhost: add memory access wrappers Michael S. Tsirkin
2014-11-27 12:32 ` Michael S. Tsirkin
2014-11-27 12:32 ` [PATCH v5 29/45] vhost/net: force len for TX to host endian Michael S. Tsirkin
2014-11-27 12:32   ` Michael S. Tsirkin
2014-11-27 12:32 ` [PATCH v5 30/45] vhost: virtio 1.0 endian-ness support Michael S. Tsirkin
2014-11-27 12:32 ` Michael S. Tsirkin
2014-11-27 12:32 ` [PATCH v5 31/45] vhost/net: virtio 1.0 byte swap Michael S. Tsirkin
2014-11-27 12:32 ` Michael S. Tsirkin
2014-11-27 12:32 ` [PATCH v5 32/45] vhost/net: larger header for virtio 1.0 Michael S. Tsirkin
2014-11-27 12:32 ` Michael S. Tsirkin
2014-11-27 12:32 ` [PATCH v5 33/45] virtio_net: disable mac write " Michael S. Tsirkin
2014-11-27 12:32 ` Michael S. Tsirkin
2014-11-27 12:32 ` [PATCH v5 34/45] vhost/net: enable " Michael S. Tsirkin
2014-11-27 12:32   ` Michael S. Tsirkin
2014-11-27 12:32 ` [PATCH v5 35/45] vhost/net: suppress compiler warning Michael S. Tsirkin
2014-11-27 12:32 ` Michael S. Tsirkin
2014-11-27 12:33 ` [PATCH v5 36/45] tun: move internal flag defines out of uapi Michael S. Tsirkin
2014-11-27 12:33 ` [PATCH v5 37/45] tun: drop most type defines Michael S. Tsirkin
2014-11-27 12:33 ` [PATCH v5 38/45] tun: add VNET_LE flag Michael S. Tsirkin
2014-11-27 12:33 ` [PATCH v5 39/45] tun: TUN_VNET_LE support, fix sparse warnings for virtio headers Michael S. Tsirkin
2014-11-27 12:33 ` [PATCH v5 40/45] macvtap: TUN_VNET_HDR support Michael S. Tsirkin
2014-11-27 12:33 ` [PATCH v5 41/45] virtio_scsi: v1.0 support Michael S. Tsirkin
2014-11-27 12:33 ` Michael S. Tsirkin
2014-11-27 12:33 ` [PATCH v5 42/45] virtio_scsi: move to uapi Michael S. Tsirkin
2014-11-27 12:33 ` [PATCH v5 43/45] virtio_scsi: export to userspace Michael S. Tsirkin
2014-11-27 12:33 ` Michael S. Tsirkin
2014-11-27 12:33 ` [PATCH v5 44/45] vhost/scsi: partial virtio 1.0 support Michael S. Tsirkin
2014-11-27 12:33 ` Michael S. Tsirkin
2014-11-27 12:33 ` [PATCH v5 45/45] af_packet: virtio 1.0 stubs Michael S. Tsirkin

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=1417091078-24611-5-git-send-email-mst@redhat.com \
    --to=mst@redhat.com \
    --cc=ashutosh.dixit@intel.com \
    --cc=borntraeger@de.ibm.com \
    --cc=cornelia.huck@de.ibm.com \
    --cc=dahi@linux.vnet.ibm.com \
    --cc=davem@davemloft.net \
    --cc=gregkh@linuxfoundation.org \
    --cc=heiko.carstens@de.ibm.com \
    --cc=lguest@lists.ozlabs.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=linux390@de.ibm.com \
    --cc=nab@linux-iscsi.org \
    --cc=ohad@wizery.com \
    --cc=pawel.moll@arm.com \
    --cc=pbonzini@redhat.com \
    --cc=rusty@au1.ibm.com \
    --cc=rusty@rustcorp.com.au \
    --cc=schwidefsky@de.ibm.com \
    --cc=sudeep.dutt@intel.com \
    --cc=thuth@linux.vnet.ibm.com \
    --cc=virtualization@lists.linux-foundation.org \
    --cc=yshivakrishna@gmail.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.