[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v2 00/13] paravirtual IOMMU interface
The idea of a paravirtual IOMMU interface was last discussed on xen-devel several 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. There is not yet any new specification but hopefully the interface in the introduced iommu_op header file will be understandable without such a specification. For testing purposes, I have implemented patches to a Linux PV dom0 to set up a 1:1 BFN:GFN mapping for normal RAM at start of day and implement a new set of DMA ops based on direct map and standard swiotlb. 'Foreign' GFNs (i.e. grant maps) are then mapped and unmapped dynamically. See [2] for the code. [1] https://lists.xenproject.org/archives/html/xen-devel/2016-02/msg01428.html [2] http://xenbits.xen.org/gitweb/?p=people/pauldu/linux.git;a=shortlog;h=refs/heads/pv-iommu9 Paul Durrant (13): grant_table: use term 'mfn' for machine frame numbers... 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 iommu: don't domain_crash() inside iommu_map/unmap_page() public / x86: introduce __HYPERCALL_iommu_op iommu: track reserved ranges using a rangeset x86: add iommu_op to query reserved ranges vtd: add lookup_page method to iommu_ops x86: add iommu_op to enable modification of IOMMU mappings memory: add get_paged_gfn() as a wrapper... x86: add iommu_ops to modify and flush IOMMU mappings x86: extend the map and unmap iommu_ops to support grant references tools/flask/policy/modules/xen.if | 1 + xen/arch/arm/p2m.c | 8 +- xen/arch/x86/Makefile | 1 + xen/arch/x86/hvm/emulate.c | 32 +- xen/arch/x86/hvm/hvm.c | 16 +- xen/arch/x86/hvm/hypercall.c | 1 + xen/arch/x86/hypercall.c | 1 + xen/arch/x86/iommu_op.c | 545 ++++++++++++++++++++++++++ xen/arch/x86/mm.c | 14 +- xen/arch/x86/mm/p2m-ept.c | 18 +- xen/arch/x86/mm/p2m-pt.c | 52 ++- xen/arch/x86/mm/p2m.c | 42 +- xen/arch/x86/pv/hypercall.c | 1 + xen/arch/x86/x86_64/mm.c | 5 +- xen/common/grant_table.c | 335 +++++++++++----- xen/common/memory.c | 52 ++- xen/drivers/passthrough/amd/iommu_cmd.c | 18 +- xen/drivers/passthrough/amd/iommu_map.c | 86 ++-- xen/drivers/passthrough/amd/pci_amd_iommu.c | 4 +- xen/drivers/passthrough/arm/smmu.c | 23 +- xen/drivers/passthrough/iommu.c | 66 ++-- xen/drivers/passthrough/vtd/iommu.c | 95 +++-- xen/drivers/passthrough/vtd/iommu.h | 1 + xen/drivers/passthrough/vtd/x86/vtd.c | 23 +- xen/drivers/passthrough/x86/iommu.c | 7 +- xen/include/Makefile | 2 + xen/include/asm-arm/p2m.h | 3 + xen/include/asm-x86/hvm/svm/amd-iommu-proto.h | 8 +- xen/include/asm-x86/p2m.h | 2 + xen/include/public/iommu_op.h | 171 ++++++++ xen/include/public/xen.h | 1 + xen/include/xen/grant_table.h | 7 + xen/include/xen/hypercall.h | 12 + xen/include/xen/iommu.h | 66 +++- xen/include/xen/mm.h | 10 +- xen/include/xlat.lst | 6 + 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 + 41 files changed, 1440 insertions(+), 316 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: 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 |