[Intel-gfx] [PATCH] drm/i915: make REG_BIT() and REG_GENMASK() work with variables

Jani Nikula jani.nikula at intel.com
Mon May 27 10:13:15 UTC 2019


On Fri, 24 May 2019, Chris Wilson <chris at chris-wilson.co.uk> wrote:
> Quoting Jani Nikula (2019-05-24 19:52:53)
>> REG_BIT() and REG_GENMASK() were intended to work with both constant
>> expressions and otherwise, with the former having extra compile time
>> checks for the bit ranges. Incredibly, the result of
>> __builtin_constant_p() is not an integer constant expression when given
>> a non-constant expression, leading to errors in BUILD_BUG_ON_ZERO().
>> 
>> Replace __builtin_constant_p() with the __is_constexpr() magic spell.
>> 
>> Reported-by: Ville Syrjala <ville.syrjala at linux.intel.com>
>> Signed-off-by: Jani Nikula <jani.nikula at intel.com>
>> ---
>>  drivers/gpu/drm/i915/i915_reg.h | 6 +++---
>>  1 file changed, 3 insertions(+), 3 deletions(-)
>> 
>> diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
>> index 49dce04dd688..019c48748dc9 100644
>> --- a/drivers/gpu/drm/i915/i915_reg.h
>> +++ b/drivers/gpu/drm/i915/i915_reg.h
>> @@ -126,7 +126,7 @@
>>   */
>>  #define REG_BIT(__n)                                                   \
>>         ((u32)(BIT(__n) +                                               \
>> -              BUILD_BUG_ON_ZERO(__builtin_constant_p(__n) &&           \
>> +              BUILD_BUG_ON_ZERO(__is_constexpr(__n) &&         \
>>                                  ((__n) < 0 || (__n) > 31))))
>>  
>>  /**
>> @@ -140,8 +140,8 @@
>>   */
>>  #define REG_GENMASK(__high, __low)                                     \
>>         ((u32)(GENMASK(__high, __low) +                                 \
>> -              BUILD_BUG_ON_ZERO(__builtin_constant_p(__high) &&        \
>> -                                __builtin_constant_p(__low) &&         \
>> +              BUILD_BUG_ON_ZERO(__is_constexpr(__high) &&      \
>> +                                __is_constexpr(__low) &&               \
>>                                  ((__low) < 0 || (__high) > 31 || (__low) > (__high)))))
>
> Ok, one old one remaining in _MASKED_FIELD().
>
> Reviewed-by: Chris Wilson <chris at chris-wilson.co.uk>

Thanks, pushed to dinq.

BR,
Jani.


> -Chris
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Jani Nikula, Intel Open Source Graphics Center


More information about the Intel-gfx mailing list