Re: [Intel-gfx] [PATCH 03/12] drm/i915: make PDE|PTE platform specific

2013-05-08 Thread Ben Widawsky
On Mon, May 06, 2013 at 11:47:42AM +0200, Daniel Vetter wrote:
 On Thu, May 02, 2013 at 02:26:17PM -0700, Jesse Barnes wrote:
  On Tue, 23 Apr 2013 23:15:31 -0700
  Ben Widawsky b...@bwidawsk.net wrote:
  
   Accomplish this be removing the PDE count define which is (and has
   always been) part of the PPGTT structure anyway. With the addition of
   the gen specific init function, we can nicely tuck away the magic number
   in there.
   
   In this vain, make the PTE define less of a magic number.
  
  vein
  
   
   The remaining code in the global gtt setup is a bit messy, but an
   upcoming patch will clean that one up.
   
   Signed-off-by: Ben Widawsky b...@bwidawsk.net
   ---
drivers/gpu/drm/i915/i915_drv.h |  2 --
drivers/gpu/drm/i915/i915_gem_gtt.c | 10 +-
2 files changed, 5 insertions(+), 7 deletions(-)
   
   diff --git a/drivers/gpu/drm/i915/i915_drv.h 
   b/drivers/gpu/drm/i915/i915_drv.h
   index d5dcf7f..0a9c7cd 100644
   --- a/drivers/gpu/drm/i915/i915_drv.h
   +++ b/drivers/gpu/drm/i915/i915_drv.h
   @@ -431,8 +431,6 @@ struct i915_gtt {
};
#define gtt_total_entries(gtt) ((gtt).total  PAGE_SHIFT)

   -#define I915_PPGTT_PD_ENTRIES 512
   -#define I915_PPGTT_PT_ENTRIES 1024
struct i915_hw_ppgtt {
 struct drm_device *dev;
 unsigned num_pd_entries;
   diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c 
   b/drivers/gpu/drm/i915/i915_gem_gtt.c
   index 0503f09..11a50cf 100644
   --- a/drivers/gpu/drm/i915/i915_gem_gtt.c
   +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
   @@ -29,6 +29,7 @@
#include intel_drv.h

typedef uint32_t gen6_gtt_pte_t;
   +#define I915_PPGTT_PT_ENTRIES (PAGE_SIZE / sizeof(gen6_gtt_pte_t))

/* PPGTT stuff */
#define GEN6_GTT_ADDR_ENCODE(addr)   ((addr) | (((addr)  28)  
   0xff0))
   @@ -235,10 +236,9 @@ static int gen6_ppgtt_init(struct i915_hw_ppgtt 
   *ppgtt)
 /* ppgtt PDEs reside in the global gtt pagetable, which has 512*1024
  * entries. For aliasing ppgtt support we just steal them at the end for
  * now. */
   - first_pd_entry_in_global_pt =
   - gtt_total_entries(dev_priv-gtt) - I915_PPGTT_PD_ENTRIES;
   + first_pd_entry_in_global_pt = gtt_total_entries(dev_priv-gtt) - 512;

   - ppgtt-num_pd_entries = I915_PPGTT_PD_ENTRIES;
   + ppgtt-num_pd_entries = 512;
 ppgtt-enable = gen6_ppgtt_enable;
 ppgtt-clear_range = gen6_ppgtt_clear_range;
 ppgtt-insert_entries = gen6_ppgtt_insert_entries;
   @@ -646,7 +646,7 @@ void i915_gem_init_global_gtt(struct drm_device *dev)
 if (INTEL_INFO(dev)-gen = 7) {
 /* PPGTT pdes are stolen from global gtt ptes, so 
   shrink the
  * aperture accordingly when using aliasing ppgtt. */
   - gtt_size -= I915_PPGTT_PD_ENTRIES*PAGE_SIZE;
   + gtt_size -= 512 * PAGE_SIZE;
 }

 i915_gem_setup_global_gtt(dev, 0, mappable_size, gtt_size);
   @@ -657,7 +657,7 @@ void i915_gem_init_global_gtt(struct drm_device *dev)

 DRM_ERROR(Aliased PPGTT setup failed %d\n, ret);
 drm_mm_takedown(dev_priv-mm.gtt_space);
   - gtt_size += I915_PPGTT_PD_ENTRIES*PAGE_SIZE;
   + gtt_size += 512 * PAGE_SIZE;
 }
 i915_gem_setup_global_gtt(dev, 0, mappable_size, gtt_size);
}
  
  I thought we could have 1024 PDEs?  Either way, this just drops the
  macro, which is fine, unless we want to increase our PDE count.
  
  Reviewed-by: Jesse Barnes jbar...@virtuousgeek.org
 
 I've written this code, so I know what the magic 512 is all about. But
 since Jesse is already confused about them I don't like removing the
 #define that much. Heck, we even tend to use PAGE_SIZE instead of 4096.
 
 What about a GEN6_ prefix instead? Or if you want to make this dynamic
 (iirc we can allocated PDEs in groups of 32) call it _MAX or so?
 
 I like the PT entries part though.
 -Daniel

