Skip to content
Snippets Groups Projects
Commit eec8afec authored by Lucas Stach's avatar Lucas Stach Committed by Eric Engestrom
Browse files

etnaviv: drm: properly handle reviving BOs via a lookup


If a BO is removed from a cache bucket list via a lookup, we must
handle it in the same way as if a allocation from the cache happened:
tell valgrind that the buffer is active again and take a reference
to the etna_device, which the BO had given up while being in the
cache.

Cc: mesa-stable
Signed-off-by: default avatarLucas Stach <l.stach@pengutronix.de>
Tested-by: default avatarGuido Günther <agx@sigxcpu.org>
Reviewed-by: default avatarChristian Gmeiner <christian.gmeiner@gmail.com>
Part-of: <!14159>
(cherry picked from commit 1b1f8592)
parent d33e79e5
No related branches found
No related tags found
No related merge requests found
......@@ -940,7 +940,7 @@
"description": "etnaviv: drm: properly handle reviving BOs via a lookup",
"nominated": true,
"nomination_type": 0,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": null
},
......
......@@ -86,7 +86,11 @@ static struct etna_bo *lookup_bo(void *tbl, uint32_t handle)
bo = etna_bo_ref(entry->data);
/* don't break the bucket if this bo was found in one */
list_delinit(&bo->list);
if (list_is_linked(&bo->list)) {
VG_BO_OBTAIN(bo);
etna_device_ref(bo->dev);
list_delinit(&bo->list);
}
}
return bo;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment