[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 0/7] paravirtual IOMMU interface
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. 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 |