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

Re: [Xen-devel] [PATCH 0/7] paravirtual IOMMU interface



> From: Paul Durrant [mailto:paul.durrant@xxxxxxxxxx]
> Sent: Monday, February 12, 2018 6:47 PM
> 
> The idea of a paravirtual IOMMU interface was last discussed on xen-devel
> more than two years ago and narrowed down on a draft specification [1].
> There was also an RFC patch series posted with an implementation,
> however
> this was never followed through.
> 
> In this patch series I have tried to simplify the interface and therefore
> have moved away from the draft specification.

bear sending out an updated spec?

> 
> Patches #1 - #3 in the series introduce 'bus frame numbers' into Xen (frame
> numbers relating to the IOMMU rather than the MMU). The modifications
> are
> in common code and so affect ARM as well as x86.
> 
> Patch #4 adds a pre-requisite method in iommu_ops and an
> implementation
> for VT-d. I have not done an implmentation for AMD IOMMUs as my test
> hard-
> ware is Intel based, but one may be added in future.
> 
> Patches #5 - #7 introduce the new 'iommu_op' hypercall with sub-
> operations
> to query ranges reserved in the IOMMU, map and unmap pages, and flush
> the
> IOTLB.
> 
> For testing purposes, I have implemented patches to a Linux PV dom0 to
> set
> up a 1:1 BFN:GFN mapping and use normal swiotlb dma operations rather
> then xen-swiotlb.
> 
> [1] https://lists.xenproject.org/archives/html/xen-devel/2016-
> 02/msg01428.html
> 
> Paul Durrant (7):
>   iommu: introduce the concept of BFN...
>   iommu: make use of type-safe BFN and MFN in exported functions
>   iommu: push use of type-safe BFN and MFN into iommu_ops
>   vtd: add lookup_page method to iommu_ops
>   public / x86: introduce __HYPERCALL_iommu_op
>   x86: add iommu_op to query reserved ranges
>   x86: add iommu_ops to map and unmap pages, and also to flush the
> IOTLB
> 
>  tools/flask/policy/modules/xen.if             |   1 +
>  xen/arch/arm/p2m.c                            |   3 +-
>  xen/arch/x86/Makefile                         |   1 +
>  xen/arch/x86/hvm/hypercall.c                  |   1 +
>  xen/arch/x86/hypercall.c                      |   1 +
>  xen/arch/x86/iommu_op.c                       | 476
> ++++++++++++++++++++++++++
>  xen/arch/x86/mm.c                             |   7 +-
>  xen/arch/x86/mm/p2m-ept.c                     |   8 +-
>  xen/arch/x86/mm/p2m-pt.c                      |   8 +-
>  xen/arch/x86/mm/p2m.c                         |  15 +-
>  xen/arch/x86/pv/hypercall.c                   |   1 +
>  xen/arch/x86/x86_64/mm.c                      |   5 +-
>  xen/common/grant_table.c                      |  10 +-
>  xen/common/memory.c                           |   4 +-
>  xen/drivers/passthrough/amd/iommu_cmd.c       |  18 +-
>  xen/drivers/passthrough/amd/iommu_map.c       |  85 ++---
>  xen/drivers/passthrough/amd/pci_amd_iommu.c   |   4 +-
>  xen/drivers/passthrough/arm/smmu.c            |  22 +-
>  xen/drivers/passthrough/iommu.c               |  28 +-
>  xen/drivers/passthrough/vtd/iommu.c           |  76 +++-
>  xen/drivers/passthrough/vtd/iommu.h           |   2 +
>  xen/drivers/passthrough/vtd/x86/vtd.c         |   3 +-
>  xen/drivers/passthrough/x86/iommu.c           |   2 +-
>  xen/include/Makefile                          |   2 +
>  xen/include/asm-x86/hvm/svm/amd-iommu-proto.h |   8 +-
>  xen/include/public/iommu_op.h                 | 127 +++++++
>  xen/include/public/xen.h                      |   1 +
>  xen/include/xen/hypercall.h                   |  12 +
>  xen/include/xen/iommu.h                       |  42 ++-
>  xen/include/xlat.lst                          |   5 +
>  xen/include/xsm/dummy.h                       |   6 +
>  xen/include/xsm/xsm.h                         |   6 +
>  xen/xsm/dummy.c                               |   1 +
>  xen/xsm/flask/hooks.c                         |   6 +
>  xen/xsm/flask/policy/access_vectors           |   2 +
>  35 files changed, 868 insertions(+), 131 deletions(-)
>  create mode 100644 xen/arch/x86/iommu_op.c
>  create mode 100644 xen/include/public/iommu_op.h
> ---
> Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
> Cc: Daniel De Graaf <dgdegra@xxxxxxxxxxxxx>
> Cc: George Dunlap <george.dunlap@xxxxxxxxxxxxx>
> Cc: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
> Cc: Jan Beulich <jbeulich@xxxxxxxx>
> Cc: Julien Grall <julien.grall@xxxxxxx>
> Cc: Jun Nakajima <jun.nakajima@xxxxxxxxx>
> Cc: Kevin Tian <kevin.tian@xxxxxxxxx>
> Cc: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
> Cc: Stefano Stabellini <sstabellini@xxxxxxxxxx>
> Cc: Suravee Suthikulpanit <suravee.suthikulpanit@xxxxxxx>
> Cc: Tim Deegan <tim@xxxxxxx>
> Cc: Wei Liu <wei.liu2@xxxxxxxxxx>
> 
> --
> 2.11.0


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.