From: Halil Pasic <pasic@linux.ibm.com>
To: Vitaly Mireyno <vmireyno@marvell.com>
Cc: "virtio-comment@lists.oasis-open.org"
<virtio-comment@lists.oasis-open.org>,
"Michael S. Tsirkin" <mst@redhat.com>,
Jason Wang <jasowang@redhat.com>,
Ariel Elior <aelior@marvell.com>
Subject: Re: [virtio-comment] [PATCH v9] virtio-net: Add support for the flexible driver notification structure.
Date: Mon, 23 Nov 2020 17:16:42 +0100 [thread overview]
Message-ID: <20201123171642.2da4abfa.pasic@linux.ibm.com> (raw)
In-Reply-To: <BN6PR1801MB20674853EEEB69E982B02C8BC5EE0@BN6PR1801MB2067.namprd18.prod.outlook.com>
On Thu, 5 Nov 2020 22:41:42 +0000
Vitaly Mireyno <vmireyno@marvell.com> wrote:
> When the driver is required to send an available buffer notification to the device, it sends the virtqueue number to be notified.
> With this new feature, the device can optionally provide a per-virtqueue value for the driver to use in driver notifications, instead of the virtqueue number.
> Some devices may benefit from this flexibility by providing, for example, an internal virtqueue identifier, or an internal offset related to the virtqueue number.
>
> Changes from v8:
> * Incorporated comments for v8:
> - moved the feature from a network device to a global section
> - few minor changes
>
> Signed-off-by: Vitaly Mireyno <vmireyno@marvell.com>
> ---
> content.tex | 46 +++++++++++++++++++++++++++++++++++++++++++++-
> 1 file changed, 45 insertions(+), 1 deletion(-)
>
> diff --git a/content.tex b/content.tex
> index 91735e3..bf50bfd 100644
> --- a/content.tex
> +++ b/content.tex
> @@ -824,6 +824,7 @@ \subsubsection{Common configuration structure layout}\label{sec:Virtio Transport
> le64 queue_desc; /* read-write */
> le64 queue_driver; /* read-write */
> le64 queue_device; /* read-write */
> + le16 queue_notify_data; /* read-only for driver */
> };
> \end{lstlisting}
>
> @@ -890,6 +891,19 @@ \subsubsection{Common configuration structure layout}\label{sec:Virtio Transport
>
> \item[\field{queue_device}]
> The driver writes the physical address of Device Area here. See section \ref{sec:Basic Facilities of a Virtio Device / Virtqueues}.
> +
> +\item[\field{queue_notify_data}]
> + This field exists only if VIRTIO_F_NOTIF_CONFIG_DATA has been negotiated.
> + The driver will use this value to put it in the 'virtqueue number' field
> + in the available buffer notification structure.
> + See section \ref{sec:Virtio Transport Options / Virtio Over PCI Bus / PCI-specific Initialization And Device Operation / Available Buffer Notifications}.
> + \begin{note}
> + This field provides the device with flexibility to determine how virtqueues
> + will be referred to in available buffer notifications.
> + In a trivial case the device can set \field{queue_notify_data}=vqn. Some devices
> + may benefit from providing another value, for example an internal virtqueue
> + identifier, or an internal offset related to the virtqueue number.
> + \end{note}
> \end{description}
>
> \devicenormative{\paragraph}{Common configuration structure layout}{Virtio Transport Options / Virtio Over PCI Bus / PCI Device Layout / Common configuration structure layout}
> @@ -940,7 +954,7 @@ \subsubsection{Common configuration structure layout}\label{sec:Virtio Transport
>
> \drivernormative{\paragraph}{Common configuration structure layout}{Virtio Transport Options / Virtio Over PCI Bus / PCI Device Layout / Common configuration structure layout}
>
> -The driver MUST NOT write to \field{device_feature}, \field{num_queues}, \field{config_generation} or \field{queue_notify_off}.
> +The driver MUST NOT write to \field{device_feature}, \field{num_queues}, \field{config_generation}, \field{queue_notify_off} or \field{queue_notify_data}.
>
> If VIRTIO_F_RING_PACKED has been negotiated,
> the driver MUST NOT write the value 0 to \field{queue_size}.
> @@ -1519,6 +1533,15 @@ \subsubsection{Available Buffer Notifications}\label{sec:Virtio Transport Option
> See \ref{sec:Virtio Transport Options / Virtio Over PCI Bus / PCI Device Layout / Notification capability}
> for how to calculate the Queue Notify address.
>
> +\drivernormative{\paragraph}{Available Buffer Notifications}{Virtio Transport Options / Virtio Over PCI Bus / PCI-specific Initialization And Device Operation / Available Buffer Notifications}
> +If VIRTIO_F_NOTIF_CONFIG_DATA has been negotiated:
> +\begin{itemize}
> +\item If VIRTIO_F_NOTIFICATION_DATA has not been negotiated, the driver MUST use the
> +\field{queue_notify_data} value instead of the virtqueue index.
> +\item If VIRTIO_F_NOTIFICATION_DATA has been negotiated, the driver MUST set the
> +\field{vqn} field to the \field{queue_notify_data} value.
> +\end{itemize}
> +\subsubsection{Available Buffer Notifications}\label{sec:Virtio Transport Options / Virtio Over PCI Bus / PCI-specific Initialization And Device Operation / Available Buffer Notifications}
Whith your patch applied on top of current master I get something like this
"""
\subsubsection{Available Buffer Notifications}\label{sec:Virtio Transport Options / Virtio Over PCI Bus / PCI-specific Initialization And Device Operation / Available Buffer Notifications}
When VIRTIO_F_NOTIFICATION_DATA has not been negotiated,
the driver sends an available buffer notification to the device by writing
the 16-bit virtqueue index
of this virtqueue to the Queue Notify address.
When VIRTIO_F_NOTIFICATION_DATA has been negotiated,
the driver sends an available buffer notification to the device by writing
the following 32-bit value to the Queue Notify address:
\lstinputlisting{notifications-le.c}
See \ref{sec:Virtqueues / Driver notifications}~\nameref{sec:Virtqueues / Driver notifications}
for the definition of the components.
See \ref{sec:Virtio Transport Options / Virtio Over PCI Bus / PCI Device Layout / Notification capability}
for how to calculate the Queue Notify address.
\drivernormative{\paragraph}{Available Buffer Notifications}{Virtio Transport Options / Virtio Over PCI Bus / PCI-specific Initialization And Device Operation / Available Buffer Notifications}
If VIRTIO_F_NOTIF_CONFIG_DATA has been negotiated:
\begin{itemize}
\item If VIRTIO_F_NOTIFICATION_DATA has not been negotiated, the driver MUST use the
\field{queue_notify_data} value instead of the virtqueue index.
\item If VIRTIO_F_NOTIFICATION_DATA has been negotiated, the driver MUST set the
\field{vqn} field to the \field{queue_notify_data} value.
\end{itemize}
\subsubsection{Used Buffer Notifications}\label{sec:Virtio Transport Options / Virtio Over PCI Bus / PCI-specific Initialization And Device Operation / Used Buffer Notifications}
"""
The device normative section and the preceding text are IMHO in
contradiction. The former says the driver sends a 16-bit virtqueue
index unconditionally, the later says if if VIRTIO_F_NOTIFICATION_DATA
has been negotiated then use queue_notify_data, instead (thus
referencing the non-normative content).
IMHO we need a normative section that fully describes all the available
cases.
I think we can do this on top.
Regards,
Halil
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/
next prev parent reply other threads:[~2020-11-23 16:16 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-11-05 22:41 [virtio-comment] [PATCH v9] virtio-net: Add support for the flexible driver notification structure Vitaly Mireyno
2020-11-19 15:57 ` [virtio-comment] " Vitaly Mireyno
2020-11-23 14:38 ` [virtio-comment] " Michael S. Tsirkin
2020-11-23 18:02 ` Halil Pasic
2020-11-23 16:16 ` Halil Pasic [this message]
2020-11-24 10:19 ` [virtio-comment] " Cornelia Huck
2020-12-07 14:06 ` Michael S. Tsirkin
2020-12-07 14:57 ` [virtio-comment] RE: [EXT] " Vitaly Mireyno
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=20201123171642.2da4abfa.pasic@linux.ibm.com \
--to=pasic@linux.ibm.com \
--cc=aelior@marvell.com \
--cc=jasowang@redhat.com \
--cc=mst@redhat.com \
--cc=virtio-comment@lists.oasis-open.org \
--cc=vmireyno@marvell.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox