Loading drivers/gpu/drm/msm/msm_gem.c +2 −1 Original line number Diff line number Diff line Loading @@ -428,7 +428,7 @@ int msm_gem_get_iova_locked(struct drm_gem_object *obj, if (!ret && domain) { *iova = domain->iova; if (aspace && aspace->domain_attached) if (aspace && !msm_obj->in_active_list) msm_gem_add_obj_to_aspace_active_list(aspace, obj); } else { obj_remove_domain(domain); Loading Loading @@ -968,6 +968,7 @@ static int msm_gem_new_impl(struct drm_device *dev, INIT_LIST_HEAD(&msm_obj->domains); INIT_LIST_HEAD(&msm_obj->iova_list); msm_obj->aspace = NULL; msm_obj->in_active_list = false; list_add_tail(&msm_obj->mm_list, &priv->inactive_list); Loading drivers/gpu/drm/msm/msm_gem.h +1 −0 Original line number Diff line number Diff line Loading @@ -124,6 +124,7 @@ struct msm_gem_object { struct list_head iova_list; struct msm_gem_address_space *aspace; bool in_active_list; }; #define to_msm_bo(x) container_of(x, struct msm_gem_object, base) Loading drivers/gpu/drm/msm/msm_gem_vma.c +2 −0 Original line number Diff line number Diff line Loading @@ -71,6 +71,7 @@ static void smmu_aspace_add_to_active( { WARN_ON(!mutex_is_locked(&aspace->dev->struct_mutex)); list_move_tail(&msm_obj->iova_list, &aspace->active_list); msm_obj->in_active_list = true; } static void smmu_aspace_remove_from_active( Loading @@ -84,6 +85,7 @@ static void smmu_aspace_remove_from_active( list_for_each_entry_safe(msm_obj, next, &aspace->active_list, iova_list) { if (msm_obj == obj) { msm_obj->in_active_list = false; list_del(&msm_obj->iova_list); break; } Loading drivers/gpu/drm/msm/sde/sde_kms.c +1 −1 Original line number Diff line number Diff line Loading @@ -2151,8 +2151,8 @@ int sde_kms_mmu_attach(struct sde_kms *sde_kms, bool secure_only) aspace->mmu->funcs->attach(mmu, (const char **)iommu_ports, ARRAY_SIZE(iommu_ports)); msm_gem_aspace_domain_attach_detach_update(aspace, false); aspace->domain_attached = true; msm_gem_aspace_domain_attach_detach_update(aspace, false); } return 0; Loading Loading
drivers/gpu/drm/msm/msm_gem.c +2 −1 Original line number Diff line number Diff line Loading @@ -428,7 +428,7 @@ int msm_gem_get_iova_locked(struct drm_gem_object *obj, if (!ret && domain) { *iova = domain->iova; if (aspace && aspace->domain_attached) if (aspace && !msm_obj->in_active_list) msm_gem_add_obj_to_aspace_active_list(aspace, obj); } else { obj_remove_domain(domain); Loading Loading @@ -968,6 +968,7 @@ static int msm_gem_new_impl(struct drm_device *dev, INIT_LIST_HEAD(&msm_obj->domains); INIT_LIST_HEAD(&msm_obj->iova_list); msm_obj->aspace = NULL; msm_obj->in_active_list = false; list_add_tail(&msm_obj->mm_list, &priv->inactive_list); Loading
drivers/gpu/drm/msm/msm_gem.h +1 −0 Original line number Diff line number Diff line Loading @@ -124,6 +124,7 @@ struct msm_gem_object { struct list_head iova_list; struct msm_gem_address_space *aspace; bool in_active_list; }; #define to_msm_bo(x) container_of(x, struct msm_gem_object, base) Loading
drivers/gpu/drm/msm/msm_gem_vma.c +2 −0 Original line number Diff line number Diff line Loading @@ -71,6 +71,7 @@ static void smmu_aspace_add_to_active( { WARN_ON(!mutex_is_locked(&aspace->dev->struct_mutex)); list_move_tail(&msm_obj->iova_list, &aspace->active_list); msm_obj->in_active_list = true; } static void smmu_aspace_remove_from_active( Loading @@ -84,6 +85,7 @@ static void smmu_aspace_remove_from_active( list_for_each_entry_safe(msm_obj, next, &aspace->active_list, iova_list) { if (msm_obj == obj) { msm_obj->in_active_list = false; list_del(&msm_obj->iova_list); break; } Loading
drivers/gpu/drm/msm/sde/sde_kms.c +1 −1 Original line number Diff line number Diff line Loading @@ -2151,8 +2151,8 @@ int sde_kms_mmu_attach(struct sde_kms *sde_kms, bool secure_only) aspace->mmu->funcs->attach(mmu, (const char **)iommu_ports, ARRAY_SIZE(iommu_ports)); msm_gem_aspace_domain_attach_detach_update(aspace, false); aspace->domain_attached = true; msm_gem_aspace_domain_attach_detach_update(aspace, false); } return 0; Loading