If I just bring back #define I915_PPGTT_PD_ENTRIES 512, does this make
you sufficient happy to accept the patch?

 -- 
 Daniel Vetter
 Software Engineer, Intel Corporation
 +41 (0) 79 365 57 48 - http://blog.ffwll.ch

-- 
Ben Widawsky, Intel Open Source Technology Center
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH 03/12] drm/i915: make PDE|PTE platform specific

2013-05-02 Thread Jesse Barnes
On Tue, 23 Apr 2013 23:15:31 -0700
Ben Widawsky b...@bwidawsk.net wrote:

 Accomplish this be removing the PDE count define which is (and has
 always been) part of the PPGTT structure anyway. With the addition of
 the gen specific init function, we can nicely tuck away the magic number
 in there.
 
 In this vain, make the PTE define less of a magic number.

vein

 
 The remaining code in the global gtt setup is a bit messy, but an
 upcoming patch will clean that one up.
 
 Signed-off-by: Ben Widawsky b...@bwidawsk.net
 ---
  drivers/gpu/drm/i915/i915_drv.h |  2 --
  drivers/gpu/drm/i915/i915_gem_gtt.c | 10 +-
  2 files changed, 5 insertions(+), 7 deletions(-)
 
 diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
 index d5dcf7f..0a9c7cd 100644
 --- a/drivers/gpu/drm/i915/i915_drv.h
 +++ b/drivers/gpu/drm/i915/i915_drv.h
 @@ -431,8 +431,6 @@ struct i915_gtt {
  };
  #define gtt_total_entries(gtt) ((gtt).total  PAGE_SHIFT)
  
 -#define I915_PPGTT_PD_ENTRIES 512
 -#define I915_PPGTT_PT_ENTRIES 1024
  struct i915_hw_ppgtt {
   struct drm_device *dev;
   unsigned num_pd_entries;
 diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c 
 b/drivers/gpu/drm/i915/i915_gem_gtt.c
 index 0503f09..11a50cf 100644
 --- a/drivers/gpu/drm/i915/i915_gem_gtt.c
 +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
 @@ -29,6 +29,7 @@
  #include intel_drv.h
  
  typedef uint32_t gen6_gtt_pte_t;
 +#define I915_PPGTT_PT_ENTRIES (PAGE_SIZE / sizeof(gen6_gtt_pte_t))
  
  /* PPGTT stuff */
  #define GEN6_GTT_ADDR_ENCODE(addr)   ((addr) | (((addr)  28)  0xff0))
 @@ -235,10 +236,9 @@ static int gen6_ppgtt_init(struct i915_hw_ppgtt *ppgtt)
   /* ppgtt PDEs reside in the global gtt pagetable, which has 512*1024
* entries. For aliasing ppgtt support we just steal them at the end for
* now. */
 - first_pd_entry_in_global_pt =
 - gtt_total_entries(dev_priv-gtt) - I915_PPGTT_PD_ENTRIES;
 + first_pd_entry_in_global_pt = gtt_total_entries(dev_priv-gtt) - 512;
  
 - ppgtt-num_pd_entries = I915_PPGTT_PD_ENTRIES;
 + ppgtt-num_pd_entries = 512;
   ppgtt-enable = gen6_ppgtt_enable;
   ppgtt-clear_range = gen6_ppgtt_clear_range;
   ppgtt-insert_entries = gen6_ppgtt_insert_entries;
 @@ -646,7 +646,7 @@ void i915_gem_init_global_gtt(struct drm_device *dev)
   if (INTEL_INFO(dev)-gen = 7) {
   /* PPGTT pdes are stolen from global gtt ptes, so 
 shrink the
* aperture accordingly when using aliasing ppgtt. */
 - gtt_size -= I915_PPGTT_PD_ENTRIES*PAGE_SIZE;
 + gtt_size -= 512 * PAGE_SIZE;
   }
  
   i915_gem_setup_global_gtt(dev, 0, mappable_size, gtt_size);
 @@ -657,7 +657,7 @@ void i915_gem_init_global_gtt(struct drm_device *dev)
  
   DRM_ERROR(Aliased PPGTT setup failed %d\n, ret);
   drm_mm_takedown(dev_priv-mm.gtt_space);
 - gtt_size += I915_PPGTT_PD_ENTRIES*PAGE_SIZE;
 + gtt_size += 512 * PAGE_SIZE;
   }
   i915_gem_setup_global_gtt(dev, 0, mappable_size, gtt_size);
  }

