public inbox for drm-ai-reviews@public-inbox.freedesktop.org
 help / color / mirror / Atom feed
From: Thomas Zimmermann <tzimmermann@suse.de>
To: Chen-Yu Tsai <wenst@chromium.org>,
	Matthias Brugger <matthias.bgg@gmail.com>,
	AngeloGioacchino Del Regno
	<angelogioacchino.delregno@collabora.com>,
	Chun-Kuang Hu <chunkuang.hu@kernel.org>,
	Philipp Zabel <p.zabel@pengutronix.de>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Maxime Ripard <mripard@kernel.org>,
	Chen-Yu Tsai <wens@kernel.org>,
	Jernej Skrabec <jernej@kernel.org>,
	Samuel Holland <samuel@sholland.org>,
	David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>
Cc: linux-sunxi@lists.linux.dev,
	Paul Kocialkowski <paulk@sys-base.io>,
	linux-mediatek@lists.infradead.org,
	dri-devel@lists.freedesktop.org,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH RESEND 2/4] drm/gem-dma: Support dedicated DMA device for allocation and mapping
Date: Tue, 10 Mar 2026 09:02:57 +0100	[thread overview]
Message-ID: <c6d68974-fd3e-42a6-bdff-35f15d2a1a24@suse.de> (raw)
In-Reply-To: <20260310032511.2545500-3-wenst@chromium.org>



Am 10.03.26 um 04:25 schrieb Chen-Yu Tsai:
> Support for a dedicated DMA device for prime imports was added in commit
> 143ec8d3f939 ("drm/prime: Support dedicated DMA device for dma-buf imports").
> This allowed the DRM driver to provide a dedicated DMA device when its
> own underlying device was not capable of DMA, for example when it is a
> USB device (the original target) or a virtual device. The latter case is
> common on embedded SoCs, on which the display pipeline is composed of
> various fixed function blocks, and the DRM device is simply a made-up
> device, an address space managing the routing between the blocks, or
> whichever block the implementor thought made sense at the time. The
> point is that the chosen device is often not the actual device doing
> the DMA. Various drivers have used workarounds or reimplemented the
> GEM DMA helpers to get the DMA addresses and IOMMUs to work correctly.
>
> Add support for the dedicated DMA device to the GEM DMA helpers.
>
> No existing driver currently uses the GEM DMA helpers and calls
> drm_dev_set_dma_dev() to set a dedicated DMA device, so no existing
> users should be affected.

