All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sui jingfeng <suijingfeng@loongson.cn>
To: Thomas Zimmermann <tzimmermann@suse.de>,
	javierm@redhat.com, daniel@ffwll.ch, airlied@gmail.com,
	mripard@kernel.org, maarten.lankhorst@linux.intel.com,
	zackr@vmware.com, kraxel@redhat.com,
	dri-devel@lists.freedesktop.org,
	virtualization@lists.linux-foundation.org,
	linux-graphics-maintainer@vmware.com
Subject: Re: [v2,7/8] drm/fb-helper: Consolidate CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM
Date: Wed, 22 Mar 2023 00:22:25 +0800	[thread overview]
Message-ID: <93c89ccc-8c32-586b-ea90-a99de495b358@loongson.cn> (raw)
In-Reply-To: <20230320150751.20399-8-tzimmermann@suse.de>

Tested-by: Sui Jingfeng<suijingfeng@loongson.cn>

On 2023/3/20 23:07, Thomas Zimmermann wrote:
> Consolidate all handling of CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM by
> making the module parameter optional in drm_fb_helper.c.
>
> Without the config option, modules can set smem_start in struct
> fb_info for internal usage, but not export if to userspace. The
> address can only be exported by enabling the option and setting
> the module parameter. Also update the comment.
>
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
> Acked-by: Zack Rusin <zackr@vmware.com>
> ---
>   drivers/gpu/drm/drm_fb_helper.c | 22 ++++++++--------------
>   drivers/gpu/drm/drm_fbdev_dma.c |  9 +--------
>   include/drm/drm_fb_helper.h     |  9 ---------
>   3 files changed, 9 insertions(+), 31 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c
> index bb0b25209b3e..63ec95e86d0e 100644
> --- a/drivers/gpu/drm/drm_fb_helper.c
> +++ b/drivers/gpu/drm/drm_fb_helper.c
> @@ -60,16 +60,17 @@ MODULE_PARM_DESC(drm_fbdev_overalloc,
>    * In order to keep user-space compatibility, we want in certain use-cases
>    * to keep leaking the fbdev physical address to the user-space program
>    * handling the fbdev buffer.
> - * This is a bad habit essentially kept into closed source opengl driver
> - * that should really be moved into open-source upstream projects instead
> - * of using legacy physical addresses in user space to communicate with
> - * other out-of-tree kernel modules.
> + *
> + * This is a bad habit, essentially kept to support closed-source OpenGL
> + * drivers that should really be moved into open-source upstream projects
> + * instead of using legacy physical addresses in user space to communicate
> + * with other out-of-tree kernel modules.
>    *
>    * This module_param *should* be removed as soon as possible and be
>    * considered as a broken and legacy behaviour from a modern fbdev device.
>    */
> -#if IS_ENABLED(CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM)
>   static bool drm_leak_fbdev_smem;
> +#if IS_ENABLED(CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM)
>   module_param_unsafe(drm_leak_fbdev_smem, bool, 0600);
>   MODULE_PARM_DESC(drm_leak_fbdev_smem,
>   		 "Allow unsafe leaking fbdev physical smem address [default=false]");
> @@ -1983,10 +1984,6 @@ static int drm_fb_helper_single_fb_probe(struct drm_fb_helper *fb_helper)
>   		return ret;
>   	}
>   
> -#if IS_ENABLED(CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM)
> -	fb_helper->hint_leak_smem_start = drm_leak_fbdev_smem;
> -#endif
> -
>   	/* push down into drivers */
>   	ret = (*fb_helper->funcs->fb_probe)(fb_helper, &sizes);
>   	if (ret < 0)
> @@ -2185,11 +2182,8 @@ __drm_fb_helper_initial_config_and_unlock(struct drm_fb_helper *fb_helper)
>   
>   	info = fb_helper->info;
>   	info->var.pixclock = 0;
> -	/* Shamelessly allow physical address leaking to userspace */
> -#if IS_ENABLED(CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM)
> -	if (!fb_helper->hint_leak_smem_start)
> -#endif
> -		/* don't leak any physical addresses to userspace */
> +
> +	if (!drm_leak_fbdev_smem)
>   		info->flags |= FBINFO_HIDE_SMEM_START;
>   
>   	/* Need to drop locks to avoid recursive deadlock in
> diff --git a/drivers/gpu/drm/drm_fbdev_dma.c b/drivers/gpu/drm/drm_fbdev_dma.c
> index cf553ac12a0f..728deffcc0d9 100644
> --- a/drivers/gpu/drm/drm_fbdev_dma.c
> +++ b/drivers/gpu/drm/drm_fbdev_dma.c
> @@ -136,16 +136,9 @@ static int drm_fbdev_dma_helper_fb_probe(struct drm_fb_helper *fb_helper,
>   		info->flags |= FBINFO_READS_FAST; /* signal caching */
>   	info->screen_size = sizes->surface_height * fb->pitches[0];
>   	info->screen_buffer = map.vaddr;
> +	info->fix.smem_start = page_to_phys(virt_to_page(info->screen_buffer));
>   	info->fix.smem_len = info->screen_size;
>   
> -#if IS_ENABLED(CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM)
> -	/*
> -	 * Shamelessly leak the physical address to user-space.
> -	 */
> -	if (fb_helper->hint_leak_smem_start && !info->fix.smem_start)
> -		info->fix.smem_start = page_to_phys(virt_to_page(info->screen_buffer));
> -#endif
> -
>   	return 0;
>   
>   err_drm_client_buffer_vunmap:
> diff --git a/include/drm/drm_fb_helper.h b/include/drm/drm_fb_helper.h
> index c5822ec2fdd1..72032c354a30 100644
> --- a/include/drm/drm_fb_helper.h
> +++ b/include/drm/drm_fb_helper.h
> @@ -195,15 +195,6 @@ struct drm_fb_helper {
>   	 */
>   	int preferred_bpp;
>   
> -	/**
> -	 * @hint_leak_smem_start:
> -	 *
> -	 * Hint to the fbdev emulation to store the framebuffer's physical
> -	 * address in struct &fb_info.fix.smem_start. If the hint is unset,
> -	 * the smem_start field should always be cleared to zero.
> -	 */
> -	bool hint_leak_smem_start;
> -
>   #ifdef CONFIG_FB_DEFERRED_IO
>   	/**
>   	 * @fbdefio:


  reply	other threads:[~2023-03-21 16:22 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-20 15:07 [PATCH v2 0/8] drm/fbdev-generic: Mandatory shadow buffering Thomas Zimmermann
2023-03-20 15:07 ` Thomas Zimmermann
2023-03-20 15:07 ` [PATCH v2 1/8] drm/fbdev-generic: Always use " Thomas Zimmermann
2023-03-20 15:07   ` Thomas Zimmermann
2023-03-21 15:23   ` [v2,1/8] " Sui jingfeng
2023-03-21 19:12     ` Thomas Zimmermann
2023-03-21 19:12       ` Thomas Zimmermann
2023-03-22  4:24   ` Sui Jingfeng
2023-03-20 15:07 ` [PATCH v2 2/8] drm/fbdev-generic: Remove unused prefer_shadow_fbdev flag Thomas Zimmermann
2023-03-20 15:07   ` Thomas Zimmermann
2023-03-21 12:09   ` [v2,2/8] " Sui jingfeng
2023-03-20 15:07 ` [PATCH v2 3/8] drm/fb-helper: Export drm_fb_helper_release_info() Thomas Zimmermann
2023-03-20 15:07   ` Thomas Zimmermann
2023-03-21 16:34   ` [v2,3/8] " Sui jingfeng
2023-03-20 15:07 ` [PATCH v2 4/8] drm/fb-helper: Support smem_len in deferred I/O Thomas Zimmermann
2023-03-20 15:07   ` Thomas Zimmermann
2023-03-20 16:31   ` Javier Martinez Canillas
2023-03-22  7:39   ` [v2,4/8] " Sui Jingfeng
2023-03-20 15:07 ` [PATCH v2 5/8] drm/fbdev-generic: Set screen size to size of GEM buffer Thomas Zimmermann
2023-03-20 15:07   ` Thomas Zimmermann
2023-03-20 16:32   ` Javier Martinez Canillas
2023-03-22  7:28   ` [v2, " Sui Jingfeng
2023-03-20 15:07 ` [PATCH v2 6/8] drm/fbdev-generic: Clean up after failed probing Thomas Zimmermann
2023-03-20 15:07   ` Thomas Zimmermann
2023-03-22  7:26   ` [v2,6/8] " Sui Jingfeng
2023-03-20 15:07 ` [PATCH v2 7/8] drm/fb-helper: Consolidate CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM Thomas Zimmermann
2023-03-20 15:07   ` Thomas Zimmermann
2023-03-21 16:22   ` Sui jingfeng [this message]
2023-03-20 15:07 ` [PATCH v2 8/8] drm/fbdev-generic: Rename symbols Thomas Zimmermann
2023-03-20 15:07   ` Thomas Zimmermann
2023-03-21 16:07   ` [v2,8/8] " Sui jingfeng

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=93c89ccc-8c32-586b-ea90-a99de495b358@loongson.cn \
    --to=suijingfeng@loongson.cn \
    --cc=airlied@gmail.com \
    --cc=daniel@ffwll.ch \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=javierm@redhat.com \
    --cc=kraxel@redhat.com \
    --cc=linux-graphics-maintainer@vmware.com \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=mripard@kernel.org \
    --cc=tzimmermann@suse.de \
    --cc=virtualization@lists.linux-foundation.org \
    --cc=zackr@vmware.com \
    /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.