From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:48968) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S2ygx-0005G9-Vb for qemu-devel@nongnu.org; Thu, 01 Mar 2012 00:36:41 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1S2ygw-0002mO-30 for qemu-devel@nongnu.org; Thu, 01 Mar 2012 00:36:39 -0500 Received: from ozlabs.org ([203.10.76.45]:60134) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S2ygv-0002kI-Mj for qemu-devel@nongnu.org; Thu, 01 Mar 2012 00:36:38 -0500 From: David Gibson Date: Thu, 1 Mar 2012 16:35:56 +1100 Message-Id: <1330580169-15446-1-git-send-email-david@gibson.dropbear.id.au> Subject: [Qemu-devel] [0/13] RFC: Support for guest-visible IOMMUs List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: eduard.munteanu@linux360.ro, rth@twiddle.net, mst@redhat.com This patch series introduces a general DMA infrastructure which allows the emulation of guest-visible IOMMUs. That is, it provides a framework by which an IOMMU device can be implemented, such that DMA from other device emulations will be translated according to the mappings provided by the IOMMU. One example IOMMU implementation is included, for the para-virtualized TCE tables specified by PAPR and used in the pseries machine for both virtual IO and PCI devices. This series is an updated and cleaned-up version of patches posted by Eduard - Gabriel Munteanu some time ago. Those prompted some discussion at the time, but no resolution was reached. These patches are now pretty polished although I'd like to get some comment from people working with other IOMMUs to make sure the infrastructure is sufficient to cover those. Specifically, Eduard - Gabriel, if you have an updated version of your AMD IOMMU driver, it would be good to see if that can work with this infrastructure. The series also converts a number of existing device models to use the new DMA infrastructure, so they can be used with IOMMUs. Along with the pci_dma_*() wrapper functions which are already in, this means that with this series applied, essentially all PCI devices should work with an emulated IOMMU, as well as pseries VIO devices. Other types of devices would need some further conversion to work with the new framework, but that should be quite straightforward.