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 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.