This is following up on the discussion we had earlier on MMIO reset behavior: https://lists.oasis-open.org/archives/virtio-dev/202107/msg00012.html Suggesting below change to spec to make it explicit what's expected in driver. If this is accepted, I will follow up with a patch to Linux driver. === Device reset is accomplished by writing 0 to Status register. Explicitly note that a driver needs to wait on Status register read returning 0 before assuming that device reset operation is complete. Signed-off-by: Srivatsa Vaddagiri diff --git a/content.tex b/content.tex index 5c70a3c..7631be4 100644 --- a/content.tex +++ b/content.tex @@ -1985,6 +1985,10 @@ \subsubsection{Device Initialization}\label{sec:Virtio Transport Options / Virti and if its value is zero (0x0) MUST abort initialization and MUST NOT access any other register. +After writing 0 to \field{Status}, the driver MUST wait for a read of +\field{Status} to return 0 before proceeding with the remaining steps of +initializing the device. + Drivers not expecting shared memory MUST NOT use the shared memory registers. --- Qualcomm Innovation Center, Inc. is submitting the attached "feedback" as a non-member to the virtio-dev mailing list for consideration and inclusion.