diff options
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/gpu/drm/i915/i915_drv.h | 6 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/i915_gem.c | 4 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/i915_perf.c | 3 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_lrc.c | 6 |
4 files changed, 15 insertions, 4 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index ea6c6f715ca6..0509fd086130 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h | |||
| @@ -3096,6 +3096,12 @@ enum i915_map_type { | |||
| 3096 | I915_MAP_FORCE_WC = I915_MAP_WC | I915_MAP_OVERRIDE, | 3096 | I915_MAP_FORCE_WC = I915_MAP_WC | I915_MAP_OVERRIDE, |
| 3097 | }; | 3097 | }; |
| 3098 | 3098 | ||
| 3099 | static inline enum i915_map_type | ||
| 3100 | i915_coherent_map_type(struct drm_i915_private *i915) | ||
| 3101 | { | ||
| 3102 | return HAS_LLC(i915) ? I915_MAP_WB : I915_MAP_WC; | ||
| 3103 | } | ||
| 3104 | |||
| 3099 | /** | 3105 | /** |
| 3100 | * i915_gem_object_pin_map - return a contiguous mapping of the entire object | 3106 | * i915_gem_object_pin_map - return a contiguous mapping of the entire object |
| 3101 | * @obj: the object to map into kernel address space | 3107 | * @obj: the object to map into kernel address space |
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index d276fb302d4e..e3c2492438b8 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c | |||
| @@ -5418,6 +5418,8 @@ static int __intel_engines_record_defaults(struct drm_i915_private *i915) | |||
| 5418 | struct i915_vma *state; | 5418 | struct i915_vma *state; |
| 5419 | void *vaddr; | 5419 | void *vaddr; |
| 5420 | 5420 | ||
| 5421 | GEM_BUG_ON(to_intel_context(ctx, engine)->pin_count); | ||
| 5422 | |||
| 5421 | state = to_intel_context(ctx, engine)->state; | 5423 | state = to_intel_context(ctx, engine)->state; |
| 5422 | if (!state) | 5424 | if (!state) |
| 5423 | continue; | 5425 | continue; |
| @@ -5442,7 +5444,7 @@ static int __intel_engines_record_defaults(struct drm_i915_private *i915) | |||
| 5442 | 5444 | ||
| 5443 | /* Check we can acquire the image of the context state */ | 5445 | /* Check we can acquire the image of the context state */ |
| 5444 | vaddr = i915_gem_object_pin_map(engine->default_state, | 5446 | vaddr = i915_gem_object_pin_map(engine->default_state, |
| 5445 | I915_MAP_WB); | 5447 | I915_MAP_FORCE_WB); |
| 5446 | if (IS_ERR(vaddr)) { | 5448 | if (IS_ERR(vaddr)) { |
| 5447 | err = PTR_ERR(vaddr); | 5449 | err = PTR_ERR(vaddr); |
| 5448 | goto err_active; | 5450 | goto err_active; |
diff --git a/drivers/gpu/drm/i915/i915_perf.c b/drivers/gpu/drm/i915/i915_perf.c index 3d7a052b4cca..664b96bb65a3 100644 --- a/drivers/gpu/drm/i915/i915_perf.c +++ b/drivers/gpu/drm/i915/i915_perf.c | |||
| @@ -1707,6 +1707,7 @@ static int gen8_configure_all_contexts(struct drm_i915_private *dev_priv, | |||
| 1707 | const struct i915_oa_config *oa_config) | 1707 | const struct i915_oa_config *oa_config) |
| 1708 | { | 1708 | { |
| 1709 | struct intel_engine_cs *engine = dev_priv->engine[RCS]; | 1709 | struct intel_engine_cs *engine = dev_priv->engine[RCS]; |
| 1710 | unsigned int map_type = i915_coherent_map_type(dev_priv); | ||
| 1710 | struct i915_gem_context *ctx; | 1711 | struct i915_gem_context *ctx; |
| 1711 | struct i915_request *rq; | 1712 | struct i915_request *rq; |
| 1712 | int ret; | 1713 | int ret; |
| @@ -1741,7 +1742,7 @@ static int gen8_configure_all_contexts(struct drm_i915_private *dev_priv, | |||
| 1741 | if (!ce->state) | 1742 | if (!ce->state) |
| 1742 | continue; | 1743 | continue; |
| 1743 | 1744 | ||
| 1744 | regs = i915_gem_object_pin_map(ce->state->obj, I915_MAP_WB); | 1745 | regs = i915_gem_object_pin_map(ce->state->obj, map_type); |
| 1745 | if (IS_ERR(regs)) | 1746 | if (IS_ERR(regs)) |
| 1746 | return PTR_ERR(regs); | 1747 | return PTR_ERR(regs); |
| 1747 | 1748 | ||
diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c index d7fcbba8e982..a51be16ddaac 100644 --- a/drivers/gpu/drm/i915/intel_lrc.c +++ b/drivers/gpu/drm/i915/intel_lrc.c | |||
| @@ -1294,7 +1294,7 @@ static int __context_pin(struct i915_gem_context *ctx, struct i915_vma *vma) | |||
| 1294 | * on an active context (which by nature is already on the GPU). | 1294 | * on an active context (which by nature is already on the GPU). |
| 1295 | */ | 1295 | */ |
| 1296 | if (!(vma->flags & I915_VMA_GLOBAL_BIND)) { | 1296 | if (!(vma->flags & I915_VMA_GLOBAL_BIND)) { |
| 1297 | err = i915_gem_object_set_to_gtt_domain(vma->obj, true); | 1297 | err = i915_gem_object_set_to_wc_domain(vma->obj, true); |
| 1298 | if (err) | 1298 | if (err) |
| 1299 | return err; | 1299 | return err; |
| 1300 | } | 1300 | } |
| @@ -1322,7 +1322,9 @@ __execlists_context_pin(struct intel_engine_cs *engine, | |||
| 1322 | if (ret) | 1322 | if (ret) |
| 1323 | goto err; | 1323 | goto err; |
| 1324 | 1324 | ||
| 1325 | vaddr = i915_gem_object_pin_map(ce->state->obj, I915_MAP_WB); | 1325 | vaddr = i915_gem_object_pin_map(ce->state->obj, |
| 1326 | i915_coherent_map_type(ctx->i915) | | ||
| 1327 | I915_MAP_OVERRIDE); | ||
| 1326 | if (IS_ERR(vaddr)) { | 1328 | if (IS_ERR(vaddr)) { |
| 1327 | ret = PTR_ERR(vaddr); | 1329 | ret = PTR_ERR(vaddr); |
| 1328 | goto unpin_vma; | 1330 | goto unpin_vma; |
