drm/i915: Move GSM mapping into dev_priv
authorBen Widawsky <benjamin.widawsky@intel.com>
Tue, 18 Dec 2012 18:31:26 +0000 (10:31 -0800)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Thu, 20 Dec 2012 15:28:42 +0000 (16:28 +0100)
This removes an unused field from the AGP structure and moves it into
the dev_priv structure (with a slightly better name). This builds upon
the kill-agp series already merged.

GSM is a well defined term in the bspec:
GSM: Graphics Stolen Memory

GTT stolen space is defined for storage of the GFX GTT entries in
physical memory. IA can not access GSM directly , it can only access via
GTTMMADR. GT can access GSM directly or through GTTMMADR.

This is not the entire stolen space.

Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/char/agp/intel-gtt.c
drivers/gpu/drm/i915/i915_drv.h
drivers/gpu/drm/i915/i915_gem_gtt.c
include/drm/intel-gtt.h

index dbd901e94ea637bcfad26cc21de52c89e10862e9..c8d9dcb15db001b3cdd86e26865cf61815de247d 100644 (file)
@@ -602,7 +602,6 @@ static int intel_gtt_init(void)
                iounmap(intel_private.registers);
                return -ENOMEM;
        }
-       intel_private.base.gtt = intel_private.gtt;
 
        global_cache_flush();   /* FIXME: ? */
 
index 15799e783b7af6e8ed5334e00a64f7a2b24d20e4..ae88d87be95150b6c4b5009803b0e56febc11fa2 100644 (file)
@@ -800,6 +800,9 @@ typedef struct drm_i915_private {
                unsigned long gtt_end;
                unsigned long stolen_base; /* limited to low memory (32-bit) */
 
+               /** "Graphics Stolen Memory" holds the global PTEs */
+               uint32_t __iomem *gsm;
+
                struct io_mapping *gtt_mapping;
                phys_addr_t gtt_base_addr;
                int gtt_mtrr;
index 61b3e728be34c9e95ed8de2c2f32fb7d3e629617..912389e38a7d2027a5b6ecee96cc17b7b0db6c1c 100644 (file)
@@ -290,7 +290,7 @@ void i915_gem_init_ppgtt(struct drm_device *dev)
                return;
 
 
-       pd_addr = dev_priv->mm.gtt->gtt + ppgtt->pd_offset/sizeof(gtt_pte_t);
+       pd_addr = dev_priv->mm.gsm + ppgtt->pd_offset/sizeof(gtt_pte_t);
        for (i = 0; i < ppgtt->num_pd_entries; i++) {
                dma_addr_t pt_addr;
 
@@ -367,7 +367,7 @@ static void i915_ggtt_clear_range(struct drm_device *dev,
 {
        struct drm_i915_private *dev_priv = dev->dev_private;
        gtt_pte_t scratch_pte;
-       gtt_pte_t __iomem *gtt_base = dev_priv->mm.gtt->gtt + first_entry;
+       gtt_pte_t __iomem *gtt_base = (gtt_pte_t __iomem *) dev_priv->mm.gsm + first_entry;
        const int max_entries = dev_priv->mm.gtt->gtt_total_entries - first_entry;
        int i;
 
@@ -432,7 +432,7 @@ static void gen6_ggtt_bind_object(struct drm_i915_gem_object *obj,
        struct scatterlist *sg = st->sgl;
        const int first_entry = obj->gtt_space->start >> PAGE_SHIFT;
        const int max_entries = dev_priv->mm.gtt->gtt_total_entries - first_entry;
-       gtt_pte_t __iomem *gtt_entries = dev_priv->mm.gtt->gtt + first_entry;
+       gtt_pte_t __iomem *gtt_entries = dev_priv->mm.gsm + first_entry;
        int unused, i = 0;
        unsigned int len, m = 0;
        dma_addr_t addr;
@@ -747,9 +747,9 @@ int i915_gem_gtt_init(struct drm_device *dev)
                goto err_out;
        }
 
-       dev_priv->mm.gtt->gtt = ioremap_wc(gtt_bus_addr,
-                                          dev_priv->mm.gtt->gtt_total_entries * sizeof(gtt_pte_t));
-       if (!dev_priv->mm.gtt->gtt) {
+       dev_priv->mm.gsm = ioremap_wc(gtt_bus_addr,
+                                     dev_priv->mm.gtt->gtt_total_entries * sizeof(gtt_pte_t));
+       if (!dev_priv->mm.gsm) {
                DRM_ERROR("Failed to map the gtt page table\n");
                teardown_scratch_page(dev);
                ret = -ENOMEM;
@@ -773,7 +773,7 @@ err_out:
 void i915_gem_gtt_fini(struct drm_device *dev)
 {
        struct drm_i915_private *dev_priv = dev->dev_private;
-       iounmap(dev_priv->mm.gtt->gtt);
+       iounmap(dev_priv->mm.gsm);
        teardown_scratch_page(dev);
        if (INTEL_INFO(dev)->gen < 6)
                intel_gmch_remove();
index 6eb76a1f11ab5bfe912d69c5b3dcd3ec4ae4d4c9..3e3a166a2690667f3dbdb40167143d0df52d2429 100644 (file)
@@ -18,8 +18,6 @@ struct intel_gtt {
        /* Share the scratch page dma with ppgtts. */
        dma_addr_t scratch_page_dma;
        struct page *scratch_page;
-       /* for ppgtt PDE access */
-       u32 __iomem *gtt;
        /* needed for ioremap in drm/i915 */
        phys_addr_t gma_bus_addr;
 } *intel_gtt_get(void);
This page took 0.030066 seconds and 5 git commands to generate.