func(is_kabylake); \
        func(is_preliminary); \
        /* Keep has_* in alphabetical order */ \
+       func(has_64bit_reloc); \
        func(has_csr); \
        func(has_ddi); \
        func(has_dp_mst); \
 #define HAS_CSR(dev)   (INTEL_INFO(dev)->has_csr)
 
 #define HAS_RUNTIME_PM(dev_priv) ((dev_priv)->info.has_runtime_pm)
+#define HAS_64BIT_RELOC(dev_priv) ((dev_priv)->info.has_64bit_reloc)
+
 /*
  * For now, anything with a GuC requires uCode loading, and then supports
  * command submission once loaded. But these are logically independent
 
        cache->page = -1;
        cache->vaddr = 0;
        cache->i915 = i915;
-       cache->use_64bit_reloc = INTEL_GEN(cache->i915) >= 8;
+       /* Must be a variable in the struct to allow GCC to unroll. */
+       cache->use_64bit_reloc = HAS_64BIT_RELOC(i915);
        cache->node.allocated = false;
 }
 
 
                              struct drm_i915_private *i915)
 {
        const struct intel_renderstate_rodata *rodata = so->rodata;
-       const bool has_64bit_reloc = INTEL_GEN(i915) >= 8;
        struct drm_i915_gem_object *obj = so->vma->obj;
        unsigned int i = 0, reloc_index = 0;
        unsigned int needs_clflush;
                if (i * 4  == rodata->reloc[reloc_index]) {
                        u64 r = s + so->vma->node.start;
                        s = lower_32_bits(r);
-                       if (has_64bit_reloc) {
+                       if (HAS_64BIT_RELOC(i915)) {
                                if (i + 1 >= rodata->batch_items ||
                                    rodata->batch[i + 1] != 0)
                                        goto err;
 
 #define BDW_FEATURES \
        HSW_FEATURES, \
        BDW_COLORS, \
-       .has_logical_ring_contexts = 1
+       .has_logical_ring_contexts = 1, \
+       .has_64bit_reloc = 1
 
 static const struct intel_device_info intel_broadwell_info = {
        BDW_FEATURES,
        .has_hotplug = 1,
        .ring_mask = RENDER_RING | BSD_RING | BLT_RING | VEBOX_RING,
        .is_cherryview = 1,
+       .has_64bit_reloc = 1,
        .has_psr = 1,
        .has_runtime_pm = 1,
        .has_resource_streamer = 1,
        .has_hotplug = 1,
        .ring_mask = RENDER_RING | BSD_RING | BLT_RING | VEBOX_RING,
        .num_pipes = 3,
+       .has_64bit_reloc = 1,
        .has_ddi = 1,
        .has_fpga_dbg = 1,
        .has_fbc = 1,