[PATCH 0/6] Fix and extend Qualcomm IOMMU support

Konrad Dybcio
2022-05-27T21:39:01Z

Due to Qualcomm's software solutions, genius or otherwise, the IOMMUs on
pre-msm8998-and-sdm630 SoCs are flawed beyond reason, and conviniently
it is all due to an (almost in all cases) irreplaceable hypervisor and TZ
stack. As end users and developers, we have no choice but to adapt to that
and follow whatever the IOMMUs expect.

This series fixes and improves the existing support (adjusts the code flow
to make sure things are written in correct order and adds a way to
properly (i.e. in compliance with the firmware's expectations) reset the
IOMMUs) and extends it with features for the SoCs that came near the end
of an era of what we call "qcom_iommu" upstream, namely 8952 family
(8917, 8937, 8952, 8956/76, 8953 and possibly more) (Aarch64 pagetables
and secured QCIOMMUv2/QCIOMMU_500 ctxs)
and at the same time builds another milestone in getting msm8974/94 IOMMU
support that has been in the works for something like 7 years, and never
got upstreamed in the end (we'll get it one day, eventually...).

The dt-bindings are NOT converted to YAML as a part of this series, that
will come in a later patchset.

AngeloGioacchino Del Regno (6):
iommu/qcom: Use the asid read from device-tree if specified
iommu/qcom: Write TCR before TTBRs to fix ASID access behavior
iommu/qcom: Properly reset the IOMMU context
iommu/qcom: Add support for AArch64 IOMMU pagetables
iommu/qcom: Index contexts by asid number to allow asid 0
iommu/qcom: Add support for QCIOMMUv2 and QCIOMMU-500 secured contexts

.../devicetree/bindings/iommu/qcom,iommu.txt | 5 +
drivers/iommu/arm/arm-smmu/qcom_iommu.c | 137 ++++++++++++++----
2 files changed, 114 insertions(+), 28 deletions(-)

--
2.36.1