diff options
Diffstat (limited to 'drivers/gpu/drm/i915/i915_gem_gtt.c')
-rw-r--r-- | drivers/gpu/drm/i915/i915_gem_gtt.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c index 24fb989593f0..212f6d8c35ec 100644 --- a/drivers/gpu/drm/i915/i915_gem_gtt.c +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c | |||
@@ -55,6 +55,7 @@ | |||
55 | #define HSW_WB_LLC_AGE3 HSW_CACHEABILITY_CONTROL(0x2) | 55 | #define HSW_WB_LLC_AGE3 HSW_CACHEABILITY_CONTROL(0x2) |
56 | #define HSW_WB_LLC_AGE0 HSW_CACHEABILITY_CONTROL(0x3) | 56 | #define HSW_WB_LLC_AGE0 HSW_CACHEABILITY_CONTROL(0x3) |
57 | #define HSW_WB_ELLC_LLC_AGE0 HSW_CACHEABILITY_CONTROL(0xb) | 57 | #define HSW_WB_ELLC_LLC_AGE0 HSW_CACHEABILITY_CONTROL(0xb) |
58 | #define HSW_WT_ELLC_LLC_AGE0 HSW_CACHEABILITY_CONTROL(0x6) | ||
58 | 59 | ||
59 | static gen6_gtt_pte_t snb_pte_encode(dma_addr_t addr, | 60 | static gen6_gtt_pte_t snb_pte_encode(dma_addr_t addr, |
60 | enum i915_cache_level level) | 61 | enum i915_cache_level level) |
@@ -138,8 +139,16 @@ static gen6_gtt_pte_t iris_pte_encode(dma_addr_t addr, | |||
138 | gen6_gtt_pte_t pte = GEN6_PTE_VALID; | 139 | gen6_gtt_pte_t pte = GEN6_PTE_VALID; |
139 | pte |= HSW_PTE_ADDR_ENCODE(addr); | 140 | pte |= HSW_PTE_ADDR_ENCODE(addr); |
140 | 141 | ||
141 | if (level != I915_CACHE_NONE) | 142 | switch (level) { |
143 | case I915_CACHE_NONE: | ||
144 | break; | ||
145 | case I915_CACHE_WT: | ||
146 | pte |= HSW_WT_ELLC_LLC_AGE0; | ||
147 | break; | ||
148 | default: | ||
142 | pte |= HSW_WB_ELLC_LLC_AGE0; | 149 | pte |= HSW_WB_ELLC_LLC_AGE0; |
150 | break; | ||
151 | } | ||
143 | 152 | ||
144 | return pte; | 153 | return pte; |
145 | } | 154 | } |
@@ -487,7 +496,7 @@ void i915_gem_restore_gtt_mappings(struct drm_device *dev) | |||
487 | dev_priv->gtt.base.total / PAGE_SIZE); | 496 | dev_priv->gtt.base.total / PAGE_SIZE); |
488 | 497 | ||
489 | list_for_each_entry(obj, &dev_priv->mm.bound_list, global_list) { | 498 | list_for_each_entry(obj, &dev_priv->mm.bound_list, global_list) { |
490 | i915_gem_clflush_object(obj); | 499 | i915_gem_clflush_object(obj, obj->pin_display); |
491 | i915_gem_gtt_bind_object(obj, obj->cache_level); | 500 | i915_gem_gtt_bind_object(obj, obj->cache_level); |
492 | } | 501 | } |
493 | 502 | ||