On Wed, Nov 29, 2017 at 09:55:22PM +0800, Wei Wang wrote:
Current virtqueue_add API implementation is based on the scatterlistYou previously managed without this patch, and it's preferable
struct, which uses kaddr. This is inadequate to all the use case of
vring. For example:
- Some usages don't use IOMMU, in this case the user can directly pass
in a physical address in hand, instead of going through the sg
implementation (e.g. the VIRTIO_BALLOON_F_SG feature)
- Sometimes, a guest physical page may not have a kaddr (e.g. high
memory) but need to use vring (e.g. the VIRTIO_BALLOON_F_FREE_PAGE_VQ
feature)
The new API virtqueue_add_one_desc enables the caller to assign a vring
desc with a physical address and len. Also, factor out the common code
with virtqueue_add in vring_set_avail.
Signed-off-by: Wei Wang <wei.w.wang@xxxxxxxxx>
Cc: Michael S. Tsirkin <mst@xxxxxxxxxx>
IMHO since this patchset is already too big.
I don't really understand what is wrong with virtio_add_sgs + sg_set_page.
I don't think is assumes a kaddr.