From patchwork Wed May 20 12:36:17 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thierry Reding X-Patchwork-Id: 6445531 Return-Path: X-Original-To: patchwork-linux-fbdev@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 43695C0432 for ; Wed, 20 May 2015 12:36:27 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 55D3A20373 for ; Wed, 20 May 2015 12:36:26 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 491CF20379 for ; Wed, 20 May 2015 12:36:25 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753464AbbETMgY (ORCPT ); Wed, 20 May 2015 08:36:24 -0400 Received: from mail-pa0-f47.google.com ([209.85.220.47]:36202 "EHLO mail-pa0-f47.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753402AbbETMgW (ORCPT ); Wed, 20 May 2015 08:36:22 -0400 Received: by pabts4 with SMTP id ts4so65827506pab.3; Wed, 20 May 2015 05:36:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=date:from:to:cc:subject:message-id:references:mime-version :content-type:content-disposition:in-reply-to:user-agent; bh=dBk+13/r/B6GsCihElGcROJ02Yu5rxfdhCHLfbP/hBw=; b=ylqB1UVqo6bzCvdb6OK0ORiNF0Bow534ILBnxu6DHRamtC01MomoQNjWqCI+dC5ALA Y0agVyEVKeQgB6UhHUBj2SX7yPuR/fTSY4e6kRRDdxdXDeJZ74L/3Pb8XVUZJKF/MhRI eK9GuC4XXy8zmErPRMi0pVs3GLTYRP/QmbXnEhdHoV8zrqdQjmHVqZiTPJa3TXUlpSEf VBp6DbNdOAoTkzWYxxm8syBk1vaanYF6ScopBDbwWK7Fng1P7p5yzcQatUEENxl8yYcC rhiLNgtKol9SHS+aTlV5BKh25tt7dzOjl9a7w0pO0pIXla9eRI+ARZoxftiBnr2aQd/8 59/A== X-Received: by 10.70.133.170 with SMTP id pd10mr63353050pdb.127.1432125381488; Wed, 20 May 2015 05:36:21 -0700 (PDT) Received: from localhost ([216.228.120.20]) by mx.google.com with ESMTPSA id xs10sm16180123pab.35.2015.05.20.05.36.19 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 20 May 2015 05:36:20 -0700 (PDT) Date: Wed, 20 May 2015 14:36:17 +0200 From: Thierry Reding To: Greg Kroah-Hartman Cc: Kevin Hilman , Scot Doyle , Tomi Valkeinen , Michael Kerrisk , Jiri Slaby , Jean-Christophe Plagniol-Villard , Pavel Machek , Geert Uytterhoeven , lkml , linux-fbdev@vger.kernel.org, linux-man@vger.kernel.org, linux-api@vger.kernel.org, Tyler Baker , Olof Johansson , Daniel Stone , Arnd Bergmann Subject: Re: [PATCH v2 2/3] fbcon: use the cursor blink interval provided by vt Message-ID: <20150520123615.GA24016@ulmo.nvidia.com> References: <20150325111949.GA24230@kroah.com> <20150519214011.GA27047@ulmo.nvidia.com> <20150519215228.GA27163@ulmo.nvidia.com> <20150519234112.GA25218@kroah.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20150519234112.GA25218@kroah.com> User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-fbdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-fbdev@vger.kernel.org X-Spam-Status: No, score=-6.8 required=5.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_HI, T_DKIM_INVALID, T_RP_MATCHES_RCVD, T_TVD_MIME_EPI, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP On Tue, May 19, 2015 at 04:41:12PM -0700, Greg Kroah-Hartman wrote: > On Tue, May 19, 2015 at 11:52:29PM +0200, Thierry Reding wrote: > > On Tue, May 19, 2015 at 02:45:19PM -0700, Kevin Hilman wrote: > > > On Tue, May 19, 2015 at 2:40 PM, Thierry Reding > > > wrote: > > > > On Tue, May 19, 2015 at 02:15:41PM -0700, Kevin Hilman wrote: > > > >> On Thu, Mar 26, 2015 at 6:56 AM, Scot Doyle wrote: > > > >> > vt now provides a cursor blink interval via vc_data. Use this > > > >> > interval instead of the currently hardcoded 200 msecs. Store it in > > > >> > fbcon_ops to avoid locking the console in cursor_timer_handler(). > > > >> > > > > >> > Signed-off-by: Scot Doyle > > > >> > Acked-by: Pavel Machek > > > >> > > > >> This patch hit next-20150519 in the form of commit 27a4c827c34a > > > >> (fbcon: use the cursor blink interval provided by vt) and has caused > > > >> boot failure on a handful of ARM platforms when booting a MMC root > > > >> filesystem. This error was spotted by the kernelci.org bot on > > > >> exynos5800-peach-pi[1] and Thierry and Daniel (Cc'd) have seen it on > > > >> some tegra platforms too. > > > >> > > > >> Thierry spotted this commit as a potential cause, and both Daniel and > > > >> I have reverted and boot tested on exynos5 and tegra respectively and > > > >> the boot panics disappear. > > > > > > > > FWIW, if I apply the below on top of next-20150519 things seem to be > > > > back to normal as well: > > > > > > > > diff --git a/drivers/video/console/fbcon.c b/drivers/video/console/fbcon.c > > > > index 05b1d1a71ef9..658c34bb9076 100644 > > > > --- a/drivers/video/console/fbcon.c > > > > +++ b/drivers/video/console/fbcon.c > > > > @@ -1310,8 +1310,9 @@ static void fbcon_cursor(struct vc_data *vc, int mode) > > > > return; > > > > > > > > ops->cur_blink_jiffies = msecs_to_jiffies(vc->vc_cur_blink_ms); > > > > - fbcon_del_cursor_timer(info); > > > > - if (!(vc->vc_cursor_type & 0x10)) > > > > + if (vc->vc_cursor_type & 0x10) > > > > + fbcon_del_cursor_timer(info); > > > > + else > > > > fbcon_add_cursor_timer(info); > > > > > > > > ops->cursor_flash = (mode == CM_ERASE) ? 0 : 1; > > > > > > Applying this on next-20150519 makes my exynos board happily boot again as well. > > > > > > Tested-by: Kevin Hilman > > > > Excellent. Greg, Scot, any opinions on whether or not this is the right > > thing to do? It restores a bit that looks suspiciously like it snuck in > > in the original (at least it isn't documented in the commit message). > > > > Greg, feel free to squash this in if everybody agrees this is good to > > go. If you prefer a patch on top let me know and I'll come up with a > > proper commit message. > > Please send a real patch and I'll apply it on top, as I can't rebase my > public tree. Attached. Thierry From 4f2f70dbbe9de54c0da9b03a1f384e1464755eab Mon Sep 17 00:00:00 2001 From: Thierry Reding Date: Wed, 20 May 2015 13:41:52 +0200 Subject: [PATCH] fbcon: Avoid deleting a timer in IRQ context Commit 27a4c827c34a ("fbcon: use the cursor blink interval provided by vt") unconditionally removes the cursor blink timer. Unfortunately that wreaks havoc under some circumstances. An easily reproducible way is to use both the framebuffer console and a debug serial port as the console output for kernel messages (e.g. "console=ttyS0 console=tty1" on the kernel command-line. Upon boot this triggers a warning from within the del_timer_sync() function because it is called from IRQ context: [ 5.070096] ------------[ cut here ]------------ [ 5.070110] WARNING: CPU: 0 PID: 0 at ../kernel/time/timer.c:1098 del_timer_sync+0x4c/0x54() [ 5.070115] Modules linked in: [ 5.070120] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.1.0-rc4-next-20150519 #1 [ 5.070123] Hardware name: SAMSUNG EXYNOS (Flattened Device Tree) [ 5.070142] [] (unwind_backtrace) from [] (show_stack+0x10/0x14) [ 5.070156] [] (show_stack) from [] (dump_stack+0x70/0xbc) [ 5.070164] [] (dump_stack) from [] (warn_slowpath_common+0x74/0xb0) [ 5.070169] [] (warn_slowpath_common) from [] (warn_slowpath_null+0x1c/0x24) [ 5.070174] [] (warn_slowpath_null) from [] (del_timer_sync+0x4c/0x54) [ 5.070183] [] (del_timer_sync) from [] (fbcon_del_cursor_timer+0x2c/0x40) [ 5.070190] [] (fbcon_del_cursor_timer) from [] (fbcon_cursor+0x9c/0x180) [ 5.070198] [] (fbcon_cursor) from [] (hide_cursor+0x30/0x98) [ 5.070204] [] (hide_cursor) from [] (vt_console_print+0x2a8/0x340) [ 5.070212] [] (vt_console_print) from [] (call_console_drivers.constprop.23+0xc8/0xec) [ 5.070218] [] (call_console_drivers.constprop.23) from [] (console_unlock+0x498/0x4f0) [ 5.070223] [] (console_unlock) from [] (vprintk_emit+0x1f0/0x508) [ 5.070228] [] (vprintk_emit) from [] (vprintk_default+0x24/0x2c) [ 5.070234] [] (vprintk_default) from [] (printk+0x70/0x88) After which the system starts spewing all kinds of weird and seemingly unrelated error messages. This commit fixes this by restoring the condition under which the call to fbcon_del_cursor_timer() happens. Reported-by: Daniel Stone Reported-by: Kevin Hilman Tested-by: Kevin Hilman Tested-by: Scot Doyle Signed-off-by: Thierry Reding --- drivers/video/console/fbcon.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/video/console/fbcon.c b/drivers/video/console/fbcon.c index 05b1d1a71ef9..658c34bb9076 100644 --- a/drivers/video/console/fbcon.c +++ b/drivers/video/console/fbcon.c @@ -1310,8 +1310,9 @@ static void fbcon_cursor(struct vc_data *vc, int mode) return; ops->cur_blink_jiffies = msecs_to_jiffies(vc->vc_cur_blink_ms); - fbcon_del_cursor_timer(info); - if (!(vc->vc_cursor_type & 0x10)) + if (vc->vc_cursor_type & 0x10) + fbcon_del_cursor_timer(info); + else fbcon_add_cursor_timer(info); ops->cursor_flash = (mode == CM_ERASE) ? 0 : 1; -- 2.4.1