qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] Re: [kvm-devel] [PATCH 2/6] PCI DMA API


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 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





reply via email to

[Prev in Thread] Current Thread [Next in Thread]