Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ca1e8d59 authored by Veera Sundaram Sankaran's avatar Veera Sundaram Sankaran
Browse files

drm/msm: handle dma_map_attachment before physical address access



The scatter gather table might not be populated while trying
to access the dma_addr of secure-ui/secure-camera buffers.
The physical and dma address are accessible only through the
sg_table. Make sure dma_map_attachment is done before accessing
the dma/phy address.

Change-Id: I3efe953a45fdda155af570d89a92c968c0151d7f
Signed-off-by: default avatarVeera Sundaram Sankaran <veeras@codeaurora.org>
parent 439d44eb
Loading
Loading
Loading
Loading
+11 −5
Original line number Diff line number Diff line
@@ -323,14 +323,20 @@ uint64_t msm_gem_mmap_offset(struct drm_gem_object *obj)
dma_addr_t msm_gem_get_dma_addr(struct drm_gem_object *obj)
{
	struct msm_gem_object *msm_obj = to_msm_bo(obj);
	struct drm_device *dev = obj->dev;
	struct sg_table *sgt;

	if (IS_ERR_OR_NULL(msm_obj->sgt)) {
		dev_err(dev->dev, "invalid scatter/gather table\n");
	if (!msm_obj->sgt) {
		sgt = dma_buf_map_attachment(obj->import_attach,
						DMA_BIDIRECTIONAL);
		if (IS_ERR_OR_NULL(sgt)) {
			DRM_ERROR("dma_buf_map_attachment failure, err=%d\n",
					PTR_ERR(sgt));
			return 0;
		}
		msm_obj->sgt = sgt;
	}

	return sg_dma_address(msm_obj->sgt->sgl);
	return sg_phys(msm_obj->sgt->sgl);
}

static struct msm_gem_vma *add_vma(struct drm_gem_object *obj,