• Jean-Philippe Brucker's avatar
    fbcon: set a default value to blink interval · 2f553b9b
    Jean-Philippe Brucker authored
    commit a1e533ec upstream.
    
    Since commit 27a4c827
    	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: default avatarJean-Philippe Brucker <jean-philippe.brucker@arm.com>
    Tested-by: default avatarScot Doyle <lkml14@scotdoyle.com>
    Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    2f553b9b
fbcon.c 88.4 KB