lkml.org 
[lkml]   [2016]   [Mar]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.4 12/74] fbcon: set a default value to blink interval
    Date
    4.4-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Jean-Philippe Brucker <jean-philippe.brucker@arm.com>

    commit a1e533ec07d583d01349ef13c0c965b8633e1b91 upstream.

    Since commit 27a4c827c34ac4256a190cc9d24607f953c1c459
    fbcon: use the cursor blink interval provided by vt

    two attempts have been made at fixing a possible hang caused by
    cursor_timer_handler. That function registers a timer to be triggered at
    "jiffies + fbcon_ops.cur_blink_jiffies".

    A new case had been encountered during initialisation of clcd-pl11x:

    fbcon_fb_registered
    do_fbcon_takeover

    -> do_register_con_driver
    fbcon_startup
    (A) add_cursor_timer (with cur_blink_jiffies = 0)

    -> do_bind_con_driver
    visual_init
    fbcon_init
    (B) cur_blink_jiffies = msecs_to_jiffies(vc->vc_cur_blink_ms);

    If we take an softirq anywhere between A and B (and we do),
    cursor_timer_handler executes indefinitely.

    Instead of patching all possible paths that lead to this case one at a
    time, fix the issue at the source and initialise cur_blink_jiffies to
    200ms when allocating fbcon_ops. This was its default value before
    aforesaid commit. fbcon_cursor or fbcon_init will refine this value
    downstream.

    Signed-off-by: Jean-Philippe Brucker <jean-philippe.brucker@arm.com>
    Tested-by: Scot Doyle <lkml14@scotdoyle.com>
    Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/video/console/fbcon.c | 2 ++
    1 file changed, 2 insertions(+)

    --- a/drivers/video/console/fbcon.c
    +++ b/drivers/video/console/fbcon.c
    @@ -709,6 +709,7 @@ static int con2fb_acquire_newinfo(struct
    }

    if (!err) {
    + ops->cur_blink_jiffies = HZ / 5;
    info->fbcon_par = ops;

    if (vc)
    @@ -956,6 +957,7 @@ static const char *fbcon_startup(void)
    ops->currcon = -1;
    ops->graphics = 1;
    ops->cur_rotate = -1;
    + ops->cur_blink_jiffies = HZ / 5;
    info->fbcon_par = ops;
    p->con_rotate = initial_rotation;
    set_blitting_type(vc, info);

    \
     
     \ /
      Last update: 2016-03-08 02:01    [W:3.828 / U:0.072 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site