[PATCH v2 00/10] arm64: tegra: Prevent early SMMU faults
Thierry Reding
thierry.reding at gmail.com
Fri May 28 10:05:28 PDT 2021
On Tue, Apr 20, 2021 at 07:26:09PM +0200, Thierry Reding wrote:
> From: Thierry Reding <treding at nvidia.com>
>
> Hi,
>
> this is a set of patches that is the result of earlier discussions
> regarding early identity mappings that are needed to avoid SMMU faults
> during early boot.
>
> The goal here is to avoid early identity mappings altogether and instead
> postpone the need for the identity mappings to when devices are attached
> to the SMMU. This works by making the SMMU driver coordinate with the
> memory controller driver on when to start enforcing SMMU translations.
> This makes Tegra behave in a more standard way and pushes the code to
> deal with the Tegra-specific programming into the NVIDIA SMMU
> implementation.
>
> Compared to the original version of these patches, I've split the
> preparatory work into a separate patch series because it became very
> large and will be mostly uninteresting for this audience.
>
> Patch 1 provides a mechanism to program SID overrides at runtime. Patch
> 2 updates the ARM SMMU device tree bindings to include the Tegra186
> compatible string as suggested by Robin during review.
>
> Patches 3 and 4 create the fundamentals in the SMMU driver to support
> this and also make this functionality available on Tegra186. Patch 5
> hooks the ARM SMMU up to the memory controller so that the memory client
> stream ID overrides can be programmed at the right time.
>
> Patch 6 extends this mechanism to Tegra186 and patches 7-9 enable all of
> this through device tree updates. Patch 10 is included here to show how
> SMMU will be enabled for display controllers. However, it cannot be
> applied yet because the code to create identity mappings for potentially
> live framebuffers hasn't been merged yet.
>
> The end result is that various peripherals will have SMMU enabled, while
> the display controllers will keep using passthrough, as initially set up
> by firmware. Once the device tree bindings have been accepted and the
> SMMU driver has been updated to create identity mappings for the display
> controllers, they can be hooked up to the SMMU and the code in this
> series will automatically program the SID overrides to enable SMMU
> translations at the right time.
>
> Note that the series creates a compile time dependency between the
> memory controller and IOMMU trees. If it helps I can provide a branch
> for each tree, modelling the dependency, once the series has been
> reviewed.
>
> Changes in v2:
> - split off the preparatory work into a separate series (that needs to
> be applied first)
> - address review comments by Robin
>
> Thierry
>
> Thierry Reding (10):
> memory: tegra: Implement SID override programming
> dt-bindings: arm-smmu: Add Tegra186 compatible string
> iommu/arm-smmu: Implement ->probe_finalize()
> iommu/arm-smmu: tegra: Detect number of instances at runtime
> iommu/arm-smmu: tegra: Implement SID override programming
> iommu/arm-smmu: Use Tegra implementation on Tegra186
> arm64: tegra: Use correct compatible string for Tegra186 SMMU
> arm64: tegra: Hook up memory controller to SMMU on Tegra186
> arm64: tegra: Enable SMMU support on Tegra194
> arm64: tegra: Enable SMMU support for display on Tegra194
>
> .../devicetree/bindings/iommu/arm,smmu.yaml | 11 +-
> arch/arm64/boot/dts/nvidia/tegra186.dtsi | 4 +-
> arch/arm64/boot/dts/nvidia/tegra194.dtsi | 166 ++++++++++++++++++
> drivers/iommu/arm/arm-smmu/arm-smmu-impl.c | 3 +-
> drivers/iommu/arm/arm-smmu/arm-smmu-nvidia.c | 90 ++++++++--
> drivers/iommu/arm/arm-smmu/arm-smmu.c | 13 ++
> drivers/iommu/arm/arm-smmu/arm-smmu.h | 1 +
> drivers/memory/tegra/mc.c | 9 +
> drivers/memory/tegra/tegra186.c | 72 ++++++++
> include/soc/tegra/mc.h | 3 +
> 10 files changed, 349 insertions(+), 23 deletions(-)
Will, Robin,
do you have any more comments on the ARM SMMU bits of this series? If
not, can you guys provide an Acked-by so that Krzysztof can pick this
(modulo the DT patches) up into the memory-controller tree for v5.14?
I'll send out a v3 with the bisectibilitiy fix that Krishna pointed
out.
Thanks,
Thierry
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20210528/8820a31f/attachment.sig>
More information about the linux-arm-kernel
mailing list