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 <[email protected]> > Signed-off-by: Michael S. Tsirkin <[email protected]> > --- > 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
>
signature.asc
Description: PGP signature
