OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

virtio-dev message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: Re: [virtio-dev] [PATCH] virtio: introduce VIRTIO_F_RING_RESET for reset queue


On Fri, 27 Aug 2021 11:41:11 +0800, Jason Wang <jasowang@redhat.com> wrote:
>
> å 2021/8/27 äå11:18, Xuan Zhuo åé:
> > On Thu, 26 Aug 2021 12:32:34 +0800, Jason Wang <jasowang@redhat.com> wrote:
> >> å 2021/8/23 äå4:28, Xuan Zhuo åé:
> >>> cc jasowang@redhat.com
> >>>
> >>> On Fri, 13 Aug 2021 10:31:05 +0800, Xuan Zhuo <xuanzhuo@linux.alibaba.com> wrote:
> >>>> This patch allows the driver to reset a queue individually.
> >>>>
> >>>> This is very common on general network equipment. By disabling a queue,
> >>>> you can quickly reclaim the buffer currently on the queue. If necessary,
> >>>> we can reinitialize the queue separately.
> >>>>
> >>>> For example, when virtio-net implements support for AF_XDP, we need to
> >>>> disable a queue to release all the original buffers when AF_XDP setup.
> >>>> And quickly release all the AF_XDP buffers that have been placed in the
> >>>> queue when AF_XDP exits.
> >>>>
> >>>> Since mmio's QueueReady allows setting 0 to stop the queue, there is no
> >>>> need to distinguish whether VIRTIO_F_RING_RESET is negotiated.
> >>>>
> >>>> Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
> >>>> ---
> >>>>    content.tex | 11 ++++++++++-
> >>>>    1 file changed, 10 insertions(+), 1 deletion(-)
> >>>>
> >>>> diff --git a/content.tex b/content.tex
> >>>> index 7cec1c3..70a9765 100644
> >>>> --- a/content.tex
> >>>> +++ b/content.tex
> >>>> @@ -1001,7 +1001,13 @@ \subsubsection{Common configuration structure layout}\label{sec:Virtio Transport
> >>>>    After writing 0 to \field{device_status}, the driver MUST wait for a read of
> >>>>    \field{device_status} to return 0 before reinitializing the device.
> >>>>
> >>>> -The driver MUST NOT write a 0 to \field{queue_enable}.
> >>>> +If the VIRTIO_F_RING_RESET feature bit is not negotiated,
> >>>> +the driver MUST NOT write a 0 to \field{queue_enable}.
> >>>> +
> >>>> +Otherwise, if the VIRTIO_F_RING_RESET feature bit is negotiated,
> >>>> +the driver can stop using the queue by writing a 0 to \field{queue_enable} and
> >>>> +MUST read the value back to ensure synchronization. Then optionally re-enable
> >>>> +the queue.
> >>
> >>
> >> So I think we need to clarify what did "stop" mean here. Since you're
> >> use "RESET" in the feature I guess the virtqueue state is also reset.
> >> That's fine but I'm not sure if MMIO has the similar semantic.
> >>
> >> E.g is the virtqueue state preserved during a stop and resume?
> >    "To stop using the queue the driver MUST write zero (0x0) to this QueueReady
> >    and MUST read the value back to ensure synchronization."
> >
> > Judging from the description of the spec, the more emphasis is on the stop of
> > the queue. It does not express whether the queue can be re-enabled.
>
>
> Yes.
>
>
> >
> > I think MMIO also adds the judgment for VIRTIO_F_RING_RESET here. If this
> > function is successfully negotiated, then MMIO also supports queue reset,
> > otherwise MMIO only supports stop queue.
> >
> > The "stop" I understand means the destruction of all the states of the entire
> > queue and the release of memory. Re-enable means reallocating the memory as when
> > the device is initialized, and synchronizing this information to the device.
> > I will improve this part of the information in the next version.
> >
> > Regarding the description of the state during a stop and resume, I will add it
> > in the next version.
>
>
> A question regarding to the semantic of "resume". I guess it means the
> virtqueue will start from e.g avail index 0?

Yes.

Thanks.

>
> Thanks
>
>
> >
> > Thanks.
> >
> >> Thanks
> >>
> >>
> >>>>    \subsubsection{Notification structure layout}\label{sec:Virtio Transport Options / Virtio Over PCI Bus / PCI Device Layout / Notification capability}
> >>>>
> >>>> @@ -6672,6 +6678,9 @@ \chapter{Reserved Feature Bits}\label{sec:Reserved Feature Bits}
> >>>>      transport specific.
> >>>>      For more details about driver notifications over PCI see \ref{sec:Virtio Transport Options / Virtio Over PCI Bus / PCI-specific Initialization And Device Operation / Available Buffer Notifications}.
> >>>>
> >>>> +  \item[VIRTIO_F_RING_RESET(40)] This feature indicates
> >>>> +  that the driver can reset a queue individually.
> >>>> +
> >>>>    \end{description}
> >>>>
> >>>>    \drivernormative{\section}{Reserved Feature Bits}{Reserved Feature Bits}
> >>>> --
> >>>> 2.31.0
> >>>>
> >>>>
> >>>> ---------------------------------------------------------------------
> >>>> To unsubscribe, e-mail: virtio-dev-unsubscribe@lists.oasis-open.org
> >>>> For additional commands, e-mail: virtio-dev-help@lists.oasis-open.org
> >>>>
>


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]