mbox series

[GIT,PULL] iommu/arm-smmu: Updates for 5.9

Message ID 20200721080352.GA13023@willie-the-truck (mailing list archive)
State Mainlined
Commit e46b3c0d011eab9933c183d5b47569db8e377281
Headers show
Series [GIT,PULL] iommu/arm-smmu: Updates for 5.9 | expand

Pull-request

git://git.kernel.org/pub/scm/linux/kernel/git/will/linux.git tags/arm-smmu-updates

Message

Will Deacon July 21, 2020, 8:03 a.m. UTC
Hi Joerg,

Please pull these Arm SMMU driver updates for 5.9. Summary is in the tag,
but the main thing is support for two new SoC integrations, one of which
is considerably more brain-dead than the other (determining which one is
left as an exercise to the reader although the diffstat is fairly revealing).

Cheers,

Will

--->8

The following changes since commit 9ebcfadb0610322ac537dd7aa5d9cbc2b2894c68:

  Linux 5.8-rc3 (2020-06-28 15:00:24 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/will/linux.git tags/arm-smmu-updates

for you to fetch changes up to aa7ec73297df57a86308fee78d2bf86e22ea0bae:

  iommu/arm-smmu: Add global/context fault implementation hooks (2020-07-20 09:30:51 +0100)

----------------------------------------------------------------
Arm SMMU updates for 5.9

- Support for SMMU-500 implementation in Marvell Armada-AP806 SoC

- Support for SMMU-500 implementation in NVIDIA Tegra194 SoC

- DT compatible string updates

- Remove unused IOMMU_SYS_CACHE_ONLY flag

----------------------------------------------------------------
Hanna Hawa (1):
      iommu/arm-smmu: Workaround for Marvell Armada-AP806 SoC erratum #582743

John Garry (1):
      iommu/arm-smmu-v3: Fix trivial typo

Jonathan Marek (2):
      dt-bindings: arm-smmu: Add sm8150 and sm8250 compatible strings
      iommu: arm-smmu-impl: Use qcom impl for sm8150 and sm8250 compatibles

Krishna Reddy (5):
      iommu/arm-smmu: move TLB timeout and spin count macros
      iommu/arm-smmu: ioremap smmu mmio region before implementation init
      iommu/arm-smmu: add NVIDIA implementation for ARM MMU-500 usage
      dt-bindings: arm-smmu: add binding for Tegra194 SMMU
      iommu/arm-smmu: Add global/context fault implementation hooks

Robin Murphy (1):
      iommu/arm-smmu: Update impl quirks comment

Tomasz Nowicki (2):
      iommu/arm-smmu: Call configuration impl hook before consuming features
      dt-bindings: arm-smmu: add compatible string for Marvell Armada-AP806 SMMU-500

Will Deacon (1):
      iommu: Remove unused IOMMU_SYS_CACHE_ONLY flag

 Documentation/arm64/silicon-errata.rst             |   3 +
 .../devicetree/bindings/iommu/arm,smmu.yaml        |  31 ++-
 MAINTAINERS                                        |   2 +
 drivers/iommu/Makefile                             |   2 +-
 drivers/iommu/arm-smmu-impl.c                      |  60 ++++-
 drivers/iommu/arm-smmu-nvidia.c                    | 278 +++++++++++++++++++++
 drivers/iommu/arm-smmu-v3.c                        |   2 +-
 drivers/iommu/arm-smmu.c                           |  40 ++-
 drivers/iommu/arm-smmu.h                           |   6 +
 drivers/iommu/io-pgtable-arm.c                     |   3 -
 include/linux/iommu.h                              |   6 -
 11 files changed, 403 insertions(+), 30 deletions(-)
 create mode 100644 drivers/iommu/arm-smmu-nvidia.c

Comments

Joerg Roedel July 22, 2020, 1:33 p.m. UTC | #1
Hi Will,

On Tue, Jul 21, 2020 at 09:03:53AM +0100, Will Deacon wrote:
> Please pull these Arm SMMU driver updates for 5.9. Summary is in the tag,
> but the main thing is support for two new SoC integrations, one of which
> is considerably more brain-dead than the other (determining which one is
> left as an exercise to the reader although the diffstat is fairly revealing).

:)

