From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44787) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z3Poz-0000f7-Gs for qemu-devel@nongnu.org; Fri, 12 Jun 2015 10:20:39 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z3Pol-0000hL-LU for qemu-devel@nongnu.org; Fri, 12 Jun 2015 10:20:37 -0400 Received: from mail-wg0-f42.google.com ([74.125.82.42]:34749) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z3Pol-0000gc-Cc for qemu-devel@nongnu.org; Fri, 12 Jun 2015 10:20:23 -0400 Received: by wgv5 with SMTP id 5so26083082wgv.1 for ; Fri, 12 Jun 2015 07:20:22 -0700 (PDT) From: Baptiste Reynal Date: Fri, 12 Jun 2015 16:20:04 +0200 Message-Id: <1434118810-28219-1-git-send-email-b.reynal@virtualopensystems.com> Subject: [Qemu-devel] [RFC 0/6] vSMMU initialization List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: iommu@lists.linux-foundation.org, qemu-devel@nongnu.org Cc: Baptiste Reynal , tech@virtualopensystems.com, will.deacon@arm.com The ARM SMMU has support for 2-stages address translations, allowing a virtual address to be translated at two levels: - Stage 1 translates a virtual address (VA) into an intermediate physical address (IPA) - Stage 2 translates an IPA into a physical address (PA) Will Deacon introduced a virtual SMMU interface for KVM, which gives a virtual machine the possibility to use an IOMMU with native drivers. While the VM will program the first stage of translation (stage 1), the interface will program the second (stage 2) on the physical SMMU. This RFC brings support for the vSMMU on QEMU-side, introducing the code for vSMMU initialization and the device tree operations needed to attach devices to it. The main purpose of such vSMMU device is to allow VFIO devices to benefit from an IOMMU on the guest side, for userspace drivers or nested VFIO. It is an early state of development so: - Interrupts are not handled for now - Only one device can be bound to the vSMMU I'm open to any comments or suggestions. Baptiste Reynal (6): headers sync hw/core/platform-bus: initialization notifier hw/core/platform-bus: add base_address field hw/vfio: vsmmu device hw/arm/sysbus-fdt: enable vsmmu dynamic instantiation hw/arm/sysbus-fdt: add smmu masters in device tree hw/arm/sysbus-fdt.c | 78 ++++++++++++++++++++ hw/arm/virt.c | 4 + hw/core/platform-bus.c | 13 ++++ hw/vfio/Makefile.objs | 1 + hw/vfio/common.c | 8 +- hw/vfio/platform.c | 2 + hw/vfio/smmu.c | 157 ++++++++++++++++++++++++++++++++++++++++ include/hw/platform-bus.h | 3 + include/hw/vfio/vfio-platform.h | 1 + include/hw/vfio/vfio-smmu.h | 50 +++++++++++++ linux-headers/linux/kvm.h | 15 ++++ 11 files changed, 330 insertions(+), 2 deletions(-) create mode 100644 hw/vfio/smmu.c create mode 100644 include/hw/vfio/vfio-smmu.h -- 2.4.3