if (IS_VALLEYVIEW(dev)) {
                error->gtier[0] = I915_READ(GTIER);
                error->ier = I915_READ(VLV_IER);
-               error->forcewake = I915_READ(FORCEWAKE_VLV);
+               error->forcewake = I915_READ_FW(FORCEWAKE_VLV);
        }
 
        if (IS_GEN7(dev))
        }
 
        if (IS_GEN6(dev)) {
-               error->forcewake = I915_READ(FORCEWAKE);
+               error->forcewake = I915_READ_FW(FORCEWAKE);
                error->gab_ctl = I915_READ(GAB_CTL);
                error->gfx_mode = I915_READ(GFX_MODE);
        }
 
        /* 2: Registers which belong to multiple generations */
        if (INTEL_INFO(dev)->gen >= 7)
-               error->forcewake = I915_READ(FORCEWAKE_MT);
+               error->forcewake = I915_READ_FW(FORCEWAKE_MT);
 
        if (INTEL_INFO(dev)->gen >= 6) {
                error->derrmr = I915_READ(DERRMR);
 
 }
 
 /* We give fast paths for the really cool registers */
-#define NEEDS_FORCE_WAKE(reg) \
-        ((reg) < 0x40000 && (reg) != FORCEWAKE)
+#define NEEDS_FORCE_WAKE(reg) ((reg) < 0x40000)
 
 #define REG_RANGE(reg, start, end) ((reg) >= (start) && (reg) < (end))
 
 gen8_write##x(struct drm_i915_private *dev_priv, off_t reg, u##x val, bool trace) { \
        GEN6_WRITE_HEADER; \
        hsw_unclaimed_reg_debug(dev_priv, reg, false, true); \
-       if (reg < 0x40000 && !is_gen8_shadowed(dev_priv, reg)) \
+       if (NEEDS_FORCE_WAKE(reg) && !is_gen8_shadowed(dev_priv, reg)) \
                __force_wake_get(dev_priv, FORCEWAKE_RENDER); \
        __raw_i915_write##x(dev_priv, reg, val); \
        hsw_unclaimed_reg_debug(dev_priv, reg, false, false); \