• Hans de Goede's avatar
    drm: gm12u320: Do not take a mutex from a wait_event condition · 9b61db1a
    Hans de Goede authored
    I made the condition of the wait_event_timeout call in
    gm12u320_fb_update_work a helper which takes a mutex to make sure
    that any writes to fb_update.run or fb_update.fb from other CPU cores
    are seen before the check is done.
    
    This is not necessary as the wait_event helpers contain the necessary
    barriers for this themselves.
    
    More over it is harmfull since by the time the check is done the task
    is no longer in the TASK_RUNNING state and calling mutex_lock while not
    in task-running is not allowed, leading to this warning when the kernel
    is build with some extra locking checks enabled:
    
    [11947.450011] do not call blocking ops when !TASK_RUNNING; state=2 set at
                   [<00000000e4306de6>] prepare_to_wait_event+0x61/0x190
    
    This commit fixes this by dropping the helper and simply directly
    checking the condition (without unnecessary locking) in the
    wait_event_timeout call.
    Acked-by: default avatarSam Ravnborg <sam@ravnborg.org>
    Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20190811143725.5951-1-hdegoede@redhat.com
    9b61db1a
gm12u320.c 22.6 KB