[PATCH] drm/amdgpu: Fix always_valid bos multiple LRU insertions.
Alex Deucher
alexdeucher at gmail.com
Thu Feb 1 04:18:06 UTC 2018
On Wed, Jan 31, 2018 at 7:58 AM, Bas Nieuwenhuizen <basni at chromium.org> wrote:
> If these bos are evicted and are in the validated list
> things blow up, so do not put them in there. Notably,
> that tries to add the bo to the LRU twice, which results
> in a BUG_ON in ttm_bo.c.
>
> While for the bo_list an alternative would be to not allow
> always valid bos in there, that does not work for the user
> fence.
>
> v2: Fixed whitespace issue pointed out by checkpatch.pl
>
> Signed-off-by: Bas Nieuwenhuizen <basni at chromium.org>
> Reviewed-by: Christian König <christian.koenig at amd.com>
Applied. thanks!
Alex
> ---
>
> Minor whitespace fix, sorry for the noise ...
> drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c | 6 ++++--
> drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 2 +-
> 2 files changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c
> index 59089e027f4d8..95839d33af01d 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c
> @@ -233,8 +233,10 @@ void amdgpu_bo_list_get_list(struct amdgpu_bo_list *list,
> for (i = 0; i < list->num_entries; i++) {
> unsigned priority = list->array[i].priority;
>
> - list_add_tail(&list->array[i].tv.head,
> - &bucket[priority]);
> + if (!list->array[i].robj->parent)
> + list_add_tail(&list->array[i].tv.head,
> + &bucket[priority]);
> +
> list->array[i].user_pages = NULL;
> }
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
> index f7fceb63413c9..cb3044258b352 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
> @@ -528,7 +528,7 @@ static int amdgpu_cs_parser_bos(struct amdgpu_cs_parser *p,
> INIT_LIST_HEAD(&duplicates);
> amdgpu_vm_get_pd_bo(&fpriv->vm, &p->validated, &p->vm_pd);
>
> - if (p->uf_entry.robj)
> + if (p->uf_entry.robj && !p->uf_entry.robj->parent)
> list_add(&p->uf_entry.tv.head, &p->validated);
>
> while (1) {
> --
> 2.16.0.rc1.238.g530d649a79-goog
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
More information about the amd-gfx
mailing list