> The following changes since commit 9ebcfadb0610322ac537dd7aa5d9cbc2b2894c68:
> 
>   Linux 5.8-rc3 (2020-06-28 15:00:24 -0700)
> 
> are available in the Git repository at:
> 
>   git://git.kernel.org/pub/scm/linux/kernel/git/will/linux.git tags/arm-smmu-updates

Pulled, thanks. Given the number of arm-smmu* files it probably makes
sense to create a drivers/iommu/arm-smmu/ directory and move it all
there. If you agree feel free to send this as an additional patch on-top
of this pull-request.

Regards,

	Joerg
Will Deacon July 24, 2020, 11:51 a.m. UTC | #2
Hi Joerg,

On Wed, Jul 22, 2020 at 03:33:23PM +0200, Joerg Roedel wrote:
> On Tue, Jul 21, 2020 at 09:03:53AM +0100, Will Deacon wrote:
> > Please pull these Arm SMMU driver updates for 5.9. Summary is in the tag,
> > but the main thing is support for two new SoC integrations, one of which
> > is considerably more brain-dead than the other (determining which one is
> > left as an exercise to the reader although the diffstat is fairly revealing).
> 
> :)
> 
> > The following changes since commit 9ebcfadb0610322ac537dd7aa5d9cbc2b2894c68:
> > 
> >   Linux 5.8-rc3 (2020-06-28 15:00:24 -0700)
> > 
> > are available in the Git repository at:
> > 
> >   git://git.kernel.org/pub/scm/linux/kernel/git/will/linux.git tags/arm-smmu-updates
> 
> Pulled, thanks. Given the number of arm-smmu* files it probably makes
> sense to create a drivers/iommu/arm-smmu/ directory and move it all
> there. If you agree feel free to send this as an additional patch on-top
> of this pull-request.

Sure, that makes sense to me: I've included a diff below in case anybody
has comments. I've tackled it slightly differently to how the intel and
amd drivers are handled, since we have a header file (arm-smmu.h) which
is shared by a couple of different drivers. I've also moved the v3 driver
under the arm/ directory as Jean Philippe plans to split out the SVA work
for 5.10.

I'll send a second pull early next week if there are no objections (or
you can pick this patch directly).

Cheers,

Will

--->8

From 0e4a152062600f7f43ea4ea47925d12ec3a477ab Mon Sep 17 00:00:00 2001
From: Will Deacon <will@kernel.org>
Date: Fri, 24 Jul 2020 12:43:20 +0100
Subject: [PATCH] iommu/arm-smmu: Move Arm SMMU drivers into their own
 subdirectory

The Arm SMMU drivers are getting fat on vendor value-add, so move them
to their own subdirectory out of the way of the other IOMMU drivers.

