From: Sam Protsenko <semen.protsenko@linaro.org>
To: Joerg Roedel <joro@8bytes.org>, Will Deacon <will@kernel.org>,
Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
Cc: Sumit Semwal <sumit.semwal@linaro.org>,
Rob Herring <robh+dt@kernel.org>,
Catalin Marinas <catalin.marinas@arm.com>,
Marek Szyprowski <m.szyprowski@samsung.com>,
Cho KyongHo <pullip.cho@samsung.com>,
Hyesoo Yu <hyesoo.yu@samsung.com>,
Janghyuck Kim <janghyuck.kim@samsung.com>,
Jinkyu Yang <jinkyu1.yang@samsung.com>,
Alex <acnwigwe@google.com>, Carlos Llamas <cmllamas@google.com>,
Daniel Mentz <danielmentz@google.com>,
Erick Reyes <erickreyes@google.com>,
"J . Avila" <elavila@google.com>,
Jonglin Lee <jonglin@google.com>,
Mark Salyzyn <salyzyn@google.com>,
Thierry Strudel <tstrudel@google.com>,
Will McVicker <willmcvicker@google.com>,
Shawn Guo <shawnguo@kernel.org>,
Bjorn Andersson <bjorn.andersson@linaro.org>,
linux-samsung-soc@vger.kernel.org,
iommu@lists.linux-foundation.org, linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org
Subject: [RFC 0/3] iommu/samsung: Introduce Exynos sysmmu-v8 driver
Date: Thu, 20 Jan 2022 22:19:55 +0200 [thread overview]
Message-ID: <20220120201958.2649-1-semen.protsenko@linaro.org> (raw)
This is a draft of a new IOMMU driver used in modern Exynos SoCs (like
Exynos850) and Google's GS101 SoC (used in Pixel 6 phone). Most of its
code were taken from GS101 downstream kernel [1], with some extra
patches on top (fixes from Exynos850 downstream kernel and some porting
changes to adapt it to the mainline kernel). All development history can
be found at [2].
Similarities with existing exynos-iommu.c is minimal. I did some
analysis using similarity-tester tool:
8<-------------------------------------------------------------------->8
$ sim_c -peu -S exynos-iommu.c "|" samsung-*
exynos-iommu.c consists for 15 % of samsung-iommu.c material
exynos-iommu.c consists for 1 % of samsung-iommu-fault.c material
exynos-iommu.c consists for 3 % of samsung-iommu.h material
8<-------------------------------------------------------------------->8
So the similarity is very low, most of that code is some boilerplate
that shouldn't be extracted to common code (like allocating the memory
and requesting clocks/interrupts in probe function).
It was tested on v5.4 Android kernel on Exynos850 (E850-96 board) with
DPU use-case (displaying some graphics to the screen). Also it
apparently works fine on v5.10 GS101 kernel (on Pixel 6). On mainline
kernel I managed to build, match and bind the driver. No real world test
was done, but the changes from v5.10 (where it works fine) are minimal
(see [2] for details). So I'm pretty sure the driver is functional.
For this patch series I'd like to receive some high-level review for
driver's design and architecture. Coding style and API issues I can fix
later, when sending real (not RFC) series. Particularly I'd like to hear
some opinions about:
- namings: Kconfig option, file names, module name, compatible, etc
- modularity: should this driver be a different platform driver (like
in this series), or should it be integrated into existing
exynos-iommu.c driver somehow
- dt-bindings: does it look ok as it is, or some interface changes are
needed
- internal driver architecture: approach seems to be similar to
exynos-iommu.c, but any comments are welcome
- ongoing work: please let me know if you're aware of some efforts to
upstream this driver by some other party (e.g. Google engineers
might be working on something similar)
Basically, I want to figure out what should be changed/fixed in this
driver (on a high level), so it can be considered "upstreamable".
[1] https://android.googlesource.com/kernel/gs/
[2] https://github.com/joe-skb7/linux/commits/iommu-exynos850-dev
Sam Protsenko (3):
dt-bindings: iommu: Add bindings for samsung,sysmmu-v8
iommu/samsung: Introduce Exynos sysmmu-v8 driver
arm64: defconfig: Enable sysmmu-v8 IOMMU
.../bindings/iommu/samsung,sysmmu-v8.txt | 31 +
arch/arm64/configs/defconfig | 2 +
drivers/iommu/Kconfig | 13 +
drivers/iommu/Makefile | 3 +
drivers/iommu/samsung-iommu-fault.c | 617 +++++++
drivers/iommu/samsung-iommu-group.c | 50 +
drivers/iommu/samsung-iommu.c | 1521 +++++++++++++++++
drivers/iommu/samsung-iommu.h | 216 +++
include/dt-bindings/soc/samsung,sysmmu-v8.h | 43 +
9 files changed, 2496 insertions(+)
create mode 100644 Documentation/devicetree/bindings/iommu/samsung,sysmmu-v8.txt
create mode 100644 drivers/iommu/samsung-iommu-fault.c
create mode 100644 drivers/iommu/samsung-iommu-group.c
create mode 100644 drivers/iommu/samsung-iommu.c
create mode 100644 drivers/iommu/samsung-iommu.h
create mode 100644 include/dt-bindings/soc/samsung,sysmmu-v8.h
--
2.30.2
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next reply other threads:[~2022-01-20 20:21 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-01-20 20:19 Sam Protsenko [this message]
2022-01-20 20:19 ` [RFC 1/3] dt-bindings: iommu: Add bindings for samsung,sysmmu-v8 Sam Protsenko
2022-01-21 8:26 ` Krzysztof Kozlowski
2022-01-20 20:19 ` [RFC 2/3] iommu/samsung: Introduce Exynos sysmmu-v8 driver Sam Protsenko
2022-01-21 8:40 ` Krzysztof Kozlowski
2022-01-21 11:08 ` Sam Protsenko
2022-01-21 12:31 ` Marek Szyprowski
2022-06-21 19:57 ` Sam Protsenko
2022-06-22 9:14 ` Robin Murphy
2022-06-22 9:57 ` Marek Szyprowski
2022-07-02 21:50 ` Sam Protsenko
2022-01-20 20:19 ` [RFC 3/3] arm64: defconfig: Enable sysmmu-v8 IOMMU Sam Protsenko
2022-01-21 8:35 ` [RFC 0/3] iommu/samsung: Introduce Exynos sysmmu-v8 driver Krzysztof Kozlowski
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=20220120201958.2649-1-semen.protsenko@linaro.org \
--to=semen.protsenko@linaro.org \
--cc=acnwigwe@google.com \
--cc=bjorn.andersson@linaro.org \
--cc=catalin.marinas@arm.com \
--cc=cmllamas@google.com \
--cc=danielmentz@google.com \
--cc=elavila@google.com \
--cc=erickreyes@google.com \
--cc=hyesoo.yu@samsung.com \
--cc=iommu@lists.linux-foundation.org \
--cc=janghyuck.kim@samsung.com \
--cc=jinkyu1.yang@samsung.com \
--cc=jonglin@google.com \
--cc=joro@8bytes.org \
--cc=krzysztof.kozlowski@canonical.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-samsung-soc@vger.kernel.org \
--cc=m.szyprowski@samsung.com \
--cc=pullip.cho@samsung.com \
--cc=robh+dt@kernel.org \
--cc=salyzyn@google.com \
--cc=shawnguo@kernel.org \
--cc=sumit.semwal@linaro.org \
--cc=tstrudel@google.com \
--cc=will@kernel.org \
--cc=willmcvicker@google.com \
/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).