[Intel-gfx] [PATCH] drm/i915: Re-enable GGTT earlier during resume on pre-gen6 platforms

Chris Wilson chris at chris-wilson.co.uk
Tue May 10 09:14:19 UTC 2016


On Fri, May 06, 2016 at 09:35:55PM +0300, ville.syrjala at linux.intel.com wrote:
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
> 
> Move the intel_enable_gtt() call to happen before we touch the GTT
> during resume. Right now it's done way too late. Before
> commit ebb7c78d358b ("agp/intel-gtt: Only register fake agp driver for gen1")
> it was actually done earlier on account of also getting called from
> the resume hook of the fake agp driver. With the fake agp driver
> no longer getting registered we must move the call up.
> 
> The symptoms I've seen on my 830 machine include lowmem corruption,
> other kinds of memory corruption, and straight up hung machine during
> or just after resume. Not really sure what causes the memory corruption,
> but so far I've not seen any with this fix.
> 
> I think we shouldn't really need to call this during init, but we have
> been doing that so I've decided to keep the call. However moving that
> call earlier could be prudent as well. Doing it right after the
> intel-gtt probe seems appropriate.

So why not in i915_ggtt_init_hw()? Because you want to keep the current
semantics of doing it everytime.
 
> Also tested this on 946gz,elk,ilk and all seemed quite happy with
> this change.
> 
> Cc: Daniel Vetter <daniel.vetter at ffwll.ch>
> Cc: drm-intel-fixes at lists.freedesktop.org
> Fixes: ebb7c78d358b ("agp/intel-gtt: Only register fake agp driver for gen1")
> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>

Reviewed-by: Chris Wilson <chris at chris-wilson.co.uk>

> diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.h b/drivers/gpu/drm/i915/i915_gem_gtt.h
> index 18af3af18754..6e34f2e9f080 100644
> --- a/drivers/gpu/drm/i915/i915_gem_gtt.h
> +++ b/drivers/gpu/drm/i915/i915_gem_gtt.h
> @@ -516,6 +516,7 @@ i915_page_dir_dma_addr(const struct i915_hw_ppgtt *ppgtt, const unsigned n)
>  		px_dma(ppgtt->base.scratch_pd);
>  }
>  
> +int i915_ggtt_enable_hw(struct drm_device *dev);
>  int i915_ggtt_init_hw(struct drm_device *dev);

Minor nit, probably best to put it after init_hw, since we do init first
then enable.
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre


More information about the Intel-gfx mailing list