1. 11 Aug, 2016 14 commits
  2. 10 Aug, 2016 17 commits
  3. 09 Aug, 2016 2 commits
  4. 05 Aug, 2016 6 commits
  5. 09 Aug, 2016 1 commit
    • Chris Wilson's avatar
      drm/i915: Do not overwrite the request with zero on reallocation · 5a198b8c
      Chris Wilson authored
      When using RCU lookup for the request, commit 0eafec6d ("drm/i915:
      Enable lockless lookup of request tracking via RCU"), we acknowledge that
      we may race with another thread that could have reallocated the request.
      In order for the first thread not to blow up, the second thread must not
      clear the request completed before overwriting it. In the RCU lookup, we
      allow for the engine/seqno to be replaced but we do not allow for it to
      be zeroed.
      
      The choice we make is to either add extra checking to the RCU lookup, or
      embrace the inherent races (as intended). It is more complicated as we
      need to manually clear everything we depend upon being zero initialised,
      but we benefit from not emiting the memset() to clear the entire
      frequently allocated structure (that memset turns up in throughput
      profiles). And at the same time, the lookup remains flexible for future
      adjustments.
      
      v2: Old style LRC requires another variable to be initialize. (The
      danger inherent in not zeroing everything.)
      v3: request->batch also needs to be cleared
      v4: signaling.tsk is no long used unset, but pid still exists
      
      Fixes: 0eafec6d ("drm/i915: Enable lockless lookup of request...")
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Cc: "Goel, Akash" <akash.goel@intel.com>
      Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
      Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Reviewed-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Link: http://patchwork.freedesktop.org/patch/msgid/1470731014-6894-2-git-send-email-chris@chris-wilson.co.uk
      5a198b8c