• Daniel Vetter's avatar
    drm/gm12u320: Simplify upload work · 8f2cb937
    Daniel Vetter authored
    Instead of having a work item that never stops (which really should be
    a kthread), with a dedicated workqueue to not upset anyone else, use a
    delayed work. A bunch of changes:
    
    - We can throw out all the custom wakeup and requeue logic and state
      tracking. If we schedule the work with a 0 delay it'll get
      scheduled immediately.
    
    - Persistent state (frame & draw_status_timeout) need to be moved out
      of the work.
    
    - diff is bigger than the changes, biggest chunk is reindenting the
      work fn because it lost its while loop.
    
    Lots of code deleting as consequence all over. Specifically we can
    delete the drm_driver.release code now!
    
    v2: Review from Hans:
    - Use mod_delayed_work in the plane update path to make sure we do
      actually schedule immediately). In the worker we still want
      queue_delayed_work, which won't modify the timeout when the work is
      already scheduled. Which is exactly what we want if the work races
      with a plane update.
    - Switch to system_long_wq, Hans says on usb2 a plane upload can take
      80 ms.
    Reviewed-by: default avatarHans de Goede <hdegoede@redhat.com>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@intel.com>
    Cc: Hans de Goede <hdegoede@redhat.com>
    Cc: "Noralf Trønnes" <noralf@tronnes.org>
    Link: https://patchwork.freedesktop.org/patch/msgid/20200323144950.3018436-46-daniel.vetter@ffwll.ch
    8f2cb937
gm12u320.c 21 KB