1. 28 5月, 2019 1 次提交
    • V
      drm/i915: Make sure we have enough memory bandwidth on ICL · c457d9cf
      Ville Syrjälä 提交于
      ICL has so many planes that it can easily exceed the maximum
      effective memory bandwidth of the system. We must therefore check
      that we don't exceed that limit.
      
      The algorithm is very magic number heavy and lacks sufficient
      explanation for now. We also have no sane way to query the
      memory clock and timings, so we must rely on a combination of
      raw readout from the memory controller and hardcoded assumptions.
      The memory controller values obviously change as the system
      jumps between the different SAGV points, so we try to stabilize
      it first by disabling SAGV for the duration of the readout.
      
      The utilized bandwidth is tracked via a device wide atomic
      private object. That is actually not robust because we can't
      afford to enforce strict global ordering between the pipes.
      Thus I think I'll need to change this to simply chop up the
      available bandwidth between all the active pipes. Each pipe
      can then do whatever it wants as long as it doesn't exceed
      its budget. That scheme will also require that we assume that
      any number of planes could be active at any time.
      
      TODO: make it robust and deal with all the open questions
      
      v2: Sleep longer after disabling SAGV
      v3: Poll for the dclk to get raised (seen it take 250ms!)
          If the system has 2133MT/s memory then we pointlessly
          wait one full second :(
      v4: Use the new pcode interface to get the qgv points rather
          that using hardcoded numbers
      v5: Move the pcode stuff into intel_bw.c (Matt)
          s/intel_sagv_info/intel_qgv_info/
          Do the NV12/P010 as per spec for now (Matt)
          s/IS_ICELAKE/IS_GEN11/
      v6: Ignore bandwidth limits if the pcode query fails
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Reviewed-by: NMatt Roper <matthew.d.roper@intel.com>
      Acked-by: NClint Taylor <Clinton.A.Taylor@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20190524153614.32410-1-ville.syrjala@linux.intel.com
      c457d9cf
  2. 20 5月, 2019 7 次提交
  3. 14 5月, 2019 3 次提交
  4. 09 5月, 2019 2 次提交
  5. 06 5月, 2019 1 次提交
  6. 04 5月, 2019 3 次提交
  7. 03 5月, 2019 4 次提交
  8. 01 5月, 2019 2 次提交
  9. 30 4月, 2019 6 次提交
  10. 26 4月, 2019 4 次提交
  11. 25 4月, 2019 1 次提交
  12. 24 4月, 2019 2 次提交
  13. 16 4月, 2019 1 次提交
  14. 12 4月, 2019 2 次提交
  15. 09 4月, 2019 1 次提交
    • I
      drm/i915: Get power refs in encoder->get_power_domains() · bef42cb2
      Imre Deak 提交于
      Push getting the reference for the encoders' power domains into the
      encoder get_power_domains() hook instead of doing this from the caller.
      This way the encoder can store away the corresponding wakerefs.
      
      This fixes the DSI encoder disabling, which didn't release these
      power references it acquired during HW state readout.
      
      Note that longtime ownership for the corresponding wakerefs can be thus
      acquired / released in two ways. Nevertheless there is always only one
      owner for them:
      
      After HW readout (booting/system resume):
      - encoder->get_power_domains() acquires
      - encoder->disable*() releases
      
      After a modeset (calling intel_atomic_commit()):
      - encoder->enable*() acquires
      - encoder->disable*() releases
      
      * can be any of the encoder enable/disable hooks.
      
      v2:
      - Check that the DSI io_wakerefs are unset both during encoder HW
        readout and enabling. (Chris)
      
      Fixes: 0e6e0be4 ("drm/i915: Markup paired operations on display power domains")
      Cc: Vandita Kulkarni <vandita.kulkarni@intel.com>
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: NImre Deak <imre.deak@intel.com>
      Reviewed-by: NChris Wilson <chris@chris-wilson.co.uk>
      Link: https://patchwork.freedesktop.org/patch/msgid/20190407124655.31536-1-imre.deak@intel.com
      (cherry picked from commit 3a52fb7e)
      Signed-off-by: NRodrigo Vivi <rodrigo.vivi@intel.com>
      bef42cb2