Messages in this thread | | | From | Amit Shah <> | Subject | Re: [PATCH v2 -mm 0/2] x86: per-device dma_mapping_ops | Date | Mon, 26 May 2008 09:39:20 +0530 |
| |
On Sunday 25 May 2008 12:50:11 Muli Ben-Yehuda wrote: > On Thu, May 22, 2008 at 04:13:02PM +0530, Amit Shah wrote: > > OK; this sounds helpful. the hook can make a hypercall and confirm > > with the host kernel if the device in question is an assigned > > physical device. If yes, we replace the dma_ops. Though, the > > original intent of having stackable ops is that we might want to go > > through the swiotlb in the guest even for an assigned device if the > > guest dma addresses are not in the addressable range of the guest > > chipset. > > > > > created (it works with hot plugging). It enables IOMMUs to set up an > > > appropriate dma_mapping_ops per device. > > > > From what we've discussed so far, it looks like stackable dma ops will > > definitely be needed. Does this patchset provide something that stacking > > won't? > > Yes---this patchset let's you have a per-device dma-ops, whereas with > stackable you only get global dma-ops. I think it's clear we need > both, and I think per-device dma-ops are the first thing that's > needed. Stacking can then be introduced on a per-device basis.
When we would want stacking, we'll want it globally and not per-device, isn't it? Or at least for devices on a particular bus.
When an IOMMU driver registers itself, it should tell which devices it's interested in (each device behind a bus or by enumerating each device it cares for). This should take care of all the scenarios and we won't have the need for per-device dma_ops.
For something like pvdma, we can walk through the list of pci devices and make a hypercall for each of them to get this information and have the pvdma version of dma_ops registered for that device. This sounds like it's per-device dma_ops, but it's not -- internally, the dma operations walk through each of the IOMMUs registered and call them in sequence.
Does this work?
| |