> From: Liu, Yi L <yi.l.liu@xxxxxxxxx> > Sent: Sunday, March 22, 2020 8:32 PM > To: alex.williamson@xxxxxxxxxx; eric.auger@xxxxxxxxxx > Subject: [PATCH v1 0/8] vfio: expose virtual Shared Virtual Addressing to VMs > > From: Liu Yi L <yi.l.liu@xxxxxxxxx> > > Shared Virtual Addressing (SVA), a.k.a, Shared Virtual Memory (SVM) on > Intel platforms allows address space sharing between device DMA and > applications. SVA can reduce programming complexity and enhance security. > > This VFIO series is intended to expose SVA usage to VMs. i.e. Sharing > guest application address space with passthru devices. This is called > vSVA in this series. The whole vSVA enabling requires QEMU/VFIO/IOMMU > changes. For IOMMU and QEMU changes, they are in separate series (listed > in the "Related series"). > > The high-level architecture for SVA virtualization is as below, the key > design of vSVA support is to utilize the dual-stage IOMMU translation ( > also known as IOMMU nesting translation) capability in host IOMMU. > > > .-------------. .---------------------------. > | 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 four parts in this patchset which are > corresponding to the basic vSVA support for PCI device > assignment > 1. vfio support for PASID allocation and free for VMs > 2. vfio support for guest page table binding request from VMs > 3. vfio support for IOMMU cache invalidation from VMs > 4. vfio support for vSVA usage on IOMMU-backed mdevs > > The complete vSVA kernel upstream patches are divided into three phases: > 1. Common APIs and PCI device direct assignment > 2. IOMMU-backed Mediated Device assignment > 3. Page Request Services (PRS) support > > This patchset is aiming for the phase 1 and phase 2, and based on Jacob's > below series. > [PATCH V10 00/11] Nested Shared Virtual Address (SVA) VT-d support: > https://lkml.org/lkml/2020/3/20/1172 > > Complete set for current vSVA can be found in below branch. > https://github.com/luxis1999/linux-vsva.git: vsva-linux-5.6-rc6 > > The corresponding QEMU patch series is as below, complete QEMU set can be > found in below branch. > [PATCH v1 00/22] intel_iommu: expose Shared Virtual Addressing to VMs > complete QEMU set can be found in below link: > https://github.com/luxis1999/qemu.git: sva_vtd_v10_v1 The ioasid extension is in the below link. https://lkml.org/lkml/2020/3/25/874 Regards, Yi Liu