RE: [RFC v2 0/3] vfio: support Shared Virtual Addressing

Tian, Kevin
2019-10-25T08:59:05Z

> From: Liu Yi L
> Sent: Thursday, October 24, 2019 8:26 PM
>
> Shared virtual address (SVA), a.k.a, Shared virtual memory (SVM) on Intel
> platforms allow address space sharing between device DMA and
> applications.
> SVA can reduce programming complexity and enhance security.
> This series is intended to expose SVA capability to VMs. i.e. shared guest
> application address space with passthru devices. The whole SVA
> virtualization
> requires QEMU/VFIO/IOMMU changes. This series includes the VFIO
> changes, for
> QEMU and IOMMU changes, they are in separate series (listed in the
> "Related
> series").
>
> The high-level architecture for SVA virtualization is as below:
>
> .-------------. .---------------------------.
> | vIOMMU | | Guest process CR3, FL only|
> | | '---------------------------'
> .----------------/
> | PASID Entry |--- PASID cache flush -
> '-------------' |
> | | V
> | | CR3 in GPA
> '-------------'
> Guest
> ------| Shadow |--------------------------|--------
> v v v
> Host
> .-------------. .----------------------.
> | pIOMMU | | Bind FL for GVA-GPA |
> | | '----------------------'
> .----------------/ |
> | PASID Entry | V (Nested xlate)
> '----------------\.------------------------------.
> | | |SL for GPA-HPA, default domain|
> | | '------------------------------'
> '-------------'
> Where:
> - FL = First level/stage one page tables
> - SL = Second level/stage two page tables
>
> There are roughly three parts in this patchset which are
> corresponding to the basic vSVA support for PCI device
> assignment
> 1. vfio support for PASID allocation and free from VMs
> 2. vfio support for guest PASID binding from VMs
> 3. vfio support for IOMMU cache invalidation from VMs
>
> The complete vSVA upstream patches are divided into three phases:
> 1. Common APIs and PCI device direct assignment
> 2. Page Request Services (PRS) support
> 3. Mediated device assignment
>
> This RFC patchset is aiming for the phase 1, and works together with the
> VT-d driver[1] changes and QEMU changes[2]. Complete set for vSVA can
> be
> found in:
> https://github.com/jacobpan/linux.git:siov_sva.
>
> And this patchset doesn't include the patch to expose PASID capability to
> guest. This is expected to be in another series.
>
> Related series:
> [1] [PATCH v6 00/10] Nested Shared Virtual Address (SVA) VT-d support:
> https://lkml.org/lkml/2019/10/22/953
> <This series is based on this kernel series from Jacob Pan>
>
> [2] [RFC v2 00/20] intel_iommu: expose Shared Virtual Addressing to VM
> from Yi Liu

there is no link, and should be [RFC v2 00/22]

>
> Changelog:
> - RFC v1 -> v2:
> Dropped vfio: VFIO_IOMMU_ATTACH/DETACH_PASID_TABLE.
> RFC v1: https://patchwork.kernel.org/cover/11033699/
>
> Liu Yi L (3):
> vfio: VFIO_IOMMU_CACHE_INVALIDATE
> vfio/type1: VFIO_IOMMU_PASID_REQUEST(alloc/free)
> vfio/type1: bind guest pasid (guest page tables) to host
>
> drivers/vfio/vfio_iommu_type1.c | 305
> ++++++++++++++++++++++++++++++++++++++++
> include/uapi/linux/vfio.h | 82 +++++++++++
> 2 files changed, 387 insertions(+)
>
> --
> 2.7.4
>
> _______________________________________________
> iommu mailing list
> iommu@lists.linux-foundation.org
> https://lists.linuxfoundation.org/mailman/listinfo/iommu