From: Jason Gunthorpe <jgg@nvidia.com>
To: Alyssa Rosenzweig <alyssa@rosenzweig.io>,
asahi@lists.linux.dev,
Christophe Leroy <christophe.leroy@csgroup.eu>,
David Woodhouse <dwmw2@infradead.org>,
iommu@lists.linux.dev, Joerg Roedel <joro@8bytes.org>,
Kevin Tian <kevin.tian@intel.com>,
linux-arm-kernel@lists.infradead.org,
linuxppc-dev@lists.ozlabs.org, Hector Martin <marcan@marcan.st>,
Michael Ellerman <mpe@ellerman.id.au>,
Nicholas Piggin <npiggin@gmail.com>,
Robin Murphy <robin.murphy@arm.com>,
Sven Peter <sven@svenpeter.dev>, Will Deacon <will@kernel.org>
Cc: Lu Baolu <baolu.lu@linux.intel.com>, Janne Grunau <j@jannau.net>
Subject: [PATCH v2 8/9] iommu/dart: Call apple_dart_finalize_domain() as part of alloc_paging()
Date: Wed, 27 Sep 2023 20:47:38 -0300 [thread overview]
Message-ID: <8-v2-bff223cf6409+282-dart_paging_jgg@nvidia.com> (raw)
In-Reply-To: <0-v2-bff223cf6409+282-dart_paging_jgg@nvidia.com>
In many cases the dev argument will now be !NULL so we should use it to
finalize the domain at allocation.
Make apple_dart_finalize_domain() accept the correct type.
Reviewed-by: Janne Grunau <j@jannau.net>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
---
drivers/iommu/apple-dart.c | 28 +++++++++++++++++++---------
1 file changed, 19 insertions(+), 9 deletions(-)
diff --git a/drivers/iommu/apple-dart.c b/drivers/iommu/apple-dart.c
index 2566cf3111c7c1..126da0d89f0dd4 100644
--- a/drivers/iommu/apple-dart.c
+++ b/drivers/iommu/apple-dart.c
@@ -568,10 +568,9 @@ apple_dart_setup_translation(struct apple_dart_domain *domain,
stream_map->dart->hw->invalidate_tlb(stream_map);
}
-static int apple_dart_finalize_domain(struct iommu_domain *domain,
+static int apple_dart_finalize_domain(struct apple_dart_domain *dart_domain,
struct apple_dart_master_cfg *cfg)
{
- struct apple_dart_domain *dart_domain = to_dart_domain(domain);
struct apple_dart *dart = cfg->stream_maps[0].dart;
struct io_pgtable_cfg pgtbl_cfg;
int ret = 0;
@@ -597,17 +596,18 @@ static int apple_dart_finalize_domain(struct iommu_domain *domain,
.iommu_dev = dart->dev,
};
- dart_domain->pgtbl_ops =
- alloc_io_pgtable_ops(dart->hw->fmt, &pgtbl_cfg, domain);
+ dart_domain->pgtbl_ops = alloc_io_pgtable_ops(dart->hw->fmt, &pgtbl_cfg,
+ &dart_domain->domain);
if (!dart_domain->pgtbl_ops) {
ret = -ENOMEM;
goto done;
}
- domain->pgsize_bitmap = pgtbl_cfg.pgsize_bitmap;
- domain->geometry.aperture_start = 0;
- domain->geometry.aperture_end = (dma_addr_t)DMA_BIT_MASK(dart->ias);
- domain->geometry.force_aperture = true;
+ dart_domain->domain.pgsize_bitmap = pgtbl_cfg.pgsize_bitmap;
+ dart_domain->domain.geometry.aperture_start = 0;
+ dart_domain->domain.geometry.aperture_end =
+ (dma_addr_t)DMA_BIT_MASK(dart->ias);
+ dart_domain->domain.geometry.force_aperture = true;
dart_domain->finalized = true;
@@ -662,7 +662,7 @@ static int apple_dart_attach_dev_paging(struct iommu_domain *domain,
if (cfg->stream_maps[0].dart->force_bypass)
return -EINVAL;
- ret = apple_dart_finalize_domain(domain, cfg);
+ ret = apple_dart_finalize_domain(dart_domain, cfg);
if (ret)
return ret;
@@ -758,6 +758,16 @@ static struct iommu_domain *apple_dart_domain_alloc_paging(struct device *dev)
mutex_init(&dart_domain->init_lock);
+ if (dev) {
+ struct apple_dart_master_cfg *cfg = dev_iommu_priv_get(dev);
+ int ret;
+
+ ret = apple_dart_finalize_domain(dart_domain, cfg);
+ if (ret) {
+ kfree(dart_domain);
+ return ERR_PTR(ret);
+ }
+ }
return &dart_domain->domain;
}
--
2.42.0
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2023-09-27 23:48 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-27 23:47 [PATCH v2 0/9] iommu: Convert dart & iommufd to the new domain_alloc_paging() Jason Gunthorpe
2023-09-27 23:47 ` [PATCH v2 1/9] iommu: Move IOMMU_DOMAIN_BLOCKED global statics to ops->blocked_domain Jason Gunthorpe
2023-10-09 7:47 ` Tian, Kevin
2023-09-27 23:47 ` [PATCH v2 2/9] iommu/vt-d: Update the definition of the blocking domain Jason Gunthorpe
2023-10-09 7:47 ` Tian, Kevin
2023-09-27 23:47 ` [PATCH v2 3/9] iommu/vt-d: Use ops->blocked_domain Jason Gunthorpe
2023-10-09 7:47 ` Tian, Kevin
2023-09-27 23:47 ` [PATCH v2 4/9] iommufd: Convert to alloc_domain_paging() Jason Gunthorpe
2023-10-09 7:48 ` Tian, Kevin
2023-09-27 23:47 ` [PATCH v2 5/9] iommu/dart: Use static global identity domains Jason Gunthorpe
2023-09-27 23:47 ` [PATCH v2 6/9] iommu/dart: Move the blocked domain support to a global static Jason Gunthorpe
2023-09-27 23:47 ` [PATCH v2 7/9] iommu/dart: Convert to domain_alloc_paging() Jason Gunthorpe
2023-09-27 23:47 ` Jason Gunthorpe [this message]
2023-09-27 23:47 ` [PATCH v2 9/9] iommu/dart: Remove the force_bypass variable Jason Gunthorpe
2023-10-16 11:44 ` Janne Grunau
2023-10-25 15:58 ` [PATCH v2 0/9] iommu: Convert dart & iommufd to the new domain_alloc_paging() jgg
2023-10-26 7:49 ` Joerg Roedel
2023-10-26 10:34 ` Sven Peter
2023-10-26 14:55 ` Joerg Roedel
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=8-v2-bff223cf6409+282-dart_paging_jgg@nvidia.com \
--to=jgg@nvidia.com \
--cc=alyssa@rosenzweig.io \
--cc=asahi@lists.linux.dev \
--cc=baolu.lu@linux.intel.com \
--cc=christophe.leroy@csgroup.eu \
--cc=dwmw2@infradead.org \
--cc=iommu@lists.linux.dev \
--cc=j@jannau.net \
--cc=joro@8bytes.org \
--cc=kevin.tian@intel.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=marcan@marcan.st \
--cc=mpe@ellerman.id.au \
--cc=npiggin@gmail.com \
--cc=robin.murphy@arm.com \
--cc=sven@svenpeter.dev \
--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: link
Be 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).