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 14:47:59 +0930 [thread overview]
Message-ID: <87r4pe24u0.fsf@rustcorp.com.au> (raw)
In-Reply-To: <87sj9vxbnf.fsf@codemonkey.ws>
Anthony Liguori <anthony@codemonkey•ws> writes:
> Rusty Russell <rusty@rustcorp•com.au> writes:
>
>> "Michael S. Tsirkin" <mst@redhat•com> writes:
>>
>> There's a reason I haven't done this. I really, really dislike "my
>> implemention isn't broken" feature bits. We could have an infinite
>> number of them, for each bug in each device.
>>
>> So my plan was to tie this assumption to the new PCI layout. And have a
>> stress-testing patch like the one below in the kernel (see my virtio-wip
>> branch for stuff like this). Turn it on at boot with
>> "virtio_ring.torture" on the kernel commandline.
>>
>> BTW, I've fixed lguest, but my kvm here (Ubuntu precise, kvm-qemu 1.0)
>> is too old. Building the latest git now...
>>
>> Cheers,
>> Rusty.
>>
>> Subject: virtio: CONFIG_VIRTIO_DEVICE_TORTURE
>>
>> Virtio devices are not supposed to depend on the framing of the scatter-gather
>> lists, but various implementations did. Safeguard this in future by adding
>> an option to deliberately create perverse descriptors.
>>
>> Signed-off-by: Rusty Russell <rusty@rustcorp•com.au>
>
> Ignore framing is really a bad idea. You want backends to enforce
> reasonable framing because guest's shouldn't do silly things with framing.
>
> For instance, with virtio-blk, if you want decent performance, you
> absolutely want to avoid bouncing the data. If you're using O_DIRECT in
> the host to submit I/O requests, then it's critical that all of the s/g
> elements are aligned to a sector boundary and sized to a sector
> boundary.
>
> Yes, QEMU can handle if that's not the case, but it would be insanely
> stupid for a guest not to do this. This is the sort of thing that ought
> to be enforced in the specification because a guest cannot perform well
> if it doesn't follow these rules.
Lack of imagination is what got us into trouble in the first place; when
presented with one counter-example, it's useful to look for others.
That's our job, not to dismiss them a "insanely stupid".
For example:
1) Perhaps the guest isn't trying to perform well, it's trying to be a
tiny bootloader?
2) Perhaps the guest is the direct consumer, and aligning buffers is
redundant.
> A spec isn't terribly useful if the result is guest drivers that are
> slow. There's very little to gain by not enforcing rules around framing
> and there's a lot to lose if a guest frames incorrectly.
The guest has the flexibility, and gets to decide. The spec is not
forcing them to perform badly.
> In the rare case where we want to make a framing change, we should use
> feature bits like Michael is proposing.
>
> In this case, we should simply say that with the feature bit, the vnet
> header can be in the same element as the data but not allow the header
> to be spread across multiple elements.
I'd love to split struct virtio_net_hdr_mrg_rxbuf, so the num_buffers
ends up somewhere else.
The simplest rules are "never" or "always".
Cheers,
Rusty.
PS. Inserting zero-length buffers is something I'd be prepared to rule
out, my current patch does it just for yuks...
next prev parent reply other threads:[~2012-10-04 5:17 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
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 [this message]
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=87r4pe24u0.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