LKML Archive on lore.kernel.org help / color / mirror / Atom feed
From: Robin Murphy <robin.murphy@arm.com> 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 Subject: [PATCH v3 19/25] iommu/vt-d: Prepare for multiple DMA domain types Date: Wed, 4 Aug 2021 18:15:47 +0100 [thread overview] Message-ID: <ec4e111fe28db8232ae74e0aaf07999427f98fc7.1628094601.git.robin.murphy@arm.com> (raw) In-Reply-To: <cover.1628094600.git.robin.murphy@arm.com> In preparation for the strict vs. non-strict decision for DMA domains to be expressed in the domain type, make sure we expose our flush queue awareness by accepting the new domain type, and test the specific feature flag where we want to identify DMA domains in general. The DMA ops reset/setup can simply be made unconditional, since iommu-dma already knows only to touch DMA domains. Reviewed-by: Lu Baolu <baolu.lu@linux.intel.com> Signed-off-by: Robin Murphy <robin.murphy@arm.com> --- drivers/iommu/intel/iommu.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c index 7e168634c433..8fc46c9d6b96 100644 --- a/drivers/iommu/intel/iommu.c +++ b/drivers/iommu/intel/iommu.c @@ -582,7 +582,7 @@ struct intel_iommu *domain_get_iommu(struct dmar_domain *domain) int iommu_id; /* si_domain and vm domain should not get here. */ - if (WARN_ON(domain->domain.type != IOMMU_DOMAIN_DMA)) + if (WARN_ON(!iommu_is_dma_domain(&domain->domain))) return NULL; for_each_domain_iommu(iommu_id, domain) @@ -1034,7 +1034,7 @@ static struct dma_pte *pfn_to_dma_pte(struct dmar_domain *domain, pteval = ((uint64_t)virt_to_dma_pfn(tmp_page) << VTD_PAGE_SHIFT) | DMA_PTE_READ | DMA_PTE_WRITE; if (domain_use_first_level(domain)) { pteval |= DMA_FL_PTE_XD | DMA_FL_PTE_US; - if (domain->domain.type == IOMMU_DOMAIN_DMA) + if (iommu_is_dma_domain(&domain->domain)) pteval |= DMA_FL_PTE_ACCESS; } if (cmpxchg64(&pte->val, 0ULL, pteval)) @@ -2345,7 +2345,7 @@ __domain_mapping(struct dmar_domain *domain, unsigned long iov_pfn, if (domain_use_first_level(domain)) { attr |= DMA_FL_PTE_XD | DMA_FL_PTE_US; - if (domain->domain.type == IOMMU_DOMAIN_DMA) { + if (iommu_is_dma_domain(&domain->domain)) { attr |= DMA_FL_PTE_ACCESS; if (prot & DMA_PTE_WRITE) attr |= DMA_FL_PTE_DIRTY; @@ -4528,6 +4528,7 @@ static struct iommu_domain *intel_iommu_domain_alloc(unsigned type) switch (type) { case IOMMU_DOMAIN_DMA: + case IOMMU_DOMAIN_DMA_FQ: case IOMMU_DOMAIN_UNMANAGED: dmar_domain = alloc_domain(0); if (!dmar_domain) { @@ -5197,12 +5198,8 @@ static void intel_iommu_release_device(struct device *dev) static void intel_iommu_probe_finalize(struct device *dev) { - struct iommu_domain *domain = iommu_get_domain_for_dev(dev); - - if (domain && domain->type == IOMMU_DOMAIN_DMA) - iommu_setup_dma_ops(dev, 0, U64_MAX); - else - set_dma_ops(dev, NULL); + set_dma_ops(dev, NULL); + iommu_setup_dma_ops(dev, 0, U64_MAX); } static void intel_iommu_get_resv_regions(struct device *device, -- 2.25.1
next prev parent reply other threads:[~2021-08-04 17:17 UTC|newest] Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-08-04 17:15 [PATCH v3 00/25] iommu: Refactor DMA domain strictness Robin Murphy 2021-08-04 17:15 ` [PATCH v3 01/25] iommu: Pull IOVA cookie management into the core Robin Murphy 2021-08-04 18:52 ` Heiko Stübner 2021-08-05 7:18 ` Marek Szyprowski 2021-08-05 9:15 ` Yoshihiro Shimoda 2021-08-04 17:15 ` [PATCH v3 02/25] iommu/amd: Drop IOVA cookie management Robin Murphy 2021-08-05 7:37 ` kernel test robot 2021-08-05 9:37 ` Robin Murphy 2021-08-04 17:15 ` [PATCH v3 03/25] iommu/arm-smmu: " Robin Murphy 2021-08-04 17:15 ` [PATCH v3 04/25] iommu/vt-d: " Robin Murphy 2021-08-04 17:15 ` [PATCH v3 05/25] iommu/exynos: " Robin Murphy 2021-08-05 7:19 ` Marek Szyprowski 2021-08-04 17:15 ` [PATCH v3 06/25] iommu/ipmmu-vmsa: " Robin Murphy 2021-08-05 9:15 ` Yoshihiro Shimoda 2021-08-04 17:15 ` [PATCH v3 07/25] iommu/mtk: " Robin Murphy 2021-08-04 17:15 ` [PATCH v3 08/25] iommu/rockchip: " Robin Murphy 2021-08-04 18:53 ` Heiko Stübner 2021-08-04 17:15 ` [PATCH v3 09/25] iommu/sprd: " Robin Murphy 2021-08-06 2:15 ` Chunyan Zhang 2021-08-04 17:15 ` [PATCH v3 10/25] iommu/sun50i: " Robin Murphy 2021-08-04 17:15 ` [PATCH v3 11/25] iommu/virtio: " Robin Murphy 2021-08-04 17:15 ` [PATCH v3 12/25] iommu/dma: Unexport " Robin Murphy 2021-08-04 17:15 ` [PATCH v3 13/25] iommu/dma: Remove redundant "!dev" checks Robin Murphy 2021-08-04 17:15 ` [PATCH v3 14/25] iommu: Indicate queued flushes via gather data Robin Murphy 2021-08-04 17:15 ` [PATCH v3 15/25] iommu/io-pgtable: Remove non-strict quirk Robin Murphy 2021-08-04 17:15 ` [PATCH v3 16/25] iommu: Introduce explicit type for non-strict DMA domains Robin Murphy 2021-08-04 17:15 ` [PATCH v3 17/25] iommu/amd: Prepare for multiple DMA domain types Robin Murphy 2021-08-04 17:15 ` [PATCH v3 18/25] iommu/arm-smmu: " Robin Murphy 2021-08-04 17:15 ` Robin Murphy [this message] 2021-08-04 17:15 ` [PATCH v3 20/25] iommu: Express DMA strictness via the domain type Robin Murphy 2021-08-04 17:15 ` [PATCH v3 21/25] iommu: Expose DMA domain strictness via sysfs Robin Murphy 2021-08-04 17:15 ` [PATCH v3 22/25] iommu: Only log strictness for DMA domains Robin Murphy 2021-08-04 17:15 ` [PATCH v3 23/25] iommu: Merge strictness and domain type configs Robin Murphy 2021-08-06 9:15 ` John Garry 2021-08-04 17:15 ` [PATCH v3 24/25] iommu/dma: Factor out flush queue init Robin Murphy 2021-08-09 12:52 ` Will Deacon 2021-08-09 14:47 ` Robin Murphy 2021-08-09 19:05 ` Rajat Jain 2021-08-09 19:59 ` Robin Murphy 2021-08-09 20:15 ` Rajat Jain 2021-08-04 17:15 ` [PATCH v3 25/25] iommu: Allow enabling non-strict mode dynamically Robin Murphy 2021-08-09 12:49 ` Will Deacon 2021-08-09 13:40 ` Robin Murphy
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=ec4e111fe28db8232ae74e0aaf07999427f98fc7.1628094601.git.robin.murphy@arm.com \ --to=robin.murphy@arm.com \ --cc=baolu.lu@linux.intel.com \ --cc=chenxiang66@hisilicon.com \ --cc=dianders@chromium.org \ --cc=iommu@lists.linux-foundation.org \ --cc=john.garry@huawei.com \ --cc=joro@8bytes.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=rajatja@google.com \ --cc=suravee.suthikulpanit@amd.com \ --cc=will@kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).