Avi Kivity wrote:
> Anthony Liguori wrote:
>> This patch introduces a PCI DMA API and some generic code to support
>> other DMA
>> APIs. Two types are introduced: PhysIOVector and IOVector. A DMA API
>> maps 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 of
>> phys_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
-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
kvm-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/kvm-devel