In these patches (or at least the series' cover letter) you should 
mention that drm_dev_dma_dev() returns the regular device if no DMA 
device has been set.

>
> Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>

Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>

> ---
>   drivers/gpu/drm/drm_gem_dma_helper.c | 21 ++++++++++++---------
>   1 file changed, 12 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_gem_dma_helper.c b/drivers/gpu/drm/drm_gem_dma_helper.c
> index ecb9746f4da8..70f83e464476 100644
> --- a/drivers/gpu/drm/drm_gem_dma_helper.c
> +++ b/drivers/gpu/drm/drm_gem_dma_helper.c
> @@ -146,12 +146,13 @@ struct drm_gem_dma_object *drm_gem_dma_create(struct drm_device *drm,
>   		return dma_obj;
>   
>   	if (dma_obj->map_noncoherent) {
> -		dma_obj->vaddr = dma_alloc_noncoherent(drm->dev, size,
> +		dma_obj->vaddr = dma_alloc_noncoherent(drm_dev_dma_dev(drm),
> +						       size,
>   						       &dma_obj->dma_addr,
>   						       DMA_TO_DEVICE,
>   						       GFP_KERNEL | __GFP_NOWARN);
>   	} else {
> -		dma_obj->vaddr = dma_alloc_wc(drm->dev, size,
> +		dma_obj->vaddr = dma_alloc_wc(drm_dev_dma_dev(drm), size,
>   					      &dma_obj->dma_addr,
>   					      GFP_KERNEL | __GFP_NOWARN);
>   	}
> @@ -236,12 +237,14 @@ void drm_gem_dma_free(struct drm_gem_dma_object *dma_obj)
>   		drm_prime_gem_destroy(gem_obj, dma_obj->sgt);
>   	} else if (dma_obj->vaddr) {
>   		if (dma_obj->map_noncoherent)
> -			dma_free_noncoherent(gem_obj->dev->dev, dma_obj->base.size,
> +			dma_free_noncoherent(drm_dev_dma_dev(gem_obj->dev),
> +					     dma_obj->base.size,
>   					     dma_obj->vaddr, dma_obj->dma_addr,
>   					     DMA_TO_DEVICE);
>   		else
> -			dma_free_wc(gem_obj->dev->dev, dma_obj->base.size,
> -				    dma_obj->vaddr, dma_obj->dma_addr);
> +			dma_free_wc(drm_dev_dma_dev(gem_obj->dev),
> +				    dma_obj->base.size, dma_obj->vaddr,
> +				    dma_obj->dma_addr);
>   	}
>   
>   	drm_gem_object_release(gem_obj);
> @@ -432,7 +435,7 @@ struct sg_table *drm_gem_dma_get_sg_table(struct drm_gem_dma_object *dma_obj)
>   	if (!sgt)
>   		return ERR_PTR(-ENOMEM);
>   
> -	ret = dma_get_sgtable(obj->dev->dev, sgt, dma_obj->vaddr,
> +	ret = dma_get_sgtable(drm_dev_dma_dev(obj->dev), sgt, dma_obj->vaddr,
>   			      dma_obj->dma_addr, obj->size);
>   	if (ret < 0)
>   		goto out;
> @@ -539,12 +542,12 @@ int drm_gem_dma_mmap(struct drm_gem_dma_object *dma_obj, struct vm_area_struct *
>   	if (dma_obj->map_noncoherent) {
>   		vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
>   
> -		ret = dma_mmap_pages(dma_obj->base.dev->dev,
> +		ret = dma_mmap_pages(drm_dev_dma_dev(dma_obj->base.dev),
>   				     vma, vma->vm_end - vma->vm_start,
>   				     virt_to_page(dma_obj->vaddr));
>   	} else {
> -		ret = dma_mmap_wc(dma_obj->base.dev->dev, vma, dma_obj->vaddr,
> -				  dma_obj->dma_addr,
> +		ret = dma_mmap_wc(drm_dev_dma_dev(dma_obj->base.dev), vma,
> +				  dma_obj->vaddr, dma_obj->dma_addr,
>   				  vma->vm_end - vma->vm_start);
>   	}
>   	if (ret)

-- 
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstr. 146, 90461 Nürnberg, Germany, www.suse.com
GF: Jochen Jaser, Andrew McDonald, Werner Knoblich, (HRB 36809, AG Nürnberg)



  reply	other threads:[~2026-03-10  8:03 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-10  3:25 [PATCH RESEND 0/4] drm/gem-dma: Support dedicated DMA device for allocation Chen-Yu Tsai
2026-03-10  3:25 ` [PATCH RESEND 1/4] drm/prime: Limit scatter list size with dedicated DMA device Chen-Yu Tsai
2026-03-10  8:00   ` Thomas Zimmermann
2026-03-11  3:45   ` Claude review: " Claude Code Review Bot
2026-03-10  3:25 ` [PATCH RESEND 2/4] drm/gem-dma: Support dedicated DMA device for allocation and mapping Chen-Yu Tsai
2026-03-10  8:02   ` Thomas Zimmermann [this message]
2026-03-11  3:45   ` Claude review: " Claude Code Review Bot
2026-03-10  3:25 ` [PATCH RESEND 3/4] drm/mediatek: Set dedicated DMA device and drop custom GEM callbacks Chen-Yu Tsai
2026-03-10  8:21   ` Thomas Zimmermann
2026-03-11  3:45   ` Claude review: " Claude Code Review Bot
2026-03-10  3:25 ` [PATCH RESEND 4/4] drm/sun4i: Use backend/mixer as dedicated DMA device Chen-Yu Tsai
2026-03-11  3:45   ` Claude review: " Claude Code Review Bot
2026-03-10  7:56 ` [PATCH RESEND 0/4] drm/gem-dma: Support dedicated DMA device for allocation Thomas Zimmermann
2026-03-11  3:45 ` Claude review: " Claude Code Review Bot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=c6d68974-fd3e-42a6-bdff-35f15d2a1a24@suse.de \
    --to=tzimmermann@suse.de \
    --cc=airlied@gmail.com \
    --cc=angelogioacchino.delregno@collabora.com \
    --cc=chunkuang.hu@kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=jernej@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mediatek@lists.infradead.org \
    --cc=linux-sunxi@lists.linux.dev \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=matthias.bgg@gmail.com \
    --cc=mripard@kernel.org \
    --cc=p.zabel@pengutronix.de \
    --cc=paulk@sys-base.io \
    --cc=samuel@sholland.org \
    --cc=simona@ffwll.ch \
    --cc=wens@kernel.org \
    --cc=wenst@chromium.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox