1. 08 5月, 2015 6 次提交
  2. 14 4月, 2015 2 次提交
  3. 10 4月, 2015 3 次提交
  4. 09 4月, 2015 1 次提交
  5. 07 4月, 2015 1 次提交
  6. 01 4月, 2015 2 次提交
    • J
      drm/i915: Fix for ringbuf space wait in LRC mode · dbe4646d
      John Harrison 提交于
      The legacy and LRC code paths have an almost identical procedure for waiting for
      space in the ring buffer. They both search for a request in the free list that
      will advance the tail to a point where sufficient space is available. They then
      wait for that request, retire it and recalculate the free space value.
      
      Unfortunately, a bug in the LRC side meant that the resulting free space might
      not be as large as expected and indeed, might not be sufficient. This is because
      it was testing against the value of request->tail not request->postfix. Whereas,
      when a request is retired, ringbuf->tail is updated to req->postfix not
      req->tail.
      
      Another significant difference between the two is that the LRC one did not trust
      the wait for request to work! It redid the is there enough space available test
      and would fail the call if insufficient. Whereas, the legacy version just said
      'return 0' - it assumed the preceeding code works. This difference meant that
      the LRC version still worked even with the bug - it just fell back to the
      polling wait path.
      
      For: VIZ-5115
      Signed-off-by: NJohn Harrison <John.C.Harrison@Intel.com>
      Reviewed-by: NThomas Daniel <thomas.daniel@intel.com>
      Reviewed-by: NTomas Elf <tomas.elf@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      dbe4646d
    • J
      drm/i915: Move common request allocation code into a common function · 6689cb2b
      John Harrison 提交于
      The request allocation code is largely duplicated between legacy mode and
      execlist mode. The actual difference between the two versions of the code is
      pretty minimal.
      
      This patch moves the common code out into a separate function. This is then
      called by the execution specific version prior to setting up the one different
      value.
      
      For: VIZ-5190
      Signed-off-by: NJohn Harrison <John.C.Harrison@Intel.com>
      Reviewed-by: NTomas Elf <tomas.elf@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      6689cb2b
  7. 18 3月, 2015 2 次提交
  8. 26 2月, 2015 2 次提交
    • J
      drm/i915: Cache ringbuf pointer in request structure · 98e1bd4a
      John Harrison 提交于
      In execlist mode, the ringbuf is a function of the ring and context whereas in
      legacy mode, it is derived from the ring alone. Thus the calculation required to
      determine the ringbuf pointer from the ring (and context) also needs to test
      execlist mode or not. This is messy.
      
      Further, the request structure holds a pointer to both the ring and the context
      for which it was created. Thus, given a request, it is possible to derive the
      ringbuf in either legacy or execlist mode. Hence it is necessary to pass just
      the request in to all the low level functions rather than some combination of
      request, ring, context and ringbuf. However, rather than recalculating it each
      time, it is much simpler to just cache the ringbuf pointer in the request
      structure itself.
      
      Caching the pointer means the calculation is done once at request creation time
      and all further code and simply read it directly from the request structure.
      
      OTC-Jira: VIZ-5115
      Signed-off-by: NJohn Harrison <John.C.Harrison@Intel.com>
      [danvet: Drop contentless comment in lrc alloc request entirely. And
      spelling fix in the commit message.]
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      98e1bd4a
    • J
      drm/i915: Rename 'flags' to 'dispatch_flags' for better code reading · 8e004efc
      John Harrison 提交于
      There is a flags word that is passed through the execbuffer code path all the
      way from initial decoding of the user parameters down to the very final dispatch
      buffer call. It is simply called 'flags'. Unfortuantely, there are many other
      flags words floating around in the same blocks of code. Even more once the GPU
      scheduler arrives.
      
      This patch makes it more obvious exactly which flags word is which by renaming
      'flags' to 'dispatch_flags'. Note that the bit definitions for this flags word
      already have an 'I915_DISPATCH_' prefix on them and so are not quite so
      ambiguous.
      
      OTC-Jira: VIZ-1587
      Signed-off-by: NJohn Harrison <John.C.Harrison@Intel.com>
      [danvet: Resolve conflict with Chris' rework of the bb parsing.]
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      8e004efc
  9. 24 2月, 2015 2 次提交
  10. 14 2月, 2015 18 次提交
  11. 10 2月, 2015 1 次提交
    • C
      drm/i915: Insert a command barrier on BLT/BSD cache flushes · f0a1fb10
      Chris Wilson 提交于
      This looked like an odd regression from
      
      commit ec5cc0f9
      Author: Chris Wilson <chris@chris-wilson.co.uk>
      Date:   Thu Jun 12 10:28:55 2014 +0100
      
          drm/i915: Restrict GPU boost to the RCS engine
      
      but in reality it undercovered a much older coherency bug. The issue that
      boosting the GPU frequency on the BCS ring was masking was that we could
      wake the CPU up after completion of a BCS batch and inspect memory prior
      to the write cache being fully evicted. In order to serialise the
      breadcrumb interrupt (and so ensure that the CPU's view of memory is
      coherent) we need to perform a post-sync operation in the MI_FLUSH_DW.
      
      v2: Fix all the MI_FLUSH_DW (bsd plus the duplication in execlists).
      
      Also fix the invalidate_domains mask in gen8_emit_flush() for ring !=
      VCS.
      
      Testcase: gpuX-rcs-gpu-read-after-write
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Cc: stable@vger.kernel.org
      Acked-by: NDaniel Vetter <daniel@ffwll.ch>
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      f0a1fb10