qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] [RFC 0/6] vSMMU initialization


From: Baptiste Reynal
Subject: [Qemu-devel] [RFC 0/6] vSMMU initialization
Date: Fri, 12 Jun 2015 16:20:04 +0200

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




reply via email to

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