Commit 06e5598f authored by Ben Widawsky's avatar Ben Widawsky Committed by Daniel Vetter

drm/i915: Move GSM mapping into dev_priv

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: default avatarBen Widawsky <ben@bwidawsk.net>
Reviewed-by: default avatarMika Kuoppala <mika.kuoppala@intel.com>
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
parent d7e5008f
...@@ -602,7 +602,6 @@ static int intel_gtt_init(void) ...@@ -602,7 +602,6 @@ static int intel_gtt_init(void)
iounmap(intel_private.registers); iounmap(intel_private.registers);
return -ENOMEM; return -ENOMEM;
} }
intel_private.base.gtt = intel_private.gtt;
global_cache_flush(); /* FIXME: ? */ global_cache_flush(); /* FIXME: ? */
......
...@@ -800,6 +800,9 @@ typedef struct drm_i915_private { ...@@ -800,6 +800,9 @@ typedef struct drm_i915_private {
unsigned long gtt_end; unsigned long gtt_end;
unsigned long stolen_base; /* limited to low memory (32-bit) */ 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; struct io_mapping *gtt_mapping;
phys_addr_t gtt_base_addr; phys_addr_t gtt_base_addr;
int gtt_mtrr; int gtt_mtrr;
......
...@@ -290,7 +290,7 @@ void i915_gem_init_ppgtt(struct drm_device *dev) ...@@ -290,7 +290,7 @@ void i915_gem_init_ppgtt(struct drm_device *dev)
return; 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++) { for (i = 0; i < ppgtt->num_pd_entries; i++) {
dma_addr_t pt_addr; dma_addr_t pt_addr;
...@@ -367,7 +367,7 @@ static void i915_ggtt_clear_range(struct drm_device *dev, ...@@ -367,7 +367,7 @@ static void i915_ggtt_clear_range(struct drm_device *dev,
{ {
struct drm_i915_private *dev_priv = dev->dev_private; struct drm_i915_private *dev_priv = dev->dev_private;
gtt_pte_t scratch_pte; 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; const int max_entries = dev_priv->mm.gtt->gtt_total_entries - first_entry;
int i; int i;
...@@ -432,7 +432,7 @@ static void gen6_ggtt_bind_object(struct drm_i915_gem_object *obj, ...@@ -432,7 +432,7 @@ static void gen6_ggtt_bind_object(struct drm_i915_gem_object *obj,
struct scatterlist *sg = st->sgl; struct scatterlist *sg = st->sgl;
const int first_entry = obj->gtt_space->start >> PAGE_SHIFT; const int first_entry = obj->gtt_space->start >> PAGE_SHIFT;
const int max_entries = dev_priv->mm.gtt->gtt_total_entries - first_entry; 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; int unused, i = 0;
unsigned int len, m = 0; unsigned int len, m = 0;
dma_addr_t addr; dma_addr_t addr;
...@@ -747,9 +747,9 @@ int i915_gem_gtt_init(struct drm_device *dev) ...@@ -747,9 +747,9 @@ int i915_gem_gtt_init(struct drm_device *dev)
goto err_out; goto err_out;
} }
dev_priv->mm.gtt->gtt = ioremap_wc(gtt_bus_addr, dev_priv->mm.gsm = ioremap_wc(gtt_bus_addr,
dev_priv->mm.gtt->gtt_total_entries * sizeof(gtt_pte_t)); dev_priv->mm.gtt->gtt_total_entries * sizeof(gtt_pte_t));
if (!dev_priv->mm.gtt->gtt) { if (!dev_priv->mm.gsm) {
DRM_ERROR("Failed to map the gtt page table\n"); DRM_ERROR("Failed to map the gtt page table\n");
teardown_scratch_page(dev); teardown_scratch_page(dev);
ret = -ENOMEM; ret = -ENOMEM;
...@@ -773,7 +773,7 @@ int i915_gem_gtt_init(struct drm_device *dev) ...@@ -773,7 +773,7 @@ int i915_gem_gtt_init(struct drm_device *dev)
void i915_gem_gtt_fini(struct drm_device *dev) void i915_gem_gtt_fini(struct drm_device *dev)
{ {
struct drm_i915_private *dev_priv = dev->dev_private; struct drm_i915_private *dev_priv = dev->dev_private;
iounmap(dev_priv->mm.gtt->gtt); iounmap(dev_priv->mm.gsm);
teardown_scratch_page(dev); teardown_scratch_page(dev);
if (INTEL_INFO(dev)->gen < 6) if (INTEL_INFO(dev)->gen < 6)
intel_gmch_remove(); intel_gmch_remove();
......
...@@ -18,8 +18,6 @@ struct intel_gtt { ...@@ -18,8 +18,6 @@ struct intel_gtt {
/* Share the scratch page dma with ppgtts. */ /* Share the scratch page dma with ppgtts. */
dma_addr_t scratch_page_dma; dma_addr_t scratch_page_dma;
struct page *scratch_page; struct page *scratch_page;
/* for ppgtt PDE access */
u32 __iomem *gtt;
/* needed for ioremap in drm/i915 */ /* needed for ioremap in drm/i915 */
phys_addr_t gma_bus_addr; phys_addr_t gma_bus_addr;
} *intel_gtt_get(void); } *intel_gtt_get(void);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment