[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <d2d6b84b-7463-483a-a634-396b5099ef56@oss.qualcomm.com>
Date: Fri, 21 Mar 2025 09:15:48 -0600
From: Jeff Hugo <jeff.hugo@....qualcomm.com>
To: Lizhi Hou <lizhi.hou@....com>, ogabbay@...nel.org,
jacek.lawrynowicz@...ux.intel.com, mario.limonciello@....com,
dri-devel@...ts.freedesktop.org
Cc: linux-kernel@...r.kernel.org, min.ma@....com, max.zhen@....com,
sonal.santan@....com, king.tam@....com
Subject: Re: [PATCH V1] accel/amdxdna: Add BO import and export
On 3/6/2025 11:03 AM, Lizhi Hou wrote:
> +struct drm_gem_object *
> +amdxdna_gem_prime_import(struct drm_device *dev, struct dma_buf *dma_buf)
> +{
> + struct dma_buf_attachment *attach;
> + struct drm_gem_object *gobj;
> + struct sg_table *sgt;
> + int ret;
> +
> + attach = dma_buf_attach(dma_buf, dev->dev);
> + if (IS_ERR(attach))
> + return ERR_CAST(attach);
> +
> + get_dma_buf(dma_buf);
> +
> + sgt = dma_buf_map_attachment_unlocked(attach, DMA_BIDIRECTIONAL);
> + if (IS_ERR(sgt)) {
> + ret = PTR_ERR(sgt);
> + goto fail_detach;
> + }
> +
> + gobj = drm_gem_shmem_prime_import_sg_table(dev, attach, sgt);
> + if (IS_ERR(gobj)) {
> + ret = PTR_ERR(gobj);
> + goto fail_unmap;
> + }
> +
> + gobj->import_attach = attach;
> + gobj->resv = dma_buf->resv;
> +
> + return gobj;
> +
> +fail_unmap:
> + dma_buf_unmap_attachment_unlocked(attach, sgt, DMA_BIDIRECTIONAL);
> +fail_detach:
> + dma_buf_detach(dma_buf, attach);
> + dma_buf_put(dma_buf);
You attach() and then get(), so normal "reverse order" cleanup would be
put(), then detach(). That is not what you do here. Should this be
reordered, or should you get() then attach() first?
Powered by blists - more mailing lists