[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Re: [virtio-dev] [PATCH 05/14] legacy: make message framing normative
"Michael S. Tsirkin" <mst@redhat.com> writes: > TODO: we really should be more specific > --- > content.tex | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/content.tex b/content.tex > index 3e7dcfc..2f467d5 100644 > --- a/content.tex > +++ b/content.tex > @@ -344,7 +344,7 @@ addition, the specification for virtio_blk SCSI commands required > intuiting field lengths from frame boundaries (see > \ref{sec:Device Types / Block Device / Device Operation / Legacy Interface: Device Operation}~\nameref{sec:Device Types / Block Device / Device Operation / Legacy Interface: Device Operation}) > > -It is thus recommended that when using legacy interfaces, transitional > +It is thus RECOMMENDED that when using legacy interfaces, transitional > drivers be conservative in their assumptions, unless the > VIRTIO_F_ANY_LAYOUT feature is accepted. Yes, let's turn this into a requirement, but we'll need to do it for each section. These requirements need to be in normative sections, too. ie replace this with: Thus the VIRTIO_F_ANY_LAYOUT feature was introduced to indicate that no assumptions were made about framing. Requirements for transitional drivers when this is not negotiated are included in each device section. Net: When using legacy interfaces, transitional drivers which have not negotiated VIRTIO_F_ANY_LAYOUT MUST use a single descriptor for the struct virtio_net_hdr on both transmit and receive, with the network data in the following descriptors. See \ref{sec:Basic Facilities of a Virtio Device / Virtqueues / Message Framing}. Block: (Replaces existing "Historically, devices assumed that...") When using legacy interfaces, transitional drivers which have not negotiated VIRTIO_F_ANY_LAYOUT: \begin{itemize} \item MUST use a single 8-byte descriptor containing \field{type}, \field{reseved} and \field{sector}, followed by descriptors for \field{data}, then finally a separate 1-byte descriptor for \field{status}. \item For SCSI commands there are additional constraints. \field{errors}, \field{data_len}, \field{sense_len} and \field{residual} MUST reside in a single, separate device-writable descriptor, \field{sense} MUST reside in a single separate device-writable descriptor of size 96 bytes, and \field{errors}, \field{data_len}, \field{sense_len} and \field{residual} MUST reside a single separate device-writable descriptor. \end{itemize} See \ref{sec:Basic Facilities of a Virtio Device / Virtqueues / Message Framing}. Console: When using legacy interfaces, transitional drivers which have not negotiated VIRTIO_F_ANY_LAYOUT MUST use only a single descriptor for all buffers in the control receiveq and control transmitq. Entropy: nothing Memory Balloon Device: nothing (qemu always handled this correctly) SCSI: When using legacy interfaces, transitional drivers which have not negotiated VIRTIO_F_ANY_LAYOUT MUST use a single descriptor for the \field{lun}, \field{id}, \field{task_attr}, \field{prio}, \field{crn} and \field{cdb} fields, and MUST only use a single descriptor for the \field{sense_len}, \field{residual}, \field{status_qualifier}, \field{status}, \field{response} and \field{sense} fields. Cheers, Rusty.
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]