[Intel-gfx] [PATCH] drm/i915/bdw: Don't allow the FBC base to be 0

Ville Syrjälä ville.syrjala at linux.intel.com
Fri May 2 10:19:27 CEST 2014


On Thu, May 01, 2014 at 06:47:54PM -0700, Ben Widawsky wrote:
> "Restriction :
> The offset must be greater than 4K bytes, avoiding the first 4KB of
> stolen memory."

Isn't this a more generic issue that we must avoid the first 4k? If so
I think we should just reserve the first 4k permanently at driver init
time.

> 
> Since it looks like we currently allocate an overlay out of stolen
> before we get the compressed framebuffer, I believe this is not
> currently an issue which fixes anything. We simply want to make the code
> as future-proof, and as clear as possible, by match the spec.
> 
> Cc: Art Runyan <arthur.j.runyan at intel.com>
> Signed-off-by: Ben Widawsky <ben at bwidawsk.net>
> ---
>  drivers/gpu/drm/i915/i915_gem_stolen.c | 15 ++++++++++-----
>  1 file changed, 10 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_gem_stolen.c b/drivers/gpu/drm/i915/i915_gem_stolen.c
> index 62ef55b..65016b0 100644
> --- a/drivers/gpu/drm/i915/i915_gem_stolen.c
> +++ b/drivers/gpu/drm/i915/i915_gem_stolen.c
> @@ -107,19 +107,24 @@ static int i915_setup_compression(struct drm_device *dev, int size)
>  {
>  	struct drm_i915_private *dev_priv = dev->dev_private;
>  	struct drm_mm_node *compressed_fb, *uninitialized_var(compressed_llb);
> +	unsigned long start = 0;
>  	int ret;
>  
>  	compressed_fb = kzalloc(sizeof(*compressed_fb), GFP_KERNEL);
>  	if (!compressed_fb)
>  		goto err_llb;
>  
> +	if (IS_BROADWELL(dev))
> +		start = 0x1000;
> +
>  	/* Try to over-allocate to reduce reallocations and fragmentation */
> -	ret = drm_mm_insert_node(&dev_priv->mm.stolen, compressed_fb,
> -				 size <<= 1, 4096, DRM_MM_SEARCH_DEFAULT);
> +	ret = drm_mm_insert_node_in_range(&dev_priv->mm.stolen, compressed_fb,
> +					  size <<= 1, 4096, start, dev_priv->gtt.stolen_size,
> +					  DRM_MM_SEARCH_DEFAULT);
>  	if (ret)
> -		ret = drm_mm_insert_node(&dev_priv->mm.stolen, compressed_fb,
> -					 size >>= 1, 4096,
> -					 DRM_MM_SEARCH_DEFAULT);
> +		ret = drm_mm_insert_node_in_range(&dev_priv->mm.stolen, compressed_fb,
> +						  size >>= 1, 4096, start, dev_priv->gtt.stolen_size,
> +						  DRM_MM_SEARCH_DEFAULT);
>  	if (ret)
>  		goto err_llb;
>  
> -- 
> 1.9.2
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Ville Syrjälä
Intel OTC



More information about the Intel-gfx mailing list