On Fri, Mar 29, 2024 at 02:06:33PM -0700, Georgi Djakov wrote: > Operating the TBUs (Translation Buffer Units) from Linux on Qualcomm > platforms can help with debugging context faults. To help with that, > the TBUs can run ATOS (Address Translation Operations) to manually > trigger address translation of IOVA to physical address in hardware > and provide more details when a context fault happens. > > The driver will control the resources needed by the TBU to allow > running the debug operations such as ATOS, check for outstanding > transactions, do snapshot capture etc. > > Signed-off-by: Georgi Djakov <quic_c_gdjako@xxxxxxxxxxx> > --- > drivers/iommu/Kconfig | 9 + > drivers/iommu/arm/arm-smmu/Makefile | 1 + > .../iommu/arm/arm-smmu/arm-smmu-qcom-tbu.c | 372 ++++++++++++++++++ > drivers/iommu/arm/arm-smmu/arm-smmu-qcom.h | 2 + > drivers/iommu/arm/arm-smmu/arm-smmu.h | 2 + > 5 files changed, 386 insertions(+) > create mode 100644 drivers/iommu/arm/arm-smmu/arm-smmu-qcom-tbu.c > > diff --git a/drivers/iommu/Kconfig b/drivers/iommu/Kconfig > index 0af39bbbe3a3..b699e88f42c5 100644 > --- a/drivers/iommu/Kconfig > +++ b/drivers/iommu/Kconfig > @@ -374,6 +374,15 @@ config ARM_SMMU_QCOM > When running on a Qualcomm platform that has the custom variant > of the ARM SMMU, this needs to be built into the SMMU driver. > > +config ARM_SMMU_QCOM_TBU > + bool "Qualcomm TBU driver" > + depends on ARM_SMMU_QCOM > + help > + The SMMUs on Qualcomm platforms may include Translation Buffer > + Units (TBUs) for each master. Enabling support for these units > + allows to operate the TBUs and obtain additional information > + when debugging memory management issues like context faults. > + > config ARM_SMMU_QCOM_DEBUG Can we just use ARM_SMMU_QCOM_DEBUG for all of this? Having both ARM_SMMU_QCOM_DEBUG and ARM_SMMU_QCOM_TBU for the same hardware is pretty confusing, I think. Will