All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Zimmermann <tzimmermann@suse.de>
To: lanzano.alex@gmail.com, maarten.lankhorst@linux.intel.com,
	mripard@kernel.org, airlied@gmail.com, simona@ffwll.ch
Cc: dri-devel@lists.freedesktop.org
Subject: Re: [PATCH] drm/repaper: Do not access GEM-DMA vaddr directly
Date: Mon, 7 Jul 2025 15:36:15 +0200	[thread overview]
Message-ID: <22582820-eb63-4438-a3da-98ac8f3fdc93@suse.de> (raw)
In-Reply-To: <20250627152422.8399-1-tzimmermann@suse.de>

ping for a review

Am 27.06.25 um 17:24 schrieb Thomas Zimmermann:
> Use DRM's shadow-plane helper to map and access the GEM object's buffer
> within kernel address space. Encasulates the vmap logic in the GEM-DMA
> helpers.
>
> The repaper driver currently reads the vaddr field from the GME buffer
> object directly. This only works because GEM code 'automagically' sets
> vaddr.
>
> Shadow-plane helpers perform the same steps, but with correct abstraction
> behind drm_gem_vmap(). The shadow-plane state provides the buffer address
> in kernel address space and the format-conversion state.
>
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> ---
>   drivers/gpu/drm/tiny/repaper.c | 16 +++++++---------
>   1 file changed, 7 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/gpu/drm/tiny/repaper.c b/drivers/gpu/drm/tiny/repaper.c
> index 5c3b51eb0a97..4824f863fdba 100644
> --- a/drivers/gpu/drm/tiny/repaper.c
> +++ b/drivers/gpu/drm/tiny/repaper.c
> @@ -510,13 +510,12 @@ static void repaper_get_temperature(struct repaper_epd *epd)
>   	epd->factored_stage_time = epd->stage_time * factor10x / 10;
>   }
>   
> -static int repaper_fb_dirty(struct drm_framebuffer *fb,
> +static int repaper_fb_dirty(struct drm_framebuffer *fb, const struct iosys_map *vmap,
>   			    struct drm_format_conv_state *fmtcnv_state)
>   {
> -	struct drm_gem_dma_object *dma_obj = drm_fb_dma_get_gem_obj(fb, 0);
>   	struct repaper_epd *epd = drm_to_epd(fb->dev);
>   	unsigned int dst_pitch = 0;
> -	struct iosys_map dst, vmap;
> +	struct iosys_map dst;
>   	struct drm_rect clip;
>   	int idx, ret = 0;
>   	u8 *buf = NULL;
> @@ -546,8 +545,7 @@ static int repaper_fb_dirty(struct drm_framebuffer *fb,
>   		goto out_free;
>   
>   	iosys_map_set_vaddr(&dst, buf);
> -	iosys_map_set_vaddr(&vmap, dma_obj->vaddr);
> -	drm_fb_xrgb8888_to_mono(&dst, &dst_pitch, &vmap, fb, &clip, fmtcnv_state);
> +	drm_fb_xrgb8888_to_mono(&dst, &dst_pitch, vmap, fb, &clip, fmtcnv_state);
>   
>   	drm_gem_fb_end_cpu_access(fb, DMA_FROM_DEVICE);
>   
> @@ -832,16 +830,15 @@ static void repaper_pipe_update(struct drm_simple_display_pipe *pipe,
>   				struct drm_plane_state *old_state)
>   {
>   	struct drm_plane_state *state = pipe->plane.state;
> -	struct drm_format_conv_state fmtcnv_state = DRM_FORMAT_CONV_STATE_INIT;
> +	struct drm_shadow_plane_state *shadow_plane_state = to_drm_shadow_plane_state(state);
>   	struct drm_rect rect;
>   
>   	if (!pipe->crtc.state->active)
>   		return;
>   
>   	if (drm_atomic_helper_damage_merged(old_state, state, &rect))
> -		repaper_fb_dirty(state->fb, &fmtcnv_state);
> -
> -	drm_format_conv_state_release(&fmtcnv_state);
> +		repaper_fb_dirty(state->fb, shadow_plane_state->data,
> +				 &shadow_plane_state->fmtcnv_state);
>   }
>   
>   static const struct drm_simple_display_pipe_funcs repaper_pipe_funcs = {
> @@ -849,6 +846,7 @@ static const struct drm_simple_display_pipe_funcs repaper_pipe_funcs = {
>   	.enable = repaper_pipe_enable,
>   	.disable = repaper_pipe_disable,
>   	.update = repaper_pipe_update,
> +	DRM_GEM_SIMPLE_DISPLAY_PIPE_SHADOW_PLANE_FUNCS,
>   };
>   
>   static int repaper_connector_get_modes(struct drm_connector *connector)

-- 
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstrasse 146, 90461 Nuernberg, Germany
GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman
HRB 36809 (AG Nuernberg)


  reply	other threads:[~2025-07-07 13:36 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-06-27 15:24 [PATCH] drm/repaper: Do not access GEM-DMA vaddr directly Thomas Zimmermann
2025-07-07 13:36 ` Thomas Zimmermann [this message]
2025-07-11 13:00 ` Javier Martinez Canillas

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=22582820-eb63-4438-a3da-98ac8f3fdc93@suse.de \
    --to=tzimmermann@suse.de \
    --cc=airlied@gmail.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=lanzano.alex@gmail.com \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=mripard@kernel.org \
    --cc=simona@ffwll.ch \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.