Suggested-by: Joerg Roedel <joro@8bytes.org>
Signed-off-by: Will Deacon <will@kernel.org>
---
 MAINTAINERS                                        | 2 +-
 drivers/iommu/Makefile                             | 5 +----
 drivers/iommu/arm/Makefile                         | 2 ++
 drivers/iommu/arm/arm-smmu-v3/Makefile             | 2 ++
 drivers/iommu/{ => arm/arm-smmu-v3}/arm-smmu-v3.c  | 0
 drivers/iommu/arm/arm-smmu/Makefile                | 4 ++++
 drivers/iommu/{ => arm/arm-smmu}/arm-smmu-impl.c   | 0
 drivers/iommu/{ => arm/arm-smmu}/arm-smmu-nvidia.c | 0
 drivers/iommu/{ => arm/arm-smmu}/arm-smmu-qcom.c   | 0
 drivers/iommu/{ => arm/arm-smmu}/arm-smmu.c        | 0
 drivers/iommu/{ => arm/arm-smmu}/arm-smmu.h        | 0
 drivers/iommu/{ => arm/arm-smmu}/qcom_iommu.c      | 0
 12 files changed, 10 insertions(+), 5 deletions(-)
 create mode 100644 drivers/iommu/arm/Makefile
 create mode 100644 drivers/iommu/arm/arm-smmu-v3/Makefile
 rename drivers/iommu/{ => arm/arm-smmu-v3}/arm-smmu-v3.c (100%)
 create mode 100644 drivers/iommu/arm/arm-smmu/Makefile
 rename drivers/iommu/{ => arm/arm-smmu}/arm-smmu-impl.c (100%)
 rename drivers/iommu/{ => arm/arm-smmu}/arm-smmu-nvidia.c (100%)
 rename drivers/iommu/{ => arm/arm-smmu}/arm-smmu-qcom.c (100%)
 rename drivers/iommu/{ => arm/arm-smmu}/arm-smmu.c (100%)
 rename drivers/iommu/{ => arm/arm-smmu}/arm-smmu.h (100%)
 rename drivers/iommu/{ => arm/arm-smmu}/qcom_iommu.c (100%)

diff --git a/MAINTAINERS b/MAINTAINERS
index ee2c0ba13a0f..6383801828c7 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1498,7 +1498,7 @@ R:	Robin Murphy <robin.murphy@arm.com>
 L:	linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 S:	Maintained
 F:	Documentation/devicetree/bindings/iommu/arm,smmu*
-F:	drivers/iommu/arm-smmu*
+F:	drivers/iommu/arm/
 F:	drivers/iommu/io-pgtable-arm-v7s.c
 F:	drivers/iommu/io-pgtable-arm.c
 
diff --git a/drivers/iommu/Makefile b/drivers/iommu/Makefile
index 2b8203db73ec..d971cffc810b 100644
--- a/drivers/iommu/Makefile
+++ b/drivers/iommu/Makefile
@@ -1,4 +1,5 @@
 # SPDX-License-Identifier: GPL-2.0
+obj-y += arm/
 obj-$(CONFIG_IOMMU_API) += iommu.o
 obj-$(CONFIG_IOMMU_API) += iommu-traces.o
 obj-$(CONFIG_IOMMU_API) += iommu-sysfs.o
@@ -14,9 +15,6 @@ obj-$(CONFIG_MSM_IOMMU) += msm_iommu.o
 obj-$(CONFIG_AMD_IOMMU) += amd/iommu.o amd/init.o amd/quirks.o
 obj-$(CONFIG_AMD_IOMMU_DEBUGFS) += amd/debugfs.o
 obj-$(CONFIG_AMD_IOMMU_V2) += amd/iommu_v2.o
-obj-$(CONFIG_ARM_SMMU) += arm_smmu.o
-arm_smmu-objs += arm-smmu.o arm-smmu-impl.o arm-smmu-nvidia.o arm-smmu-qcom.o
-obj-$(CONFIG_ARM_SMMU_V3) += arm-smmu-v3.o
 obj-$(CONFIG_DMAR_TABLE) += intel/dmar.o
 obj-$(CONFIG_INTEL_IOMMU) += intel/iommu.o intel/pasid.o
 obj-$(CONFIG_INTEL_IOMMU) += intel/trace.o
@@ -35,6 +33,5 @@ obj-$(CONFIG_TEGRA_IOMMU_SMMU) += tegra-smmu.o
 obj-$(CONFIG_EXYNOS_IOMMU) += exynos-iommu.o
 obj-$(CONFIG_FSL_PAMU) += fsl_pamu.o fsl_pamu_domain.o
 obj-$(CONFIG_S390_IOMMU) += s390-iommu.o
-obj-$(CONFIG_QCOM_IOMMU) += qcom_iommu.o
 obj-$(CONFIG_HYPERV_IOMMU) += hyperv-iommu.o
 obj-$(CONFIG_VIRTIO_IOMMU) += virtio-iommu.o
diff --git a/drivers/iommu/arm/Makefile b/drivers/iommu/arm/Makefile
new file mode 100644
index 000000000000..0f9efeab709f
--- /dev/null
+++ b/drivers/iommu/arm/Makefile
@@ -0,0 +1,2 @@
+# SPDX-License-Identifier: GPL-2.0
+obj-y += arm-smmu/ arm-smmu-v3/
diff --git a/drivers/iommu/arm/arm-smmu-v3/Makefile b/drivers/iommu/arm/arm-smmu-v3/Makefile
new file mode 100644
index 000000000000..569e24e9f162
--- /dev/null
+++ b/drivers/iommu/arm/arm-smmu-v3/Makefile
@@ -0,0 +1,2 @@
+# SPDX-License-Identifier: GPL-2.0
+obj-$(CONFIG_ARM_SMMU_V3) += arm-smmu-v3.o
diff --git a/drivers/iommu/arm-smmu-v3.c b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c
similarity index 100%
rename from drivers/iommu/arm-smmu-v3.c
rename to drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c
diff --git a/drivers/iommu/arm/arm-smmu/Makefile b/drivers/iommu/arm/arm-smmu/Makefile
new file mode 100644
index 000000000000..e240a7bcf310
--- /dev/null
+++ b/drivers/iommu/arm/arm-smmu/Makefile
@@ -0,0 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
+obj-$(CONFIG_QCOM_IOMMU) += qcom_iommu.o
+obj-$(CONFIG_ARM_SMMU) += arm_smmu.o
+arm_smmu-objs += arm-smmu.o arm-smmu-impl.o arm-smmu-nvidia.o arm-smmu-qcom.o
diff --git a/drivers/iommu/arm-smmu-impl.c b/drivers/iommu/arm/arm-smmu/arm-smmu-impl.c
similarity index 100%
rename from drivers/iommu/arm-smmu-impl.c
rename to drivers/iommu/arm/arm-smmu/arm-smmu-impl.c
diff --git a/drivers/iommu/arm-smmu-nvidia.c b/drivers/iommu/arm/arm-smmu/arm-smmu-nvidia.c
similarity index 100%
rename from drivers/iommu/arm-smmu-nvidia.c
rename to drivers/iommu/arm/arm-smmu/arm-smmu-nvidia.c
diff --git a/drivers/iommu/arm-smmu-qcom.c b/drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c
similarity index 100%
rename from drivers/iommu/arm-smmu-qcom.c
rename to drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c
diff --git a/drivers/iommu/arm-smmu.c b/drivers/iommu/arm/arm-smmu/arm-smmu.c
similarity index 100%
rename from drivers/iommu/arm-smmu.c
rename to drivers/iommu/arm/arm-smmu/arm-smmu.c
diff --git a/drivers/iommu/arm-smmu.h b/drivers/iommu/arm/arm-smmu/arm-smmu.h
similarity index 100%
rename from drivers/iommu/arm-smmu.h
rename to drivers/iommu/arm/arm-smmu/arm-smmu.h
diff --git a/drivers/iommu/qcom_iommu.c b/drivers/iommu/arm/arm-smmu/qcom_iommu.c
similarity index 100%
rename from drivers/iommu/qcom_iommu.c
rename to drivers/iommu/arm/arm-smmu/qcom_iommu.c
Joerg Roedel July 24, 2020, 12:26 p.m. UTC | #3
Hi Will,

On Fri, Jul 24, 2020 at 12:51:09PM +0100, Will Deacon wrote:
> Sure, that makes sense to me: I've included a diff below in case anybody
> has comments. I've tackled it slightly differently to how the intel and
> amd drivers are handled, since we have a header file (arm-smmu.h) which
> is shared by a couple of different drivers. I've also moved the v3 driver
> under the arm/ directory as Jean Philippe plans to split out the SVA work
> for 5.10.
> 
> I'll send a second pull early next week if there are no objections (or
> you can pick this patch directly).

Thanks, the diff looks fine to me.


	Joerg