1. 11 9月, 2012 1 次提交
  2. 20 7月, 2012 1 次提交
    • C
      drm/i915: Add comments to explain the BSD tail write workaround · 12f55818
      Chris Wilson 提交于
      Having had to dive into the bspec to understand what each stage of the
      workaround meant, and how that the ring broadcasting IDLE corresponded
      with the GT powering down the ring (i.e. rc6) add comments to aide
      the next reader.
      
      And since the register "is used to control all aspects of PSMI and power
      saving functions" that makes it quite interesting to inspect with
      regards to RC6 hangs, so add it to the error-state.
      
      v2: Rediscover the piece of magic, set the RNCID to 0 before waiting for
      the ring to wake up.
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      12f55818
  3. 23 6月, 2012 1 次提交
    • D
      drm/i915: rip out the PM_IIR WARN · 58bf8062
      Daniel Vetter 提交于
      After banging my head against this for the past few months, I still
      don't see how this could possible race under the premise that once an
      irq bit is masked in PM_IMR and reset in PM_IIR it won't show up again
      until we unmask it in PM_IMR.
      
      Still, we have reports of this being seen in the wild. Now Bspec has
      this little bit of lovely language in the PMIIR register:
      
      Public SNB Docs, Vol3Part2, 2.5.14 "PMIIR":
      
      "For each bit, the IIR can store a second pending interrupt if two or
      more of the same interrupt conditions occur before the first condition
      is cleared. Upon clearing the interrupt, the IIR bit will momentarily
      go low, then return high to indicate there is another interrupt
      pending."
      
      Now if we presume that PMIMR only prevent new interrupts from being
      queued, we could easily end up masking an interrupt and clearing it,
      but the 2nd pending interrupt setting the bit in PMIIR right away
      again. Which leads, the next time the irq handler runs, to hitting the
      WARN.
      
      Also, no bad side effects of this have ever been reported. And we've
      tracked down our issues with the gpu turbo getting stuck to bogus
      interrupt generation limits in th RPLIMIT register.
      
      So let's just rip out this WARN as bogus and call it a day. The only
      shallow thing here is that this 2-deep irq queue in the hw makes you
      wonder how racy the windows irq handler is ...
      
      Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=42907
      Cc: stable@vger.kernel.org
      Acked-by: NChris Wilson <chris@chris-wilson.co.uk>
      Signed-Off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      58bf8062
  4. 21 6月, 2012 1 次提交
    • J
      drm/i915: support page flipping on ValleyView · 31acc7f5
      Jesse Barnes 提交于
      And restructure the IRQ handling a little.  We can use pipestat for most
      things, and make sure we don't affect pipe events when enabling and
      disabling vblank interupts.
      
      We can leave vblank interrupts masked but enabled so we're not dependent
      on the first client to toggle the disable timer.  We can also mask all
      render based interrupts, since the ring code will handle unmasking them
      for us.
      
      v2: roll in vblank masking, remove unneeded variable (Daniel)
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      31acc7f5
  5. 14 6月, 2012 1 次提交
  6. 07 6月, 2012 1 次提交
  7. 01 6月, 2012 2 次提交
  8. 31 5月, 2012 2 次提交
    • B
      drm/i915: enable parity error interrupts · 15b9f80e
      Ben Widawsky 提交于
      The previous patch put all the code, and handlers in place. It should
      now be safe to enable the parity error interrupt. The parity error must
      be unmasked in both the GTIMR, and the CS IMR. Unfortunately, the docs
      aren't clear about this; nevertheless it's the truth.
      Reviewed-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      Signed-off-by: NBen Widawsky <ben@bwidawsk.net>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      15b9f80e
    • B
      drm/i915: Dynamic Parity Detection handling · e3689190
      Ben Widawsky 提交于
      On IVB hardware we are given an interrupt whenever a L3 parity error
      occurs in the L3 cache. The L3 cache is used by internal GPU clients
      only.  This is a very rare occurrence (in fact to test this I need to
      use specially instrumented silicon).
      
      When a row in the L3 cache detects a parity error the HW generates an
      interrupt. The interrupt is masked in GTIMR until we get a chance to
      read some registers and alert userspace via a uevent. With this
      information userspace can use a sysfs interface (follow-up patch) to
      remap those rows.
      
      Way above my level of understanding, but if a given row fails, it is
      statistically more likely to fail again than a row which has not failed.
      Therefore it is desirable for an operating system to maintain a lifelong
      list of failing rows and always remap any bad rows on driver load.
      Hardware limits the number of rows that are remappable per bank/subbank,
      and should more than that many rows detect parity errors, software
      should maintain a list of the most frequent errors, and remap those
      rows.
      
      V2: Drop WARN_ON(IS_GEN6) (Jesse)
      DRM_DEBUG row/bank/subbank on errror (Jesse)
      Comment updates (Jesse)
      Reviewed-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      Signed-off-by: NBen Widawsky <ben@bwidawsk.net>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      e3689190
  9. 24 5月, 2012 1 次提交
  10. 22 5月, 2012 2 次提交
  11. 20 5月, 2012 2 次提交
  12. 10 5月, 2012 2 次提交
  13. 06 5月, 2012 3 次提交
  14. 03 5月, 2012 20 次提交