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

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



> -----Original Message-----
> From: Tian, Kevin [mailto:kevin.tian@xxxxxxxxx]
> Sent: 13 February 2018 06:21
> To: Paul Durrant <Paul.Durrant@xxxxxxxxxx>; xen-devel@xxxxxxxxxxxxxxxxxxxx
> Cc: Andrew Cooper <Andrew.Cooper3@xxxxxxxxxx>; Daniel De Graaf
> <dgdegra@xxxxxxxxxxxxx>; George Dunlap <George.Dunlap@xxxxxxxxxx>;
> Ian Jackson <Ian.Jackson@xxxxxxxxxx>; Jan Beulich <jbeulich@xxxxxxxx>;
> Julien Grall <julien.grall@xxxxxxx>; Nakajima, Jun
> <jun.nakajima@xxxxxxxxx>; Konrad Rzeszutek Wilk
> <konrad.wilk@xxxxxxxxxx>; Stefano Stabellini <sstabellini@xxxxxxxxxx>;
> Suravee Suthikulpanit <suravee.suthikulpanit@xxxxxxx>; Tim (Xen.org)
> <tim@xxxxxxx>; Wei Liu <wei.liu2@xxxxxxxxxx>
> Subject: RE: [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?
> 

I'll have to write one, but I agree it is probably worthwhile for the record. 
The intention is the same as it was when the old spec. was written but I hope 
this implementation is less complex (though it may not yet be fully complete).
In the meantime I hope each patch is sufficiently small to be reasonably 
self-explanatory.

Cheers,

  Paul

> >
> > 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®.