| From f45a4df9b3983ebb664e6da51edf491b7e2a604d Mon Sep 17 00:00:00 2001 |
| From: Ben Widawsky <ben@bwidawsk.net> |
| Date: Thu, 27 Jun 2013 16:30:04 -0700 |
| Subject: drm/i915: make PDE|PTE platform specific |
| |
| Nothing outside of i915_gem_gtt.c and more specifically, the relevant |
| gen specific init function should need to know about number of PDEs, or |
| PTEs per PD. Exposing this will only lead to circumventing using the |
| upcoming VM abstraction. |
| |
| To accomplish this, move the defines into the .c file, rename the PDE |
| define to be GEN6, and make the PTE count less of a magic number. |
| |
| The remaining code in the global gtt setup is a bit messy, but an |
| upcoming patch will clean that one up. |
| |
| v2: Don't hardcode number of PDEs (Daniel + Jesse) |
| Reworded commit message to reflect change. |
| |
| Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org> |
| Signed-off-by: Ben Widawsky <ben@bwidawsk.net> |
| Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> |
| (cherry picked from commit 6670a5a5c77b8fc17962742f9bcf6f47e489aa62) |
| (cherry picked from drm-intel-next-queued) |
| Signed-off-by: Darren Hart <dvhart@linux.intel.com> |
| --- |
| drivers/gpu/drm/i915/i915_drv.h | 2 -- |
| drivers/gpu/drm/i915/i915_gem_gtt.c | 9 ++++++--- |
| 2 files changed, 6 insertions(+), 5 deletions(-) |
| |
| diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h |
| index 3d98ed475a1f..c38084df3313 100644 |
| --- a/drivers/gpu/drm/i915/i915_drv.h |
| +++ b/drivers/gpu/drm/i915/i915_drv.h |
| @@ -486,8 +486,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 5101ab6869b4..216e7a19e63d 100644 |
| --- a/drivers/gpu/drm/i915/i915_gem_gtt.c |
| +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c |
| @@ -28,6 +28,9 @@ |
| #include "i915_trace.h" |
| #include "intel_drv.h" |
| |
| +#define GEN6_PPGTT_PD_ENTRIES 512 |
| +#define I915_PPGTT_PT_ENTRIES (PAGE_SIZE / sizeof(gen6_gtt_pte_t)) |
| + |
| /* PPGTT stuff */ |
| #define GEN6_GTT_ADDR_ENCODE(addr) ((addr) | (((addr) >> 28) & 0xff0)) |
| |
| @@ -278,7 +281,7 @@ static int gen6_ppgtt_init(struct i915_hw_ppgtt *ppgtt) |
| } else { |
| ppgtt->pte_encode = gen6_pte_encode; |
| } |
| - ppgtt->num_pd_entries = I915_PPGTT_PD_ENTRIES; |
| + ppgtt->num_pd_entries = GEN6_PPGTT_PD_ENTRIES; |
| ppgtt->enable = gen6_ppgtt_enable; |
| ppgtt->clear_range = gen6_ppgtt_clear_range; |
| ppgtt->insert_entries = gen6_ppgtt_insert_entries; |
| @@ -688,7 +691,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 -= GEN6_PPGTT_PD_ENTRIES * PAGE_SIZE; |
| } |
| |
| i915_gem_setup_global_gtt(dev, 0, mappable_size, gtt_size); |
| @@ -699,7 +702,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 += GEN6_PPGTT_PD_ENTRIES * PAGE_SIZE; |
| } |
| i915_gem_setup_global_gtt(dev, 0, mappable_size, gtt_size); |
| } |
| -- |
| 1.8.5.rc3 |
| |