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