On 08/19/2009 12:26 AM, Avi Kivity wrote:
Off the top of my head, I would think that transporting userspace
addresses in the ring (for copy_(to|from)_user()) vs. physical addresses
(for DMAEngine) might be a problem. Pinning userspace pages into memory
for DMA is a bit of a pain, though it is possible.
Oh, the ring doesn't transport userspace addresses. It transports
guest addresses, and it's up to vhost to do something with them.
Currently vhost supports two translation modes:
1. virtio address == host virtual address (using copy_to_user)
2. virtio address == offsetted host virtual address (using copy_to_user)
The latter mode is used for kvm guests (with multiple offsets,
skipping some details).
I think you need to add a third mode, virtio address == host physical
address (using dma engine). Once you do that, and wire up the
signalling, things should work.
You don't need in fact a third mode. You can mmap the x86 address space
into your ppc userspace and use the second mode. All you need then is
the dma engine glue and byte swapping.
--
I have a truly marvellous patch that fixes the bug which this
signature is too narrow to contain.
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html