Loading drivers/iommu/msm_iommu-v1.c +1 −29 Original line number Diff line number Diff line Loading @@ -559,35 +559,9 @@ static void msm_iommu_assign_ASID(const struct msm_iommu_drvdata *iommu_drvdata, struct msm_iommu_ctx_drvdata *curr_ctx, struct msm_iommu_priv *priv) { unsigned int found = 0; void __iomem *cb_base = iommu_drvdata->cb_base; unsigned int i; unsigned int ncb = iommu_drvdata->ncb; struct msm_iommu_ctx_drvdata *tmp_drvdata; /* Find if this page table is used elsewhere, and re-use ASID */ if (!list_empty(&priv->list_attached)) { tmp_drvdata = list_first_entry(&priv->list_attached, struct msm_iommu_ctx_drvdata, attached_elm); ++iommu_drvdata->asid[tmp_drvdata->asid - 1]; curr_ctx->asid = tmp_drvdata->asid; found = 1; } /* If page table is new, find an unused ASID */ if (!found) { for (i = 0; i < ncb; ++i) { if (iommu_drvdata->asid[i] == 0) { ++iommu_drvdata->asid[i]; curr_ctx->asid = i + 1; found = 1; break; } } BUG_ON(!found); } curr_ctx->asid = curr_ctx->num; msm_iommu_set_ASID(cb_base, curr_ctx->num, curr_ctx->asid); } Loading Loading @@ -928,8 +902,6 @@ static void msm_iommu_detach_dev(struct iommu_domain *domain, SET_TLBIASID(iommu_drvdata->cb_base, ctx_drvdata->num, ctx_drvdata->asid); BUG_ON(iommu_drvdata->asid[ctx_drvdata->asid - 1] == 0); iommu_drvdata->asid[ctx_drvdata->asid - 1]--; ctx_drvdata->asid = -1; __reset_context(iommu_drvdata, ctx_drvdata->num); Loading drivers/iommu/msm_iommu_dev-v1.c +0 −9 Original line number Diff line number Diff line Loading @@ -200,15 +200,6 @@ static int msm_iommu_parse_dt(struct platform_device *pdev, for_each_available_child_of_node(pdev->dev.of_node, child) drvdata->ncb++; drvdata->asid = devm_kzalloc(&pdev->dev, drvdata->ncb * sizeof(int), GFP_KERNEL); if (!drvdata->asid) { pr_err("Unable to get memory for asid array\n"); ret = -ENOMEM; goto fail; } ret = of_property_read_string(pdev->dev.of_node, "label", &drvdata->name); if (ret) Loading include/linux/qcom_iommu.h +0 −2 Original line number Diff line number Diff line Loading @@ -100,7 +100,6 @@ struct msm_iommu_bfb_settings { * @list: List head to link all iommus together * @clk_reg_virt: Optional clock register virtual address. * @halt_enabled: Set to 1 if IOMMU halt is supported in the IOMMU, 0 otherwise. * @asid: List of ASID and their usage count (index is ASID value). * @ctx_attach_count: Count of how many context are attached. * @bus_client : Bus client needed to vote for bus bandwidth. * @needs_rem_spinlock : 1 if remote spinlock is needed, 0 otherwise Loading Loading @@ -130,7 +129,6 @@ struct msm_iommu_drvdata { struct list_head list; void __iomem *clk_reg_virt; int halt_enabled; int *asid; unsigned int ctx_attach_count; unsigned int bus_client; int needs_rem_spinlock; Loading Loading
drivers/iommu/msm_iommu-v1.c +1 −29 Original line number Diff line number Diff line Loading @@ -559,35 +559,9 @@ static void msm_iommu_assign_ASID(const struct msm_iommu_drvdata *iommu_drvdata, struct msm_iommu_ctx_drvdata *curr_ctx, struct msm_iommu_priv *priv) { unsigned int found = 0; void __iomem *cb_base = iommu_drvdata->cb_base; unsigned int i; unsigned int ncb = iommu_drvdata->ncb; struct msm_iommu_ctx_drvdata *tmp_drvdata; /* Find if this page table is used elsewhere, and re-use ASID */ if (!list_empty(&priv->list_attached)) { tmp_drvdata = list_first_entry(&priv->list_attached, struct msm_iommu_ctx_drvdata, attached_elm); ++iommu_drvdata->asid[tmp_drvdata->asid - 1]; curr_ctx->asid = tmp_drvdata->asid; found = 1; } /* If page table is new, find an unused ASID */ if (!found) { for (i = 0; i < ncb; ++i) { if (iommu_drvdata->asid[i] == 0) { ++iommu_drvdata->asid[i]; curr_ctx->asid = i + 1; found = 1; break; } } BUG_ON(!found); } curr_ctx->asid = curr_ctx->num; msm_iommu_set_ASID(cb_base, curr_ctx->num, curr_ctx->asid); } Loading Loading @@ -928,8 +902,6 @@ static void msm_iommu_detach_dev(struct iommu_domain *domain, SET_TLBIASID(iommu_drvdata->cb_base, ctx_drvdata->num, ctx_drvdata->asid); BUG_ON(iommu_drvdata->asid[ctx_drvdata->asid - 1] == 0); iommu_drvdata->asid[ctx_drvdata->asid - 1]--; ctx_drvdata->asid = -1; __reset_context(iommu_drvdata, ctx_drvdata->num); Loading
drivers/iommu/msm_iommu_dev-v1.c +0 −9 Original line number Diff line number Diff line Loading @@ -200,15 +200,6 @@ static int msm_iommu_parse_dt(struct platform_device *pdev, for_each_available_child_of_node(pdev->dev.of_node, child) drvdata->ncb++; drvdata->asid = devm_kzalloc(&pdev->dev, drvdata->ncb * sizeof(int), GFP_KERNEL); if (!drvdata->asid) { pr_err("Unable to get memory for asid array\n"); ret = -ENOMEM; goto fail; } ret = of_property_read_string(pdev->dev.of_node, "label", &drvdata->name); if (ret) Loading
include/linux/qcom_iommu.h +0 −2 Original line number Diff line number Diff line Loading @@ -100,7 +100,6 @@ struct msm_iommu_bfb_settings { * @list: List head to link all iommus together * @clk_reg_virt: Optional clock register virtual address. * @halt_enabled: Set to 1 if IOMMU halt is supported in the IOMMU, 0 otherwise. * @asid: List of ASID and their usage count (index is ASID value). * @ctx_attach_count: Count of how many context are attached. * @bus_client : Bus client needed to vote for bus bandwidth. * @needs_rem_spinlock : 1 if remote spinlock is needed, 0 otherwise Loading Loading @@ -130,7 +129,6 @@ struct msm_iommu_drvdata { struct list_head list; void __iomem *clk_reg_virt; int halt_enabled; int *asid; unsigned int ctx_attach_count; unsigned int bus_client; int needs_rem_spinlock; Loading