Faults can now come from different context banks so print that information as well.
Signed-off-by: Anna Maniscalco <[email protected]> --- drivers/gpu/drm/msm/adreno/adreno_gpu.c | 4 ++-- drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c | 4 ++++ include/linux/adreno-smmu-priv.h | 2 ++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/msm/adreno/adreno_gpu.c b/drivers/gpu/drm/msm/adreno/adreno_gpu.c index be374cf209f4..6a48e211fa3c 100644 --- a/drivers/gpu/drm/msm/adreno/adreno_gpu.c +++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.c @@ -329,8 +329,8 @@ int adreno_fault_handler(struct msm_gpu *gpu, unsigned long iova, int flags, else if (info->fsr & ARM_SMMU_FSR_EF) type = "EXTERNAL"; - pr_warn_ratelimited("*** gpu fault: ttbr0=%.16llx iova=%.16lx dir=%s type=%s source=%s (%u,%u,%u,%u)\n", - info->ttbr0, iova, + pr_warn_ratelimited("*** gpu fault: cb=%d ttbr0=%.16llx cb0_ttbr0=%.16llx cb1_ttbr0=%.16llx iova=%.16lx dir=%s type=%s source=%s (%u,%u,%u,%u)\n", + info->contextbank, info->ttbr0, info->cb0_ttbr0, info->cb1_ttbr0, iova, flags & IOMMU_FAULT_WRITE ? "WRITE" : "READ", type, block, scratch[0], scratch[1], scratch[2], scratch[3]); diff --git a/drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c b/drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c index 48a590aaeb5e..ae6152bddf8f 100644 --- a/drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c +++ b/drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c @@ -136,6 +136,10 @@ static void qcom_adreno_smmu_get_fault_info(const void *cookie, info->cbfrsynra = arm_smmu_gr1_read(smmu, ARM_SMMU_GR1_CBFRSYNRA(cfg->cbndx)); info->ttbr0 = arm_smmu_cb_readq(smmu, cfg->cbndx, ARM_SMMU_CB_TTBR0); info->contextidr = arm_smmu_cb_read(smmu, cfg->cbndx, ARM_SMMU_CB_CONTEXTIDR); + info->contextbank = cfg->cbndx; + + info->cb0_ttbr0 = arm_smmu_cb_readq(smmu, 0, ARM_SMMU_CB_TTBR0); + info->cb1_ttbr0 = arm_smmu_cb_readq(smmu, 1, ARM_SMMU_CB_TTBR0); } static void qcom_adreno_smmu_set_stall(const void *cookie, bool enabled) diff --git a/include/linux/adreno-smmu-priv.h b/include/linux/adreno-smmu-priv.h index d83c9175828f..5d6de4b4de06 100644 --- a/include/linux/adreno-smmu-priv.h +++ b/include/linux/adreno-smmu-priv.h @@ -32,6 +32,8 @@ struct adreno_smmu_fault_info { u32 fsynr0; u32 fsynr1; u32 cbfrsynra; + u32 contextbank; + u64 cb0_ttbr0, cb1_ttbr0; }; /** -- 2.54.0
