[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 1/6] virtio: introduce virtio_map
From: |
Stefan Hajnoczi |
Subject: |
Re: [Qemu-devel] [PATCH 1/6] virtio: introduce virtio_map |
Date: |
Wed, 28 Oct 2015 11:37:58 +0000 |
User-agent: |
Mutt/1.5.24 (2015-08-30) |
On Tue, Oct 27, 2015 at 08:34:32PM +0200, Michael S. Tsirkin wrote:
> On Tue, Oct 27, 2015 at 04:19:54PM +0000, Stefan Hajnoczi wrote:
> > On Tue, Oct 27, 2015 at 10:47:56AM +0200, Michael S. Tsirkin wrote:
> > > This will still fail if there's no space left in the sg, but luckily max
> > > queue size in use is currently 256, while max sg size is 1024, so we
> > > should be OK even is all entries happen to cross a single DIMM boundary.
> >
> > Don't forget about indirect descriptors. They can use all 1024 iovecs,
> > regardless of virtqueue size, so virtqueue size of 256 isn't the true
> > maximum.
>
> Not according to the spec - virtio spec says vq size is the maximum size
> of a chain.
>
> > I'm worried that we could now see failures due to non-contiguous HVAs.
>
> Does linux guest create chains > vq size then? Does it actually
> have 1024 hardcoded somewhere?
You are correct, drivers/virtio/virtio_ring.c:virtqueue_add() says:
BUG_ON(total_sg > vq->vring.num);
This also makes sense since it means there is a well-known maximum size
for indirect descriptor tables.
So this fix should work fine with indirect descriptors.
Stefan
signature.asc
Description: PGP signature
- [Qemu-devel] [PATCH 0/6] virtio: handle non contigious s/g entries, Michael S. Tsirkin, 2015/10/27
- [Qemu-devel] [PATCH 2/6] virtio: switch to virtio_map, Michael S. Tsirkin, 2015/10/27
- [Qemu-devel] [PATCH 4/6] virtio-serial: convert to virtio_map, Michael S. Tsirkin, 2015/10/27
- [Qemu-devel] [PATCH 3/6] virtio-blk: convert to virtqueue_map, Michael S. Tsirkin, 2015/10/27
- [Qemu-devel] [PATCH 5/6] virtio-scsi: convert to virtqueue_map, Michael S. Tsirkin, 2015/10/27