The rcar-du driver is directly calling dma_get_sgtable() on a drm_gem_dma_object. Not passing the dma_attrs field in may cause problems when DMA_ATTR_NO_KERNEL_MAPPING is added to the GEM DMA helpers gain support later.
Instead, use the drm_gem_dma_get_sg_table() helper to get the scatter gather table. Signed-off-by: Chen-Yu Tsai <[email protected]> --- Changes since v1: - new patch Not sure if we should add a helper like drm_fb_dma_get_gem_addr(). This seems to be the only driver that is using a scatter gather table to pass DMA addresses. --- drivers/gpu/drm/renesas/rcar-du/rcar_du_vsp.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/renesas/rcar-du/rcar_du_vsp.c b/drivers/gpu/drm/renesas/rcar-du/rcar_du_vsp.c index 94c22d2db197..6a62608ee3a9 100644 --- a/drivers/gpu/drm/renesas/rcar-du/rcar_du_vsp.c +++ b/drivers/gpu/drm/renesas/rcar-du/rcar_du_vsp.c @@ -291,10 +291,16 @@ int rcar_du_vsp_map_fb(struct rcar_du_vsp *vsp, struct drm_framebuffer *fb, dst = sg_next(dst); } } else { - ret = dma_get_sgtable(rcdu->dev, sgt, gem->vaddr, - gem->dma_addr, gem->base.size); - if (ret) + struct sg_table *ret_sgt; + + ret_sgt = drm_gem_dma_get_sg_table(gem); + if (IS_ERR(ret_sgt)) { + ret = PTR_ERR(ret_sgt); goto fail; + } + + memcpy(sgt, ret_sgt, sizeof(*sgt)); + kfree(ret_sgt); } ret = vsp1_du_map_sg(vsp->vsp, sgt); -- 2.53.0.851.ga537e3e6e9-goog
