From: Rusty Russell <rusty@rustcorp•com.au>
To: Anthony Liguori <anthony@codemonkey•ws>,
"Michael S. Tsirkin" <mst@redhat•com>,
Thomas Lendacky <tahm@linux•vnet.ibm.com>
Cc: Sasha Levin <levinsasha928@gmail•com>,
virtualization@lists•linux-foundation.org,
linux-kernel@vger•kernel.org, avi@redhat•com,
kvm@vger•kernel.org, netdev@vger•kernel.org
Subject: Re: [PATCH 0/3] virtio-net: inline header support
Date: Thu, 04 Oct 2012 17:14:36 +0930 [thread overview]
Message-ID: <87lifm1y1n.fsf@rustcorp.com.au> (raw)
In-Reply-To: <87wqz6kgg4.fsf@codemonkey.ws>
Anthony Liguori <anthony@codemonkey•ws> writes:
>> lguest fix is pending in my queue. lkvm and qemu are broken; lkvm isn't
>> ever going to be merged, so I'm not sure what its status is? But I'm
>> determined to fix qemu, and hence my torture patch to make sure this
>> doesn't creep in again.
>
> There are even more implementations out there and I'd wager they all
> rely on framing.
Worse, both virtio_blk (for scsi commands) and virtio_scsi explicitly
and inescapably rely on framing. The spec conflicts clearly with
itself.
Such layering violations are always a mistake, but I can't blame anyone
else for my lack of attention :(
Here's the spec change:
commit 7e74459bb966ccbaad9e4bf361d1178b7f400b79
Author: Rusty Russell <rusty@rustcorp•com.au>
Date: Thu Oct 4 17:11:27 2012 +0930
No longer assume framing is independent of messages. *sniff*
Signed-off-by: Rusty Russell <rusty@rustcorp•com.au>
--- virtio-spec.txt 2012-10-04 17:13:04.988259234 +0930
+++ virtio-spec.txt.new 2012-10-04 17:12:54.624258969 +0930
@@ -880,19 +880,19 @@
Message Framing
-The descriptors used for a buffer should not effect the semantics
-of the message, except for the total length of the buffer. For
-example, a network buffer consists of a 10 byte header followed
-by the network packet. Whether this is presented in the ring
-descriptor chain as (say) a 10 byte buffer and a 1514 byte
-buffer, or a single 1524 byte buffer, or even three buffers,
-should have no effect.
+Unless stated otherwise, it is expected that headers within a
+message are contained within their own descriptors. For example,
+a network buffer consists of a 10 or 12 byte header followed by
+the network packet. An implementation should expect that this
+header will be within the first descriptor, and that the
+remainder of the data will begin on the second descriptor.
-In particular, no implementation should use the descriptor
-boundaries to determine the size of any header in a request.[footnote:
-The current qemu device implementations mistakenly insist that
-the first descriptor cover the header in these cases exactly, so
-a cautious driver should arrange it so.
+[footnote:
+It was previously asserted that framing should be independent of
+message contents, yet invariably drivers layed out messages in
+reliable ways and devices assumed it. In addition, the
+specifications for virtio_blk and virtio_scsi require intuiting
+field lengths from frame boundaries.
]
Device Improvements
next prev parent reply other threads:[~2012-10-04 8:02 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-09-28 9:26 [PATCH 0/3] virtio-net: inline header support Michael S. Tsirkin
2012-09-28 9:26 ` [PATCH 1/3] virtio: add API to query ring capacity Michael S. Tsirkin
2012-09-28 9:26 ` [PATCH 2/3] virtio-net: correct capacity math on ring full Michael S. Tsirkin
2012-10-04 0:24 ` Rusty Russell
2012-09-28 9:26 ` [PATCH 3/3] virtio-net: put virtio net header inline with data Michael S. Tsirkin
2012-10-03 6:44 ` [PATCH 0/3] virtio-net: inline header support Rusty Russell
2012-10-03 7:10 ` Rusty Russell
2012-10-04 1:24 ` Anthony Liguori
2012-10-04 3:34 ` Rusty Russell
2012-10-04 4:29 ` Anthony Liguori
2012-10-04 7:44 ` Rusty Russell [this message]
2012-10-05 7:47 ` Paolo Bonzini
2012-10-08 21:31 ` Michael S. Tsirkin
2012-10-04 1:35 ` Anthony Liguori
2012-10-04 5:17 ` Rusty Russell
2012-10-08 20:41 ` Michael S. Tsirkin
[not found] ` <87vces2gxq.fsf__45058.6618776017$1349247807$gmane$org@rustcorp.com.au>
2012-10-03 10:53 ` Paolo Bonzini
2012-10-04 0:11 ` Rusty Russell
2012-10-04 7:09 ` Paolo Bonzini
2012-10-04 12:51 ` Rusty Russell
2012-10-04 13:23 ` Paolo Bonzini
2012-10-05 5:43 ` Rusty Russell
[not found] ` <87391t1nkq.fsf__40391.6521034718$1349505001$gmane$org@rustcorp.com.au>
2012-10-06 12:54 ` Paolo Bonzini
2012-10-09 4:59 ` Rusty Russell
2012-10-09 7:27 ` Paolo Bonzini
2012-10-11 0:03 ` Rusty Russell
2012-10-11 11:04 ` Michael S. Tsirkin
2012-10-11 22:37 ` Rusty Russell
2012-10-12 7:38 ` Paolo Bonzini
2012-10-12 11:52 ` Cornelia Huck
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87lifm1y1n.fsf@rustcorp.com.au \
--to=rusty@rustcorp$(echo .)com.au \
--cc=anthony@codemonkey$(echo .)ws \
--cc=avi@redhat$(echo .)com \
--cc=kvm@vger$(echo .)kernel.org \
--cc=levinsasha928@gmail$(echo .)com \
--cc=linux-kernel@vger$(echo .)kernel.org \
--cc=mst@redhat$(echo .)com \
--cc=netdev@vger$(echo .)kernel.org \
--cc=tahm@linux$(echo .)vnet.ibm.com \
--cc=virtualization@lists$(echo .)linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox