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.goel@xxxxxxxxx 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@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/intel-gfx