diff options
author | Kalyan Thota <quic_kalyant@quicinc.com> | 2022-10-17 02:03:14 -0700 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2022-10-24 20:43:03 -0700 |
commit | 7fed172d015eb78efa3d1f9f6b7d7ba05a4a72e5 (patch) | |
tree | d46045207aa464d96d1976cefdb23ca94d131dcf | |
parent | fea6946acde2fbe8575e4c6f57b285ebf277658f (diff) | |
download | display-drivers-7fed172d015eb78efa3d1f9f6b7d7ba05a4a72e5.tar.gz |
disp: msm: sync pages for buffer of type cached
synchronize scatter/gather mapping for CPU and device
for CACHED msm_objs.
Change-Id: I6d653e05afbec24537a61bbd304b32fa0d07813c
Signed-off-by: Kalyan Thota <quic_kalyant@quicinc.com>
-rw-r--r-- | msm/msm_gem.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/msm/msm_gem.c b/msm/msm_gem.c index 99e2ca2c..cda2fd20 100644 --- a/msm/msm_gem.c +++ b/msm/msm_gem.c @@ -435,20 +435,20 @@ static int msm_gem_get_iova_locked(struct drm_gem_object *obj, { struct msm_gem_object *msm_obj = to_msm_bo(obj); struct msm_gem_vma *vma; + struct device *dev; int ret = 0; WARN_ON(!mutex_is_locked(&msm_obj->lock)); vma = lookup_vma(obj, aspace); + dev = msm_gem_get_aspace_device(aspace); if (!vma) { struct page **pages; - struct device *dev; struct dma_buf *dmabuf; bool reattach = false; unsigned long dma_map_attrs; - dev = msm_gem_get_aspace_device(aspace); if ((dev && obj->import_attach) && ((dev != obj->import_attach->dev) || msm_obj->obj_dirty)) { @@ -531,6 +531,10 @@ static int msm_gem_get_iova_locked(struct drm_gem_object *obj, msm_gem_add_obj_to_aspace_active_list(aspace, obj); mutex_unlock(&aspace->list_lock); } + if (dev && !dev_is_dma_coherent(dev) && (msm_obj->flags & MSM_BO_CACHED)){ + dma_sync_sg_for_device(dev, msm_obj->sgt->sgl, + msm_obj->sgt->nents, DMA_BIDIRECTIONAL); + } return 0; |