From 2c9e8db28d3572db7aedf89dc693dd8987d357ab Mon Sep 17 00:00:00 2001 From: Rob Clark Date: Thu, 22 Apr 2021 16:17:17 -0700 Subject: [PATCH] freedreno/drm: pipe should hold reference to device A more direct solution would be for bo's to have a reference to the device. But bo's are ref/unrefd more frequently. This avoids async submits unrefing a bo after the device handle- table is freed. Signed-off-by: Rob Clark Part-of: --- src/freedreno/drm/freedreno_pipe.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/freedreno/drm/freedreno_pipe.c b/src/freedreno/drm/freedreno_pipe.c index 8552c15d220..cc51a55d4df 100644 --- a/src/freedreno/drm/freedreno_pipe.c +++ b/src/freedreno/drm/freedreno_pipe.c @@ -53,7 +53,7 @@ fd_pipe_new2(struct fd_device *dev, enum fd_pipe_id id, uint32_t prio) return NULL; } - pipe->dev = dev; + pipe->dev = fd_device_ref(dev); pipe->id = id; p_atomic_set(&pipe->refcnt, 1); @@ -114,6 +114,7 @@ fd_pipe_del_locked(struct fd_pipe *pipe) if (!p_atomic_dec_zero(&pipe->refcnt)) return; fd_bo_del_locked(pipe->control_mem); + fd_device_del_locked(pipe->dev); pipe->funcs->destroy(pipe); }