• Daniel Vetter's avatar
    drm/i915/gen9: Remove csr.state, csr_lock and related code. · 414b7999
    Daniel Vetter authored
    This removes two anti-patterns:
    - Locking shouldn't be used to synchronize with async work (of any
      form, whether callbacks, workers or other threads). This is what the
      mutex_lock/unlock seems to have been for in intel_csr_load_program.
      Instead ordering should be ensured with the generic
      wait_for_completion()/complete(). Or more specific functions
      provided by the core kernel like e.g.
      flush_work()/cancel_work_sync() in the case of synchronizing with a
      work item.
    
    - Don't invent own completion like the following code did with the
      (already removed) wait_for(csr_load_status_get()) pattern - it's
      really hard to get these right when you want them to be _really_
      correct (and be fast) in all cases. Furthermore it's easier to read
      code using the well-known primitives than new ones using
      non-standard names.
    
    Before enabling/disabling DC6 check if the firmware is loaded
    successfully. This is guaranteed during runtime s/r, since otherwise we
    don't enable RPM, but not during system s/r.
    
    Note that it's still unclear whether we need to enable/disable DC6
    during system s/r, until that's clarified, keep the current behavior and
    enable/disable DC6.
    
    Also after this patch there is a race during system s/r where the
    firmware may not be loaded yet, that's addressed in an upcoming patch.
    
    v2-v3:
    - unchanged
    v4:
    - rebased on latest drm-intel-nightly
    
    Cc: Damien Lespiau <damien.lespiau@intel.com>
    Cc: Imre Deak <imre.deak@intel.com>
    Cc: Sunil Kamath <sunil.kamath@intel.com>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@intel.com>
    Signed-off-by: default avatarAnimesh Manna <animesh.manna@intel.com>
    [imre: added code and note about checking if the firmware loaded ok,
     before enabling/disabling it]
    Reviewed-by: default avatarAnimesh Manna <animesh.manna@intel.com>
    Signed-off-by: default avatarImre Deak <imre.deak@intel.com>
    Tested-by: Daniel Stone <daniels@collabora.com> # SKL
    Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
    Link: http://patchwork.freedesktop.org/patch/msgid/1447341037-2623-1-git-send-email-imre.deak@intel.com
    414b7999
i915_drv.h 106 KB