aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/i915')
-rw-r--r--drivers/gpu/drm/i915/i915_drv.h7
-rw-r--r--drivers/gpu/drm/i915/i915_gem.c50
-rw-r--r--drivers/gpu/drm/i915/i915_gpu_error.c2
-rw-r--r--drivers/gpu/drm/i915/intel_engine_cs.c42
-rw-r--r--drivers/gpu/drm/i915/intel_lrc.c17
-rw-r--r--drivers/gpu/drm/i915/intel_ringbuffer.c37
-rw-r--r--drivers/gpu/drm/i915/intel_ringbuffer.h5
7 files changed, 74 insertions, 86 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 23a3dc6f3907..c5f01964f0fb 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -1983,6 +1983,8 @@ struct drm_i915_private {
1983 struct delayed_work idle_work; 1983 struct delayed_work idle_work;
1984 1984
1985 ktime_t last_init_time; 1985 ktime_t last_init_time;
1986
1987 struct i915_vma *scratch;
1986 } gt; 1988 } gt;
1987 1989
1988 /* perform PHY state sanity checks? */ 1990 /* perform PHY state sanity checks? */
@@ -3713,4 +3715,9 @@ static inline int intel_hws_csb_write_index(struct drm_i915_private *i915)
3713 return I915_HWS_CSB_WRITE_INDEX; 3715 return I915_HWS_CSB_WRITE_INDEX;
3714} 3716}
3715 3717
3718static inline u32 i915_scratch_offset(const struct drm_i915_private *i915)
3719{
3720 return i915_ggtt_offset(i915->gt.scratch);
3721}
3722
3716#endif 3723#endif
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 35ecfea4e903..d36a9755ad91 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -5498,6 +5498,44 @@ err_active:
5498 goto out_ctx; 5498 goto out_ctx;
5499} 5499}
5500 5500
5501static int
5502i915_gem_init_scratch(struct drm_i915_private *i915, unsigned int size)
5503{
5504 struct drm_i915_gem_object *obj;
5505 struct i915_vma *vma;
5506 int ret;
5507
5508 obj = i915_gem_object_create_stolen(i915, size);
5509 if (!obj)
5510 obj = i915_gem_object_create_internal(i915, size);
5511 if (IS_ERR(obj)) {
5512 DRM_ERROR("Failed to allocate scratch page\n");
5513 return PTR_ERR(obj);
5514 }
5515
5516 vma = i915_vma_instance(obj, &i915->ggtt.vm, NULL);
5517 if (IS_ERR(vma)) {
5518 ret = PTR_ERR(vma);
5519 goto err_unref;
5520 }
5521
5522 ret = i915_vma_pin(vma, 0, 0, PIN_GLOBAL | PIN_HIGH);
5523 if (ret)
5524 goto err_unref;
5525
5526 i915->gt.scratch = vma;
5527 return 0;
5528
5529err_unref:
5530 i915_gem_object_put(obj);
5531 return ret;
5532}
5533
5534static void i915_gem_fini_scratch(struct drm_i915_private *i915)
5535{
5536 i915_vma_unpin_and_release(&i915->gt.scratch, 0);
5537}
5538
5501int i915_gem_init(struct drm_i915_private *dev_priv) 5539int i915_gem_init(struct drm_i915_private *dev_priv)
5502{ 5540{
5503 int ret; 5541 int ret;
@@ -5544,12 +5582,19 @@ int i915_gem_init(struct drm_i915_private *dev_priv)
5544 goto err_unlock; 5582 goto err_unlock;
5545 } 5583 }
5546 5584
5547 ret = i915_gem_contexts_init(dev_priv); 5585 ret = i915_gem_init_scratch(dev_priv,
5586 IS_GEN2(dev_priv) ? SZ_256K : PAGE_SIZE);
5548 if (ret) { 5587 if (ret) {
5549 GEM_BUG_ON(ret == -EIO); 5588 GEM_BUG_ON(ret == -EIO);
5550 goto err_ggtt; 5589 goto err_ggtt;
5551 } 5590 }
5552 5591
5592 ret = i915_gem_contexts_init(dev_priv);
5593 if (ret) {
5594 GEM_BUG_ON(ret == -EIO);
5595 goto err_scratch;
5596 }
5597
5553 ret = intel_engines_init(dev_priv); 5598 ret = intel_engines_init(dev_priv);
5554 if (ret) { 5599 if (ret) {
5555 GEM_BUG_ON(ret == -EIO); 5600 GEM_BUG_ON(ret == -EIO);
@@ -5622,6 +5667,8 @@ err_pm:
5622err_context: 5667err_context:
5623 if (ret != -EIO) 5668 if (ret != -EIO)
5624 i915_gem_contexts_fini(dev_priv); 5669 i915_gem_contexts_fini(dev_priv);
5670err_scratch:
5671 i915_gem_fini_scratch(dev_priv);
5625err_ggtt: 5672err_ggtt:
5626err_unlock: 5673err_unlock:
5627 intel_uncore_forcewake_put(dev_priv, FORCEWAKE_ALL); 5674 intel_uncore_forcewake_put(dev_priv, FORCEWAKE_ALL);
@@ -5673,6 +5720,7 @@ void i915_gem_fini(struct drm_i915_private *dev_priv)
5673 intel_uc_fini(dev_priv); 5720 intel_uc_fini(dev_priv);
5674 i915_gem_cleanup_engines(dev_priv); 5721 i915_gem_cleanup_engines(dev_priv);
5675 i915_gem_contexts_fini(dev_priv); 5722 i915_gem_contexts_fini(dev_priv);
5723 i915_gem_fini_scratch(dev_priv);
5676 mutex_unlock(&dev_priv->drm.struct_mutex); 5724 mutex_unlock(&dev_priv->drm.struct_mutex);
5677 5725
5678 intel_wa_list_free(&dev_priv->gt_wa_list); 5726 intel_wa_list_free(&dev_priv->gt_wa_list);
diff --git a/drivers/gpu/drm/i915/i915_gpu_error.c b/drivers/gpu/drm/i915/i915_gpu_error.c
index a6885a59568b..07465123c166 100644
--- a/drivers/gpu/drm/i915/i915_gpu_error.c
+++ b/drivers/gpu/drm/i915/i915_gpu_error.c
@@ -1571,7 +1571,7 @@ static void gem_record_rings(struct i915_gpu_state *error)
1571 if (HAS_BROKEN_CS_TLB(i915)) 1571 if (HAS_BROKEN_CS_TLB(i915))
1572 ee->wa_batchbuffer = 1572 ee->wa_batchbuffer =
1573 i915_error_object_create(i915, 1573 i915_error_object_create(i915,
1574 engine->scratch); 1574 i915->gt.scratch);
1575 request_record_user_bo(request, ee); 1575 request_record_user_bo(request, ee);
1576 1576
1577 ee->ctx = 1577 ee->ctx =
diff --git a/drivers/gpu/drm/i915/intel_engine_cs.c b/drivers/gpu/drm/i915/intel_engine_cs.c
index 6b427bc52f78..af2873403009 100644
--- a/drivers/gpu/drm/i915/intel_engine_cs.c
+++ b/drivers/gpu/drm/i915/intel_engine_cs.c
@@ -493,46 +493,6 @@ void intel_engine_setup_common(struct intel_engine_cs *engine)
493 intel_engine_init_cmd_parser(engine); 493 intel_engine_init_cmd_parser(engine);
494} 494}
495 495
496int intel_engine_create_scratch(struct intel_engine_cs *engine,
497 unsigned int size)
498{
499 struct drm_i915_gem_object *obj;
500 struct i915_vma *vma;
501 int ret;
502
503 WARN_ON(engine->scratch);
504
505 obj = i915_gem_object_create_stolen(engine->i915, size);
506 if (!obj)
507 obj = i915_gem_object_create_internal(engine->i915, size);
508 if (IS_ERR(obj)) {
509 DRM_ERROR("Failed to allocate scratch page\n");
510 return PTR_ERR(obj);
511 }
512
513 vma = i915_vma_instance(obj, &engine->i915->ggtt.vm, NULL);
514 if (IS_ERR(vma)) {
515 ret = PTR_ERR(vma);
516 goto err_unref;
517 }
518
519 ret = i915_vma_pin(vma, 0, 0, PIN_GLOBAL | PIN_HIGH);
520 if (ret)
521 goto err_unref;
522
523 engine->scratch = vma;
524 return 0;
525
526err_unref:
527 i915_gem_object_put(obj);
528 return ret;
529}
530
531void intel_engine_cleanup_scratch(struct intel_engine_cs *engine)
532{
533 i915_vma_unpin_and_release(&engine->scratch, 0);
534}
535
536static void cleanup_status_page(struct intel_engine_cs *engine) 496static void cleanup_status_page(struct intel_engine_cs *engine)
537{ 497{
538 if (HWS_NEEDS_PHYSICAL(engine->i915)) { 498 if (HWS_NEEDS_PHYSICAL(engine->i915)) {
@@ -707,8 +667,6 @@ void intel_engine_cleanup_common(struct intel_engine_cs *engine)
707{ 667{
708 struct drm_i915_private *i915 = engine->i915; 668 struct drm_i915_private *i915 = engine->i915;
709 669
710 intel_engine_cleanup_scratch(engine);
711
712 cleanup_status_page(engine); 670 cleanup_status_page(engine);
713 671
714 intel_engine_fini_breadcrumbs(engine); 672 intel_engine_fini_breadcrumbs(engine);
diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
index 87227fd9ae5f..d7fa301b5ec7 100644
--- a/drivers/gpu/drm/i915/intel_lrc.c
+++ b/drivers/gpu/drm/i915/intel_lrc.c
@@ -1288,9 +1288,10 @@ static int execlists_request_alloc(struct i915_request *request)
1288static u32 * 1288static u32 *
1289gen8_emit_flush_coherentl3_wa(struct intel_engine_cs *engine, u32 *batch) 1289gen8_emit_flush_coherentl3_wa(struct intel_engine_cs *engine, u32 *batch)
1290{ 1290{
1291 /* NB no one else is allowed to scribble over scratch + 256! */
1291 *batch++ = MI_STORE_REGISTER_MEM_GEN8 | MI_SRM_LRM_GLOBAL_GTT; 1292 *batch++ = MI_STORE_REGISTER_MEM_GEN8 | MI_SRM_LRM_GLOBAL_GTT;
1292 *batch++ = i915_mmio_reg_offset(GEN8_L3SQCREG4); 1293 *batch++ = i915_mmio_reg_offset(GEN8_L3SQCREG4);
1293 *batch++ = i915_ggtt_offset(engine->scratch) + 256; 1294 *batch++ = i915_scratch_offset(engine->i915) + 256;
1294 *batch++ = 0; 1295 *batch++ = 0;
1295 1296
1296 *batch++ = MI_LOAD_REGISTER_IMM(1); 1297 *batch++ = MI_LOAD_REGISTER_IMM(1);
@@ -1304,7 +1305,7 @@ gen8_emit_flush_coherentl3_wa(struct intel_engine_cs *engine, u32 *batch)
1304 1305
1305 *batch++ = MI_LOAD_REGISTER_MEM_GEN8 | MI_SRM_LRM_GLOBAL_GTT; 1306 *batch++ = MI_LOAD_REGISTER_MEM_GEN8 | MI_SRM_LRM_GLOBAL_GTT;
1306 *batch++ = i915_mmio_reg_offset(GEN8_L3SQCREG4); 1307 *batch++ = i915_mmio_reg_offset(GEN8_L3SQCREG4);
1307 *batch++ = i915_ggtt_offset(engine->scratch) + 256; 1308 *batch++ = i915_scratch_offset(engine->i915) + 256;
1308 *batch++ = 0; 1309 *batch++ = 0;
1309 1310
1310 return batch; 1311 return batch;
@@ -1341,7 +1342,7 @@ static u32 *gen8_init_indirectctx_bb(struct intel_engine_cs *engine, u32 *batch)
1341 PIPE_CONTROL_GLOBAL_GTT_IVB | 1342 PIPE_CONTROL_GLOBAL_GTT_IVB |
1342 PIPE_CONTROL_CS_STALL | 1343 PIPE_CONTROL_CS_STALL |
1343 PIPE_CONTROL_QW_WRITE, 1344 PIPE_CONTROL_QW_WRITE,
1344 i915_ggtt_offset(engine->scratch) + 1345 i915_scratch_offset(engine->i915) +
1345 2 * CACHELINE_BYTES); 1346 2 * CACHELINE_BYTES);
1346 1347
1347 *batch++ = MI_ARB_ON_OFF | MI_ARB_ENABLE; 1348 *batch++ = MI_ARB_ON_OFF | MI_ARB_ENABLE;
@@ -1973,7 +1974,7 @@ static int gen8_emit_flush_render(struct i915_request *request,
1973{ 1974{
1974 struct intel_engine_cs *engine = request->engine; 1975 struct intel_engine_cs *engine = request->engine;
1975 u32 scratch_addr = 1976 u32 scratch_addr =
1976 i915_ggtt_offset(engine->scratch) + 2 * CACHELINE_BYTES; 1977 i915_scratch_offset(engine->i915) + 2 * CACHELINE_BYTES;
1977 bool vf_flush_wa = false, dc_flush_wa = false; 1978 bool vf_flush_wa = false, dc_flush_wa = false;
1978 u32 *cs, flags = 0; 1979 u32 *cs, flags = 0;
1979 int len; 1980 int len;
@@ -2292,10 +2293,6 @@ int logical_render_ring_init(struct intel_engine_cs *engine)
2292 if (ret) 2293 if (ret)
2293 return ret; 2294 return ret;
2294 2295
2295 ret = intel_engine_create_scratch(engine, PAGE_SIZE);
2296 if (ret)
2297 goto err_cleanup_common;
2298
2299 ret = intel_init_workaround_bb(engine); 2296 ret = intel_init_workaround_bb(engine);
2300 if (ret) { 2297 if (ret) {
2301 /* 2298 /*
@@ -2311,10 +2308,6 @@ int logical_render_ring_init(struct intel_engine_cs *engine)
2311 intel_engine_init_workarounds(engine); 2308 intel_engine_init_workarounds(engine);
2312 2309
2313 return 0; 2310 return 0;
2314
2315err_cleanup_common:
2316 intel_engine_cleanup_common(engine);
2317 return ret;
2318} 2311}
2319 2312
2320int logical_xcs_ring_init(struct intel_engine_cs *engine) 2313int logical_xcs_ring_init(struct intel_engine_cs *engine)
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
index 7f88df5bff09..c5eb26a7ee79 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -150,8 +150,7 @@ gen4_render_ring_flush(struct i915_request *rq, u32 mode)
150 */ 150 */
151 if (mode & EMIT_INVALIDATE) { 151 if (mode & EMIT_INVALIDATE) {
152 *cs++ = GFX_OP_PIPE_CONTROL(4) | PIPE_CONTROL_QW_WRITE; 152 *cs++ = GFX_OP_PIPE_CONTROL(4) | PIPE_CONTROL_QW_WRITE;
153 *cs++ = i915_ggtt_offset(rq->engine->scratch) | 153 *cs++ = i915_scratch_offset(rq->i915) | PIPE_CONTROL_GLOBAL_GTT;
154 PIPE_CONTROL_GLOBAL_GTT;
155 *cs++ = 0; 154 *cs++ = 0;
156 *cs++ = 0; 155 *cs++ = 0;
157 156
@@ -159,8 +158,7 @@ gen4_render_ring_flush(struct i915_request *rq, u32 mode)
159 *cs++ = MI_FLUSH; 158 *cs++ = MI_FLUSH;
160 159
161 *cs++ = GFX_OP_PIPE_CONTROL(4) | PIPE_CONTROL_QW_WRITE; 160 *cs++ = GFX_OP_PIPE_CONTROL(4) | PIPE_CONTROL_QW_WRITE;
162 *cs++ = i915_ggtt_offset(rq->engine->scratch) | 161 *cs++ = i915_scratch_offset(rq->i915) | PIPE_CONTROL_GLOBAL_GTT;
163 PIPE_CONTROL_GLOBAL_GTT;
164 *cs++ = 0; 162 *cs++ = 0;
165 *cs++ = 0; 163 *cs++ = 0;
166 } 164 }
@@ -212,8 +210,7 @@ gen4_render_ring_flush(struct i915_request *rq, u32 mode)
212static int 210static int
213intel_emit_post_sync_nonzero_flush(struct i915_request *rq) 211intel_emit_post_sync_nonzero_flush(struct i915_request *rq)
214{ 212{
215 u32 scratch_addr = 213 u32 scratch_addr = i915_scratch_offset(rq->i915) + 2 * CACHELINE_BYTES;
216 i915_ggtt_offset(rq->engine->scratch) + 2 * CACHELINE_BYTES;
217 u32 *cs; 214 u32 *cs;
218 215
219 cs = intel_ring_begin(rq, 6); 216 cs = intel_ring_begin(rq, 6);
@@ -246,8 +243,7 @@ intel_emit_post_sync_nonzero_flush(struct i915_request *rq)
246static int 243static int
247gen6_render_ring_flush(struct i915_request *rq, u32 mode) 244gen6_render_ring_flush(struct i915_request *rq, u32 mode)
248{ 245{
249 u32 scratch_addr = 246 u32 scratch_addr = i915_scratch_offset(rq->i915) + 2 * CACHELINE_BYTES;
250 i915_ggtt_offset(rq->engine->scratch) + 2 * CACHELINE_BYTES;
251 u32 *cs, flags = 0; 247 u32 *cs, flags = 0;
252 int ret; 248 int ret;
253 249
@@ -316,8 +312,7 @@ gen7_render_ring_cs_stall_wa(struct i915_request *rq)
316static int 312static int
317gen7_render_ring_flush(struct i915_request *rq, u32 mode) 313gen7_render_ring_flush(struct i915_request *rq, u32 mode)
318{ 314{
319 u32 scratch_addr = 315 u32 scratch_addr = i915_scratch_offset(rq->i915) + 2 * CACHELINE_BYTES;
320 i915_ggtt_offset(rq->engine->scratch) + 2 * CACHELINE_BYTES;
321 u32 *cs, flags = 0; 316 u32 *cs, flags = 0;
322 317
323 /* 318 /*
@@ -994,7 +989,7 @@ i965_emit_bb_start(struct i915_request *rq,
994} 989}
995 990
996/* Just userspace ABI convention to limit the wa batch bo to a resonable size */ 991/* Just userspace ABI convention to limit the wa batch bo to a resonable size */
997#define I830_BATCH_LIMIT (256*1024) 992#define I830_BATCH_LIMIT SZ_256K
998#define I830_TLB_ENTRIES (2) 993#define I830_TLB_ENTRIES (2)
999#define I830_WA_SIZE max(I830_TLB_ENTRIES*4096, I830_BATCH_LIMIT) 994#define I830_WA_SIZE max(I830_TLB_ENTRIES*4096, I830_BATCH_LIMIT)
1000static int 995static int
@@ -1002,7 +997,9 @@ i830_emit_bb_start(struct i915_request *rq,
1002 u64 offset, u32 len, 997 u64 offset, u32 len,
1003 unsigned int dispatch_flags) 998 unsigned int dispatch_flags)
1004{ 999{
1005 u32 *cs, cs_offset = i915_ggtt_offset(rq->engine->scratch); 1000 u32 *cs, cs_offset = i915_scratch_offset(rq->i915);
1001
1002 GEM_BUG_ON(rq->i915->gt.scratch->size < I830_WA_SIZE);
1006 1003
1007 cs = intel_ring_begin(rq, 6); 1004 cs = intel_ring_begin(rq, 6);
1008 if (IS_ERR(cs)) 1005 if (IS_ERR(cs))
@@ -1459,7 +1456,6 @@ static int intel_init_ring_buffer(struct intel_engine_cs *engine)
1459{ 1456{
1460 struct i915_timeline *timeline; 1457 struct i915_timeline *timeline;
1461 struct intel_ring *ring; 1458 struct intel_ring *ring;
1462 unsigned int size;
1463 int err; 1459 int err;
1464 1460
1465 intel_engine_setup_common(engine); 1461 intel_engine_setup_common(engine);
@@ -1484,21 +1480,12 @@ static int intel_init_ring_buffer(struct intel_engine_cs *engine)
1484 GEM_BUG_ON(engine->buffer); 1480 GEM_BUG_ON(engine->buffer);
1485 engine->buffer = ring; 1481 engine->buffer = ring;
1486 1482
1487 size = PAGE_SIZE;
1488 if (HAS_BROKEN_CS_TLB(engine->i915))
1489 size = I830_WA_SIZE;
1490 err = intel_engine_create_scratch(engine, size);
1491 if (err)
1492 goto err_unpin;
1493
1494 err = intel_engine_init_common(engine); 1483 err = intel_engine_init_common(engine);
1495 if (err) 1484 if (err)
1496 goto err_scratch; 1485 goto err_unpin;
1497 1486
1498 return 0; 1487 return 0;
1499 1488
1500err_scratch:
1501 intel_engine_cleanup_scratch(engine);
1502err_unpin: 1489err_unpin:
1503 intel_ring_unpin(ring); 1490 intel_ring_unpin(ring);
1504err_ring: 1491err_ring:
@@ -1572,7 +1559,7 @@ static int flush_pd_dir(struct i915_request *rq)
1572 /* Stall until the page table load is complete */ 1559 /* Stall until the page table load is complete */
1573 *cs++ = MI_STORE_REGISTER_MEM | MI_SRM_LRM_GLOBAL_GTT; 1560 *cs++ = MI_STORE_REGISTER_MEM | MI_SRM_LRM_GLOBAL_GTT;
1574 *cs++ = i915_mmio_reg_offset(RING_PP_DIR_BASE(engine)); 1561 *cs++ = i915_mmio_reg_offset(RING_PP_DIR_BASE(engine));
1575 *cs++ = i915_ggtt_offset(engine->scratch); 1562 *cs++ = i915_scratch_offset(rq->i915);
1576 *cs++ = MI_NOOP; 1563 *cs++ = MI_NOOP;
1577 1564
1578 intel_ring_advance(rq, cs); 1565 intel_ring_advance(rq, cs);
@@ -1681,7 +1668,7 @@ static inline int mi_set_context(struct i915_request *rq, u32 flags)
1681 /* Insert a delay before the next switch! */ 1668 /* Insert a delay before the next switch! */
1682 *cs++ = MI_STORE_REGISTER_MEM | MI_SRM_LRM_GLOBAL_GTT; 1669 *cs++ = MI_STORE_REGISTER_MEM | MI_SRM_LRM_GLOBAL_GTT;
1683 *cs++ = i915_mmio_reg_offset(last_reg); 1670 *cs++ = i915_mmio_reg_offset(last_reg);
1684 *cs++ = i915_ggtt_offset(engine->scratch); 1671 *cs++ = i915_scratch_offset(rq->i915);
1685 *cs++ = MI_NOOP; 1672 *cs++ = MI_NOOP;
1686 } 1673 }
1687 *cs++ = MI_ARB_ON_OFF | MI_ARB_ENABLE; 1674 *cs++ = MI_ARB_ON_OFF | MI_ARB_ENABLE;
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.h b/drivers/gpu/drm/i915/intel_ringbuffer.h
index 927bb21a2b0b..72edaa7ff411 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.h
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.h
@@ -439,7 +439,6 @@ struct intel_engine_cs {
439 struct i915_wa_list ctx_wa_list; 439 struct i915_wa_list ctx_wa_list;
440 struct i915_wa_list wa_list; 440 struct i915_wa_list wa_list;
441 struct i915_wa_list whitelist; 441 struct i915_wa_list whitelist;
442 struct i915_vma *scratch;
443 442
444 u32 irq_keep_mask; /* always keep these interrupts */ 443 u32 irq_keep_mask; /* always keep these interrupts */
445 u32 irq_enable_mask; /* bitmask to enable ring interrupt */ 444 u32 irq_enable_mask; /* bitmask to enable ring interrupt */
@@ -896,10 +895,6 @@ void intel_engine_setup_common(struct intel_engine_cs *engine);
896int intel_engine_init_common(struct intel_engine_cs *engine); 895int intel_engine_init_common(struct intel_engine_cs *engine);
897void intel_engine_cleanup_common(struct intel_engine_cs *engine); 896void intel_engine_cleanup_common(struct intel_engine_cs *engine);
898 897
899int intel_engine_create_scratch(struct intel_engine_cs *engine,
900 unsigned int size);
901void intel_engine_cleanup_scratch(struct intel_engine_cs *engine);
902
903int intel_init_render_ring_buffer(struct intel_engine_cs *engine); 898int intel_init_render_ring_buffer(struct intel_engine_cs *engine);
904int intel_init_bsd_ring_buffer(struct intel_engine_cs *engine); 899int intel_init_bsd_ring_buffer(struct intel_engine_cs *engine);
905int intel_init_blt_ring_buffer(struct intel_engine_cs *engine); 900int intel_init_blt_ring_buffer(struct intel_engine_cs *engine);