[Intel-gfx] [PATCH 5/6] drm/i915: Move GSM mapping into dev_priv
Mika Kuoppala
mika.kuoppala at linux.intel.com
Thu Dec 20 13:19:26 CET 2012
Ben Widawsky <benjamin.widawsky at intel.com> writes:
> 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 at bwidawsk.net>
Reviewed-by: Mika Kuoppala <mika.kuoppala at intel.com>
> ---
> drivers/char/agp/intel-gtt.c | 1 -
> drivers/gpu/drm/i915/i915_drv.h | 3 +++
> drivers/gpu/drm/i915/i915_gem_gtt.c | 14 +++++++-------
> include/drm/intel-gtt.h | 2 --
> 4 files changed, 10 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/char/agp/intel-gtt.c b/drivers/char/agp/intel-gtt.c
> index dbd901e..c8d9dcb 100644
> --- a/drivers/char/agp/intel-gtt.c
> +++ b/drivers/char/agp/intel-gtt.c
> @@ -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: ? */
>
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index 75003c3..49f465a 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -799,6 +799,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;
> diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c
> index fc3c08a..b4c1e34 100644
> --- a/drivers/gpu/drm/i915/i915_gem_gtt.c
> +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
> @@ -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;
> @@ -751,9 +751,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;
> @@ -777,7 +777,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();
> diff --git a/include/drm/intel-gtt.h b/include/drm/intel-gtt.h
> index 6eb76a1..3e3a166 100644
> --- a/include/drm/intel-gtt.h
> +++ b/include/drm/intel-gtt.h
> @@ -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);
> --
> 1.8.0.1
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
More information about the Intel-gfx
mailing list