diff mbox

drm/i915: Use the correct size of the GTT for placing the per-process entries

Message ID 1345795942-20560-1-git-send-email-chris@chris-wilson.co.uk (mailing list archive)
State New, archived
Headers show

Commit Message

Chris Wilson Aug. 24, 2012, 8:12 a.m. UTC
The current layout is to place the per-process tables at the end of the
GTT. However, this is currently using a hardcoded maximum size for the GTT
and not taking in account limitations imposed by the BIOS. Use the value
for the total number of entries allocated in the table as provided by
the configuration registers.

Reported-by: Matthew Garrett <mjg@redhat.com>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Ben Widawsky <ben@bwidawsk.net>
Cc: Matthew Garret <mjg@redhat.com>
---
 drivers/gpu/drm/i915/i915_gem_gtt.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Daniel Vetter Aug. 24, 2012, 9:08 a.m. UTC | #1
On Fri, Aug 24, 2012 at 09:12:22AM +0100, Chris Wilson wrote:
> The current layout is to place the per-process tables at the end of the
> GTT. However, this is currently using a hardcoded maximum size for the GTT
> and not taking in account limitations imposed by the BIOS. Use the value
> for the total number of entries allocated in the table as provided by
> the configuration registers.
> 
> Reported-by: Matthew Garrett <mjg@redhat.com>
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
> Cc: Ben Widawsky <ben@bwidawsk.net>
> Cc: Matthew Garret <mjg@redhat.com>
Picked up for -fixes, thanks for the patch.
-Daniel
Ben Widawsky Aug. 24, 2012, 5:34 p.m. UTC | #2
On 2012-08-24 01:12, Chris Wilson wrote:
> The current layout is to place the per-process tables at the end of 
> the
> GTT. However, this is currently using a hardcoded maximum size for 
> the GTT
> and not taking in account limitations imposed by the BIOS. Use the 
> value
> for the total number of entries allocated in the table as provided by
> the configuration registers.
>
> Reported-by: Matthew Garrett <mjg@redhat.com>
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
> Cc: Ben Widawsky <ben@bwidawsk.net>
> Cc: Matthew Garret <mjg@redhat.com>

details... Can someone remind me why we didn't put it at the bottom?
Reviewed-by: Ben Widawsky <ben@bwidawsk.net>

> ---
>  drivers/gpu/drm/i915/i915_gem_gtt.c |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c
> b/drivers/gpu/drm/i915/i915_gem_gtt.c
> index 528fd43..4c03544 100644
> --- a/drivers/gpu/drm/i915/i915_gem_gtt.c
> +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
> @@ -72,7 +72,7 @@ int i915_gem_init_aliasing_ppgtt(struct drm_device 
> *dev)
>  	/* 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 = 512*1024 - I915_PPGTT_PD_ENTRIES;
> +	first_pd_entry_in_global_pt = dev_priv->mm.gtt->gtt_total_entries -
> I915_PPGTT_PD_ENTRIES;
>
>  	ppgtt = kzalloc(sizeof(*ppgtt), GFP_KERNEL);
>  	if (!ppgtt)
Daniel Vetter Aug. 24, 2012, 5:40 p.m. UTC | #3
On Fri, Aug 24, 2012 at 10:34:13AM -0700, Ben Widawsky wrote:
> On 2012-08-24 01:12, Chris Wilson wrote:
> >The current layout is to place the per-process tables at the end
> >of the
> >GTT. However, this is currently using a hardcoded maximum size for
> >the GTT
> >and not taking in account limitations imposed by the BIOS. Use the
> >value
> >for the total number of entries allocated in the table as provided by
> >the configuration registers.
> >
> >Reported-by: Matthew Garrett <mjg@redhat.com>
> >Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> >Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
> >Cc: Ben Widawsky <ben@bwidawsk.net>
> >Cc: Matthew Garret <mjg@redhat.com>
> 
> details... Can someone remind me why we didn't put it at the bottom?
> Reviewed-by: Ben Widawsky <ben@bwidawsk.net>

Becaus the bottom is mappable, which is a contended resources (compared to
the entire gtt). Or so was my thinking at least.
-Daniel
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c
index 528fd43..4c03544 100644
--- a/drivers/gpu/drm/i915/i915_gem_gtt.c
+++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
@@ -72,7 +72,7 @@  int i915_gem_init_aliasing_ppgtt(struct drm_device *dev)
 	/* 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 = 512*1024 - I915_PPGTT_PD_ENTRIES;
+	first_pd_entry_in_global_pt = dev_priv->mm.gtt->gtt_total_entries - I915_PPGTT_PD_ENTRIES;
 
 	ppgtt = kzalloc(sizeof(*ppgtt), GFP_KERNEL);
 	if (!ppgtt)