seq_printf(m, "FBC disabled: %s\n",
                           dev_priv->fbc.no_fbc_reason);
 
-       if (intel_fbc_is_active(dev_priv) && INTEL_GEN(dev_priv) >= 7) {
-               uint32_t mask = INTEL_GEN(dev_priv) >= 8 ?
-                               BDW_FBC_COMPRESSION_MASK :
-                               IVB_FBC_COMPRESSION_MASK;
-               seq_printf(m, "Compressing: %s\n",
-                          yesno(I915_READ(FBC_STATUS2) & mask));
+       if (intel_fbc_is_active(dev_priv)) {
+               u32 mask;
+
+               if (INTEL_GEN(dev_priv) >= 8)
+                       mask = I915_READ(IVB_FBC_STATUS2) & BDW_FBC_COMP_SEG_MASK;
+               else if (INTEL_GEN(dev_priv) >= 7)
+                       mask = I915_READ(IVB_FBC_STATUS2) & IVB_FBC_COMP_SEG_MASK;
+               else if (INTEL_GEN(dev_priv) >= 5)
+                       mask = I915_READ(ILK_DPFC_STATUS) & ILK_DPFC_COMP_SEG_MASK;
+               else if (IS_G4X(dev_priv))
+                       mask = I915_READ(DPFC_STATUS) & DPFC_COMP_SEG_MASK;
+               else
+                       mask = I915_READ(FBC_STATUS) & (FBC_STAT_COMPRESSING |
+                                                       FBC_STAT_COMPRESSED);
+
+               seq_printf(m, "Compressing: %s\n", yesno(mask));
        }
 
        mutex_unlock(&dev_priv->fbc.lock);
 
 #define FBC_FENCE_OFF          _MMIO(0x3218) /* BSpec typo has 321Bh */
 #define FBC_TAG(i)             _MMIO(0x3300 + (i) * 4)
 
-#define FBC_STATUS2                    _MMIO(0x43214)
-#define  IVB_FBC_COMPRESSION_MASK      0x7ff
-#define  BDW_FBC_COMPRESSION_MASK      0xfff
-
 #define FBC_LL_SIZE            (1536)
 
 #define FBC_LLC_READ_CTRL      _MMIO(0x9044)
 #define   DPFC_INVAL_SEG_SHIFT  (16)
 #define   DPFC_INVAL_SEG_MASK  (0x07ff0000)
 #define   DPFC_COMP_SEG_SHIFT  (0)
-#define   DPFC_COMP_SEG_MASK   (0x000003ff)
+#define   DPFC_COMP_SEG_MASK   (0x000007ff)
 #define DPFC_STATUS2           _MMIO(0x3214)
 #define DPFC_FENCE_YOFF                _MMIO(0x3218)
 #define DPFC_CHICKEN           _MMIO(0x3224)
 #define   DPFC_RESERVED                (0x1FFFFF00)
 #define ILK_DPFC_RECOMP_CTL    _MMIO(0x4320c)
 #define ILK_DPFC_STATUS                _MMIO(0x43210)
+#define  ILK_DPFC_COMP_SEG_MASK        0x7ff
+#define IVB_FBC_STATUS2                _MMIO(0x43214)
+#define  IVB_FBC_COMP_SEG_MASK 0x7ff
+#define  BDW_FBC_COMP_SEG_MASK 0xfff
 #define ILK_DPFC_FENCE_YOFF    _MMIO(0x43218)
 #define ILK_DPFC_CHICKEN       _MMIO(0x43224)
 #define   ILK_DPFC_DISABLE_DUMMY0 (1<<8)