Re: [PATCH v3 2/3] drm/gem-dma: Use the dma_*_attr API variant
From: Chen-Yu Tsai
Date: Fri Mar 27 2026 - 01:48:59 EST
On Thu, Mar 26, 2026 at 6:03 PM Chen-Yu Tsai <wenst@xxxxxxxxxxxx> wrote:
>
> From: Rob Herring <robh@xxxxxxxxxx>
>
> In preparation to allow DRM DMA users to adjust the DMA_ATTR_* flags,
> convert the DMA helper code to use the dma_*_attr APIs instead of the
> dma_*_wc variants.
>
> Only the DMA_ATTR_WRITE_COMBINE and DMA_ATTR_NO_WARN attributes are set
> in this commit, so there's no functional change.
>
> Update rcar_du_vsp_map_fb() to use dma_get_sgtable_attrs() instead of
> dma_get_sgtable().
>
> Also change the dma_free_wc() call in vc4_bo_purge() in the vc4 driver
> to use dma_free_attrs() to match. vc4_bo is a sub-class of
> drm_gem_dma_object.
>
> Sub-classes of |struct drm_gem_dma_object| can also set additional
> DMA_ATTR_* flags if they choose so. For example a sub-class could
> set DMA_ATTR_FORCE_CONTIGUOUS in certain cases.
>
> Signed-off-by: Rob Herring <robh@xxxxxxxxxx>
> [wenst@xxxxxxxxxxxx: Rebase onto renamed DMA helpers]
> [wenst@xxxxxxxxxxxx: Make vc4_bo_purge() use matching dma_free_attrs()]
> [wenst@xxxxxxxxxxxx: Make rcar_du_vsp_map_fb() use dma_get_sgtable_attrs()]
> [wenst@xxxxxxxxxxxx: Expand commit message to mention that sub-classes
> can set extra DMA_ATTR_* flags]
> Signed-off-by: Chen-Yu Tsai <wenst@xxxxxxxxxxxx>
>
> ---
> Changes since v2:
> - rcar-du: Change dma_get_sgtable() to dma_get_sgtable_attrs()
>
> Changes since v1:
> - Rebased onto renamed DMA helpers
> - Made vc4_bo_purge() use matching dma_free_attrs()
> - Expanded commit message to mention that sub-classes can set extra
> DMA_ATTR_* flags
> ---
> drivers/gpu/drm/drm_gem_dma_helper.c | 26 +++++++++++--------
> drivers/gpu/drm/renesas/rcar-du/rcar_du_vsp.c | 5 ++--
> drivers/gpu/drm/vc4/vc4_bo.c | 2 +-
> include/drm/drm_gem_dma_helper.h | 3 +++
> 4 files changed, 22 insertions(+), 14 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..a4896096e3bc 100644
> --- a/drivers/gpu/drm/renesas/rcar-du/rcar_du_vsp.c
> +++ b/drivers/gpu/drm/renesas/rcar-du/rcar_du_vsp.c
> @@ -291,8 +291,9 @@ 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);
> + ret = dma_get_sgtable_attrs(rcdu->dev, sgt, gem->vaddr,
> + gem->dma_addr, gem->base.size
> + gem->dma_attrs);
This doesn't compile. Sorry for the noise.