Commit b0314565 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost

Pull virtio fixes from Michael Tsirkin:
 "A small fix for a uapi header, and a fix for VDPA for non-x86 guests"

* tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost:
  virtio: drop internal struct from UAPI
  virtio: support VIRTIO_F_ORDER_PLATFORM
parents 4879f116 9c0644ee
...@@ -152,7 +152,12 @@ struct vring_virtqueue { ...@@ -152,7 +152,12 @@ struct vring_virtqueue {
/* Available for packed ring */ /* Available for packed ring */
struct { struct {
/* Actual memory layout for this queue. */ /* Actual memory layout for this queue. */
struct vring_packed vring; struct {
unsigned int num;
struct vring_packed_desc *desc;
struct vring_packed_desc_event *driver;
struct vring_packed_desc_event *device;
} vring;
/* Driver ring wrap counter. */ /* Driver ring wrap counter. */
bool avail_wrap_counter; bool avail_wrap_counter;
...@@ -1609,6 +1614,9 @@ static struct virtqueue *vring_create_virtqueue_packed( ...@@ -1609,6 +1614,9 @@ static struct virtqueue *vring_create_virtqueue_packed(
!context; !context;
vq->event = virtio_has_feature(vdev, VIRTIO_RING_F_EVENT_IDX); vq->event = virtio_has_feature(vdev, VIRTIO_RING_F_EVENT_IDX);
if (virtio_has_feature(vdev, VIRTIO_F_ORDER_PLATFORM))
vq->weak_barriers = false;
vq->packed.ring_dma_addr = ring_dma_addr; vq->packed.ring_dma_addr = ring_dma_addr;
vq->packed.driver_event_dma_addr = driver_event_dma_addr; vq->packed.driver_event_dma_addr = driver_event_dma_addr;
vq->packed.device_event_dma_addr = device_event_dma_addr; vq->packed.device_event_dma_addr = device_event_dma_addr;
...@@ -2079,6 +2087,9 @@ struct virtqueue *__vring_new_virtqueue(unsigned int index, ...@@ -2079,6 +2087,9 @@ struct virtqueue *__vring_new_virtqueue(unsigned int index,
!context; !context;
vq->event = virtio_has_feature(vdev, VIRTIO_RING_F_EVENT_IDX); vq->event = virtio_has_feature(vdev, VIRTIO_RING_F_EVENT_IDX);
if (virtio_has_feature(vdev, VIRTIO_F_ORDER_PLATFORM))
vq->weak_barriers = false;
vq->split.queue_dma_addr = 0; vq->split.queue_dma_addr = 0;
vq->split.queue_size_in_bytes = 0; vq->split.queue_size_in_bytes = 0;
...@@ -2213,6 +2224,8 @@ void vring_transport_features(struct virtio_device *vdev) ...@@ -2213,6 +2224,8 @@ void vring_transport_features(struct virtio_device *vdev)
break; break;
case VIRTIO_F_RING_PACKED: case VIRTIO_F_RING_PACKED:
break; break;
case VIRTIO_F_ORDER_PLATFORM:
break;
default: default:
/* We don't understand this bit. */ /* We don't understand this bit. */
__virtio_clear_bit(vdev, i); __virtio_clear_bit(vdev, i);
......
...@@ -78,6 +78,12 @@ ...@@ -78,6 +78,12 @@
/* This feature indicates support for the packed virtqueue layout. */ /* This feature indicates support for the packed virtqueue layout. */
#define VIRTIO_F_RING_PACKED 34 #define VIRTIO_F_RING_PACKED 34
/*
* This feature indicates that memory accesses by the driver and the
* device are ordered in a way described by the platform.
*/
#define VIRTIO_F_ORDER_PLATFORM 36
/* /*
* Does the device support Single Root I/O Virtualization? * Does the device support Single Root I/O Virtualization?
*/ */
......
...@@ -213,14 +213,4 @@ struct vring_packed_desc { ...@@ -213,14 +213,4 @@ struct vring_packed_desc {
__le16 flags; __le16 flags;
}; };
struct vring_packed {
unsigned int num;
struct vring_packed_desc *desc;
struct vring_packed_desc_event *driver;
struct vring_packed_desc_event *device;
};
#endif /* _UAPI_LINUX_VIRTIO_RING_H */ #endif /* _UAPI_LINUX_VIRTIO_RING_H */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment