1. 23 9月, 2014 9 次提交
  2. 20 9月, 2014 3 次提交
  3. 19 9月, 2014 9 次提交
  4. 18 9月, 2014 1 次提交
  5. 17 9月, 2014 1 次提交
  6. 16 9月, 2014 1 次提交
  7. 15 9月, 2014 1 次提交
  8. 12 9月, 2014 2 次提交
  9. 11 9月, 2014 4 次提交
  10. 10 9月, 2014 1 次提交
  11. 09 9月, 2014 4 次提交
  12. 08 9月, 2014 4 次提交
    • V
      drm/i915: Wait for vblank before enabling the TV encoder · 7a98948f
      Ville Syrjälä 提交于
      The vblank waits in intel_tv_detect_type() are timing out for some
      reason. This is a regression caused removing seemingly useless vblank
      waits from the modeset seqeuence in:
      
       commit 56ef52ca
       Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
       Date:   Thu May 8 19:23:15 2014 +0300
      
          drm/i915: Kill vblank waits after pipe enable on gmch platforms
      
      So it turns out they weren't all entirely useless. Apparently the pipe
      has to go through one full frame before we enable the TV port. Add a
      vblank wait to intel_enable_tv() to make sure that happens.
      
      Another approach was attempted by placing the vblank wait just after
      enabling the port. The theory behind that attempt was that we need to
      let the port stay enabled for one full frame before disabling it again
      during load detection. But that didn't work, and we definitely must
      have the vblank wait before enabling the port.
      
      Cc: stable@vger.kernel.org
      Cc: Alan Bartlett <ajb@elrepo.org>
      Tested-by: NAlan Bartlett <ajb@elrepo.org>
      Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=79311Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Reviewed-by: NDaniel Vetter <daniel@ffwll.ch>
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      7a98948f
    • C
      drm/i915: Evict CS TLBs between batches · c4d69da1
      Chris Wilson 提交于
      Running igt, I was encountering the invalid TLB bug on my 845g, despite
      that it was using the CS workaround. Examining the w/a buffer in the
      error state, showed that the copy from the user batch into the
      workaround itself was suffering from the invalid TLB bug (the first
      cacheline was broken with the first two words reversed). Time to try a
      fresh approach. This extends the workaround to write into each page of
      our scratch buffer in order to overflow the TLB and evict the invalid
      entries. This could be refined to only do so after we update the GTT,
      but for simplicity, we do it before each batch.
      
      I suspect this supersedes our current workaround, but for safety keep
      doing both.
      
      v2: The magic number shall be 2.
      
      This doesn't conclusively prove that it is the mythical TLB bug we've
      been trying to workaround for so long, that it requires touching a number
      of pages to prevent the corruption indicates to me that it is TLB
      related, but the corruption (the reversed cacheline) is more subtle than
      a TLB bug, where we would expect it to read the wrong page entirely.
      
      Oh well, it prevents a reliable hang for me and so probably for others
      as well.
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Cc: stable@vger.kernel.org
      Reviewed-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      c4d69da1
    • D
      drm/i915: Fix irq enable tracking in driver load · 4868b45d
      Daniel Vetter 提交于
      A bunch of warnings fire on some ->irq_postinstall hooks since those
      can enable interrupts (e.g. rps interrupts). And then our ordering
      self-checks fire and complain.
      
      To fix that set the tracking boolen before enabling the irqs with
      drm_irq_install. Quoting the discussion with Jesse why that's safe:
      
      On Tue, Aug 26, 2014 at 11:18 PM, Jesse Barnes <jbarnes@virtuousgeek.org> wrote:
      > Yes, it might work, but if you look through the history, we set this
      > field carefully; first to true in the irq_init code, then to false only
      > after the irq_install completes.  So I think your fragility arguments
      > apply to this change too.
      
      Well we've done it in 4 commits or so, but currently we have:
      
      - Set irqs_disabled to true early in driver load to make sure checks
      that. That's done in irq_init, which is totally not the function that
      enables interrupts, only the function that initializes all the vtables
      and similar things. We actually have a fairly sane naming scheme
      nowadays (not fully consistent ofc): _init is sw setup,
      _enable/_hw_init is the actual hw setup. That is done in
      95f25bed
      
      - Set irqs_disabled to false right after the irqs are actually
      enabled. This is done in ed2e6df1
      
      So my change should only move the flag change over the ->preinstall
      and ->postinstall hooks. I've done a little audit and didn't spot
      anything amiss. Furthermore the runtime pm setup already clears
      irqs_disabled _before_ calling these two hooks.
      
      This regression has been introduced in
      
      commit ed2e6df1
      Author: Jesse Barnes <jbarnes@virtuousgeek.org>
      Date:   Fri Jun 20 09:39:36 2014 -0700
      
          drm/i915: clear pm._irqs_disabled field after installing IRQs
      
      Cc: Jesse Barnes <jbarnes@virtuousgeek.org>
      Cc: Oliver Hartkopp <socketcan@hartkopp.net>
      Tested-by: NOliver Hartkopp <socketcan@hartkopp.net>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Tested-by: Chris Wilson <chris@chris-wilson.co.uk> # gm45, ilk
      Reviewed-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      4868b45d
    • D
      drm/i915: Fix EIO/wedged handling in gem fault handler · 2232f031
      Daniel Vetter 提交于
      In
      
      commit 1f83fee0
      Author: Daniel Vetter <daniel.vetter@ffwll.ch>
      Date:   Thu Nov 15 17:17:22 2012 +0100
      
          drm/i915: clear up wedged transitions
      
      I've accidentally inverted the EIO/wedged handling in the fault
      handler: We want to return the EIO as a SIGBUS only if it's not
      because of the gpu having died, to prevent userspace from unduly
      dying.
      
      In my defence the comment right above is completely misleading, so fix
      both.
      
      v2: Drop the WARN_ON, it's not actually a bug to e.g. receive an -EIO
      when swap-in fails.
      
      v3: Don't remove too much ... oops.
      Reported-by: NChris Wilson <chris@chris-wilson.co.uk>
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Cc: stable@vger.kernel.org
      Signed-off-by: NDaniel Vetter <daniel.vetter@intel.com>
      Reviewed-by: NChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      2232f031