On Fri, 22 Jan 2021 12:52:55 +0100 Jean-Philippe Brucker <[email protected]> wrote:
> To support sharing page tables with the CPU, the SMMU can participate in > Broadcast TLB Maintenance (BTM), where TLB invalidate instructions from > the CPU are received by the SMMU. For platforms that do no implement BTM > [1], it is still possible to use SVA, by sending all TLB invalidations > through the command queue. Patch 2 implements this. > > This series also enables SVA for platforms that do support BTM, as an > intermediate step because properly supporting BTM requires cooperating > with KVM to allocate VMIDs [2]. With BTM enabled, the SMMU applies > broadcast invalidations by VMID to any matching TLB entry, because there > is no distinction between private and shared VMIDs like there is for > ASIDs. Therefore a stage-2 domain will need a VMID that doesn't conflict > with one allocated by KVM (or use the one from the corresponding VM, > pinned). > > These patches, along with the IOPF series [3] and the quirks [4], enable > SVA for the hisi accelerator that's already supported upstream. My quick > performance comparison between BTM and !BTM on that platform were > inconclusive. Doing invalidations via cmdq seemed to slightly reduce > performance of some heavy compression jobs, but there was too much noise > and not enough invalidations in my tests. > > This series does not depend on the IOPF one [3]. > > [1] > https://lore.kernel.org/linux-iommu/by5pr12mb37641e84d516054387fee330b3...@by5pr12mb3764.namprd12.prod.outlook.com/ > [2] https://lore.kernel.org/linux-iommu/20200522101755.GA3453945@myrica/ > [3] > https://lore.kernel.org/linux-iommu/[email protected]/ > [4] > https://lore.kernel.org/linux-pci/[email protected]/ Whole series looks good to me so FWIW Reviewed-by: Jonathan Cameron <[email protected]> Will be very nice to have mainline support for SVA with those accelerators :) > > Jean-Philippe Brucker (3): > iommu/arm-smmu-v3: Split arm_smmu_tlb_inv_range() > iommu/arm-smmu-v3: Make BTM optional for SVA > iommu/arm-smmu-v3: Add support for VHE > > drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h | 6 + > .../iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c | 14 ++- > drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 104 ++++++++++++------ > 3 files changed, 89 insertions(+), 35 deletions(-) > _______________________________________________ iommu mailing list [email protected] https://lists.linuxfoundation.org/mailman/listinfo/iommu
