|
From: | Avi Kivity |
Subject: | [Qemu-devel] Re: [PATCH 0/4] Block DMA helpers (v2) |
Date: | Sun, 08 Feb 2009 11:30:48 +0200 |
User-agent: | Thunderbird 2.0.0.19 (X11/20090105) |
Anthony Liguori wrote:
But I thought of something simpler: have virtio call virtio-* to inquire whether a ring entry terminates a request. This would also simplify the virtio device emulations somewhat.I don't know that I follow what you mean by "terminates a request".
A request is composed of multiple virtio ring elements. The last ring entry for a given request terminates it.
I'm not sure I know what problem you're talking about solving.
The Linux guest interface is at the request level, accepting scatter/gather lists as parameters. The qemu host interface is at the ring element level, leaving the task of gathering ring elements to make a request (and gathering segments to make a scatter/gather list) to users.
I think we should make the qemu virtio host interface talk at the request level, rather than the ring entry level. If we do that, we'll get a cleaner, easier to use interface.
But I think I know what you're getting at: virtio sglists contain a descriptor followed by data. We could handle that by adding
qemu_sglist_sublist(QEMUSGList *sg, QEMUSGList *sublist, target_phys_addr_t offset, target_phys_addr_t len);
it would involve extra copying and allocation, but we could live with it, I think.
-- error compiling committee.c: too many arguments to function
[Prev in Thread] | Current Thread | [Next in Thread] |