Devicetree
 help / color / mirror / Atom feed
From: "Jernej Škrabec" <jernej.skrabec-gGgVlfcn5nU@public.gmane.org>
To: "Ondřej Jirman" <megi-DlDF6nMZSto@public.gmane.org>
Cc: maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org,
	wens-jdAy2FN1RRM@public.gmane.org,
	airlied-cv59FeDIM0c@public.gmane.org,
	robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org,
	mark.rutland-5wv7dgnIgG8@public.gmane.org,
	mturquette-rdvid1DuHRBWk0Htik3J/w@public.gmane.org,
	sboyd-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org,
	dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
	devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-clk-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
Subject: Re: [PATCH v3 06/16] drm/sun4i: Release exclusive clock lock when disabling TCON
Date: Thu, 08 Mar 2018 23:57:40 +0100	[thread overview]
Message-ID: <3764594.86uYqsI6mN@jernej-laptop> (raw)
In-Reply-To: <20180308224717.a6ieadihwh7u5rbu-9v8tmBix7cb9zxVx7UNMDg@public.gmane.org>

Hi,

Dne četrtek, 08. marec 2018 ob 23:47:17 CET je Ondřej Jirman napisal(a):
> Hi,
> 
> On Thu, Mar 01, 2018 at 10:34:32PM +0100, Jernej Skrabec wrote:
> > Currently exclusive TCON clock lock is never released, which, for
> > example, prevents changing resolution on HDMI.
> > 
> > In order to fix that, release clock when disabling TCON. TCON is always
> > disabled first before new mode is set.
> > 
> > Signed-off-by: Jernej Skrabec <jernej.skrabec-gGgVlfcn5nU@public.gmane.org>
> > ---
> > 
> >  drivers/gpu/drm/sun4i/sun4i_tcon.c | 6 ++++--
> >  1 file changed, 4 insertions(+), 2 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/sun4i/sun4i_tcon.c
> > b/drivers/gpu/drm/sun4i/sun4i_tcon.c index 1d714c06ec9d..7f6c4125c89f
> > 100644
> > --- a/drivers/gpu/drm/sun4i/sun4i_tcon.c
> > +++ b/drivers/gpu/drm/sun4i/sun4i_tcon.c
> > @@ -102,10 +102,12 @@ static void sun4i_tcon_channel_set_status(struct
> > sun4i_tcon *tcon, int channel,> 
> >  		return;
> >  	
> >  	}
> > 
> > -	if (enabled)
> > +	if (enabled) {
> > 
> >  		clk_prepare_enable(clk);
> > 
> > -	else
> > +	} else {
> > +		clk_rate_exclusive_put(clk);
> > 
> >  		clk_disable_unprepare(clk);
> > 
> > +	}
> > 
> >  }
> 
> At least in the linux-next/master I can't see clk_rate_exclusive_get call:
> 

It is in drm-misc/drm-misc-fixes:
https://cgit.freedesktop.org/drm/drm-misc/commit/?h=drm-misc-fixes&id=79d103a565d16b1893d990b2ee5e0fe71767759f

My patch is also applied in same branch, so there should be no issues while 
merging all those branches.

linux-next doesn't have either patches currently: https://git.kernel.org/pub/
scm/linux/kernel/git/next/linux-next.git/log/drivers/gpu/drm/sun4i

This is issue only if you manually apply one patch without the other.

Best regards,
Jernej

