提交 b3dd6b96 编写于 作者: J John Harrison 提交者: Daniel Vetter

drm/i915: Update ppgtt_init_ring() & context_enable() to take requests

The final step in removing the OLR from i915_gem_init_hw() is to pass the newly
allocated request structure in to each step rather than passing a ring
structure. This patch updates both i915_ppgtt_init_ring() and
i915_gem_context_enable() to take request pointers.

For: VIZ-5115
Signed-off-by: NJohn Harrison <John.C.Harrison@Intel.com>
Reviewed-by: NTomas Elf <tomas.elf@intel.com>
Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
上级 dc4be607
...@@ -3040,7 +3040,7 @@ int __must_check i915_gem_context_init(struct drm_device *dev); ...@@ -3040,7 +3040,7 @@ int __must_check i915_gem_context_init(struct drm_device *dev);
void i915_gem_context_fini(struct drm_device *dev); void i915_gem_context_fini(struct drm_device *dev);
void i915_gem_context_reset(struct drm_device *dev); void i915_gem_context_reset(struct drm_device *dev);
int i915_gem_context_open(struct drm_device *dev, struct drm_file *file); int i915_gem_context_open(struct drm_device *dev, struct drm_file *file);
int i915_gem_context_enable(struct intel_engine_cs *ring); int i915_gem_context_enable(struct drm_i915_gem_request *req);
void i915_gem_context_close(struct drm_device *dev, struct drm_file *file); void i915_gem_context_close(struct drm_device *dev, struct drm_file *file);
int i915_switch_context(struct intel_engine_cs *ring, int i915_switch_context(struct intel_engine_cs *ring,
struct intel_context *to); struct intel_context *to);
......
...@@ -5084,7 +5084,7 @@ i915_gem_init_hw(struct drm_device *dev) ...@@ -5084,7 +5084,7 @@ i915_gem_init_hw(struct drm_device *dev)
i915_gem_l3_remap(ring, j); i915_gem_l3_remap(ring, j);
} }
ret = i915_ppgtt_init_ring(ring); ret = i915_ppgtt_init_ring(req);
if (ret && ret != -EIO) { if (ret && ret != -EIO) {
DRM_ERROR("PPGTT enable ring #%d failed %d\n", i, ret); DRM_ERROR("PPGTT enable ring #%d failed %d\n", i, ret);
i915_gem_request_cancel(req); i915_gem_request_cancel(req);
...@@ -5092,7 +5092,7 @@ i915_gem_init_hw(struct drm_device *dev) ...@@ -5092,7 +5092,7 @@ i915_gem_init_hw(struct drm_device *dev)
goto out; goto out;
} }
ret = i915_gem_context_enable(ring); ret = i915_gem_context_enable(req);
if (ret && ret != -EIO) { if (ret && ret != -EIO) {
DRM_ERROR("Context enable ring #%d failed %d\n", i, ret); DRM_ERROR("Context enable ring #%d failed %d\n", i, ret);
i915_gem_request_cancel(req); i915_gem_request_cancel(req);
......
...@@ -409,8 +409,9 @@ void i915_gem_context_fini(struct drm_device *dev) ...@@ -409,8 +409,9 @@ void i915_gem_context_fini(struct drm_device *dev)
i915_gem_context_unreference(dctx); i915_gem_context_unreference(dctx);
} }
int i915_gem_context_enable(struct intel_engine_cs *ring) int i915_gem_context_enable(struct drm_i915_gem_request *req)
{ {
struct intel_engine_cs *ring = req->ring;
int ret; int ret;
if (i915.enable_execlists) { if (i915.enable_execlists) {
......
...@@ -1571,9 +1571,9 @@ int i915_ppgtt_init_hw(struct drm_device *dev) ...@@ -1571,9 +1571,9 @@ int i915_ppgtt_init_hw(struct drm_device *dev)
return 0; return 0;
} }
int i915_ppgtt_init_ring(struct intel_engine_cs *ring) int i915_ppgtt_init_ring(struct drm_i915_gem_request *req)
{ {
struct drm_i915_private *dev_priv = ring->dev->dev_private; struct drm_i915_private *dev_priv = req->ring->dev->dev_private;
struct i915_hw_ppgtt *ppgtt = dev_priv->mm.aliasing_ppgtt; struct i915_hw_ppgtt *ppgtt = dev_priv->mm.aliasing_ppgtt;
if (i915.enable_execlists) if (i915.enable_execlists)
...@@ -1582,7 +1582,7 @@ int i915_ppgtt_init_ring(struct intel_engine_cs *ring) ...@@ -1582,7 +1582,7 @@ int i915_ppgtt_init_ring(struct intel_engine_cs *ring)
if (!ppgtt) if (!ppgtt)
return 0; return 0;
return ppgtt->switch_mm(ppgtt, ring); return ppgtt->switch_mm(ppgtt, req->ring);
} }
struct i915_hw_ppgtt * struct i915_hw_ppgtt *
......
...@@ -475,7 +475,7 @@ void i915_global_gtt_cleanup(struct drm_device *dev); ...@@ -475,7 +475,7 @@ void i915_global_gtt_cleanup(struct drm_device *dev);
int i915_ppgtt_init(struct drm_device *dev, struct i915_hw_ppgtt *ppgtt); int i915_ppgtt_init(struct drm_device *dev, struct i915_hw_ppgtt *ppgtt);
int i915_ppgtt_init_hw(struct drm_device *dev); int i915_ppgtt_init_hw(struct drm_device *dev);
int i915_ppgtt_init_ring(struct intel_engine_cs *ring); int i915_ppgtt_init_ring(struct drm_i915_gem_request *req);
void i915_ppgtt_release(struct kref *kref); void i915_ppgtt_release(struct kref *kref);
struct i915_hw_ppgtt *i915_ppgtt_create(struct drm_device *dev, struct i915_hw_ppgtt *i915_ppgtt_create(struct drm_device *dev,
struct drm_i915_file_private *fpriv); struct drm_i915_file_private *fpriv);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册