From: Sven Peter via iommu <iommu@lists.linux-foundation.org>
To: iommu@lists.linux-foundation.org
Cc: Arnd Bergmann <arnd@kernel.org>, Sven Peter <sven@svenpeter.dev>,
Will Deacon <will@kernel.org>, Hector Martin <marcan@marcan.st>,
linux-kernel@vger.kernel.org, Alexander Graf <graf@amazon.com>,
Mohamed Mediouni <mohamed.mediouni@caramail.com>,
Robin Murphy <robin.murphy@arm.com>,
Alyssa Rosenzweig <alyssa@rosenzweig.io>
Subject: [PATCH v2 0/8] Support IOMMU page sizes larger than the CPU page size
Date: Sat, 28 Aug 2021 17:36:34 +0200 [thread overview]
Message-ID: <20210828153642.19396-1-sven@svenpeter.dev> (raw)
RFC Patch: https://lore.kernel.org/linux-iommu/20210806155523.50429-1-sven@svenpeter.dev/
Hi,
After a very helpful discussion with Robin Murphy on the RFC, here's v2 that is slowly
starting to look sane.
I've been running this code for two weeks now and mainly tested it with usb storage devices
connected to dwc3 and to xhci over pcie on the M1.
Some background: On the Apple M1 the IOMMUs are hardwired to only support 16 KB pages.
We'd still like to boot Linux with 4KB pages though because that's what most distros
ship these days. This patch series adds support for that setup to the IOMMU DMA API.
This is essentially done by always mapping the encapsulating IOMMU page and adjusting
the returned iova offset. There are also changes to only allow DMA domains to make use
of this and prevent UNMANAGED domains from encountering unexpected situations.
For untrusted devices the allocation size is simply aligned to iovad->granule if they
don't already go through the swiotlb path. I have not been able to test that part
so far though since there's no Thunderbolt support for the M1 yet.
The series is based on top of iommu/next (and without the last commit probably also on
iommu/core). It won't apply cleanly on apple/dart since it already takes Robin's DMA domain
cleanup series into account.
Best,
Sven
Sven Peter (8):
iommu/dma: Align size for untrusted devs to IOVA granule
iommu/dma: Fail unaligned map requests for untrusted devs
iommu/dma: Disable get_sgtable for granule > PAGE_SIZE
iommu/dma: Support granule > PAGE_SIZE in dma_map_sg
iommu/dma: Support PAGE_SIZE < iovad->granule allocations
iommu: Move IOMMU pagesize check to attach_device
iommu: Introduce __IOMMU_DOMAIN_LP
iommu/dart: Remove force_bypass logic
drivers/iommu/apple-dart.c | 14 +--
drivers/iommu/dma-iommu.c | 172 ++++++++++++++++++++++++++++++++-----
drivers/iommu/iommu.c | 36 +++++++-
drivers/iommu/iova.c | 7 +-
include/linux/iommu.h | 8 +-
5 files changed, 197 insertions(+), 40 deletions(-)
--
2.25.1
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu
next reply other threads:[~2021-08-28 15:38 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-08-28 15:36 Sven Peter via iommu [this message]
2021-08-28 15:36 ` [PATCH v2 1/8] iommu/dma: Align size for untrusted devs to IOVA granule Sven Peter via iommu
2021-08-28 15:36 ` [PATCH v2 2/8] iommu/dma: Fail unaligned map requests for untrusted devs Sven Peter via iommu
2021-08-28 19:00 ` Sven Peter via iommu
2021-08-28 15:36 ` [PATCH v2 3/8] iommu/dma: Disable get_sgtable for granule > PAGE_SIZE Sven Peter via iommu
2021-08-31 21:30 ` Alyssa Rosenzweig
2021-09-01 17:06 ` Sven Peter via iommu
2021-09-01 21:10 ` Alyssa Rosenzweig
2021-09-02 18:19 ` Sven Peter via iommu
2021-09-02 19:42 ` Robin Murphy
2021-09-03 13:11 ` Alyssa Rosenzweig
2021-09-03 15:16 ` Sven Peter via iommu
2021-09-03 15:45 ` Robin Murphy
2021-09-03 16:51 ` Sven Peter via iommu
2021-08-28 15:36 ` [PATCH v2 4/8] iommu/dma: Support granule > PAGE_SIZE in dma_map_sg Sven Peter via iommu
2021-08-28 21:10 ` kernel test robot
2021-08-28 22:31 ` kernel test robot
2021-08-28 22:33 ` kernel test robot
2021-08-28 15:36 ` [PATCH v2 5/8] iommu/dma: Support PAGE_SIZE < iovad->granule allocations Sven Peter via iommu
2021-08-28 15:36 ` [PATCH v2 6/8] iommu: Move IOMMU pagesize check to attach_device Sven Peter via iommu
2021-08-31 21:39 ` Alyssa Rosenzweig
2021-09-01 17:14 ` Sven Peter via iommu
2021-09-01 18:53 ` Robin Murphy
2021-08-28 15:36 ` [PATCH v2 7/8] iommu: Introduce __IOMMU_DOMAIN_LP Sven Peter via iommu
2021-08-28 15:36 ` [PATCH v2 8/8] iommu/dart: Remove force_bypass logic Sven Peter via iommu
2021-08-31 21:40 ` Alyssa Rosenzweig
2021-08-31 21:32 ` [PATCH v2 0/8] Support IOMMU page sizes larger than the CPU page size Alyssa Rosenzweig
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=20210828153642.19396-1-sven@svenpeter.dev \
--to=iommu@lists.linux-foundation.org \
--cc=alyssa@rosenzweig.io \
--cc=arnd@kernel.org \
--cc=graf@amazon.com \
--cc=linux-kernel@vger.kernel.org \
--cc=marcan@marcan.st \
--cc=mohamed.mediouni@caramail.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).