• Jacob Pan's avatar
    iommu/vt-d: Add bind guest PASID support · 56722a43
    Jacob Pan authored
    When supporting guest SVA with emulated IOMMU, the guest PASID
    table is shadowed in VMM. Updates to guest vIOMMU PASID table
    will result in PASID cache flush which will be passed down to
    the host as bind guest PASID calls.
    
    For the SL page tables, it will be harvested from device's
    default domain (request w/o PASID), or aux domain in case of
    mediated device.
    
        .-------------.  .---------------------------.
        |   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
    Signed-off-by: default avatarJacob Pan <jacob.jun.pan@linux.intel.com>
    Signed-off-by: default avatarLiu Yi L <yi.l.liu@intel.com>
    Signed-off-by: default avatarLu Baolu <baolu.lu@linux.intel.com>
    Link: https://lore.kernel.org/r/20200516062101.29541-5-baolu.lu@linux.intel.comSigned-off-by: default avatarJoerg Roedel <jroedel@suse.de>
    56722a43
intel-iommu.c 149 KB