All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC] virtio: support VIRTIO_F_IO_BARRIER
@ 2018-05-03  2:59 Tiwei Bie
  2018-05-03  7:30   ` Jason Wang
                   ` (4 more replies)
  0 siblings, 5 replies; 22+ messages in thread
From: Tiwei Bie @ 2018-05-03  2:59 UTC (permalink / raw)
  To: mst, jasowang, pbonzini, stefanha, virtualization, linux-kernel
  Cc: dan.daly, cunming.liang, zhihong.wang

This patch introduces the support for VIRTIO_F_IO_BARRIER.
When this feature is negotiated, driver will use the barriers
suitable for hardware devices.

Signed-off-by: Tiwei Bie <tiwei.bie@intel.com>
---
 drivers/virtio/virtio_ring.c       | 5 +++++
 include/uapi/linux/virtio_config.h | 8 +++++++-
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
index 21d464a29cf8..edb565643bf4 100644
--- a/drivers/virtio/virtio_ring.c
+++ b/drivers/virtio/virtio_ring.c
@@ -996,6 +996,9 @@ struct virtqueue *__vring_new_virtqueue(unsigned int index,
 		!context;
 	vq->event = virtio_has_feature(vdev, VIRTIO_RING_F_EVENT_IDX);
 
+	if (virtio_has_feature(vdev, VIRTIO_F_IO_BARRIER))
+		vq->weak_barriers = false;
+
 	/* No callback?  Tell other side not to bother us. */
 	if (!callback) {
 		vq->avail_flags_shadow |= VRING_AVAIL_F_NO_INTERRUPT;
@@ -1164,6 +1167,8 @@ void vring_transport_features(struct virtio_device *vdev)
 			break;
 		case VIRTIO_F_IOMMU_PLATFORM:
 			break;
+		case VIRTIO_F_IO_BARRIER:
+			break;
 		default:
 			/* We don't understand this bit. */
 			__virtio_clear_bit(vdev, i);
diff --git a/include/uapi/linux/virtio_config.h b/include/uapi/linux/virtio_config.h
index 308e2096291f..6ca8d24bf468 100644
--- a/include/uapi/linux/virtio_config.h
+++ b/include/uapi/linux/virtio_config.h
@@ -49,7 +49,7 @@
  * transport being used (eg. virtio_ring), the rest are per-device feature
  * bits. */
 #define VIRTIO_TRANSPORT_F_START	28
-#define VIRTIO_TRANSPORT_F_END		34
+#define VIRTIO_TRANSPORT_F_END		38
 
 #ifndef VIRTIO_CONFIG_NO_LEGACY
 /* Do we get callbacks when the ring is completely used, even if we've
@@ -71,4 +71,10 @@
  * this is for compatibility with legacy systems.
  */
 #define VIRTIO_F_IOMMU_PLATFORM		33
+
+/*
+ * If clear - driver may use barriers suitable for CPU cores.
+ * If set - driver must use barriers suitable for hardware devices.
+ */
+#define VIRTIO_F_IO_BARRIER		37
 #endif /* _UAPI_LINUX_VIRTIO_CONFIG_H */
-- 
2.11.0

^ permalink raw reply related	[flat|nested] 22+ messages in thread
* [RFC] virtio: support VIRTIO_F_IO_BARRIER
@ 2018-05-03  2:59 Tiwei Bie
  0 siblings, 0 replies; 22+ messages in thread
From: Tiwei Bie @ 2018-05-03  2:59 UTC (permalink / raw)
  To: mst, jasowang, pbonzini, stefanha, virtualization, linux-kernel
  Cc: zhihong.wang

This patch introduces the support for VIRTIO_F_IO_BARRIER.
When this feature is negotiated, driver will use the barriers
suitable for hardware devices.

Signed-off-by: Tiwei Bie <tiwei.bie@intel.com>
---
 drivers/virtio/virtio_ring.c       | 5 +++++
 include/uapi/linux/virtio_config.h | 8 +++++++-
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
index 21d464a29cf8..edb565643bf4 100644
--- a/drivers/virtio/virtio_ring.c
+++ b/drivers/virtio/virtio_ring.c
@@ -996,6 +996,9 @@ struct virtqueue *__vring_new_virtqueue(unsigned int index,
 		!context;
 	vq->event = virtio_has_feature(vdev, VIRTIO_RING_F_EVENT_IDX);
 
+	if (virtio_has_feature(vdev, VIRTIO_F_IO_BARRIER))
+		vq->weak_barriers = false;
+
 	/* No callback?  Tell other side not to bother us. */
 	if (!callback) {
 		vq->avail_flags_shadow |= VRING_AVAIL_F_NO_INTERRUPT;
@@ -1164,6 +1167,8 @@ void vring_transport_features(struct virtio_device *vdev)
 			break;
 		case VIRTIO_F_IOMMU_PLATFORM:
 			break;
+		case VIRTIO_F_IO_BARRIER:
+			break;
 		default:
 			/* We don't understand this bit. */
 			__virtio_clear_bit(vdev, i);
diff --git a/include/uapi/linux/virtio_config.h b/include/uapi/linux/virtio_config.h
index 308e2096291f..6ca8d24bf468 100644
--- a/include/uapi/linux/virtio_config.h
+++ b/include/uapi/linux/virtio_config.h
@@ -49,7 +49,7 @@
  * transport being used (eg. virtio_ring), the rest are per-device feature
  * bits. */
 #define VIRTIO_TRANSPORT_F_START	28
-#define VIRTIO_TRANSPORT_F_END		34
+#define VIRTIO_TRANSPORT_F_END		38
 
 #ifndef VIRTIO_CONFIG_NO_LEGACY
 /* Do we get callbacks when the ring is completely used, even if we've
@@ -71,4 +71,10 @@
  * this is for compatibility with legacy systems.
  */
 #define VIRTIO_F_IOMMU_PLATFORM		33
+
+/*
+ * If clear - driver may use barriers suitable for CPU cores.
+ * If set - driver must use barriers suitable for hardware devices.
+ */
+#define VIRTIO_F_IO_BARRIER		37
 #endif /* _UAPI_LINUX_VIRTIO_CONFIG_H */
-- 
2.11.0

^ permalink raw reply related	[flat|nested] 22+ messages in thread

end of thread, other threads:[~2018-05-04  1:14 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-05-03  2:59 [RFC] virtio: support VIRTIO_F_IO_BARRIER Tiwei Bie
2018-05-03  7:30 ` Jason Wang
2018-05-03  7:30   ` Jason Wang
2018-05-03  8:30   ` Tiwei Bie
2018-05-03  8:30   ` Tiwei Bie
2018-05-03  9:09     ` Jason Wang
2018-05-03  9:09     ` Jason Wang
2018-05-03  9:58       ` Tiwei Bie
2018-05-03  9:58       ` Tiwei Bie
2018-05-03 12:57         ` Jason Wang
2018-05-03 12:57         ` Jason Wang
2018-05-03  9:06 ` Stefan Hajnoczi
2018-05-03  9:06 ` Stefan Hajnoczi
2018-05-03 13:26   ` Tiwei Bie
2018-05-03 13:26     ` Tiwei Bie
2018-05-03 13:50     ` Stefan Hajnoczi
2018-05-03 13:50     ` Stefan Hajnoczi
2018-05-03 17:57 ` Michael S. Tsirkin
2018-05-04  1:14   ` Tiwei Bie
2018-05-04  1:14   ` Tiwei Bie
2018-05-03 17:57 ` Michael S. Tsirkin
2018-05-03  2:59 Tiwei Bie

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.