Il 07/01/2013 01:02, Rusty Russell ha scritto: > Paolo Bonzini <pbonzini@xxxxxxxxxx> writes: >> Il 02/01/2013 06:03, Rusty Russell ha scritto: >>> Paolo Bonzini <pbonzini@xxxxxxxxxx> writes: >>>> The virtqueue_add_buf function has two limitations: >>>> >>>> 1) it requires the caller to provide all the buffers in a single call; >>>> >>>> 2) it does not support chained scatterlists: the buffers must be >>>> provided as an array of struct scatterlist; >>> >>> Chained scatterlists are a horrible interface, but that doesn't mean we >>> shouldn't support them if there's a need. >>> >>> I think I once even had a patch which passed two chained sgs, rather >>> than a combo sg and two length numbers. It's very old, but I've pasted >>> it below. >>> >>> Duplicating the implementation by having another interface is pretty >>> nasty; I think I'd prefer the chained scatterlists, if that's optimal >>> for you. >> >> Unfortunately, that cannot work because not all architectures support >> chained scatterlists. > > WHAT? I can't figure out what an arch needs to do to support this? It needs to use the iterator functions in its DMA driver. > All archs we care about support them, though, so I think we can ignore > this issue for now. Kind of... In principle all QEMU-supported arches can use virtio, and the speedup can be quite useful. And there is no Kconfig symbol for SG chains that I can use to disable virtio-scsi on unsupported arches. :/ Paolo >> (Also, as you mention chained scatterlists are horrible. They'd happen >> to work for virtio-scsi, but not for virtio-blk where the response >> status is part of the footer, not the header). > > We lost that debate 5 years ago, so we hack around it as needed. We can > add helpers to append if we need. -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html