• Tvrtko Ursulin's avatar
    drm/i915: GEM_WARN_ON considered harmful · bbb8a9d7
    Tvrtko Ursulin authored
    GEM_WARN_ON currently has dangerous semantics where it is completely
    compiled out on !GEM_DEBUG builds. This can leave users who expect it to
    be more like a WARN_ON, just without a warning in non-debug builds, in
    complete ignorance.
    
    Another gotcha with it is that it cannot be used as a statement. Which is
    again different from a standard kernel WARN_ON.
    
    This patch fixes both problems by making it behave as one would expect.
    
    It can now be used both as an expression and as statement, and also the
    condition evaluates properly in all builds - code under the conditional
    will therefore not unexpectedly disappear.
    
    To satisfy call sites which really want the code under the conditional to
    completely disappear, we add GEM_DEBUG_WARN_ON and convert some of the
    callers to it. This one can also be used as both expression and statement.
    
    >From the above it follows GEM_DEBUG_WARN_ON should be used in situations
    where we are certain the condition will be hit during development, but at
    a place in code where error can be handled to the benefit of not crashing
    the machine.
    
    GEM_WARN_ON on the other hand should be used where condition may happen in
    production and we just want to distinguish the level of debugging output
    emitted between the production and debug build.
    
    v2:
     * Dropped BUG_ON hunk.
    Signed-off-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
    Cc: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Cc: Matthew Auld <matthew.auld@intel.com>
    Cc: Mika Kuoppala <mika.kuoppala@intel.com>
    Cc: Tomasz Lis <tomasz.lis@intel.com>
    Reviewed-by: default avatarTomasz Lis <tomasz.lis@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20181012063142.16080-1-tvrtko.ursulin@linux.intel.com
    bbb8a9d7
i915_vma.c 29.9 KB