@@ -275,6 +275,7 @@ static void intel_engine_sanitize_mmio(struct intel_engine_cs *engine)
275
275
static int intel_engine_setup (struct intel_gt * gt , enum intel_engine_id id )
276
276
{
277
277
const struct engine_info * info = & intel_engines [id ];
278
+ struct drm_i915_private * i915 = gt -> i915 ;
278
279
struct intel_engine_cs * engine ;
279
280
280
281
BUILD_BUG_ON (MAX_ENGINE_CLASS >= BIT (GEN11_ENGINE_CLASS_WIDTH ));
@@ -301,11 +302,11 @@ static int intel_engine_setup(struct intel_gt *gt, enum intel_engine_id id)
301
302
engine -> id = id ;
302
303
engine -> legacy_idx = INVALID_ENGINE ;
303
304
engine -> mask = BIT (id );
304
- engine -> i915 = gt -> i915 ;
305
+ engine -> i915 = i915 ;
305
306
engine -> gt = gt ;
306
307
engine -> uncore = gt -> uncore ;
307
308
engine -> hw_id = engine -> guc_id = info -> hw_id ;
308
- engine -> mmio_base = __engine_mmio_base (gt -> i915 , info -> mmio_bases );
309
+ engine -> mmio_base = __engine_mmio_base (i915 , info -> mmio_bases );
309
310
310
311
engine -> class = info -> class ;
311
312
engine -> instance = info -> instance ;
@@ -322,11 +323,15 @@ static int intel_engine_setup(struct intel_gt *gt, enum intel_engine_id id)
322
323
engine -> props .timeslice_duration_ms =
323
324
CONFIG_DRM_I915_TIMESLICE_DURATION ;
324
325
326
+ /* Override to uninterruptible for OpenCL workloads. */
327
+ if (INTEL_GEN (i915 ) == 12 && engine -> class == RENDER_CLASS )
328
+ engine -> props .preempt_timeout_ms = 0 ;
329
+
325
330
engine -> context_size = intel_engine_context_size (gt , engine -> class );
326
331
if (WARN_ON (engine -> context_size > BIT (20 )))
327
332
engine -> context_size = 0 ;
328
333
if (engine -> context_size )
329
- DRIVER_CAPS (gt -> i915 )-> has_logical_contexts = true;
334
+ DRIVER_CAPS (i915 )-> has_logical_contexts = true;
330
335
331
336
/* Nothing to do here, execute in order of dependencies */
332
337
engine -> schedule = NULL ;
@@ -342,7 +347,7 @@ static int intel_engine_setup(struct intel_gt *gt, enum intel_engine_id id)
342
347
gt -> engine_class [info -> class ][info -> instance ] = engine ;
343
348
gt -> engine [id ] = engine ;
344
349
345
- gt -> i915 -> engine [id ] = engine ;
350
+ i915 -> engine [id ] = engine ;
346
351
347
352
return 0 ;
348
353
}
0 commit comments