All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sam Ravnborg <sam@ravnborg.org>
To: Thomas Zimmermann <tzimmermann@suse.de>
Cc: airlied@linux.ie, dri-devel@lists.freedesktop.org,
	paul@crapouillou.net, kraxel@redhat.com,
	emil.velikov@collabora.com, xinliang.liu@linaro.org,
	kong.kongxinwei@hisilicon.com, tomi.valkeinen@ti.com,
	chunkuang.hu@kernel.org, puck.chen@hisilicon.com,
	hdegoede@redhat.com, jsarha@ti.com, matthias.bgg@gmail.com,
	sean@poorly.run, zourongrong@gmail.com, tiantao6@hisilicon.com
Subject: Re: [PATCH v2 10/10] drm/fb-helper: Remove return value from drm_fbdev_generic_setup()
Date: Wed, 8 Apr 2020 10:50:44 +0200	[thread overview]
Message-ID: <20200408085044.GA23972@ravnborg.org> (raw)
In-Reply-To: <20200408082641.590-11-tzimmermann@suse.de>

Hi Thomas.

You missed my ack on the first 9 patches:
https://lore.kernel.org/dri-devel/20200407101354.GA12686@ravnborg.org/
Not that it matters as others have acked/reviewed them.

On Wed, Apr 08, 2020 at 10:26:41AM +0200, Thomas Zimmermann wrote:
> Generic fbdev emulation is a DRM client. Drivers should invoke the
> setup function, but not depend on its success. Hence remove the return
> value.
> 
> v2:
> 	* warn if fbdev device has not been registered yet
> 	* document the new behavior
> 	* convert the existing warning to the new dev_ interface
> 
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> Reviewed-by: Sam Ravnborg <sam@ravnborg.org>
> Reviewed-by: Noralf Trønnes <noralf@tronnes.org>
> Acked-by: Gerd Hoffmann <kraxel@redhat.com>
> ---
>  drivers/gpu/drm/drm_fb_helper.c | 25 +++++++++++++------------
>  include/drm/drm_fb_helper.h     |  5 +++--
>  2 files changed, 16 insertions(+), 14 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c
> index 165c8dab50797..97f5e43837486 100644
> --- a/drivers/gpu/drm/drm_fb_helper.c
> +++ b/drivers/gpu/drm/drm_fb_helper.c
> @@ -2169,7 +2169,9 @@ static const struct drm_client_funcs drm_fbdev_client_funcs = {
>   *                 @dev->mode_config.preferred_depth is used if this is zero.
>   *
>   * This function sets up generic fbdev emulation for drivers that supports
> - * dumb buffers with a virtual address and that can be mmap'ed.
> + * dumb buffers with a virtual address and that can be mmap'ed. It's supposed
> + * to run after the DRM driver registered the new DRM device with
> + * drm_dev_register().
OR maybe be more explicit - something like:
drm_fbdev_generic_setup() shall be called after the DRM is registered
with drm_dev_register().

Either way is fine.

	Sam

>   *
>   * Restore, hotplug events and teardown are all taken care of. Drivers that do
>   * suspend/resume need to call drm_fb_helper_set_suspend_unlocked() themselves.
> @@ -2186,29 +2188,30 @@ static const struct drm_client_funcs drm_fbdev_client_funcs = {
>   * Setup will be retried on the next hotplug event.
>   *
>   * The fbdev is destroyed by drm_dev_unregister().
> - *
> - * Returns:
> - * Zero on success or negative error code on failure.
>   */
> -int drm_fbdev_generic_setup(struct drm_device *dev, unsigned int preferred_bpp)
> +void drm_fbdev_generic_setup(struct drm_device *dev,
> +			     unsigned int preferred_bpp)
>  {
>  	struct drm_fb_helper *fb_helper;
>  	int ret;
>  
> -	WARN(dev->fb_helper, "fb_helper is already set!\n");
> +	drm_WARN(dev, !dev->registered, "Device has not been registered.\n");
> +	drm_WARN(dev, dev->fb_helper, "fb_helper is already set!\n");
>  
>  	if (!drm_fbdev_emulation)
> -		return 0;
> +		return;
>  
>  	fb_helper = kzalloc(sizeof(*fb_helper), GFP_KERNEL);
> -	if (!fb_helper)
> -		return -ENOMEM;
> +	if (!fb_helper) {
> +		drm_err(dev, "Failed to allocate fb_helper\n");
> +		return;
> +	}
>  
>  	ret = drm_client_init(dev, &fb_helper->client, "fbdev", &drm_fbdev_client_funcs);
>  	if (ret) {
>  		kfree(fb_helper);
>  		drm_err(dev, "Failed to register client: %d\n", ret);
> -		return ret;
> +		return;
>  	}
>  
>  	if (!preferred_bpp)
> @@ -2222,8 +2225,6 @@ int drm_fbdev_generic_setup(struct drm_device *dev, unsigned int preferred_bpp)
>  		drm_dbg_kms(dev, "client hotplug ret=%d\n", ret);
>  
>  	drm_client_register(&fb_helper->client);
> -
> -	return 0;
>  }
>  EXPORT_SYMBOL(drm_fbdev_generic_setup);
>  
> diff --git a/include/drm/drm_fb_helper.h b/include/drm/drm_fb_helper.h
> index 208dbf87afa3e..fb037be83997d 100644
> --- a/include/drm/drm_fb_helper.h
> +++ b/include/drm/drm_fb_helper.h
> @@ -269,7 +269,8 @@ int drm_fb_helper_debug_leave(struct fb_info *info);
>  void drm_fb_helper_lastclose(struct drm_device *dev);
>  void drm_fb_helper_output_poll_changed(struct drm_device *dev);
>  
> -int drm_fbdev_generic_setup(struct drm_device *dev, unsigned int preferred_bpp);
> +void drm_fbdev_generic_setup(struct drm_device *dev,
> +			     unsigned int preferred_bpp);
>  #else
>  static inline void drm_fb_helper_prepare(struct drm_device *dev,
>  					struct drm_fb_helper *helper,
> @@ -443,7 +444,7 @@ static inline void drm_fb_helper_output_poll_changed(struct drm_device *dev)
>  {
>  }
>  
> -static inline int
> +static inline void
>  drm_fbdev_generic_setup(struct drm_device *dev, unsigned int preferred_bpp)
>  {
>  	return 0;
> -- 
> 2.26.0
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

  reply	other threads:[~2020-04-08  8:50 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-08  8:26 [PATCH v2 00/10] Set up generic fbdev after registering device Thomas Zimmermann
2020-04-08  8:26 ` [PATCH v2 01/10] drm/ast: Set up fbdev after registering device; remove error checks Thomas Zimmermann
2020-04-08  8:26 ` [PATCH v2 02/10] drm/hibmc: Remove error check from fbdev setup Thomas Zimmermann
2020-04-08  8:26 ` [PATCH v2 03/10] drm/kirin: Set up fbdev after fully registering device Thomas Zimmermann
2020-04-08  8:26 ` [PATCH v2 04/10] drm/ingenic: Remove error check from fbdev setup Thomas Zimmermann
2020-04-08  8:26 ` [PATCH v2 05/10] drm/mediatek: " Thomas Zimmermann
2020-04-08  8:26 ` [PATCH v2 06/10] drm/mgag200: Set up fbdev after registering device; remove error checks Thomas Zimmermann
2020-04-08  8:26 ` [PATCH v2 07/10] drm/tilcdc: Set up fbdev after fully registering device Thomas Zimmermann
2020-04-08  8:26 ` [PATCH v2 08/10] drm/udl: Remove error check from fbdev setup Thomas Zimmermann
2020-04-08  8:26 ` [PATCH v2 09/10] drm/vboxvideo: Set up fbdev after registering device; remove error checks Thomas Zimmermann
2020-04-08  8:26 ` [PATCH v2 10/10] drm/fb-helper: Remove return value from drm_fbdev_generic_setup() Thomas Zimmermann
2020-04-08  8:50   ` Sam Ravnborg [this message]
2020-04-08  9:05     ` Thomas Zimmermann

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=20200408085044.GA23972@ravnborg.org \
    --to=sam@ravnborg.org \
    --cc=airlied@linux.ie \
    --cc=chunkuang.hu@kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=emil.velikov@collabora.com \
    --cc=hdegoede@redhat.com \
    --cc=jsarha@ti.com \
    --cc=kong.kongxinwei@hisilicon.com \
    --cc=kraxel@redhat.com \
    --cc=matthias.bgg@gmail.com \
    --cc=paul@crapouillou.net \
    --cc=puck.chen@hisilicon.com \
    --cc=sean@poorly.run \
    --cc=tiantao6@hisilicon.com \
    --cc=tomi.valkeinen@ti.com \
    --cc=tzimmermann@suse.de \
    --cc=xinliang.liu@linaro.org \
    --cc=zourongrong@gmail.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.