From: "Michael S. Tsirkin" <mst@redhat.com>
To: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
Cc: cohuck@redhat.com, jasowang@redhat.com, virtio-dev@lists.oasis-open.org
Subject: Re: [virtio-dev] [PATCH v7 2/3] virtio: pci support virtqueue reset
Date: Tue, 9 Nov 2021 08:33:39 -0500 [thread overview]
Message-ID: <20211109083303-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <20211108062243.102360-3-xuanzhuo@linux.alibaba.com>
On Mon, Nov 08, 2021 at 02:22:42PM +0800, Xuan Zhuo wrote:
> PCI support virtqueue reset.
>
> virtio_pci_common_cfg add "queue_reset" to support virtqueue reset.
> The driver uses this to selectively reset the queue.
>
> Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
> ---
> content.tex | 32 ++++++++++++++++++++++++++++++++
> 1 file changed, 32 insertions(+)
>
> diff --git a/content.tex b/content.tex
> index fb373a5..219ad2f 100644
> --- a/content.tex
> +++ b/content.tex
> @@ -901,6 +901,7 @@ \subsubsection{Common configuration structure layout}\label{sec:Virtio Transport
> le64 queue_driver; /* read-write */
> le64 queue_device; /* read-write */
> le16 queue_notify_data; /* read-only for driver */
> + le16 queue_reset; /* read-write */
> };
> \end{lstlisting}
>
> @@ -980,6 +981,12 @@ \subsubsection{Common configuration structure layout}\label{sec:Virtio Transport
> may benefit from providing another value, for example an internal virtqueue
> identifier, or an internal offset related to the virtqueue number.
> \end{note}
> +
> +\item[\field{queue_reset}]
> + The driver uses this to selectively reset the queue.
> + This field exists only if VIRTIO_F_RING_RESET has been
> + negotiated. (see \ref{sec:Basic Facilities of a Virtio Device / Virtqueues / Virtqueue Reset}).
> +
> \end{description}
>
> \devicenormative{\paragraph}{Common configuration structure layout}{Virtio Transport Options / Virtio Over PCI Bus / PCI Device Layout / Common configuration structure layout}
> @@ -1021,6 +1028,22 @@ \subsubsection{Common configuration structure layout}\label{sec:Virtio Transport
>
> The device MUST present a 0 in \field{queue_enable} on reset.
>
> +If VIRTIO_F_RING_RESET has been negotiated, the device MUST present a 0 in
> +\field{queue_enable} after the driver has reset the virtqueue via
> +\field{queue_reset}.
> +
> +If VIRTIO_F_RING_RESET has been negotiated, the device MUST present a 0 in
> +\field{queue_reset} on reset.
> +
> +If VIRTIO_F_RING_RESET has been negotiated, the device MUST present a 0 in
> +\field{queue_reset} after the virtqueue is enabled with \field{queue_enable}.
> +
> +The device MUST reset the queue when 1 is written to \field{queue_reset}, and
> +present a 1 in \field{queue_reset} after the queue has been reset, until the
> +driver re-enables the queue via \field{queue_enable} or the device is reset.
> +The device MUST present consistent default values after queue reset.
> +(see \ref{sec:Basic Facilities of a Virtio Device / Virtqueues / Virtqueue Reset}).
> +
> The device MUST present a 0 in \field{queue_size} if the virtqueue
> corresponding to the current \field{queue_select} is unavailable.
>
> @@ -1045,6 +1068,15 @@ \subsubsection{Common configuration structure layout}\label{sec:Virtio Transport
>
> The driver MUST NOT write a 0 to \field{queue_enable}.
>
> +If VIRTIO_F_RING_RESET has been negotiated, after the driver writes 1 to
> +\field{queue_reset} to reset the queue, it MUST verify that the queue
> +has been reset by reading back \field{queue_reset} and ensuring that it
> +is 1. The driver MAY re-enable the queue by writing a 1 to
> +\field{queue_enable} after ensuring that the other virtqueue fields have
> +been set up correctly. The driver MAY set driver-writeable queue configuration
> +values to different values than those that were used before the queue reset.
> +(see \ref{sec:Basic Facilities of a Virtio Device / Virtqueues / Virtqueue Reset}).
> +
When does the field get a value distinct from 1? If never how does
driver know reset has completed?
> \subsubsection{Notification structure layout}\label{sec:Virtio Transport Options / Virtio Over PCI Bus / PCI Device Layout / Notification capability}
>
> The notification location is found using the VIRTIO_PCI_CAP_NOTIFY_CFG
> --
> 2.31.0
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: virtio-dev-unsubscribe@lists.oasis-open.org
> For additional commands, e-mail: virtio-dev-help@lists.oasis-open.org
next prev parent reply other threads:[~2021-11-09 13:33 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-08 6:22 [virtio-dev] [PATCH v7 0/3] virtio: introduce VIRTIO_F_RING_RESET for reset queue Xuan Zhuo
2021-11-08 6:22 ` [PATCH v7 1/3] virtio: introduce virtqueue reset as basic facility Xuan Zhuo
2021-11-08 6:22 ` [PATCH v7 2/3] virtio: pci support virtqueue reset Xuan Zhuo
2021-11-09 13:33 ` Michael S. Tsirkin [this message]
2021-11-09 14:44 ` [virtio-dev] " Xuan Zhuo
2021-11-08 6:22 ` [PATCH v7 3/3] virtio: mmio " Xuan Zhuo
2021-12-06 3:03 ` [virtio-dev] [PATCH v7 0/3] virtio: introduce VIRTIO_F_RING_RESET for reset queue Xuan Zhuo
2021-12-06 4:00 ` Jason Wang
2021-12-14 8:13 ` Xuan Zhuo
2021-12-14 16:05 ` Cornelia Huck
2021-12-15 2:08 ` Jason Wang
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=20211109083303-mutt-send-email-mst@kernel.org \
--to=mst@redhat.com \
--cc=cohuck@redhat.com \
--cc=jasowang@redhat.com \
--cc=virtio-dev@lists.oasis-open.org \
--cc=xuanzhuo@linux.alibaba.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.