From: "Michael S. Tsirkin" <mst@redhat.com>
To: wexu@redhat.com
Cc: tiwei.bie@intel.com, qemu-devel@nongnu.org, jasowang@redhat.com,
jfreiman@redhat.com, maxime.coquelin@redhat.com
Subject: Re: [Qemu-devel] [PATCH v2 01/15] virtio: introduce packed ring definitions
Date: Fri, 1 Feb 2019 17:15:27 -0500 [thread overview]
Message-ID: <20190201170832-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <1547663480-547-2-git-send-email-wexu@redhat.com>
On Wed, Jan 16, 2019 at 01:31:06PM -0500, wexu@redhat.com wrote:
> From: Wei Xu <wexu@redhat.com>
>
> >From 1.1 spec.
>
> Signed-off-by: Wei Xu <wexu@redhat.com>
So pls don't open-code this in qemu. These headers should come
from Linux using scripts/update-linux-headers.sh.
> ---
> include/standard-headers/linux/virtio_config.h | 15 +++++++++
> include/standard-headers/linux/virtio_ring.h | 43 ++++++++++++++++++++++++++
> 2 files changed, 58 insertions(+)
>
> diff --git a/include/standard-headers/linux/virtio_config.h b/include/standard-headers/linux/virtio_config.h
> index 0b19436..9f450fd 100644
> --- a/include/standard-headers/linux/virtio_config.h
> +++ b/include/standard-headers/linux/virtio_config.h
> @@ -75,6 +75,21 @@
> */
> #define VIRTIO_F_IOMMU_PLATFORM 33
>
> +/* This feature indicates support for the packed virtqueue layout. */
> +#define VIRTIO_F_RING_PACKED 34
> +
> +/* Enable events */
> +#define RING_EVENT_FLAGS_ENABLE 0x0
> +/* Disable events */
> +#define RING_EVENT_FLAGS_DISABLE 0x1
> +/*
> + * * Enable events for a specific descriptor
> + * * (as specified by Descriptor Ring Change Event Offset/Wrap Counter).
> + * * Only valid if VIRTIO_F_RING_EVENT_IDX has been negotiated.
> + * */
Above is formatted very strangely. Prefix RING_ is also probably
not a good one. Linux uses VRING.
> +#define RING_EVENT_FLAGS_DESC 0x2
> +/* The value 0x3 is reserved */
> +
> /*
> * Does the device support Single Root I/O Virtualization?
> */
> diff --git a/include/standard-headers/linux/virtio_ring.h b/include/standard-headers/linux/virtio_ring.h
> index d26e72b..1719c6f 100644
> --- a/include/standard-headers/linux/virtio_ring.h
> +++ b/include/standard-headers/linux/virtio_ring.h
> @@ -42,6 +42,10 @@
> /* This means the buffer contains a list of buffer descriptors. */
> #define VRING_DESC_F_INDIRECT 4
>
> +/* Mark a descriptor as available or used. */
> +#define VRING_DESC_F_AVAIL (1ul << 7)
> +#define VRING_DESC_F_USED (1ul << 15)
> +
> /* The Host uses this in used->flags to advise the Guest: don't kick me when
> * you add a buffer. It's unreliable, so it's simply an optimization. Guest
> * will still kick if it's out of buffers. */
> @@ -51,6 +55,17 @@
> * optimization. */
> #define VRING_AVAIL_F_NO_INTERRUPT 1
>
> +/* Enable events. */
> +#define VRING_EVENT_F_ENABLE 0x0
> +/* Disable events. */
> +#define VRING_EVENT_F_DISABLE 0x1
> +/*
> + * Enable events for a specific descriptor
> + * (as specified by Descriptor Ring Change Event Offset/Wrap Counter).
> + * Only valid if VIRTIO_RING_F_EVENT_IDX has been negotiated.
> + */
> +#define VRING_EVENT_F_DESC 0x2
> +
> /* We support indirect buffer descriptors */
> #define VIRTIO_RING_F_INDIRECT_DESC 28
>
> @@ -169,4 +184,32 @@ static inline int vring_need_event(uint16_t event_idx, uint16_t new_idx, uint16_
> return (uint16_t)(new_idx - event_idx - 1) < (uint16_t)(new_idx - old);
> }
>
> +struct vring_packed_desc_event {
> + /* Descriptor Ring Change Event Offset/Wrap Counter. */
> + __virtio16 off_wrap;
> + /* Descriptor Ring Change Event Flags. */
> + __virtio16 flags;
> +};
> +
> +struct vring_packed_desc {
> + /* Buffer Address. */
> + __virtio64 addr;
> + /* Buffer Length. */
> + __virtio32 len;
> + /* Buffer ID. */
> + __virtio16 id;
> + /* The flags depending on descriptor type. */
> + __virtio16 flags;
> +};
This seems strange. I don't think this needs __virtio variants -
they are unconditionally LE.
> +
> +struct vring_packed {
> + unsigned int num;
> +
> + struct vring_packed_desc *desc;
> +
> + struct vring_packed_desc_event *driver;
> +
> + struct vring_packed_desc_event *device;
> +};
> +
I don't know why we have this in the UAPI. I think it's a good idea
to drop it, in Linux as well.
> #endif /* _LINUX_VIRTIO_RING_H */
> --
> 1.8.3.1
next prev parent reply other threads:[~2019-02-01 22:15 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-16 18:31 [Qemu-devel] [PATCH v2 00/15] packed ring virtio-net backends support wexu
2019-01-16 18:31 ` [Qemu-devel] [PATCH v2 01/15] virtio: introduce packed ring definitions wexu
2019-02-01 22:15 ` Michael S. Tsirkin [this message]
2019-01-16 18:31 ` [Qemu-devel] [PATCH v2 02/15] virtio: redefine structure & memory cache for packed ring wexu
2019-01-16 18:31 ` [Qemu-devel] [PATCH v2 03/15] virtio: expand offset calculation " wexu
2019-01-16 18:31 ` [Qemu-devel] [PATCH v2 04/15] virtio: add memory region init " wexu
2019-01-16 18:31 ` [Qemu-devel] [PATCH v2 05/15] virtio: init wrap counter " wexu
2019-01-16 18:31 ` [Qemu-devel] [PATCH v2 06/15] virtio: init and desc empty check " wexu
2019-01-16 18:31 ` [Qemu-devel] [PATCH v2 07/15] virtio: get avail bytes " wexu
2019-01-16 18:31 ` [Qemu-devel] [PATCH v2 08/15] virtio: fill/flush/pop " wexu
2019-01-16 18:31 ` [Qemu-devel] [PATCH v2 09/15] virtio: event suppression support " wexu
2019-01-16 18:31 ` [Qemu-devel] [PATCH v2 10/15] virtio-net: fill head desc after done all in a chain wexu
2019-01-16 18:31 ` [Qemu-devel] [PATCH v2 11/15] virtio: add userspace migration for packed ring wexu
2019-01-16 18:31 ` [Qemu-devel] [PATCH v2 12/15] virtio: add vhost-net " wexu
2019-01-16 18:31 ` [Qemu-devel] [PATCH v2 13/15] virtio: packed ring feature bit for userspace backend wexu
2019-01-16 18:31 ` [Qemu-devel] [PATCH v2 14/15] vhost: enable packed ring wexu
2019-01-16 18:31 ` [Qemu-devel] [PATCH v2 15/15] virtio: enable packed ring via a new command line wexu
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=20190201170832-mutt-send-email-mst@kernel.org \
--to=mst@redhat.com \
--cc=jasowang@redhat.com \
--cc=jfreiman@redhat.com \
--cc=maxime.coquelin@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=tiwei.bie@intel.com \
--cc=wexu@redhat.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.