On 11/4/2016 7:07 PM, Chris Wilson wrote:
Best if we send these as a new series to unconfuse CI.

Okay will send as a new series.

On Fri, Nov 04, 2016 at 06:18:26PM +0530, akash.g...@intel.com wrote:
+static int do_migrate_page(struct drm_i915_gem_object *obj)
+{
+       struct drm_i915_private *dev_priv = to_i915(obj->base.dev);
+       int ret = 0;
+
+       if (!can_migrate_page(obj))
+               return -EBUSY;
+
+       /* HW access would be required for a GGTT bound object, for which
+        * device has to be kept awake. But a deadlock scenario can arise if
+        * the attempt is made to resume the device, when either a suspend
+        * or a resume operation is already happening concurrently from some
+        * other path and that only also triggers compaction. So only unbind
+        * if the device is currently awake.
+        */
+       if (!intel_runtime_pm_get_if_in_use(dev_priv))
+               return -EBUSY;
+
+       i915_gem_object_get(obj);
+       if (!unsafe_drop_pages(obj))
+               ret = -EBUSY;
+       i915_gem_object_put(obj);

Since the object release changes, we can now do this without the
i915_gem_object_get / i915_gem_object_put (as we are guarded by the BKL
struct_mutex).
Fine will remove object_get/put as with struct_mutex protection object can't disappear across unsafe_drop_pages().

Best regards
Akash


-Chris

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to