/**
  * i915_gem_batch_pool_init() - initialize a batch buffer pool
- * @dev: the drm device
+ * @engine: the associated request submission engine
  * @pool: the batch buffer pool
  */
-void i915_gem_batch_pool_init(struct drm_device *dev,
+void i915_gem_batch_pool_init(struct intel_engine_cs *engine,
                              struct i915_gem_batch_pool *pool)
 {
        int n;
 
-       pool->dev = dev;
+       pool->engine = engine;
 
        for (n = 0; n < ARRAY_SIZE(pool->cache_list); n++)
                INIT_LIST_HEAD(&pool->cache_list[n]);
 {
        int n;
 
-       WARN_ON(!mutex_is_locked(&pool->dev->struct_mutex));
+       lockdep_assert_held(&pool->engine->i915->drm.struct_mutex);
 
        for (n = 0; n < ARRAY_SIZE(pool->cache_list); n++) {
                struct drm_i915_gem_object *obj, *next;
        struct list_head *list;
        int n;
 
-       WARN_ON(!mutex_is_locked(&pool->dev->struct_mutex));
+       lockdep_assert_held(&pool->engine->i915->drm.struct_mutex);
 
        /* Compute a power-of-two bucket, but throw everything greater than
         * 16KiB into the same bucket: i.e. the the buckets hold objects of
 
        list_for_each_entry_safe(tmp, next, list, batch_pool_link) {
                /* The batches are strictly LRU ordered */
-               if (tmp->active)
+               if (!i915_gem_active_is_idle(&tmp->last_read[pool->engine->id],
+                                            &tmp->base.dev->struct_mutex))
                        break;
 
                /* While we're looping, do some clean up */
        if (obj == NULL) {
                int ret;
 
-               obj = i915_gem_object_create(pool->dev, size);
+               obj = i915_gem_object_create(&pool->engine->i915->drm, size);
                if (IS_ERR(obj))
                        return obj;
 
 
 
 #include "i915_drv.h"
 
+struct intel_engine_cs;
+
 struct i915_gem_batch_pool {
-       struct drm_device *dev;
+       struct intel_engine_cs *engine;
        struct list_head cache_list[4];
 };
 
 /* i915_gem_batch_pool.c */
-void i915_gem_batch_pool_init(struct drm_device *dev,
+void i915_gem_batch_pool_init(struct intel_engine_cs *engine,
                              struct i915_gem_batch_pool *pool);
 void i915_gem_batch_pool_fini(struct i915_gem_batch_pool *pool);
 struct drm_i915_gem_object*