On Thu, Mar 02, 2023 at 08:05:10AM -0500, Michael S. Tsirkin wrote:
> Add new registers to the PCI common configuration structure.
> 
> These registers will be used for querying the indices of the admin
> virtqueues of the owner device. To configure, reset or enable the admin
> virtqueues, the driver should follow existing queue configuration/setup
> sequence.
> 
> Signed-off-by: Max Gurtovoy <mgurto...@nvidia.com>
> Signed-off-by: Michael S. Tsirkin <m...@redhat.com>
> ---
>  content.tex | 35 +++++++++++++++++++++++++++++++++++
>  1 file changed, 35 insertions(+)
> 
> diff --git a/content.tex b/content.tex
> index c8647c9..1076125 100644
> --- a/content.tex
> +++ b/content.tex
> @@ -946,6 +946,10 @@ \subsubsection{Common configuration structure 
> layout}\label{sec:Virtio Transport
>          le64 queue_device;              /* read-write */
>          le16 queue_notify_data;         /* read-only for driver */
>          le16 queue_reset;               /* read-write */
> +
> +        /* About the administration virtqueue. */
> +        le16 admin_queue_index;         /* read-only for driver */
> +        le16 admin_queue_num;         /* read-only for driver */
>  };
>  \end{lstlisting}
>  
> @@ -1031,6 +1035,20 @@ \subsubsection{Common configuration structure 
> layout}\label{sec:Virtio Transport
>          This field exists only if VIRTIO_F_RING_RESET has been
>          negotiated. (see \ref{sec:Basic Facilities of a Virtio Device / 
> Virtqueues / Virtqueue Reset}).
>  
> +\item[\field{admin_queue_index}]
> +        The device uses this to report the index of the first administration 
> virtqueue.
> +        This field is valid only if VIRTIO_F_ADMIN_VQ has been negotiated.
> +\item[\field{admin_queue_num}]
> +     The device uses this to report the number of the
> +     supported administration virtqueues.
> +     This is a zero based value.  Virtqueues with index
> +     between \field{admin_queue_index} and (\field{admin_queue_index} +
> +     \field{admin_queue_num}) inclusive serve as administration
> +     virtqueues.
> +     Thus the number of administration virtqueues equals
> +     (\field{admin_queue_num} + 1).

Why is this value zero-based? virtio_pci_common_cfg's num_queues field
is le16 and not zero-based. It is not possible to have
admin_queue_index=0 admin_queue_num=0xffff because num_queues=0x10000
cannot be represented.

I suggest making this field behave the same as virtio_pci_common_cfg's
num_queues.

> +     This field is valid only if VIRTIO_F_ADMIN_VQ has been
> +     negotiated.
>  \end{description}
>  
>  \devicenormative{\paragraph}{Common configuration structure layout}{Virtio 
> Transport Options / Virtio Over PCI Bus / PCI Device Layout / Common 
> configuration structure layout}
> @@ -1117,6 +1135,14 @@ \subsubsection{Common configuration structure 
> layout}\label{sec:Virtio Transport
>  were used before the queue reset.
>  (see \ref{sec:Basic Facilities of a Virtio Device / Virtqueues / Virtqueue 
> Reset}).
>  
> +If VIRTIO_F_ADMIN_VQ has been negotiated, and if the driver
> +configures any administration virtqueues, the driver MUST
> +configure the administration virtqueues using the index
> +in the range \field{admin_queue_index} to
> +\field{admin_queue_index} + \field{admin_queue_num} inclusive.
> +The driver MAY configure less administration virtqueues than

s/less/fewer/

> +supported by the device.
> +
>  \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
> @@ -7684,6 +7710,15 @@ \chapter{Reserved Feature Bits}\label{sec:Reserved 
> Feature Bits}
>  
>    \item[VIRTIO_F_ADMIN_VQ(41)] This feature indicates that the device 
> exposes one or more
>    administration virtqueues.
> +  At the moment this feature is only supported for devices using
> +  \ref{sec:Virtio Transport Options / Virtio Over PCI
> +       Bus}~\nameref{sec:Virtio Transport Options / Virtio Over PCI Bus}
> +       as the transport and is reserved for future use for
> +       devices using other transports (see
> +       \ref{drivernormative:Basic Facilities of a Virtio Device / Feature 
> Bits}
> +     and
> +     \ref{devicenormative:Basic Facilities of a Virtio Device / Feature 
> Bits} for
> +     handling features reserved for future use.
>  
>  \end{description}
>  
> -- 
> MST
> 

Attachment: signature.asc
Description: PGP signature

Reply via email to