I thought we could have 1024 PDEs?  Either way, this just drops the
macro, which is fine, unless we want to increase our PDE count.

Reviewed-by: Jesse Barnes jbar...@virtuousgeek.org

-- 
Jesse Barnes, Intel Open Source Technology Center
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH 03/12] drm/i915: make PDE|PTE platform specific

2013-05-02 Thread Ben Widawsky
On Thu, May 02, 2013 at 02:26:17PM -0700, Jesse Barnes wrote:
 On Tue, 23 Apr 2013 23:15:31 -0700
 Ben Widawsky b...@bwidawsk.net wrote:
 
  Accomplish this be removing the PDE count define which is (and has
  always been) part of the PPGTT structure anyway. With the addition of
  the gen specific init function, we can nicely tuck away the magic number
  in there.
  
  In this vain, make the PTE define less of a magic number.
 
 vein
 
  
  The remaining code in the global gtt setup is a bit messy, but an
  upcoming patch will clean that one up.
  
  Signed-off-by: Ben Widawsky b...@bwidawsk.net
  ---
   drivers/gpu/drm/i915/i915_drv.h |  2 --
   drivers/gpu/drm/i915/i915_gem_gtt.c | 10 +-
   2 files changed, 5 insertions(+), 7 deletions(-)
  
  diff --git a/drivers/gpu/drm/i915/i915_drv.h 
  b/drivers/gpu/drm/i915/i915_drv.h
  index d5dcf7f..0a9c7cd 100644
  --- a/drivers/gpu/drm/i915/i915_drv.h
  +++ b/drivers/gpu/drm/i915/i915_drv.h
  @@ -431,8 +431,6 @@ struct i915_gtt {
   };
   #define gtt_total_entries(gtt) ((gtt).total  PAGE_SHIFT)
   
  -#define I915_PPGTT_PD_ENTRIES 512
  -#define I915_PPGTT_PT_ENTRIES 1024
   struct i915_hw_ppgtt {
  struct drm_device *dev;
  unsigned num_pd_entries;
  diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c 
  b/drivers/gpu/drm/i915/i915_gem_gtt.c
  index 0503f09..11a50cf 100644
  --- a/drivers/gpu/drm/i915/i915_gem_gtt.c
  +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
  @@ -29,6 +29,7 @@
   #include intel_drv.h
   
   typedef uint32_t gen6_gtt_pte_t;
  +#define I915_PPGTT_PT_ENTRIES (PAGE_SIZE / sizeof(gen6_gtt_pte_t))
   
   /* PPGTT stuff */
   #define GEN6_GTT_ADDR_ENCODE(addr) ((addr) | (((addr)  28)  0xff0))
  @@ -235,10 +236,9 @@ static int gen6_ppgtt_init(struct i915_hw_ppgtt *ppgtt)
  /* ppgtt PDEs reside in the global gtt pagetable, which has 512*1024
   * entries. For aliasing ppgtt support we just steal them at the end for
   * now. */
  -   first_pd_entry_in_global_pt =
  -   gtt_total_entries(dev_priv-gtt) - I915_PPGTT_PD_ENTRIES;
  +   first_pd_entry_in_global_pt = gtt_total_entries(dev_priv-gtt) - 512;
   
  -   ppgtt-num_pd_entries = I915_PPGTT_PD_ENTRIES;
  +   ppgtt-num_pd_entries = 512;
  ppgtt-enable = gen6_ppgtt_enable;
  ppgtt-clear_range = gen6_ppgtt_clear_range;
  ppgtt-insert_entries = gen6_ppgtt_insert_entries;
  @@ -646,7 +646,7 @@ void i915_gem_init_global_gtt(struct drm_device *dev)
  if (INTEL_INFO(dev)-gen = 7) {
  /* PPGTT pdes are stolen from global gtt ptes, so 
  shrink the
   * aperture accordingly when using aliasing ppgtt. */
  -   gtt_size -= I915_PPGTT_PD_ENTRIES*PAGE_SIZE;
  +   gtt_size -= 512 * PAGE_SIZE;
  }
   
  i915_gem_setup_global_gtt(dev, 0, mappable_size, gtt_size);
  @@ -657,7 +657,7 @@ void i915_gem_init_global_gtt(struct drm_device *dev)
   
  DRM_ERROR(Aliased PPGTT setup failed %d\n, ret);
  drm_mm_takedown(dev_priv-mm.gtt_space);
  -   gtt_size += I915_PPGTT_PD_ENTRIES*PAGE_SIZE;
  +   gtt_size += 512 * PAGE_SIZE;
  }
  i915_gem_setup_global_gtt(dev, 0, mappable_size, gtt_size);
   }
 
 I thought we could have 1024 PDEs?  Either way, this just drops the
 macro, which is fine, unless we want to increase our PDE count.
 
 Reviewed-by: Jesse Barnes jbar...@virtuousgeek.org

