This prepares upstream kernel for in-kernel acceleration of TCE hypercalls (H_PUT_TCE, H_PUT_TCE_INDIRECT, H_STUFF_TCE). This implements acceleration for both real and virtual modes. As it requires gup() for real mode to parse TCE list page, this implements gup() for realmode.
This only accelerates emulated PCI and VIO devices. DDW is not affected. This was made on top of [PATCH v1 00/16] powernv: vfio: Add Dynamic DMA windows (DDW) Alexey Kardashevskiy (7): powerpc/iommu: Change prototypes for realmode support powerpc/iommu: Support real mode powerpc/iommu: Clean up IOMMU API KVM: PPC: Replace SPAPR_TCE_SHIFT with IOMMU_PAGE_SHIFT_4K KVM: PPC: Move reusable bits of H_PUT_TCE handler to helpers KVM: PPC: Add kvmppc_find_tce_table() KVM: PPC: Add support for multiple-TCE hcalls Documentation/virtual/kvm/api.txt | 26 +++ arch/powerpc/include/asm/iommu.h | 9 +- arch/powerpc/include/asm/kvm_book3s_64.h | 2 - arch/powerpc/include/asm/kvm_host.h | 30 +++ arch/powerpc/include/asm/kvm_ppc.h | 16 ++ arch/powerpc/kernel/iommu.c | 140 +++++++----- arch/powerpc/kvm/book3s_64_vio.c | 177 ++++++++++++++- arch/powerpc/kvm/book3s_64_vio_hv.c | 343 ++++++++++++++++++++++++++---- arch/powerpc/kvm/book3s_hv.c | 30 ++- arch/powerpc/kvm/book3s_hv_rmhandlers.S | 4 +- arch/powerpc/kvm/book3s_pr.c | 4 + arch/powerpc/kvm/book3s_pr_papr.c | 35 +++ arch/powerpc/kvm/powerpc.c | 3 + arch/powerpc/platforms/powernv/pci-ioda.c | 3 +- drivers/vfio/vfio_iommu_spapr_tce.c | 6 +- 15 files changed, 720 insertions(+), 108 deletions(-) -- 2.0.0 _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev