From patchwork Wed Aug 4 17:15:28 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robin Murphy X-Patchwork-Id: 12419465 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.4 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id ECF17C4338F for ; Wed, 4 Aug 2021 17:18:20 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id BFBFB60E53 for ; Wed, 4 Aug 2021 17:18:20 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org BFBFB60E53 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:Cc :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=njlTHVleWBWTIypX1pfsXNVICtdtmnwcVVFHVVf6lHA=; b=f0SqTKa1mczAD0 PJlffE14vZRByQeRE3kDtGdhONfLVYiA+MDHprMHsSS0bHd9LbQSra3n8TOTuDdJLJXEN5Qqg1cO0 AtFOdvDvxPeYA9KD4C4byt4v877pfs2SIZ0nAOHyzD3TYN0RDx0WP/xf2OolTqCY156S7/DjulS3Q j4wWUBEGoHJMpc6PkLYN70adf4jK0RPTcndvn9EDYAcns61exOJXpSsLEnnEEI3Y8QdDpRI4uusz9 iiPv4366rNaGtttlyo/W7clOSCWM3aCq1umag5rvl+p57W4nSwnbdlZCgPUtxEULGqDCKJc9EMTqR rYx2M+y0r0yVTAwdVLnQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mBKV6-006tEK-Py; Wed, 04 Aug 2021 17:16:16 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mBKUw-006tBg-6D for linux-arm-kernel@lists.infradead.org; Wed, 04 Aug 2021 17:16:08 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id DFDA831B; Wed, 4 Aug 2021 10:16:03 -0700 (PDT) Received: from 010265703453.arm.com (unknown [10.57.36.146]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 017C73F66F; Wed, 4 Aug 2021 10:16:00 -0700 (PDT) From: Robin Murphy To: joro@8bytes.org, will@kernel.org Cc: iommu@lists.linux-foundation.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, suravee.suthikulpanit@amd.com, baolu.lu@linux.intel.com, john.garry@huawei.com, dianders@chromium.org, rajatja@google.com, chenxiang66@hisilicon.com, Marek Szyprowski , Yoshihiro Shimoda , Geert Uytterhoeven , Yong Wu , Heiko Stuebner , Chunyan Zhang , Maxime Ripard , Jean-Philippe Brucker , Sai Praneeth Prakhya Subject: [PATCH v3 00/25] iommu: Refactor DMA domain strictness Date: Wed, 4 Aug 2021 18:15:28 +0100 Message-Id: X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210804_101606_379843_070601D6 X-CRM114-Status: GOOD ( 14.86 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org v1: https://lore.kernel.org/linux-iommu/cover.1626888444.git.robin.murphy@arm.com/ v2: https://lore.kernel.org/linux-iommu/cover.1627468308.git.robin.murphy@arm.com/ Hi all, Round 3, and the patch count has crept up yet again. But the overall diffstat is even more negative, so that's good, right? :) Once again, to driver/platform maintainers CC'd on cookie cleanup patches this is just a heads-up and the rest of the changes should not affect your platforms. I hope I've now fixed the silly bug which broke bisection between patches #1 and #12 on 32-bit Arm. The new patches are in the middle, reworking how the SMMU drivers and io-pgtable implement non-strict mode such that the later changes fall into place even more easily. Turns out I didn't need the major refactoring of io-pgtable that I had in mind, and I'm almost kicking myself that as soon as I put the option of *not* using the existing quirk on the table, an even cleaner and more logical solution was staring right out at me. Due to that signifcant change and the consequent redesign of the final patch to make dynamic switching look viable in the face of concurrency, I have not applied the tested-by tags from v2. They were very much appreciated though, thanks! Proper changelogs on the individual patches this time since otherwise I'd have lost track... Cheers, Robin. CC: Marek Szyprowski CC: Yoshihiro Shimoda CC: Geert Uytterhoeven CC: Yong Wu CC: Heiko Stuebner CC: Chunyan Zhang CC: Maxime Ripard CC: Jean-Philippe Brucker CC: Sai Praneeth Prakhya Robin Murphy (25): iommu: Pull IOVA cookie management into the core iommu/amd: Drop IOVA cookie management iommu/arm-smmu: Drop IOVA cookie management iommu/vt-d: Drop IOVA cookie management iommu/exynos: Drop IOVA cookie management iommu/ipmmu-vmsa: Drop IOVA cookie management iommu/mtk: Drop IOVA cookie management iommu/rockchip: Drop IOVA cookie management iommu/sprd: Drop IOVA cookie management iommu/sun50i: Drop IOVA cookie management iommu/virtio: Drop IOVA cookie management iommu/dma: Unexport IOVA cookie management iommu/dma: Remove redundant "!dev" checks iommu: Indicate queued flushes via gather data iommu/io-pgtable: Remove non-strict quirk iommu: Introduce explicit type for non-strict DMA domains iommu/amd: Prepare for multiple DMA domain types iommu/arm-smmu: Prepare for multiple DMA domain types iommu/vt-d: Prepare for multiple DMA domain types iommu: Express DMA strictness via the domain type iommu: Expose DMA domain strictness via sysfs iommu: Only log strictness for DMA domains iommu: Merge strictness and domain type configs iommu/dma: Factor out flush queue init iommu: Allow enabling non-strict mode dynamically .../ABI/testing/sysfs-kernel-iommu_groups | 6 +- .../admin-guide/kernel-parameters.txt | 8 +- drivers/iommu/Kconfig | 80 +++++++++---------- drivers/iommu/amd/iommu.c | 22 +---- drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 11 +-- rivers/iommu/arm/arm-smmu/arm-smmu.c | 19 ++--- drivers/iommu/arm/arm-smmu/qcom_iommu.c | 9 --- drivers/iommu/dma-iommu.c | 63 +++++++++------ drivers/iommu/exynos-iommu.c | 19 +---- drivers/iommu/intel/iommu.c | 23 ++---- drivers/iommu/io-pgtable-arm-v7s.c | 12 +-- drivers/iommu/io-pgtable-arm.c | 12 +-- drivers/iommu/iommu.c | 55 ++++++++----- drivers/iommu/iova.c | 12 ++- drivers/iommu/ipmmu-vmsa.c | 28 +------ drivers/iommu/mtk_iommu.c | 7 -- drivers/iommu/mtk_iommu_v1.c | 1 - drivers/iommu/rockchip-iommu.c | 12 +-- drivers/iommu/sprd-iommu.c | 7 -- drivers/iommu/sun50i-iommu.c | 13 +-- drivers/iommu/virtio-iommu.c | 8 -- include/linux/dma-iommu.h | 9 ++- include/linux/io-pgtable.h | 5 -- include/linux/iommu.h | 23 +++++- 24 files changed, 187 insertions(+), 277 deletions(-)