• M
    udlfb: fix sleeping inside spinlock · fb36a976
    Mikulas Patocka 提交于
    commit 6b11f9d8433b471fdd3ebed232b43a4b723be6ff upstream.
    
    If a framebuffer device is used as a console, the rendering calls
    (copyarea, fillrect, imageblit) may be done with the console spinlock
    held. On udlfb, these function call dlfb_handle_damage that takes a
    blocking semaphore before acquiring an URB.
    
    In order to fix the bug, this patch changes the calls copyarea, fillrect
    and imageblit to offload USB work to a workqueue.
    
    A side effect of this patch is 3x improvement in console scrolling speed
    because the device doesn't have to be updated after each copyarea call.
    Signed-off-by: NMikulas Patocka <mpatocka@redhat.com>
    Cc: Bernie Thompson <bernie@plugable.com>
    Cc: Ladislav Michl <ladis@linux-mips.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: NBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    fb36a976
udlfb.h 2.9 KB