From: Daniel Vetter <daniel@ffwll.ch>
To: ville.syrjala@linux.intel.com
Cc: dri-devel@lists.freedesktop.org
Subject: Re: [PATCH 1/2] drm/fb-helper: Don't clobber the display palette when fbdev isn't bound
Date: Mon, 27 May 2013 17:50:05 +0200 [thread overview]
Message-ID: <20130527155005.GQ15743@phenom.ffwll.local> (raw)
In-Reply-To: <1369669497-18854-1-git-send-email-ville.syrjala@linux.intel.com>
On Mon, May 27, 2013 at 06:44:56PM +0300, ville.syrjala@linux.intel.com wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Perform the drm_fb_helper_is_bound() check to avoid clobbering the
> display palette of some other KMS client.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
You might want to mention that you're also fixing up the locking a bit ;-)
The lack of that would be much more obvious if the fbdev helper would use
the real kms gamma interface instead of it's own driver backdoor. But
that's a different patch to write.
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> ---
> drivers/gpu/drm/drm_fb_helper.c | 11 ++++++++++-
> 1 file changed, 10 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c
> index b78cbe7..1b6ca23 100644
> --- a/drivers/gpu/drm/drm_fb_helper.c
> +++ b/drivers/gpu/drm/drm_fb_helper.c
> @@ -626,12 +626,19 @@ static int setcolreg(struct drm_crtc *crtc, u16 red, u16 green,
> int drm_fb_helper_setcmap(struct fb_cmap *cmap, struct fb_info *info)
> {
> struct drm_fb_helper *fb_helper = info->par;
> + struct drm_device *dev = fb_helper->dev;
> struct drm_crtc_helper_funcs *crtc_funcs;
> u16 *red, *green, *blue, *transp;
> struct drm_crtc *crtc;
> int i, j, rc = 0;
> int start;
>
> + drm_modeset_lock_all(dev);
> + if (!drm_fb_helper_is_bound(fb_helper)) {
> + drm_modeset_unlock_all(dev);
> + return -EBUSY;
> + }
> +
> for (i = 0; i < fb_helper->crtc_count; i++) {
> crtc = fb_helper->crtc_info[i].mode_set.crtc;
> crtc_funcs = crtc->helper_private;
> @@ -654,10 +661,12 @@ int drm_fb_helper_setcmap(struct fb_cmap *cmap, struct fb_info *info)
>
> rc = setcolreg(crtc, hred, hgreen, hblue, start++, info);
> if (rc)
> - return rc;
> + goto out;
> }
> crtc_funcs->load_lut(crtc);
> }
> + out:
> + drm_modeset_unlock_all(dev);
> return rc;
> }
> EXPORT_SYMBOL(drm_fb_helper_setcmap);
> --
> 1.8.1.5
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
--
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
prev parent reply other threads:[~2013-05-27 15:50 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-05-27 15:44 [PATCH 1/2] drm/fb-helper: Don't clobber the display palette when fbdev isn't bound ville.syrjala
2013-05-27 15:44 ` [PATCH 2/2] drm/fb-helper: Don't load the display palette if the CRTC is disabled ville.syrjala
2013-05-27 15:51 ` Ville Syrjälä
2013-05-27 15:54 ` Daniel Vetter
2013-05-27 15:50 ` Daniel Vetter [this message]
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=20130527155005.GQ15743@phenom.ffwll.local \
--to=daniel@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=ville.syrjala@linux.intel.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.