From: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
To: Chris Wilson <chris@chris-wilson.co.uk>, intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH 02/16] drm/i915: Convert non-blocking waits for requests over to using RCU
Date: Wed, 03 Aug 2016 16:23:16 +0300 [thread overview]
Message-ID: <1470230596.3860.20.camel@linux.intel.com> (raw)
In-Reply-To: <1470075758-13871-3-git-send-email-chris@chris-wilson.co.uk>
On ma, 2016-08-01 at 19:22 +0100, Chris Wilson wrote:
> - if (!obj) {
> - ret = -ENOENT;
> - goto unlock;
> - }
> + if (!obj)
> + return -ENOENT;
>
> /* Try to flush the object off the GPU without holding the lock.
> * We will repeat the flush holding the lock in the normal manner
> * to catch cases where we are gazumped.
> */
> - ret = i915_gem_object_wait_rendering__nonblocking(obj,
> - to_rps_client(file),
> - !write_domain);
> + ret = __unsafe_wait_rendering(obj, to_rps_client(file), !write_domain);
> if (ret)
> - goto unref;
> + goto out_unlocked;
> +
> + ret = i915_mutex_lock_interruptible(dev);
> + if (ret)
> + goto out_unlocked;
>
> if (read_domains & I915_GEM_DOMAIN_GTT)
> ret = i915_gem_object_set_to_gtt_domain(obj, write_domain != 0);
> @@ -1501,11 +1481,13 @@ i915_gem_set_domain_ioctl(struct drm_device *dev, void *data,
> if (write_domain != 0)
> intel_fb_obj_invalidate(obj, write_origin(obj, write_domain));
>
> -unref:
> i915_gem_object_put(obj);
> -unlock:
> mutex_unlock(&dev->struct_mutex);
> return ret;
> +
> +out_unlocked:
This is the sole label, you could call 'err' too.
> + i915_gem_object_put_unlocked(obj);
> + return ret;
> }
>
> /**
> @@ -1647,6 +1629,15 @@ int i915_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
> int ret = 0;
> bool write = !!(vmf->flags & FAULT_FLAG_WRITE);
>
> + /* Try to flush the object off the GPU first without holding the lock.
> + * Upon acquiring the lock, we will perform our sanity checks and then
> + * repeat the flush holding the lock in the normal manner to catch cases
> + * where we are gazumped.
> + */
> + ret = __unsafe_wait_rendering(obj, NULL, !write);
> + if (ret)
> + goto err;
> +
Why do you lift this call super early, tracing will be affected at
least.
> intel_runtime_pm_get(dev_priv);
>
> /* We don't use vmf->pgoff since that has the fake offset */
> @@ -1655,23 +1646,14 @@ int i915_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
>
> ret = i915_mutex_lock_interruptible(dev);
> if (ret)
> - goto out;
> + goto err_rpm;
>
> trace_i915_gem_object_fault(obj, page_offset, true, write);
>
> - /* Try to flush the object off the GPU first without holding the lock.
> - * Upon reacquiring the lock, we will perform our sanity checks and then
> - * repeat the flush holding the lock in the normal manner to catch cases
> - * where we are gazumped.
> - */
> - ret = i915_gem_object_wait_rendering__nonblocking(obj, NULL, !write);
> - if (ret)
> - goto unlock;
> -
> /* Access to snoopable pages through the GTT is incoherent. */
> if (obj->cache_level != I915_CACHE_NONE && !HAS_LLC(dev)) {
> ret = -EFAULT;
> - goto unlock;
> + goto err_unlock;
> }
>
> /* Use a partial view if the object is bigger than the aperture. */
--
Joonas Lahtinen
Open Source Technology Center
Intel Corporation
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2016-08-03 13:23 UTC|newest]
Thread overview: 61+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-01 18:22 Put RCU request lookup to use Chris Wilson
2016-08-01 18:22 ` [PATCH 01/16] drm/i915: Introduce i915_gem_active_wait_unlocked() Chris Wilson
2016-08-03 11:41 ` Joonas Lahtinen
2016-08-03 11:56 ` Chris Wilson
2016-08-03 12:04 ` Chris Wilson
2016-08-03 13:30 ` Joonas Lahtinen
2016-08-03 13:43 ` Chris Wilson
2016-08-04 11:51 ` Joonas Lahtinen
2016-08-01 18:22 ` [PATCH 02/16] drm/i915: Convert non-blocking waits for requests over to using RCU Chris Wilson
2016-08-03 13:23 ` Joonas Lahtinen [this message]
2016-08-03 13:36 ` Chris Wilson
2016-08-03 13:41 ` Joonas Lahtinen
2016-08-01 18:22 ` [PATCH 03/16] drm/i915: Convert non-blocking userptr " Chris Wilson
2016-08-03 13:27 ` Joonas Lahtinen
2016-08-01 18:22 ` [PATCH 04/16] drm/i915/userptr: Remove superfluous interruptible=false on waiting Chris Wilson
2016-08-03 13:43 ` Joonas Lahtinen
2016-08-03 13:49 ` Chris Wilson
2016-08-04 11:53 ` Joonas Lahtinen
2016-08-01 18:22 ` [PATCH 05/16] drm/i915: Enable i915_gem_wait_for_idle() without holding struct_mutex Chris Wilson
2016-08-01 19:28 ` Chris Wilson
2016-08-04 11:50 ` Joonas Lahtinen
2016-08-01 18:22 ` [PATCH 06/16] drm/gem/shrinker: Wait before acquiring struct_mutex under oom Chris Wilson
2016-08-04 6:46 ` Joonas Lahtinen
2016-08-04 6:52 ` Chris Wilson
2016-08-01 18:22 ` [PATCH 07/16] drm/i915: Tidy generation of the GTT mmap offset Chris Wilson
2016-08-04 7:25 ` Joonas Lahtinen
2016-08-04 7:30 ` Chris Wilson
2016-08-04 11:57 ` Joonas Lahtinen
2016-08-01 18:22 ` [PATCH 08/16] drm/i915: Remove unused no-shrinker-steal Chris Wilson
2016-08-04 7:26 ` Joonas Lahtinen
2016-08-01 18:22 ` [PATCH 09/16] drm/i915: Do a nonblocking wait first in pread/pwrite Chris Wilson
2016-08-04 7:53 ` Joonas Lahtinen
2016-08-01 18:22 ` [PATCH 10/16] drm/i915: Remove (struct_mutex) locking for wait-ioctl Chris Wilson
2016-08-04 8:26 ` Joonas Lahtinen
2016-08-04 8:37 ` Chris Wilson
2016-08-04 10:02 ` Chris Wilson
2016-08-04 12:00 ` Joonas Lahtinen
2016-08-01 18:22 ` [PATCH 11/16] drm/i915: Remove (struct_mutex) locking for busy-ioctl Chris Wilson
2016-08-04 10:25 ` Joonas Lahtinen
2016-08-04 10:30 ` Chris Wilson
2016-08-05 7:05 ` Joonas Lahtinen
2016-08-05 7:34 ` Chris Wilson
2016-08-05 8:06 ` Joonas Lahtinen
2016-08-01 18:22 ` [PATCH 12/16] drm/i915: Reduce locking inside swfinish ioctl Chris Wilson
2016-08-04 10:32 ` Joonas Lahtinen
2016-08-04 10:48 ` Chris Wilson
2016-08-01 18:22 ` [PATCH 13/16] drm/i915: Remove pinned check from madvise ioctl Chris Wilson
2016-08-04 10:36 ` Joonas Lahtinen
2016-08-04 10:42 ` Chris Wilson
2016-08-04 11:47 ` Joonas Lahtinen
2016-08-01 18:22 ` [PATCH 14/16] drm/i915: Remove locking for get_tiling Chris Wilson
2016-08-04 10:40 ` Joonas Lahtinen
2016-08-01 18:22 ` [PATCH 15/16] drm/i915: Repack fence tiling mode and stride into a single integer Chris Wilson
2016-08-04 11:17 ` Joonas Lahtinen
2016-08-04 11:34 ` Chris Wilson
2016-08-04 11:36 ` Joonas Lahtinen
2016-08-04 11:41 ` Chris Wilson
2016-08-04 12:02 ` Joonas Lahtinen
2016-08-01 18:22 ` [PATCH 16/16] drm/i915: Assert that the request hasn't been retired Chris Wilson
2016-08-04 11:18 ` Joonas Lahtinen
2016-08-02 5:00 ` ✗ Ro.CI.BAT: failure for series starting with [01/16] drm/i915: Introduce i915_gem_active_wait_unlocked() Patchwork
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1470230596.3860.20.camel@linux.intel.com \
--to=joonas.lahtinen@linux.intel.com \
--cc=chris@chris-wilson.co.uk \
--cc=intel-gfx@lists.freedesktop.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.