summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/i915_gem_gtt.c
diff options
context:
space:
mode:
authorVille Syrjälä2013-04-04 14:13:42 +0200
committerDaniel Vetter2013-04-18 09:43:19 +0200
commita6f429a5a2f6ae0e1e8df2493884f9a881486d81 (patch)
tree467d802032ad600e98201ff1756cfc15e9d446da /drivers/gpu/drm/i915/i915_gem_gtt.c
parentdrm/i915: Set GAC_ECO_BITS register on Gen7+ (diff)
downloadkernel-qcow2-linux-a6f429a5a2f6ae0e1e8df2493884f9a881486d81.tar.gz
kernel-qcow2-linux-a6f429a5a2f6ae0e1e8df2493884f9a881486d81.tar.xz
kernel-qcow2-linux-a6f429a5a2f6ae0e1e8df2493884f9a881486d81.zip
drm/i915: Configure GAM_ECOCHK appropriatly for Gen7
IVB and HSW use different encodings for the PPGTT cacheability bits in the GAM_ECOCHK register. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Reviewed-by: Imre Deak <imre.deak@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915/i915_gem_gtt.c')
-rw-r--r--drivers/gpu/drm/i915/i915_gem_gtt.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c
index fae638072d7d..b77e98c0812c 100644
--- a/drivers/gpu/drm/i915/i915_gem_gtt.c
+++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
@@ -117,12 +117,19 @@ static int gen6_ppgtt_enable(struct drm_device *dev)
ECOCHK_PPGTT_CACHE64B);
I915_WRITE(GFX_MODE, _MASKED_BIT_ENABLE(GFX_PPGTT_ENABLE));
} else if (INTEL_INFO(dev)->gen >= 7) {
- uint32_t ecobits;
+ uint32_t ecochk, ecobits;
ecobits = I915_READ(GAC_ECO_BITS);
I915_WRITE(GAC_ECO_BITS, ecobits | ECOBITS_PPGTT_CACHE64B);
- I915_WRITE(GAM_ECOCHK, ECOCHK_PPGTT_CACHE64B);
+ ecochk = I915_READ(GAM_ECOCHK);
+ if (IS_HASWELL(dev)) {
+ ecochk |= ECOCHK_PPGTT_WB_HSW;
+ } else {
+ ecochk |= ECOCHK_PPGTT_LLC_IVB;
+ ecochk &= ~ECOCHK_PPGTT_GFDT_IVB;
+ }
+ I915_WRITE(GAM_ECOCHK, ecochk);
/* GFX_MODE is per-ring on gen7+ */
}