diff --git a/drivers/gpu/msm/adreno_a6xx_gmu.c b/drivers/gpu/msm/adreno_a6xx_gmu.c index 1c5849972a7d..9d13bcf33efe 100644 --- a/drivers/gpu/msm/adreno_a6xx_gmu.c +++ b/drivers/gpu/msm/adreno_a6xx_gmu.c @@ -2614,6 +2614,7 @@ static int a6xx_gmu_iommu_cb_probe(struct a6xx_gmu_device *gmu, struct device_node *node = of_get_child_by_name(parent, ctx->name); struct platform_device *pdev; int ret; + int no_stall = 1; if (!node) return -ENODEV; @@ -2636,6 +2637,14 @@ static int a6xx_gmu_iommu_cb_probe(struct a6xx_gmu_device *gmu, return -ENODEV; } + /* + * Disable stall on fault for the GMU context bank. + * This sets SCTLR.CFCFG = 0. + * Also note that, the smmu driver sets SCTLR.HUPCF = 0 by default. + */ + iommu_domain_set_attr(ctx->domain, + DOMAIN_ATTR_FAULT_MODEL_NO_STALL, &no_stall); + ret = iommu_attach_device(ctx->domain, &pdev->dev); if (!ret) { iommu_set_fault_handler(ctx->domain, handler, ctx);