On 8/16/2023 10:11 AM, Jason Wang wrote:
On Tue, Aug 15, 2023 at 7:30 PM Zhu, Lingshan <[email protected]> wrote:


On 8/15/2023 8:34 AM, Jason Wang wrote:
On Mon, Aug 14, 2023 at 7:29 PM Zhu Lingshan <[email protected]> wrote:
This commit specifies the constraints of the virtqueue state,
and the actions should be taken by the device when SUSPEND
and DRIVER_OK is set

Signed-off-by: Jason Wang <[email protected]>
Signed-off-by: Zhu Lingshan <[email protected]>
---
   content.tex | 31 +++++++++++++++++++++++++++++++
   1 file changed, 31 insertions(+)

diff --git a/content.tex b/content.tex
index 43bd5de..f6ac581 100644
--- a/content.tex
+++ b/content.tex
@@ -587,6 +587,37 @@ \subsection{\field{Used State} Field}

   See also \ref{sec:Packed Virtqueues / Driver and Device Ring Wrap Counters}.

+\drivernormative{\subsection}{Virtqueue State}{Basic Facilities of a Virtio 
Device / Virtqueue State}
+
+If VIRTIO_F_QUEUE_STATE has been negotiated, the driver MUST set SUSPEND in 
\field{device status}
+first before getting or setting Virtqueue State of any virtqueues.
I don't get why this is a must. It could be useful for debugging.
To avoid race conditions with the device and make the device
implementation easier
replied in another thread.

+
+If VIRTIO_F_QUEUE_STATE has been negotiaged but VIRTIO_RING_F_PACKED not been 
negotiated,
typo
yes
+the driver MUST NOT access \field{Used State} of any virtqueues, it should use 
the
+used index in the used ring.
+
+\devicenormative{\subsection}{Virtqueue State}{Basic Facilities of a Virtio 
Device / Virtqueue State}
+
+If VIRTIO_F_QUEUE_STATE has been negotiated but SUSPEND is not set in 
\field{device status},
+the device MUST ignore any accesses against Virtqueue State of any virtqueues.
Btw, do we need to clarify the behavior of ring reset after suspending?
I think once suspended, the device should ignore resetting a queue
This needs to be clarified.
OK, I will clarify this in the resting queue section.

This reminds me I should add: When SUSPEND is set, the \field{device status} is still operational for both the device and the driver. Because after SUSPEND, the driver may set DRIVER_OK and the device may
set NEEDS_RESET.

Thanks

Thanks


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to