iommu/qcom: Use the asid read from device-tree if specified
authorAngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Thu, 22 Jun 2023 09:27:38 +0000 (11:27 +0200)
committerWill Deacon <will@kernel.org>
Wed, 9 Aug 2023 11:44:27 +0000 (12:44 +0100)
commitfcf226f1f7083cba76af47bf8dd764b68b149cd2
tree4a8239291e811febdfca8ef62d806cf30f333a51
parent0a8c264d51ad3196a3239e731be51d2cc98f9337
iommu/qcom: Use the asid read from device-tree if specified

As specified in this driver, the context banks are 0x1000 apart but
on some SoCs the context number does not necessarily match this
logic, hence we end up using the wrong ASID: keeping in mind that
this IOMMU implementation relies heavily on SCM (TZ) calls, it is
mandatory that we communicate the right context number.

Since this is all about how context banks are mapped in firmware,
which may be board dependent (as a different firmware version may
eventually change the expected context bank numbers), introduce a
new property "qcom,ctx-asid": when found, the ASID will be forced
as read from the devicetree.

When "qcom,ctx-asid" is not found, this driver retains the previous
behavior as to avoid breaking older devicetrees or systems that do
not require forcing ASID numbers.

Signed-off-by: Marijn Suijten <marijn.suijten@somainline.org>
[Marijn: Rebased over next-20221111]
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Link: https://lore.kernel.org/r/20230622092742.74819-3-angelogioacchino.delregno@collabora.com
Signed-off-by: Will Deacon <will@kernel.org>
drivers/iommu/arm/arm-smmu/qcom_iommu.c