All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Zhu, Lingshan" <lingshan.zhu@intel.com>
To: Stefan Hajnoczi <stefanha@redhat.com>
Cc: jasowang@redhat.com, mst@redhat.com, eperezma@redhat.com,
	cohuck@redhat.com, virtio-comment@lists.oasis-open.org,
	virtio-dev@lists.oasis-open.org
Subject: [virtio-comment] Re: [virtio-dev] [RFC PATCH 2/5] virtio: introduce vq state as basic facility
Date: Tue, 15 Aug 2023 18:53:35 +0800	[thread overview]
Message-ID: <40b16480-8b59-4b97-a079-33b477fcb37c@intel.com> (raw)
In-Reply-To: <20230814144941.GE3146793@fedora>



On 8/14/2023 10:49 PM, Stefan Hajnoczi wrote:
> On Tue, Aug 15, 2023 at 03:29:01AM +0800, Zhu Lingshan wrote:
>> This patch adds new device facility to save and restore virtqueue
>> state. The virtqueue state is split into two parts:
>>
>> - The available state: The state that is used for read the next
>>    available buffer.
>> - The used state: The state that is used for make buffer used.
>>
>> This will simply the transport specific method implemention. E.g two
>> le16 could be used instead of a single le32). For split virtqueue, we
>> only need the available state since the used state is implemented in
>> the virtqueue itself (the used index). For packed virtqueue, we need
>> both the available state and the used state.
>>
>> Those states are required to implement live migration support for
>> virtio device.
>>
>> Signed-off-by: Jason Wang <jasowang@redhat.com>
>> Signed-off-by: Zhu Lingshan <lingshan.zhu@intel.com>
>> ---
>>   content.tex | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++++
>>   1 file changed, 62 insertions(+)
>>
>> diff --git a/content.tex b/content.tex
>> index 1bb4401..074f43e 100644
>> --- a/content.tex
>> +++ b/content.tex
>> @@ -516,6 +516,68 @@ \section{Exporting Objects}\label{sec:Basic Facilities of a Virtio Device / Expo
>>   types. It is RECOMMENDED that devices generate version 4
>>   UUIDs as specified by \hyperref[intro:rfc4122]{[RFC4122]}.
>>   
>> +\section{Virtqueue State}\label{sec:Virtqueues / Virtqueue State}
>> +
>> +When VIRTIO_F_QUEUE_STATE is negotiated, the driver can set and
>> +get the device internal virtqueue state through the following
>> +fields. The implementation of the interfaces is transport specific.
>> +
>> +\subsection{\field{Available State} Field}
>> +
>> +The available state field is two bytes virtqueue state that is used by
> "two bytes of virtqueue state"
Yes, will fix
>
>> +the device to read the next available buffer.
>> +
>> +When VIRTIO_RING_F_PACKED is not negotiated, it contains:
>> +
>> +\begin{lstlisting}
>> +le16 last_avail_idx;
>> +\end{lstlisting}
>> +
>> +The \field{last_avail_idx} field is the free-running available ring
>> +index where the device will read the next available head of a
>> +descriptor chain.
>> +
>> +See also \ref{sec:Basic Facilities of a Virtio Device / Virtqueues / The Virtqueue Available Ring}.
>> +
>> +When VIRTIO_RING_F_PACKED is negotiated, it contains:
>> +
>> +\begin{lstlisting}
>> +le16 {
>> +  last_avail_idx : 15;
>> +  last_avail_wrap_counter : 1;
>> +};
>> +\end{lstlisting}
>> +
>> +The \field{last_avail_idx} field is the free-running location
>> +where the device read the next descriptor from the virtqueue descriptor ring.
>> +
>> +The \field{last_avail_wrap_counter} field is the last driver ring wrap
>> +counter that was observed by the device.
>> +
>> +See also \ref{sec:Packed Virtqueues / Driver and Device Ring Wrap Counters}.
>> +
>> +\subsection{\field{Used State} Field}
>> +
>> +The used state field is two bytes of virtqueue state that is used by
>> +the device when marking a buffer used.
> Please specify the non-packed case:
>
> "When VIRTIO_RING_F_PACKED is not negotiated, the 16-bit value is always
> 0."
we did not define the used_state for non-packed vqs in this series.
I will define this in the next version. and Say it is always 0 if 
VIRTIO_F_PACKED is not negotiated.
>
>> +
>> +When VIRTIO_RING_F_PACKED is negotiated, the used state contains:
>> +
>> +\begin{lstlisting}
>> +le16 {
>> +  used_idx : 15;
>> +  used_wrap_counter : 1;
>> +};
>> +\end{lstlisting}
>> +
>> +The \field{used_idx} field is the free-running location where the device write next
> "device writes the next"
Yes, will fix

Thanks
>
>> +used descriptor to the descriptor ring.
>> +
>> +The \field{used_wrap_counter} field is the wrap counter that is used
>> +by the device.
>> +
>> +See also \ref{sec:Packed Virtqueues / Driver and Device Ring Wrap Counters}.
>> +
>>   \input{admin.tex}
>>   
>>   \chapter{General Initialization And Device Operation}\label{sec:General Initialization And Device Operation}
>> -- 
>> 2.35.3
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: virtio-dev-unsubscribe@lists.oasis-open.org
>> For additional commands, e-mail: virtio-dev-help@lists.oasis-open.org
>>


This publicly archived list offers a means to provide input to the
OASIS Virtual I/O Device (VIRTIO) TC.

In order to verify user consent to the Feedback License terms and
to minimize spam in the list archive, subscription is required
before posting.

Subscribe: virtio-comment-subscribe@lists.oasis-open.org
Unsubscribe: virtio-comment-unsubscribe@lists.oasis-open.org
List help: virtio-comment-help@lists.oasis-open.org
List archive: https://lists.oasis-open.org/archives/virtio-comment/
Feedback License: https://www.oasis-open.org/who/ipr/feedback_license.pdf
List Guidelines: https://www.oasis-open.org/policies-guidelines/mailing-lists
Committee: https://www.oasis-open.org/committees/virtio/
Join OASIS: https://www.oasis-open.org/join/


WARNING: multiple messages have this Message-ID (diff)
From: "Zhu, Lingshan" <lingshan.zhu@intel.com>
To: Stefan Hajnoczi <stefanha@redhat.com>
Cc: jasowang@redhat.com, mst@redhat.com, eperezma@redhat.com,
	cohuck@redhat.com, virtio-comment@lists.oasis-open.org,
	virtio-dev@lists.oasis-open.org
Subject: Re: [virtio-dev] [RFC PATCH 2/5] virtio: introduce vq state as basic facility
Date: Tue, 15 Aug 2023 18:53:35 +0800	[thread overview]
Message-ID: <40b16480-8b59-4b97-a079-33b477fcb37c@intel.com> (raw)
In-Reply-To: <20230814144941.GE3146793@fedora>



On 8/14/2023 10:49 PM, Stefan Hajnoczi wrote:
> On Tue, Aug 15, 2023 at 03:29:01AM +0800, Zhu Lingshan wrote:
>> This patch adds new device facility to save and restore virtqueue
>> state. The virtqueue state is split into two parts:
>>
>> - The available state: The state that is used for read the next
>>    available buffer.
>> - The used state: The state that is used for make buffer used.
>>
>> This will simply the transport specific method implemention. E.g two
>> le16 could be used instead of a single le32). For split virtqueue, we
>> only need the available state since the used state is implemented in
>> the virtqueue itself (the used index). For packed virtqueue, we need
>> both the available state and the used state.
>>
>> Those states are required to implement live migration support for
>> virtio device.
>>
>> Signed-off-by: Jason Wang <jasowang@redhat.com>
>> Signed-off-by: Zhu Lingshan <lingshan.zhu@intel.com>
>> ---
>>   content.tex | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++++
>>   1 file changed, 62 insertions(+)
>>
>> diff --git a/content.tex b/content.tex
>> index 1bb4401..074f43e 100644
>> --- a/content.tex
>> +++ b/content.tex
>> @@ -516,6 +516,68 @@ \section{Exporting Objects}\label{sec:Basic Facilities of a Virtio Device / Expo
>>   types. It is RECOMMENDED that devices generate version 4
>>   UUIDs as specified by \hyperref[intro:rfc4122]{[RFC4122]}.
>>   
>> +\section{Virtqueue State}\label{sec:Virtqueues / Virtqueue State}
>> +
>> +When VIRTIO_F_QUEUE_STATE is negotiated, the driver can set and
>> +get the device internal virtqueue state through the following
>> +fields. The implementation of the interfaces is transport specific.
>> +
>> +\subsection{\field{Available State} Field}
>> +
>> +The available state field is two bytes virtqueue state that is used by
> "two bytes of virtqueue state"
Yes, will fix
>
>> +the device to read the next available buffer.
>> +
>> +When VIRTIO_RING_F_PACKED is not negotiated, it contains:
>> +
>> +\begin{lstlisting}
>> +le16 last_avail_idx;
>> +\end{lstlisting}
>> +
>> +The \field{last_avail_idx} field is the free-running available ring
>> +index where the device will read the next available head of a
>> +descriptor chain.
>> +
>> +See also \ref{sec:Basic Facilities of a Virtio Device / Virtqueues / The Virtqueue Available Ring}.
>> +
>> +When VIRTIO_RING_F_PACKED is negotiated, it contains:
>> +
>> +\begin{lstlisting}
>> +le16 {
>> +  last_avail_idx : 15;
>> +  last_avail_wrap_counter : 1;
>> +};
>> +\end{lstlisting}
>> +
>> +The \field{last_avail_idx} field is the free-running location
>> +where the device read the next descriptor from the virtqueue descriptor ring.
>> +
>> +The \field{last_avail_wrap_counter} field is the last driver ring wrap
>> +counter that was observed by the device.
>> +
>> +See also \ref{sec:Packed Virtqueues / Driver and Device Ring Wrap Counters}.
>> +
>> +\subsection{\field{Used State} Field}
>> +
>> +The used state field is two bytes of virtqueue state that is used by
>> +the device when marking a buffer used.
> Please specify the non-packed case:
>
> "When VIRTIO_RING_F_PACKED is not negotiated, the 16-bit value is always
> 0."
we did not define the used_state for non-packed vqs in this series.
I will define this in the next version. and Say it is always 0 if 
VIRTIO_F_PACKED is not negotiated.
>
>> +
>> +When VIRTIO_RING_F_PACKED is negotiated, the used state contains:
>> +
>> +\begin{lstlisting}
>> +le16 {
>> +  used_idx : 15;
>> +  used_wrap_counter : 1;
>> +};
>> +\end{lstlisting}
>> +
>> +The \field{used_idx} field is the free-running location where the device write next
> "device writes the next"
Yes, will fix

Thanks
>
>> +used descriptor to the descriptor ring.
>> +
>> +The \field{used_wrap_counter} field is the wrap counter that is used
>> +by the device.
>> +
>> +See also \ref{sec:Packed Virtqueues / Driver and Device Ring Wrap Counters}.
>> +
>>   \input{admin.tex}
>>   
>>   \chapter{General Initialization And Device Operation}\label{sec:General Initialization And Device Operation}
>> -- 
>> 2.35.3
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: virtio-dev-unsubscribe@lists.oasis-open.org
>> For additional commands, e-mail: virtio-dev-help@lists.oasis-open.org
>>


---------------------------------------------------------------------
To unsubscribe, e-mail: virtio-dev-unsubscribe@lists.oasis-open.org
For additional commands, e-mail: virtio-dev-help@lists.oasis-open.org


  reply	other threads:[~2023-08-15 10:53 UTC|newest]

Thread overview: 117+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-08-14 19:28 [virtio-comment] [RFC PATCH 0/5] virtio: introduce SUSPEND bit and vq state Zhu Lingshan
2023-08-14 19:28 ` [virtio-dev] " Zhu Lingshan
2023-08-14 14:20 ` [virtio-comment] " Stefan Hajnoczi
2023-08-14 14:20   ` [virtio-dev] " Stefan Hajnoczi
2023-08-14 15:47 ` Stefan Hajnoczi
2023-08-14 15:47   ` [virtio-dev] " Stefan Hajnoczi
2023-08-15  1:38   ` Jason Wang
2023-08-15  1:38     ` [virtio-dev] " Jason Wang
2023-08-15 10:14     ` Zhu, Lingshan
2023-08-15 10:14       ` [virtio-dev] " Zhu, Lingshan
2023-08-14 19:29 ` [virtio-comment] [RFC PATCH 1/5] virtio: introduce SUSPEND bit in device status Zhu Lingshan
2023-08-14 19:29   ` [virtio-dev] " Zhu Lingshan
2023-08-14 14:30   ` [virtio-comment] " Stefan Hajnoczi
2023-08-14 14:30     ` [virtio-dev] " Stefan Hajnoczi
2023-08-15 10:31     ` Zhu, Lingshan
2023-08-15 10:31       ` [virtio-dev] " Zhu, Lingshan
2023-08-15 12:29       ` Stefan Hajnoczi
2023-08-15 12:29         ` [virtio-dev] " Stefan Hajnoczi
2023-08-17 15:15         ` Eugenio Perez Martin
2023-08-17 15:15           ` [virtio-dev] " Eugenio Perez Martin
2023-08-17 16:04           ` Stefan Hajnoczi
2023-08-17 16:04             ` [virtio-dev] " Stefan Hajnoczi
2023-08-18  9:55             ` Zhu, Lingshan
2023-08-18  9:55               ` [virtio-dev] " Zhu, Lingshan
2023-08-21 13:45               ` Stefan Hajnoczi
2023-08-21 13:45                 ` [virtio-dev] " Stefan Hajnoczi
2023-08-15  0:26   ` [virtio-comment] " Jason Wang
2023-08-15  0:26     ` [virtio-dev] " Jason Wang
2023-08-15  0:37     ` [virtio-comment] " Jason Wang
2023-08-15  0:37       ` [virtio-dev] " Jason Wang
2023-08-15 10:48       ` [virtio-comment] " Zhu, Lingshan
2023-08-15 10:48         ` [virtio-dev] " Zhu, Lingshan
2023-08-16  1:58         ` [virtio-comment] " Jason Wang
2023-08-16  1:58           ` [virtio-dev] " Jason Wang
2023-08-16  2:17           ` [virtio-comment] " Zhu, Lingshan
2023-08-16  2:17             ` [virtio-dev] " Zhu, Lingshan
2023-08-15 10:50       ` [virtio-comment] " Zhu, Lingshan
2023-08-15 10:50         ` [virtio-dev] " Zhu, Lingshan
2023-08-16  2:05         ` [virtio-comment] " Jason Wang
2023-08-16  2:05           ` [virtio-dev] " Jason Wang
2023-08-16  2:20           ` Zhu, Lingshan
2023-08-16  2:20             ` [virtio-dev] " Zhu, Lingshan
2023-08-14 19:29 ` [virtio-comment] [RFC PATCH 2/5] virtio: introduce vq state as basic facility Zhu Lingshan
2023-08-14 19:29   ` [virtio-dev] " Zhu Lingshan
2023-08-14 14:49   ` [virtio-comment] " Stefan Hajnoczi
2023-08-14 14:49     ` Stefan Hajnoczi
2023-08-15 10:53     ` Zhu, Lingshan [this message]
2023-08-15 10:53       ` Zhu, Lingshan
2023-08-14 19:29 ` [virtio-comment] [RFC PATCH 3/5] virtio: The actions by the device upon SUSPEND Zhu Lingshan
2023-08-14 19:29   ` [virtio-dev] " Zhu Lingshan
2023-08-14 15:00   ` [virtio-comment] " Stefan Hajnoczi
2023-08-14 15:00     ` [virtio-dev] " Stefan Hajnoczi
2023-08-15 11:07     ` Zhu, Lingshan
2023-08-15 11:07       ` [virtio-dev] " Zhu, Lingshan
2023-08-15 12:33       ` Stefan Hajnoczi
2023-08-15 12:33         ` [virtio-dev] " Stefan Hajnoczi
2023-08-16  4:25         ` Zhu, Lingshan
2023-08-16  4:25           ` [virtio-dev] " Zhu, Lingshan
2023-08-16 12:33           ` Stefan Hajnoczi
2023-08-16 12:33             ` [virtio-dev] " Stefan Hajnoczi
2023-08-15  0:29   ` [virtio-comment] " Jason Wang
2023-08-15  0:29     ` [virtio-dev] " Jason Wang
2023-08-15 11:16     ` [virtio-comment] " Zhu, Lingshan
2023-08-15 11:16       ` Zhu, Lingshan
2023-08-16  2:10       ` [virtio-comment] " Jason Wang
2023-08-16  2:10         ` Jason Wang
2023-08-16  4:53         ` [virtio-comment] " Zhu, Lingshan
2023-08-16  4:53           ` Zhu, Lingshan
2023-08-14 19:29 ` [virtio-comment] [RFC PATCH 4/5] virtqueue: constraints for virtqueue state Zhu Lingshan
2023-08-14 19:29   ` [virtio-dev] " Zhu Lingshan
2023-08-14 15:15   ` [virtio-comment] " Stefan Hajnoczi
2023-08-14 15:15     ` Stefan Hajnoczi
2023-08-15 11:18     ` [virtio-comment] " Zhu, Lingshan
2023-08-15 11:18       ` Zhu, Lingshan
2023-08-15  0:34   ` [virtio-comment] " Jason Wang
2023-08-15  0:34     ` [virtio-dev] " Jason Wang
2023-08-15 11:30     ` [virtio-comment] " Zhu, Lingshan
2023-08-15 11:30       ` [virtio-dev] " Zhu, Lingshan
2023-08-16  2:11       ` [virtio-comment] " Jason Wang
2023-08-16  2:11         ` [virtio-dev] " Jason Wang
2023-08-16  5:07         ` [virtio-comment] " Zhu, Lingshan
2023-08-16  5:07           ` Zhu, Lingshan
2023-08-17  8:31       ` [virtio-comment] " Uminski, Piotr
2023-08-17  8:42         ` Zhu, Lingshan
2023-08-17  8:42           ` [virtio-dev] " Zhu, Lingshan
2023-08-21  4:03           ` Jason Wang
2023-08-21  4:03             ` [virtio-dev] " Jason Wang
2023-08-17 15:19       ` Eugenio Perez Martin
2023-08-17 15:19         ` [virtio-dev] " Eugenio Perez Martin
2023-08-18  9:44         ` [virtio-comment] " Zhu, Lingshan
2023-08-18  9:44           ` [virtio-dev] " Zhu, Lingshan
2023-08-21  9:26           ` [virtio-comment] " Eugenio Perez Martin
2023-08-21  9:26             ` [virtio-dev] " Eugenio Perez Martin
2023-08-21 10:32             ` [virtio-comment] " Zhu, Lingshan
2023-08-21 10:32               ` [virtio-dev] " Zhu, Lingshan
2023-09-05  9:08             ` Zhu, Lingshan
2023-09-05  9:08               ` [virtio-dev] " Zhu, Lingshan
2023-09-07  8:09               ` Eugenio Perez Martin
2023-09-07  8:09                 ` [virtio-dev] " Eugenio Perez Martin
2023-09-07  9:34                 ` Zhu, Lingshan
2023-09-07  9:34                   ` [virtio-dev] " Zhu, Lingshan
2023-09-08  6:23                   ` Si-Wei Liu
2023-09-08  6:23                     ` [virtio-dev] " Si-Wei Liu
2023-09-08  8:41                     ` Zhu, Lingshan
2023-09-08  8:41                       ` [virtio-dev] " Zhu, Lingshan
2023-08-14 19:29 ` [virtio-comment] [RFC PATCH 5/5] virtio-pci: implement VIRTIO_F_QUEUE_STATE Zhu Lingshan
2023-08-14 19:29   ` [virtio-dev] " Zhu Lingshan
2023-08-14 15:18   ` [virtio-comment] " Stefan Hajnoczi
2023-08-14 15:18     ` Stefan Hajnoczi
2023-08-15 11:31     ` [virtio-comment] " Zhu, Lingshan
2023-08-15 11:31       ` [virtio-dev] " Zhu, Lingshan
2023-08-15  0:35   ` [virtio-comment] " Jason Wang
2023-08-15  0:35     ` [virtio-dev] " Jason Wang
2023-08-15 11:31     ` [virtio-comment] " Zhu, Lingshan
2023-08-15 11:31       ` [virtio-dev] " Zhu, Lingshan
2023-08-17  3:04 ` [virtio-comment] Re: [RFC PATCH 0/5] virtio: introduce SUSPEND bit and vq state Zhu, Lingshan
2023-08-17  3:04   ` [virtio-dev] " Zhu, Lingshan

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=40b16480-8b59-4b97-a079-33b477fcb37c@intel.com \
    --to=lingshan.zhu@intel.com \
    --cc=cohuck@redhat.com \
    --cc=eperezma@redhat.com \
    --cc=jasowang@redhat.com \
    --cc=mst@redhat.com \
    --cc=stefanha@redhat.com \
    --cc=virtio-comment@lists.oasis-open.org \
    --cc=virtio-dev@lists.oasis-open.org \
    /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.