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: John Harrison <John.C.Harrison@Intel.com> Reviewed-by: Tomas Elf <tomas.elf@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
parent
dc4be6071a
commit
b3dd6b9681
|
@ -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)
|
||||||
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)
|
||||||
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)
|
||||||
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)
|
||||||
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)
|
||||||
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);
|
||||||
|
|
||||||
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);
|
||||||
|
|
Loading…
Reference in New Issue