drm/i915: Encapsulate kconfig constant values inside boolean predicates

Avoid angering clang and smatch by using a constant value in a '&&' test,
by forcing that constant value into a boolean.

E.g.,
drivers/gpu/drm/i915/gt/intel_engine_heartbeat.c:159:13: warning: use of logical '&&' with constant operand [-Wconstant-logical-operand]
	if (!delay && CONFIG_DRM_I915_PREEMPT_TIMEOUT) {
                      ^  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Reported-by: kbuild test robot <lkp@intel.com>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Nathan Chancellor <natechancellor@gmail.com>
Cc: Nick Desaulniers <ndesaulniers@google.com>
Cc: Jani Nikula <jani.nikula@intel.com>
Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20191025135943.12524-1-chris@chris-wilson.co.uk
This commit is contained in:
Chris Wilson
2019-10-25 14:59:42 +01:00
parent 2d69c42e37
commit babaab2f47
5 changed files with 19 additions and 5 deletions

View File

@@ -430,4 +430,17 @@ static inline bool timer_expired(const struct timer_list *t)
return READ_ONCE(t->expires) && !timer_pending(t);
}
/*
* This is a lookalike for IS_ENABLED() that takes a kconfig value,
* e.g. CONFIG_DRM_I915_SPIN_REQUEST, and evaluates whether it is non-zero
* i.e. whether the configuration is active. Wrapping up the config inside
* a boolean context prevents clang and smatch from complaining about potential
* issues in confusing logical-&& with bitwise-& for constants.
*
* Sadly IS_ENABLED() itself does not work with kconfig values.
*
* Returns 0 if @config is 0, 1 if set to any value.
*/
#define IS_ACTIVE(config) ((config) != 0)
#endif /* !__I915_UTILS_H */