On Tue, Jan 26, 2016 at 02:53:30PM +0000, Tvrtko Ursulin wrote: > From: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxx> > > Will be used from multiple callers in a following patch. > > Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxx> > --- > drivers/gpu/drm/i915/i915_gem.c | 91 ++++++++++++++++++++++------------------- > 1 file changed, 49 insertions(+), 42 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c > index af15c290c71d..dacf6a0013c5 100644 > --- a/drivers/gpu/drm/i915/i915_gem.c > +++ b/drivers/gpu/drm/i915/i915_gem.c > @@ -1772,6 +1772,53 @@ i915_gem_mmap_ioctl(struct drm_device *dev, void *data, > return 0; > } > > +static int > +i915_gem_ret_to_vm_ret(struct drm_i915_private *dev_priv, int ret) > +{ > + switch (ret) { > + case -EIO: > + /* > + * We eat errors when the gpu is terminally wedged to avoid > + * userspace unduly crashing (gl has no provisions for mmaps to > + * fail). But any other -EIO isn't ours (e.g. swap in failure) > + * and so needs to be reported. > + */ > + if (!i915_terminally_wedged(&dev_priv->gpu_error)) { > + ret = VM_FAULT_SIGBUS; > + break; > + } > + case -EAGAIN: > + /* > + * EAGAIN means the gpu is hung and we'll wait for the error > + * handler to reset everything when re-faulting in > + * i915_mutex_lock_interruptible. > + */ > + case 0: > + case -ERESTARTSYS: > + case -EINTR: > + case -EBUSY: > + /* > + * EBUSY is ok: this just means that another thread > + * already did the job. > + */ > + ret = VM_FAULT_NOPAGE; > + break; > + case -ENOMEM: > + ret = VM_FAULT_OOM; > + break; > + case -ENOSPC: > + case -EFAULT: > + ret = VM_FAULT_SIGBUS; > + break; > + default: > + WARN_ONCE(ret, "unhandled error in page fault\n"); > + ret = VM_FAULT_SIGBUS; > + break; > + } So without having to pin (plus a few other similar changes), we only need to report -ENOMEM, -ENOSPC, -EIO (from shmemfs) and -EFAULT (get_pages). Given that I'd rather have the reasoning behind each explicit. -Chris -- Chris Wilson, Intel Open Source Technology Centre _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx