|
From: | Anthony Liguori |
Subject: | [Qemu-devel] Re: [kvm-devel] [PATCH 2/6] PCI DMA API |
Date: | Sun, 30 Mar 2008 09:49:04 -0500 |
User-agent: | Thunderbird 2.0.0.12 (X11/20080227) |
Avi Kivity wrote:
Anthony Liguori wrote:This patch introduces a PCI DMA API and some generic code to support other DMAAPIs. Two types are introduced: PhysIOVector and IOVector. A DMA APImaps a PhysIOVector, which is composed of target_phys_addr_t, into an IOVector,which is composed of void *.This enables zero-copy IO to be preformed without introducing assumptions ofphys_ram_base. This API is at the PCI device level to enable support of per-device IOMMU remapping. + +typedef struct IOVector +{ + int num; + struct IOVectorElement { + void *base; + size_t len; + } sg[0]; +} IOVector; +Can we use 'struct iovec' for the element type (with accessors for setting base+len, and reading base or len, so we can substitute the Windows version for that platform)? That will allow using the vector without additional translation or casts.
If we switch to PhysIOVector => PhysIOVector, then the IO infrastructure can convert it to whatever it wants (including a struct iovec).
Regards, Anthony Liguori
[Prev in Thread] | Current Thread | [Next in Thread] |