Thanks for the review.

I think the docs must be wrong if they say this. 512PDEs are all you
need to map a 2GB address space (which is the max), and furthermore, the
DCLV which is used to indicate the size of the PDEs can only allow up to 2GB.

 
 -- 
 Jesse Barnes, Intel Open Source Technology Center

-- 
Ben Widawsky, Intel Open Source Technology Center
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH 03/12] drm/i915: make PDE|PTE platform specific

2013-05-02 Thread Jesse Barnes
On Thu, 2 May 2013 15:49:17 -0700
Ben Widawsky b...@bwidawsk.net wrote:

 On Thu, May 02, 2013 at 02:26:17PM -0700, Jesse Barnes wrote:
  On Tue, 23 Apr 2013 23:15:31 -0700
  Ben Widawsky b...@bwidawsk.net wrote:
  
   Accomplish this be removing the PDE count define which is (and has
   always been) part of the PPGTT structure anyway. With the addition of
   the gen specific init function, we can nicely tuck away the magic number
   in there.
   
   In this vain, make the PTE define less of a magic number.
  
  vein
  
   
   The remaining code in the global gtt setup is a bit messy, but an
   upcoming patch will clean that one up.
   
   Signed-off-by: Ben Widawsky b...@bwidawsk.net
   ---
drivers/gpu/drm/i915/i915_drv.h |  2 --
drivers/gpu/drm/i915/i915_gem_gtt.c | 10 +-
2 files changed, 5 insertions(+), 7 deletions(-)
   
   diff --git a/drivers/gpu/drm/i915/i915_drv.h 
   b/drivers/gpu/drm/i915/i915_drv.h
   index d5dcf7f..0a9c7cd 100644
   --- a/drivers/gpu/drm/i915/i915_drv.h
   +++ b/drivers/gpu/drm/i915/i915_drv.h
   @@ -431,8 +431,6 @@ struct i915_gtt {
};
#define gtt_total_entries(gtt) ((gtt).total  PAGE_SHIFT)

   -#define I915_PPGTT_PD_ENTRIES 512
   -#define I915_PPGTT_PT_ENTRIES 1024
