From patchwork Wed Jul 21 18:20:11 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robin Murphy X-Patchwork-Id: 12391879 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=-13.2 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,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 E369CC12002 for ; Wed, 21 Jul 2021 18:23:21 +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 BB0BD6120C for ; Wed, 21 Jul 2021 18:23:21 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org BB0BD6120C Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@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=IPwAU7s7+wmxsB547ZCliL/5jyQy0f6+aJwi0/LTU+8=; b=vNg9+cM4OHV2Qs 7MTA6oxxJ6ab5+7cdFa6v5KqBAdaUv1hBs1vzKws1k3JIhn0CyJsZW/UKxQO7FvJFqJE9nbPqjI8d l2MesT39Pq/KHiJpHXnzXD8ILkjoE1E3CKVAur2bVto5y7DXvLJFafajO0fHUwiclIkFE8VhBhiEY DFfAg2LO/e/W+yhw7JvbMeP5NlAHMlSAK4qEE5XF5aEoeYtuAxwxYXEjF931+ecUns0ipKF+nMpKr 1w7FDW73vlrpJUSoxEPaQrf7lQIItZBskFvdP6/WZ77yqKehcLnfs/lKBjy8Q7eBdExxWFQQPSq+C 7X7sVzeTvOMjZymwa93g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1m6GqA-00GpPp-Fs; Wed, 21 Jul 2021 18:21:06 +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 1m6Gpv-00GpIp-6V for linux-arm-kernel@lists.infradead.org; Wed, 21 Jul 2021 18:20:53 +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 4FE71D6E; Wed, 21 Jul 2021 11:20:45 -0700 (PDT) Received: from 010265703453.arm.com (unknown [10.57.36.146]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id CBB8F3F694; Wed, 21 Jul 2021 11:20:43 -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 Subject: [PATCH 00/23] iommu: Refactor DMA domain strictness Date: Wed, 21 Jul 2021 19:20:11 +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-20210721_112051_379457_ED3D2EB4 X-CRM114-Status: GOOD ( 13.26 ) 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 Hi all, First off, yes, this conflicts with just about everything else currently in-flight. Sorry about that. If it stands up to initial review then I'll start giving some thought to how to fit everything together (particularly John's cleanup of strictness defaults, which I'd be inclined to fold into a v2 of this series). Anyway, this is my take on promoting the strict vs. non-strict DMA domain choice to distinct domain types, so that it can fit logically into the existing sysfs and Kconfig controls. The first 13 patches are effectively preparatory cleanup to reduce churn in the later changes, but could be merged in their own right even if the rest is too contentious. I ended up splitting patches #2-#11 by driver for ease of review, since some of them are more than just trivial deletions, but they could readily be squashed (even as far as with #1 and #12 too). I'm slightly surprised at how straightforward it's turned out, but it has survived some very basic smoke testing for arm-smmu using dmatest on my Arm Juno board. Branch here for convenience: https://gitlab.arm.com/linux-arm/linux-rm/-/tree/iommu/fq Please let me know what you think! Robin. Robin Murphy (23): 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: 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: Allow choosing DMA strictness at build time iommu/dma: Factor out flush queue init iommu: Allow enabling non-strict mode dynamically iommu/arm-smmu: Allow non-strict in pgtable_quirks interface .../ABI/testing/sysfs-kernel-iommu_groups | 2 + drivers/iommu/Kconfig | 48 +++++++++++++++---- drivers/iommu/amd/iommu.c | 21 +------- drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 25 ++++++---- drivers/iommu/arm/arm-smmu/arm-smmu.c | 24 ++++++---- drivers/iommu/arm/arm-smmu/qcom_iommu.c | 8 ---- drivers/iommu/dma-iommu.c | 44 +++++++++-------- drivers/iommu/exynos-iommu.c | 18 ++----- drivers/iommu/intel/iommu.c | 23 +++------ drivers/iommu/iommu.c | 44 +++++++++++------ drivers/iommu/ipmmu-vmsa.c | 27 ++--------- drivers/iommu/mtk_iommu.c | 6 --- drivers/iommu/rockchip-iommu.c | 11 +---- drivers/iommu/sprd-iommu.c | 6 --- drivers/iommu/sun50i-iommu.c | 12 +---- drivers/iommu/virtio-iommu.c | 8 ---- include/linux/dma-iommu.h | 9 ++-- include/linux/iommu.h | 10 +++- 18 files changed, 160 insertions(+), 186 deletions(-)