[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Re: [virtio-dev] [PATCH v6 4/5] packed virtqueues: more efficient virtqueue layout
On Wed, Jan 10, 2018 at 11:47:58AM +0200, Michael S. Tsirkin wrote: [...]
+\subsection{Supplying Buffers to The Device}\label{sec:Basic Facilities of a Virtio Device / Packed Virtqueues / Supplying Buffers to The Device} + +The driver offers buffers to one of the device's virtqueues as follows: + +\begin{enumerate} +\item The driver places the buffer into free descriptor in the Descriptor Ring. + +\item The driver performs a suitable memory barrier to ensure that it updates + the descriptor(s) before checking for notification suppression. + +\item If notifications are not suppressed, the driver notifies the device + of the new available buffers. +\end{enumerate} + +What follows is the requirements of each stage in more detail. + +\subsubsection{Placing Available Buffers Into The Descriptor Ring}\label{sec:Basic Facilities of a Virtio Device / Virtqueues / Supplying Buffers to The Device / Placing Available Buffers Into The Descriptor Ring} + +For each buffer element, b: + +\begin{enumerate} +\item Get the next descriptor table entry, d +\item Get the next free buffer id value +\item Set \field{d.addr} to the physical address of the start of b +\item Set \field{d.len} to the length of b. +\item Set \field{d.id} to the buffer id +\item Calculate the flags as follows: +\begin{enumerate} +\item If b is device-writable, set the VIRTQ_DESC_F_WRITE bit to 1, otherwise 0 +\item Set VIRTQ_DESC_F_AVAIL bit to the current value of the Available Ring Wrap Counter +\item Set VIRTQ_DESC_F_AVAIL bit to inverse value
This should be "Set VIRTQ_DESC_F_USED bit to inverse value, no? regards,Jens
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]