drm/i915: call intel_enable_gtt
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Thu, 7 Jun 2012 13:56:03 +0000 (15:56 +0200)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Tue, 12 Jun 2012 20:21:07 +0000 (22:21 +0200)
When drm/i915 is in control of the gtt, we need to call
the enable function at all the relevant places ourselves.

Reviewed-by: Jani Nikula <jani.nikula@linux.intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/char/agp/intel-gtt.c
drivers/gpu/drm/i915/i915_gem.c
include/drm/intel-gtt.h

index 4387e69f8b11b1bb541c6d49c27470362a6deb9e..419a25eeefd822479a65089ebe82707c24d2c9b8 100644 (file)
@@ -777,7 +777,7 @@ static void i830_write_entry(dma_addr_t addr, unsigned int entry,
        writel(addr | pte_flags, intel_private.gtt + entry);
 }
 
-static bool intel_enable_gtt(void)
+bool intel_enable_gtt(void)
 {
        u8 __iomem *reg;
 
@@ -823,6 +823,7 @@ static bool intel_enable_gtt(void)
 
        return true;
 }
+EXPORT_SYMBOL(intel_enable_gtt);
 
 static int i830_setup(void)
 {
index 108e4c2b5ffa8581c8bd51de2397e137536671ae..2884b08654732a2a08c5223968d06f55aef1f043 100644 (file)
@@ -3689,6 +3689,9 @@ i915_gem_init_hw(struct drm_device *dev)
        drm_i915_private_t *dev_priv = dev->dev_private;
        int ret;
 
+       if (!intel_enable_gtt())
+               return -EIO;
+
        i915_gem_l3_remap(dev);
 
        i915_gem_init_swizzling(dev);
index 84ebd7188fc6b2bca1ab3117445584b726d6bc16..8e29d551bb3c692da6d54d874474d189e00c8a59 100644 (file)
@@ -27,6 +27,8 @@ int intel_gmch_probe(struct pci_dev *bridge_pdev, struct pci_dev *gpu_pdev,
                     struct agp_bridge_data *bridge);
 void intel_gmch_remove(void);
 
+bool intel_enable_gtt(void);
+
 void intel_gtt_chipset_flush(void);
 void intel_gtt_unmap_memory(struct scatterlist *sg_list, int num_sg);
 void intel_gtt_clear_range(unsigned int first_entry, unsigned int num_entries);