[Intel-gfx] [PATCH v2] drm/i915: limit PPGTT size to 2GB in 32-bit platforms

Damien Lespiau damien.lespiau at intel.com
Thu May 28 10:47:31 PDT 2015


On Thu, May 28, 2015 at 06:09:34PM +0100, Michel Thierry wrote:
> And prevent overflow warning during compilation. We already set this limit
> for the GGTT.
> 
> This is a temporary patch until a full replacement of size_t variables
> (inadequate in 32-bit kernel) is in place.
> 
> Regression from:
> 	commit a4e0bedca678c81eea4cd79a4bd502335639f73a
> 	Author: Michel Thierry <michel.thierry at intel.com>
> 	Date:   Wed Apr 8 12:13:35 2015 +0100
> 
> 		drm/i915: Use complete address space in true PPGTT
> 
> v2: Prettify code and explain why this is needed. (Chris)
> 
> Suggested-by: Daniel Vetter <daniel.vetter at ffwll.ch>
> Cc: Mika Kuoppala <mika.kuoppala at intel.com>
> Cc: Chris Wilson <chris at chris-wilson.co.uk>
> Signed-off-by: Michel Thierry <michel.thierry at intel.com>
> ---
>  drivers/gpu/drm/i915/i915_gem_gtt.c | 11 ++++++++++-
>  1 file changed, 10 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c
> index 17b7df0..0653c28 100644
> --- a/drivers/gpu/drm/i915/i915_gem_gtt.c
> +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
> @@ -951,7 +951,16 @@ static int gen8_ppgtt_init(struct i915_hw_ppgtt *ppgtt)
>  	gen8_initialize_pd(&ppgtt->base, ppgtt->scratch_pd);
>  
>  	ppgtt->base.start = 0;
> -	ppgtt->base.total = 1ULL << 32;
> +#ifdef CONFIG_X86_32

FWIW, this is somewhat frowned upon (which is why Chris was using
IS_ENABLED(). It's documented in Documentation/CodingStyle, Chapter 20.

  Within code, where possible, use the IS_ENABLED macro to convert a Kconfig
  symbol into a C boolean expression, and use it in a normal C conditional: 
   
          if (IS_ENABLED(CONFIG_SOMETHING)) { 
                  ... 
          } 
   
  The compiler will constant-fold the conditional away, and include or exclude 
  the block of code just as with an #ifdef, so this will not add any runtime 
  overhead.  However, this approach still allows the C compiler to see the code 
  inside the block, and check it for correctness (syntax, types, symbol
  references, etc).  Thus, you still have to use an #ifdef if the code inside the
  block references symbols that will not exist if the condition is not met.

-- 
Damien


More information about the Intel-gfx mailing list