|
From: | Anthony Liguori |
Subject: | Re: [kvm-devel] [Qemu-devel] [PATCH 2/6] PCI DMA API |
Date: | Sun, 30 Mar 2008 09:56:04 -0500 |
User-agent: | Thunderbird 2.0.0.12 (X11/20080227) |
Avi Kivity wrote:
Anthony Liguori wrote:I think having the PCI DMA API translate PhysIOVector => PhysIOVector would help. Then it becomes pretty easy to just call the DMA controller for additional translation from the IOMMU.This looks like it wouldn't scale to handle the Sparc systems. There we want to make more translation steps from DVMA addresses to physical in DMA controller and IOMMU and only in the final stage to void *. To handle this, probably there should be an opaque parameter and some way to register the translation function. Otherwise the API looks OK.Does that sound right? I don't quite understand what role the opaque parameter would serve.State for the dma controller.I think Blue is calling for chaining of dma mappings, no? Something similar is being proposed for the Linux dma api.
The way I envision chaining is: virtio-blk calls pci_device_dma_map with a PhysIOVector Apci_device_dma_map calls into PCI IOMMU (if necessary) to translate PhysIOVector A to PhysIOVector B pci_device_dma_map then calls into platform DMA engine to translate PhysIOVector B to PhysIOVector C
pci_device_dma_map frees PhysIOVector B and returns PhysIOVector C Regards, Anthony Liguori
[Prev in Thread] | Current Thread | [Next in Thread] |