diff options
author | Zhang, Xiong Y <xiong.y.zhang@intel.com> | 2013-04-27 05:53:33 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2013-04-27 08:07:16 -0400 |
commit | 43b27290dd42b40f3f23f49677a7faa5a4eb1eff (patch) | |
tree | f8f57d0ca7f3c61025b359fb297226ee03fab536 /drivers/gpu/drm/i915 | |
parent | 988b36e511fb0a8068f7e7f7f90df06bf5172196 (diff) |
drm/i915: correct the calculation of first_pd_entry_in_global_pt
When ppgtt is enabled, dev_priv->gtt.total has excluded the gtt space
occupied by ppgtt table in i915_gem_init_global_gtt() function. So the
calculation of first_pd_entry_in_global_pt doesn't need to subtract
I915_PPGTT_PD_ENTRIES again. Or else PPGTT directory table will be
destroyed by global gtt allocation.
This regression has been introduced in
commit a54c0c279f3864171fe53c66e769d5a137c5c651
Author: Ben Widawsky <ben@bwidawsk.net>
Date: Thu Jan 24 14:45:00 2013 -0800
drm/i915: remove intel_gtt structure
The breakage is pretty subtile since the old gtt_total_entries
included the pde range, whereas the new on did not.
Cc: stable@vger.kernel.org
Signed-off-by: Xiong Zhang<xiong.y.zhang@intel.com>
[danvet: Add regression citation and cc: stable. Thanks to Chris for
correcting my wrong guess about which commit broke things.]
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915')
-rw-r--r-- | drivers/gpu/drm/i915/i915_gem_gtt.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c index 50df194914a6..dca614de71b6 100644 --- a/drivers/gpu/drm/i915/i915_gem_gtt.c +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c | |||
@@ -233,8 +233,7 @@ static int gen6_ppgtt_init(struct i915_hw_ppgtt *ppgtt) | |||
233 | /* ppgtt PDEs reside in the global gtt pagetable, which has 512*1024 | 233 | /* ppgtt PDEs reside in the global gtt pagetable, which has 512*1024 |
234 | * entries. For aliasing ppgtt support we just steal them at the end for | 234 | * entries. For aliasing ppgtt support we just steal them at the end for |
235 | * now. */ | 235 | * now. */ |
236 | first_pd_entry_in_global_pt = | 236 | first_pd_entry_in_global_pt = gtt_total_entries(dev_priv->gtt); |
237 | gtt_total_entries(dev_priv->gtt) - I915_PPGTT_PD_ENTRIES; | ||
238 | 237 | ||
239 | ppgtt->num_pd_entries = I915_PPGTT_PD_ENTRIES; | 238 | ppgtt->num_pd_entries = I915_PPGTT_PD_ENTRIES; |
240 | ppgtt->enable = gen6_ppgtt_enable; | 239 | ppgtt->enable = gen6_ppgtt_enable; |