1. 15 7月, 2016 11 次提交
  2. 04 5月, 2016 1 次提交
  3. 27 4月, 2016 1 次提交
    • V
      drm/i915: Make RPS EI/thresholds multiple of 25 on SNB-BDW · 4ea39590
      Ville Syrjälä 提交于
      Somehow my SNB GT1 (Dell XPS 8300) gets very unhappy around
      GPU hangs if the RPS EI/thresholds aren't suitably aligned.
      It seems like scheduling/timer interupts stop working somehow
      and things get stuck eg. in usleep_range().
      
      I bisected the problem down to
      commit 8a586437 ("drm/i915/skl: Restructured the gen6_set_rps_thresholds function")
      I observed that before all the values were at least multiples of 25,
      but afterwards they are not. And rounding things up to the next multiple
      of 25 does seem to help, so lets' do that. I also tried roundup(..., 5)
      but that wasn't sufficient. Also I have no idea if we might need this sort of
      thing on gen9+ as well.
      
      These are the original EI/thresholds:
       LOW_POWER
        GEN6_RP_UP_EI          12500
        GEN6_RP_UP_THRESHOLD   11800
        GEN6_RP_DOWN_EI        25000
        GEN6_RP_DOWN_THRESHOLD 21250
       BETWEEN
        GEN6_RP_UP_EI          10250
        GEN6_RP_UP_THRESHOLD    9225
        GEN6_RP_DOWN_EI        25000
        GEN6_RP_DOWN_THRESHOLD 18750
       HIGH_POWER
        GEN6_RP_UP_EI           8000
        GEN6_RP_UP_THRESHOLD    6800
        GEN6_RP_DOWN_EI        25000
        GEN6_RP_DOWN_THRESHOLD 15000
      
      These are after 8a586437:
       LOW_POWER
        GEN6_RP_UP_EI          12500
        GEN6_RP_UP_THRESHOLD   11875
        GEN6_RP_DOWN_EI        25000
        GEN6_RP_DOWN_THRESHOLD 21250
       BETWEEN
        GEN6_RP_UP_EI          10156
        GEN6_RP_UP_THRESHOLD    9140
        GEN6_RP_DOWN_EI        25000
        GEN6_RP_DOWN_THRESHOLD 18750
       HIGH_POWER
        GEN6_RP_UP_EI           7812
        GEN6_RP_UP_THRESHOLD    6640
        GEN6_RP_DOWN_EI        25000
        GEN6_RP_DOWN_THRESHOLD 15000
      
      And these are what we have after this patch:
       LOW_POWER
        GEN6_RP_UP_EI          12500
        GEN6_RP_UP_THRESHOLD   11875
        GEN6_RP_DOWN_EI        25000
        GEN6_RP_DOWN_THRESHOLD 21250
       BETWEEN
        GEN6_RP_UP_EI          10175
        GEN6_RP_UP_THRESHOLD    9150
        GEN6_RP_DOWN_EI        25000
        GEN6_RP_DOWN_THRESHOLD 18750
       HIGH_POWER
        GEN6_RP_UP_EI           7825
        GEN6_RP_UP_THRESHOLD    6650
        GEN6_RP_DOWN_EI        25000
        GEN6_RP_DOWN_THRESHOLD 15000
      
      Cc: stable@vger.kernel.org
      Cc: Akash Goel <akash.goel@intel.com>
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Testcase: igt/kms_pipe_crc_basic/hang-read-crc-pipe-B
      Fixes: 8a586437 ("drm/i915/skl: Restructured the gen6_set_rps_thresholds function")
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Link: http://patchwork.freedesktop.org/patch/msgid/1461159836-9108-1-git-send-email-ville.syrjala@linux.intel.comAcked-by: NChris Wilson <chris@chris-wilson.co.uk>
      Reviewed-by: NPatrik Jakobsson <patrik.jakobsson@linux.intel.com>
      (cherry picked from commit 8a292d01)
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      4ea39590
  4. 24 4月, 2016 1 次提交
  5. 23 4月, 2016 1 次提交
    • V
      drm/i915: Make RPS EI/thresholds multiple of 25 on SNB-BDW · 8a292d01
      Ville Syrjälä 提交于
      Somehow my SNB GT1 (Dell XPS 8300) gets very unhappy around
      GPU hangs if the RPS EI/thresholds aren't suitably aligned.
      It seems like scheduling/timer interupts stop working somehow
      and things get stuck eg. in usleep_range().
      
      I bisected the problem down to
      commit 8a586437 ("drm/i915/skl: Restructured the gen6_set_rps_thresholds function")
      I observed that before all the values were at least multiples of 25,
      but afterwards they are not. And rounding things up to the next multiple
      of 25 does seem to help, so lets' do that. I also tried roundup(..., 5)
      but that wasn't sufficient. Also I have no idea if we might need this sort of
      thing on gen9+ as well.
      
      These are the original EI/thresholds:
       LOW_POWER
        GEN6_RP_UP_EI          12500
        GEN6_RP_UP_THRESHOLD   11800
        GEN6_RP_DOWN_EI        25000
        GEN6_RP_DOWN_THRESHOLD 21250
       BETWEEN
        GEN6_RP_UP_EI          10250
        GEN6_RP_UP_THRESHOLD    9225
        GEN6_RP_DOWN_EI        25000
        GEN6_RP_DOWN_THRESHOLD 18750
       HIGH_POWER
        GEN6_RP_UP_EI           8000
        GEN6_RP_UP_THRESHOLD    6800
        GEN6_RP_DOWN_EI        25000
        GEN6_RP_DOWN_THRESHOLD 15000
      
      These are after 8a586437:
       LOW_POWER
        GEN6_RP_UP_EI          12500
        GEN6_RP_UP_THRESHOLD   11875
        GEN6_RP_DOWN_EI        25000
        GEN6_RP_DOWN_THRESHOLD 21250
       BETWEEN
        GEN6_RP_UP_EI          10156
        GEN6_RP_UP_THRESHOLD    9140
        GEN6_RP_DOWN_EI        25000
        GEN6_RP_DOWN_THRESHOLD 18750
       HIGH_POWER
        GEN6_RP_UP_EI           7812
        GEN6_RP_UP_THRESHOLD    6640
        GEN6_RP_DOWN_EI        25000
        GEN6_RP_DOWN_THRESHOLD 15000
      
      And these are what we have after this patch:
       LOW_POWER
        GEN6_RP_UP_EI          12500
        GEN6_RP_UP_THRESHOLD   11875
        GEN6_RP_DOWN_EI        25000
        GEN6_RP_DOWN_THRESHOLD 21250
       BETWEEN
        GEN6_RP_UP_EI          10175
        GEN6_RP_UP_THRESHOLD    9150
        GEN6_RP_DOWN_EI        25000
        GEN6_RP_DOWN_THRESHOLD 18750
       HIGH_POWER
        GEN6_RP_UP_EI           7825
        GEN6_RP_UP_THRESHOLD    6650
        GEN6_RP_DOWN_EI        25000
        GEN6_RP_DOWN_THRESHOLD 15000
      
      Cc: stable@vger.kernel.org
      Cc: Akash Goel <akash.goel@intel.com>
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Testcase: igt/kms_pipe_crc_basic/hang-read-crc-pipe-B
      Fixes: 8a586437 ("drm/i915/skl: Restructured the gen6_set_rps_thresholds function")
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Link: http://patchwork.freedesktop.org/patch/msgid/1461159836-9108-1-git-send-email-ville.syrjala@linux.intel.comAcked-by: NChris Wilson <chris@chris-wilson.co.uk>
      Reviewed-by: NPatrik Jakobsson <patrik.jakobsson@linux.intel.com>
      8a292d01
  6. 20 4月, 2016 1 次提交
  7. 19 4月, 2016 1 次提交
    • J
      drm/i915: Clean up PCI config register handling · e10fa551
      Joonas Lahtinen 提交于
      Do not use magic numbers, do not prefix stuff with "PCI_", do not
      declare registers in implementation files. Also move the PCI
      registers under correct comment in i915_reg.h.
      
      v2:
      - Consistently use BSM (not BDSM or other variants from PRM) (Chris)
      - Also include register address to help identify the register (Chris)
      v3:
      - Refer to register value as *_val instead of *_reg (Chris)
      v4:
      - Make style checker happy
      
      Cc: Jani Nikula <jani.nikula@intel.com>
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Reviewed-by: NChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: NJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
      e10fa551
  8. 15 4月, 2016 1 次提交
  9. 14 4月, 2016 3 次提交
  10. 11 4月, 2016 1 次提交
  11. 06 4月, 2016 2 次提交
  12. 05 4月, 2016 2 次提交
  13. 02 4月, 2016 1 次提交
    • V
      drm/i915: Implement WaPixelRepeatModeFixForC0:chv · c231775c
      Ville Syrjälä 提交于
      DPLL_MD(PIPE_C) is AWOL on CHV. Instead of fixing it someone added
      chicken bits to propagate the pixel multiplier from DPLL_MD(PIPE_B)
      to either pipe B or C. So do that to make pixel repeat work on pipes
      B and C. Pipe A is fine without any tricks.
      
      Fortunately the pixel repeat propagation appears to be a oneshot
      operation, so once the value has been written we can clear the
      chicken bits. So it is still possible to drive pipe B and C with
      different pixel multipliers simultaneosly.
      
      Looks like DPLL_VGA_MODE_DIS must also be set in DPLL(PIPE_B)
      for this to work. But since we keep that bit always set in all
      DPLLs there's no problem.
      
      This of course means we can't reliably read out the pixel multiplier
      for pipes B and C. That would make the state checker unhappy, so I
      added shadow copies of those registers in to dev_priv. The other
      option would have been to skip pixel multiplier, dpll_md an dotclock
      checks entirely on CHV, but that feels like a serious loss of cross
      checking, so just pretending that we have working DPLL MD registers
      seemed better. Obviously with the shadow copies we can't detect if
      the pixel multiplier was properly configured, nor can we take over
      its state from the BIOS, but hopefully people won't have displays
      that would be limitd to such crappy modes.
      
      There is one strange flicker still remaining. It's visible on
      pipe C/HDMID when HDMIB is enabled while driven by pipe B.
      It doesn't occur if pipe A drives HDMIB, nor is there any glitch
      on pipe B/HDMIB when port C/HDMID starts up. I don't have a board
      with HDMIC so not sure if it happens there too. So I'm not sure
      if it's somehow tied in with this strange linkage between pipe B
      and C. Sadly I was unable to find an enable sequence that would
      avoid the glitch, but at least it's not fatal ie. the output
      recovers afterwards.
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Link: http://patchwork.freedesktop.org/patch/msgid/1458052809-23426-4-git-send-email-ville.syrjala@linux.intel.comReviewed-by: NJani Nikula <jani.nikula@intel.com>
      c231775c
  14. 01 4月, 2016 1 次提交
  15. 24 3月, 2016 1 次提交
    • I
      drm/i915/bxt: Fix DSI HW state readout · db18b6a6
      Imre Deak 提交于
      Currently the machine hangs during booting while accessing the
      BXT_MIPI_PORT_CTRL register during pipe HW state readout. After some
      experimentation I found that the hang is caused by the DSI PLL being
      disabled, or it being enabled but with an incorrect divider
      configuration. Enabling the PLL got rid of the boot problem, so fix
      this by checking the PLL enabled state/configuration before attempting
      to read out the HW state.
      
      The DSI_PLL_ENABLE register is in the always-on power well, while the
      BXT_DSI_PLL_CTL is in power well 0. This isn't exactly matched by the
      transcoder power domain, but what we really need is just a runtime PM
      reference, which is provided by any power domain.
      
      Ville also found this dependency specified in BSpec, so I added a
      reference to that too.
      
      v2:
      - Make sure we hold a power reference while accessing the PLL registers.
      v3: (Jani)
      - Simplify check in bxt_get_dsi_transcoder_state()
      - Add comment explaining why we check for valid dividers in
        bxt_dsi_pll_is_enabled()
      
      CC: Shashank Sharma <shashank.sharma@intel.com>
      CC: Uma Shankar <uma.shankar@intel.com>
      CC: Jani Nikula <jani.nikula@intel.com>
      Fixes: c6c794a2 ("drm/i915/bxt: Initialize MIPI DSI for BXT")
      Signed-off-by: NImre Deak <imre.deak@intel.com>
      Reviewed-by: NJani Nikula <jani.nikula@intel.com>
      Reviewed-by: NShashank Sharma <shashank.sharma@intel.com>
      Link: http://patchwork.freedesktop.org/patch/msgid/1458816100-31269-1-git-send-email-imre.deak@intel.com
      db18b6a6
  16. 22 3月, 2016 3 次提交
  17. 21 3月, 2016 1 次提交
  18. 18 3月, 2016 1 次提交
  19. 17 3月, 2016 2 次提交
  20. 16 3月, 2016 1 次提交
  21. 04 3月, 2016 1 次提交
  22. 03 3月, 2016 1 次提交
  23. 01 3月, 2016 1 次提交