• Daniel Vetter's avatar
    drm/i915: Use BUILD_BUG if possible in the i915 WARN_ON · 5f77eeb0
    Daniel Vetter authored
    Faster feedback to errors is always better. This is inspired by the
    addition to WARN_ONs to mask/enable helpers for registers to make sure
    callers have the arguments ordered correctly: Pretty much always the
    arguments are static.
    
    We use WARN_ON(1) a lot in default switch statements though where we
    should always handle all cases. So add a new macro specifically for
    that.
    
    The idea to use __builtin_constant_p is from Chris Wilson.
    
    v2: Use the ({}) gcc-ism to avoid the static inline, suggested by
    Dave. My first attempt used __cond as the temp var, which is the same
    used by BUILD_BUG_ON, but with inverted sense. Hilarity ensued, so
    sprinkle i915 into the name.
    
    Also use a temporary variable to only evaluate the condition once,
    suggested by Damien.
    
    v3: It's crazy but apparently 32bit gcc can't compile out the
    BUILD_BUG_ON in a lot of cases and just falls over. I have no idea
    why, but until clue grows just disable this nifty idea on 32bit
    builds. Reported by 0-day builder.
    
    v4: Got it all wrong, apparently its the gcc version. We need 4.9+.
    Now reported by Imre.
    
    v5: Chris suggested to add the case to MISSING_CASE for speedier
    debug.
    
    v6: Even some gcc 4.9 versions don't see through the maze, so give up
    for now. Keep the skeleton and MISSING_CASE stuff though.
    
    Cc: Imre Deak <imre.deak@intel.com>
    Cc: Damien Lespiau <damien.lespiau@intel.com>
    Cc: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Jani Nikula <jani.nikula@linux.intel.com>
    Cc: Dave Gordon <david.s.gordon@intel.com>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@intel.com>
    5f77eeb0
intel_uncore.c 42.3 KB