[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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |