From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751536AbbJCFVP (ORCPT ); Sat, 3 Oct 2015 01:21:15 -0400 Received: from mx1.scotdoyle.com ([23.226.141.211]:48462 "EHLO mx1.scotdoyle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750994AbbJCFVO (ORCPT ); Sat, 3 Oct 2015 01:21:14 -0400 X-Greylist: delayed 537 seconds by postgrey-1.27 at vger.kernel.org; Sat, 03 Oct 2015 01:21:14 EDT Date: Sat, 3 Oct 2015 05:12:15 +0000 (UTC) From: Scot Doyle To: Alistair Popple cc: linux-fbdev@vger.kernel.org, Benjamin Herrenschmidt , plagnioj@jcrosoft.com, linux-kernel@vger.kernel.org, airlied@redhat.com, Pavel Machek , Greg Kroah-Hartman Subject: Re: [BUG] RCU stall in cursor_timer_handler In-Reply-To: <2505354.BllTl4uaOg@new-mexico> Message-ID: References: <2505354.BllTl4uaOg@new-mexico> User-Agent: Alpine 2.11 (DEB 23 2013-08-11) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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? 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);