struct i915_hw_ppgtt {
 struct drm_device *dev;
 unsigned num_pd_entries;
   diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c 
   b/drivers/gpu/drm/i915/i915_gem_gtt.c
   index 0503f09..11a50cf 100644
   --- a/drivers/gpu/drm/i915/i915_gem_gtt.c
   +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
   @@ -29,6 +29,7 @@
#include intel_drv.h

typedef uint32_t gen6_gtt_pte_t;
   +#define I915_PPGTT_PT_ENTRIES (PAGE_SIZE / sizeof(gen6_gtt_pte_t))

/* PPGTT stuff */
#define GEN6_GTT_ADDR_ENCODE(addr)   ((addr) | (((addr)  28)  
   0xff0))
   @@ -235,10 +236,9 @@ static int gen6_ppgtt_init(struct i915_hw_ppgtt 
   *ppgtt)
 /* ppgtt PDEs reside in the global gtt pagetable, which has 512*1024
  * entries. For aliasing ppgtt support we just steal them at the end for
  * now. */
   - first_pd_entry_in_global_pt =
   - gtt_total_entries(dev_priv-gtt) - I915_PPGTT_PD_ENTRIES;
   + first_pd_entry_in_global_pt = gtt_total_entries(dev_priv-gtt) - 512;

   - ppgtt-num_pd_entries = I915_PPGTT_PD_ENTRIES;
   + ppgtt-num_pd_entries = 512;
 ppgtt-enable = gen6_ppgtt_enable;
 ppgtt-clear_range = gen6_ppgtt_clear_range;
 ppgtt-insert_entries = gen6_ppgtt_insert_entries;
   @@ -646,7 +646,7 @@ void i915_gem_init_global_gtt(struct drm_device *dev)
 if (INTEL_INFO(dev)-gen = 7) {
 /* PPGTT pdes are stolen from global gtt ptes, so 
   shrink the
  * aperture accordingly when using aliasing ppgtt. */
   - gtt_size -= I915_PPGTT_PD_ENTRIES*PAGE_SIZE;
   + gtt_size -= 512 * PAGE_SIZE;
 }

 i915_gem_setup_global_gtt(dev, 0, mappable_size, gtt_size);
   @@ -657,7 +657,7 @@ void i915_gem_init_global_gtt(struct drm_device *dev)

 DRM_ERROR(Aliased PPGTT setup failed %d\n, ret);
 drm_mm_takedown(dev_priv-mm.gtt_space);
   - gtt_size += I915_PPGTT_PD_ENTRIES*PAGE_SIZE;
   + gtt_size += 512 * PAGE_SIZE;
 }
 i915_gem_setup_global_gtt(dev, 0, mappable_size, gtt_size);
}
  
  I thought we could have 1024 PDEs?  Either way, this just drops the
  macro, which is fine, unless we want to increase our PDE count.
  
  Reviewed-by: Jesse Barnes jbar...@virtuousgeek.org
 
 Thanks for the review.
 
 I think the docs must be wrong if they say this. 512PDEs are all you
 need to map a 2GB address space (which is the max), and furthermore, the
 DCLV which is used to indicate the size of the PDEs can only allow up to 2GB.

Agreed, one of the diagrams indicates a 4k set of PDEs, but the DCLV
reg says 32 * 16 entries.  So the 512 is fine.

-- 
Jesse Barnes, Intel Open Source Technology Center
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx