Re: [PATCH] tty: vt: Fix soft lockup in fbcon cursor blink timer.

Ming Lei
2016-05-18T00:42:55Z

On Wed, May 18, 2016 at 4:49 AM, Pavel Machek <pavel@ucw.cz> wrote:
> On Tue 2016-05-17 11:41:04, David Daney wrote:
>> From: David Daney <david.daney@cavium.com>
>>
>> We are getting somewhat random soft lockups with this signature:
>>
>> [ 86.992215] [<fffffc00080935e0>] el1_irq+0xa0/0x10c
>> [ 86.997082] [<fffffc000841822c>] cursor_timer_handler+0x30/0x54
>> [ 87.002991] [<fffffc000810ec44>] call_timer_fn+0x54/0x1a8
>> [ 87.008378] [<fffffc000810ef88>] run_timer_softirq+0x1c4/0x2bc
>> [ 87.014200] [<fffffc000809077c>] __do_softirq+0x114/0x344
>> [ 87.019590] [<fffffc00080af45c>] irq_exit+0x74/0x98
>> [ 87.024458] [<fffffc00080fac20>] __handle_domain_irq+0x98/0xfc
>> [ 87.030278] [<fffffc000809056c>] gic_handle_irq+0x94/0x190
>>
>> This is caused by the vt visual_init() function calling into
>> fbcon_init() with a vc_cur_blink_ms value of zero. This is a
>> transient condition, as it is later set to a non-zero value. But, if
>> the timer happens to expire while the blink rate is zero, it goes into
>> an endless loop, and we get soft lockup.
>>
>> The fix is to initialize vc_cur_blink_ms before calling the con_init()
>> function.
>>
>> Signed-off-by: David Daney <david.daney@cavium.com>
>> Cc: stable@vger.kernel.org
>
> Acked-by: Pavel Machek <pavel@ucw.cz>

Tested-by: Ming Lei <ming.lei@canonical.com>

Thanks David and Pavel for making it work!

>
> (And it is amazing how many problems configurable blink speed caused).
>
> Thanks!
> Pavel
>
> --
> (english) http://www.livejournal.com/~pavelmachek
> (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html