> $ git grep 'exclusive' linux-next/master -- drivers/gpu/drm/sun4i
> 
> linux-next/master:sun4i_hdmi.h:    * On sun5i the threshold is exclusive,
> i.e. does not include, linux-next/master:sun4i_tcon.c:          
> clk_rate_exclusive_put(clk); linux-next/master:sun4i_tcon.c:  
> clk_set_rate_exclusive(tcon->dclk, mode->crtc_clock * 1000);
> linux-next/master:sun4i_tcon.c:   clk_set_rate_exclusive(tcon->sclk1,
> mode->crtc_clock * 1000);
> 
> and the kernel complains too:
> 
> [  841.915161] ------------[ cut here ]------------
> [  841.915187] WARNING: CPU: 0 PID: 273 at
> /workspace/megous.com/orangepi-pc/linux-4.16/drivers/clk/clk.c:608
> clk_rate_exclusive_put+0x48/0x4c [  841.915194] CPU: 0 PID: 273 Comm: Xorg
> Not tainted 4.16.0-rc4-00268-gbac2ecf73ed0 #13 [  841.915196] Hardware
> name: Allwinner sun8i Family
> [  841.915217] [<c0228440>] (unwind_backtrace) from [<c0225b90>]
> (show_stack+0x10/0x14) [  841.915228] [<c0225b90>] (show_stack) from
> [<c0b094bc>] (dump_stack+0x88/0x9c) [  841.915237] [<c0b094bc>]
> (dump_stack) from [<c0240294>] (__warn+0xd4/0xf0) [  841.915244]
> [<c0240294>] (__warn) from [<c0240380>] (warn_slowpath_null+0x40/0x48) [ 
> 841.915250] [<c0240380>] (warn_slowpath_null) from [<c0619b6c>]
> (clk_rate_exclusive_put+0x48/0x4c) [  841.915261] [<c0619b6c>]
> (clk_rate_exclusive_put) from [<c0694624>]
> (sun4i_tcon_set_status+0x178/0x2f0) [  841.915269] [<c0694624>]
> (sun4i_tcon_set_status) from [<c06930c0>]
> (sun4i_crtc_atomic_disable+0x7c/0xe4) [  841.915279] [<c06930c0>]
> (sun4i_crtc_atomic_disable) from [<c06637fc>]
> (drm_atomic_helper_commit_modeset_disables+0x390/0x46c) [  841.915288]
> [<c06637fc>] (drm_atomic_helper_commit_modeset_disables) from [<c0664df4>]
> (drm_atomic_helper_commit_tail_rpm+0x18/0x64) [  841.915295] [<c0664df4>]
> (drm_atomic_helper_commit_tail_rpm) from [<c0664da8>]
> (commit_tail+0x40/0x6c) [  841.915302] [<c0664da8>] (commit_tail) from
> [<c06652b0>] (drm_atomic_helper_commit+0xbc/0x128) [  841.915311]
> [<c06652b0>] (drm_atomic_helper_commit) from [<c0668d40>]
> (restore_fbdev_mode_atomic+0x100/0x1fc) [  841.915319] [<c0668d40>]
> (restore_fbdev_mode_atomic) from [<c0668f1c>]
> (drm_fb_helper_dpms+0x50/0x130) [  841.915328] [<c0668f1c>]
> (drm_fb_helper_dpms) from [<c0669e9c>] (drm_fb_helper_blank+0x54/0x90) [ 
> 841.915337] [<c0669e9c>] (drm_fb_helper_blank) from [<c06088cc>]
> (fb_blank+0x54/0xa8) [  841.915343] [<c06088cc>] (fb_blank) from
> [<c0608c80>] (do_fb_ioctl+0x360/0x62c) [  841.915351] [<c0608c80>]
> (do_fb_ioctl) from [<c0362648>] (do_vfs_ioctl+0x9c/0x774) [  841.915358]
> [<c0362648>] (do_vfs_ioctl) from [<c0362d54>] (SyS_ioctl+0x34/0x58) [ 
> 841.915364] [<c0362d54>] (SyS_ioctl) from [<c0201120>]
> (ret_fast_syscall+0x0/0x4c) [  841.915368] Exception stack(0xe5fc5fa8 to
> 0xe5fc5ff0)
> [  841.915373] 5fa0:                   00674f10 00675460 0000000b 00004611
> 00000001 00000000 [  841.915379] 5fc0: 00674f10 00675460 00000001 00000036
> 00650474 00000000 006504a4 00675df8 [  841.915382] 5fe0: b61a502c be8acb2c
> b6192c38 b6b152ec
> [  841.915386] ---[ end trace fa81b956197707f8 ]---
> 
> It looks like clk_rate_exclusive_put inside sun4i_tcon_channel_set_status is
> called without first calling some function that would call
> clk_set_rate_exclusive, leading to unbalanced get/put calls.
> 
> regards,
>   o.
> 
> >  static void sun4i_tcon_lvds_set_status(struct sun4i_tcon *tcon,
> > 
> > --
> > 2.16.2
> > 
> > --
> > You received this message because you are subscribed to the Google Groups
> > "linux-sunxi" group. To unsubscribe from this group and stop receiving
> > emails from it, send an email to
> > linux-sunxi+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit
> > https://groups.google.com/d/optout.




-- 
You received this message because you are subscribed to the Google Groups "linux-sunxi" group.
To unsubscribe from this group and stop receiving emails from it, send an email to linux-sunxi+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit https://groups.google.com/d/optout.

  parent reply	other threads:[~2018-03-08 22:57 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-01 21:34 [PATCH v3 00/16] Implement H3/H5 HDMI driver Jernej Skrabec
2018-03-01 21:34 ` [PATCH v3 05/16] dt-bindings: display: sun4i-drm: Add compatibles for H3 HDMI pipeline Jernej Skrabec
2018-03-07 19:37   ` Rob Herring
     [not found] ` <20180301213442.16677-1-jernej.skrabec-gGgVlfcn5nU@public.gmane.org>
2018-03-01 21:34   ` [PATCH v3 01/16] clk: sunxi-ng: Add check for minimal rate to NM PLLs Jernej Skrabec
2018-03-01 21:34   ` [PATCH v3 02/16] clk: sunxi-ng: h3: h5: Add minimal rate for video PLL Jernej Skrabec
2018-03-01 21:34   ` [PATCH v3 03/16] clk: sunxi-ng: h3: h5: Allow some clocks to set parent rate Jernej Skrabec
2018-03-01 21:34   ` [PATCH v3 04/16] clk: sunxi-ng: h3: h5: export CLK_PLL_VIDEO Jernej Skrabec
2018-03-07 19:36     ` Rob Herring
2018-03-01 21:34   ` [PATCH v3 06/16] drm/sun4i: Release exclusive clock lock when disabling TCON Jernej Skrabec
     [not found]     ` <20180301213442.16677-7-jernej.skrabec-gGgVlfcn5nU@public.gmane.org>
2018-03-08 22:47       ` 'Ondřej Jirman' via linux-sunxi
     [not found]         ` <20180308224717.a6ieadihwh7u5rbu-9v8tmBix7cb9zxVx7UNMDg@public.gmane.org>
2018-03-08 22:57           ` Jernej Škrabec [this message]
2018-03-09  0:13             ` 'Ondřej Jirman' via linux-sunxi
     [not found]               ` <20180309001314.bu3zcv5gyqsc52fx-9v8tmBix7cb9zxVx7UNMDg@public.gmane.org>
2018-03-09  0:44                 ` 'Ondřej Jirman' via linux-sunxi
2018-03-09  6:19                   ` [linux-sunxi] " Jernej Škrabec
2018-03-09  7:55                     ` 'Ondřej Jirman' via linux-sunxi
2018-03-01 21:34   ` [PATCH v3 07/16] drm/sun4i: Add support for H3 display engine Jernej Skrabec
2018-03-01 21:34   ` [PATCH v3 08/16] drm/sun4i: Add support for H3 mixer 0 Jernej Skrabec
2018-03-01 21:34   ` [PATCH v3 09/16] drm/sun4i: Fix polarity configuration for DW HDMI PHY Jernej Skrabec
2018-03-01 21:34   ` [PATCH v3 10/16] drm/sun4i: Add support for variants to " Jernej Skrabec
2018-03-01 21:34   ` [PATCH v3 11/16] drm/sun4i: Move and expand DW HDMI PHY register macros Jernej Skrabec
2018-03-01 21:34   ` [PATCH v3 12/16] drm/sun4i: Add support for H3 HDMI PHY variant Jernej Skrabec
2018-03-01 21:34   ` [PATCH v3 13/16] drm/sun4i: Allow building on arm64 Jernej Skrabec
2018-03-01 21:34   ` [PATCH v3 14/16] ARM: dts: sunxi: h3/h5: Add HDMI pipeline Jernej Skrabec
2018-03-01 21:34   ` [PATCH v3 15/16] ARM: dts: sun8i: h3: Enable HDMI output on H3 boards Jernej Skrabec
     [not found]     ` <20180301213442.16677-16-jernej.skrabec-gGgVlfcn5nU@public.gmane.org>
2018-03-05 15:27       ` Joonas Kylmälä
2018-03-05 18:24         ` [linux-sunxi] " Jernej Škrabec
2018-03-05 20:43           ` Joonas Kylmälä
2018-03-01 21:34   ` [PATCH v3 16/16] ARM64: dts: sun50i: h5: Enable HDMI output on H5 boards Jernej Skrabec
2018-03-02  9:38 ` [PATCH v3 00/16] Implement H3/H5 HDMI driver Maxime Ripard

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=3764594.86uYqsI6mN@jernej-laptop \
    --to=jernej.skrabec-gggvlfcn5nu@public.gmane.org \
    --cc=airlied-cv59FeDIM0c@public.gmane.org \
    --cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
    --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
    --cc=linux-clk-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org \
    --cc=mark.rutland-5wv7dgnIgG8@public.gmane.org \
    --cc=maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org \
    --cc=megi-DlDF6nMZSto@public.gmane.org \
    --cc=mturquette-rdvid1DuHRBWk0Htik3J/w@public.gmane.org \
    --cc=robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
    --cc=sboyd-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
    --cc=wens-jdAy2FN1RRM@public.gmane.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