1. 21 Oct, 2016 3 commits
  2. 20 Oct, 2016 24 commits
  3. 19 Oct, 2016 12 commits
  4. 18 Oct, 2016 1 commit
    • Chris Wilson's avatar
      drm/i915: Restrict pagefault disabling to just around copy_from_user() · ebc0808f
      Chris Wilson authored
      When handling execbuf relocations, we play a delicate dance with
      pagefault. We first try to access the user pages underneath our
      struct_mutex. However, if those pages were inside a GEM object, we may
      trigger a pagefault and deadlock as i915_gem_fault() tries to
      recursively acquire struct_mutex. Instead, we choose to disable
      pagefaulting around the copy_from_user whilst inside the struct_mutex
      and handle the EFAULT by falling back to a copy outside the
      struct_mutex.
      
      We however presumed that disabling pagefaults would be expensive. It is
      just an operation on the local current task. Cheap enough that we can
      restrict the disable/enable to the critical section around the copy, and
      so avoid having to handle the atomic sections within the relocation
      handling itself.
      
      v2: Just illustrate the broken error handling rather than argue why it
      is safer to ignore it, for now.
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
      Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
      Reviewed-by: default avatarTvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
      Link: http://patchwork.freedesktop.org/patch/msgid/20161018120251.25043-4-chris@chris-wilson.co.uk
      ebc0808f