Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1243043 > unrolled thread

Re: [BUG] RCU stall in cursor_timer_handler

Started byAlistair Popple <alistair@popple.id.au>
First post2015-10-09 07:40 +0200
Last post2015-10-09 23:20 +0200
Articles 3 — 3 participants

Back to article view | Back to linux.kernel

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  Re: [BUG] RCU stall in cursor_timer_handler Alistair Popple <alistair@popple.id.au> - 2015-10-09 07:40 +0200
    [PATCH] fbcon: initialize blink interval before calling fb_set_par Scot Doyle <lkml14@scotdoyle.com> - 2015-10-09 17:10 +0200
      Re: [PATCH] fbcon: initialize blink interval before calling  fb_set_par Benjamin Herrenschmidt <benh@kernel.crashing.org> - 2015-10-09 23:20 +0200

#1243043 — Re: [BUG] RCU stall in cursor_timer_handler

FromAlistair Popple <alistair@popple.id.au>
Date2015-10-09 07:40 +0200
SubjectRe: [BUG] RCU stall in cursor_timer_handler
Message-ID<qhyzo-1e0-15@gated-at.bofh.it>
Hi Scot,

On Sat, 3 Oct 2015 05:12:15 Scot Doyle wrote:
> On Sat, 3 Oct 2015, Alistair Popple wrote:
> > Hi,
> > 
> > We have been intermittently seeing the below RCU stall at boot on a 
> > PPC64LE 4.2.1 kernel which has been preventing the system from booting.
> > Further investigation indicates that ops->cur_blink_jiffies is 
> > potentially being used uninitialised in cursor_timer_handler():
> > 
> > static void cursor_timer_handler(unsigned long dev_addr)
> > {
> > 	struct fb_info *info = (struct fb_info *) dev_addr;
> > 	struct fbcon_ops *ops = info->fbcon_par;
> > 
> > 	queue_work(system_power_efficient_wq, &info->queue);
> > 	mod_timer(&ops->cursor_timer, jiffies + ops->cur_blink_jiffies);
> > }
> ...
> 
> 
> Hi Alistair, thanks so much for the detailed report. Does this patch 
> correct the stalls?

Sorry for the delay getting back to you. I have tested this patch and have not 
observed the stall again after 71 boots of the system (usually the issue would 
occur every couple of boots), so it seems to have solved the problem as far as 
I can tell.

Thanks!

Regards,

Alistair

> diff --git a/drivers/video/console/fbcon.c b/drivers/video/console/fbcon.c
> index 1aaf893..92f3949 100644
> --- a/drivers/video/console/fbcon.c
> +++ b/drivers/video/console/fbcon.c
> @@ -1093,6 +1093,7 @@ static void fbcon_init(struct vc_data *vc, int init)
>  		con_copy_unimap(vc, svc);
>  
>  	ops = info->fbcon_par;
> +	ops->cur_blink_jiffies = msecs_to_jiffies(vc->vc_cur_blink_ms);
>  	p->con_rotate = initial_rotation;
>  	set_blitting_type(vc, info);
>  

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [next] | [standalone]


#1243457 — [PATCH] fbcon: initialize blink interval before calling fb_set_par

FromScot Doyle <lkml14@scotdoyle.com>
Date2015-10-09 17:10 +0200
Subject[PATCH] fbcon: initialize blink interval before calling fb_set_par
Message-ID<qhHt0-5GT-31@gated-at.bofh.it>
In reply to#1243043
Since commit 27a4c827c34ac4256a190cc9d24607f953c1c459
    fbcon: use the cursor blink interval provided by vt

a PPC64LE kernel fails to boot when fbcon_add_cursor_timer uses an
uninitialized ops->cur_blink_jiffies. Prevent by initializing
in fbcon_init before the call to info->fbops->fb_set_par.

Reported-and-tested-by: Alistair Popple <alistair@popple.id.au>
Signed-off-by: Scot Doyle <lkml14@scotdoyle.com>
---
 drivers/video/console/fbcon.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/video/console/fbcon.c b/drivers/video/console/fbcon.c
index 1aaf893..92f3949 100644
--- a/drivers/video/console/fbcon.c
+++ b/drivers/video/console/fbcon.c
@@ -1093,6 +1093,7 @@ static void fbcon_init(struct vc_data *vc, int init)
 		con_copy_unimap(vc, svc);
 
 	ops = info->fbcon_par;
+	ops->cur_blink_jiffies = msecs_to_jiffies(vc->vc_cur_blink_ms);
 	p->con_rotate = initial_rotation;
 	set_blitting_type(vc, info);
 
-- 
2.1.4

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [next] | [standalone]


#1243661 — Re: [PATCH] fbcon: initialize blink interval before calling fb_set_par

FromBenjamin Herrenschmidt <benh@kernel.crashing.org>
Date2015-10-09 23:20 +0200
SubjectRe: [PATCH] fbcon: initialize blink interval before calling fb_set_par
Message-ID<qhNf4-5xo-9@gated-at.bofh.it>
In reply to#1243457
On Fri, 2015-10-09 at 15:08 +0000, Scot Doyle wrote:
> Since commit 27a4c827c34ac4256a190cc9d24607f953c1c459
>     fbcon: use the cursor blink interval provided by vt
> 
> a PPC64LE kernel fails to boot when fbcon_add_cursor_timer uses an
> uninitialized ops->cur_blink_jiffies. Prevent by initializing
> in fbcon_init before the call to info->fbops->fb_set_par.

> Reported-and-tested-by: Alistair Popple <alistair@popple.id.au>
> Signed-off-by: Scot Doyle <lkml14@scotdoyle.com>

Please add

CC: <stable@vger.kernel.org> [v4.2]

This bug will cause any machine using fbcon to occasionally fail
to boot due to having a timer callback try to mod_timer with
"jiffies + 0" without an exit condition.

Cheers,
Ben.

> ---
>  drivers/video/console/fbcon.c | 1 +
>  1 file changed, 1 insertion(+) 
> 
> diff --git a/drivers/video/console/fbcon.c
> b/drivers/video/console/fbcon.c
> index 1aaf893..92f3949 100644
> --- a/drivers/video/console/fbcon.c
> +++ b/drivers/video/console/fbcon.c
> @@ -1093,6 +1093,7 @@ static void fbcon_init(struct vc_data *vc, int
> init)
>                 con_copy_unimap(vc, svc);
>  
>         ops = info->fbcon_par;
> +       ops->cur_blink_jiffies = msecs_to_jiffies(vc
> ->vc_cur_blink_ms);
>         p->con_rotate = initial_rotation;
>         set_blitting_type(vc, info);
>  
> -- 
> 2.1.4
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux
> -fbdev" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web