Commit babaab2f authored by Chris Wilson's avatar Chris Wilson

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: default avatarkbuild test robot <lkp@intel.com>
Signed-off-by: default avatarChris 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: default avatarNathan Chancellor <natechancellor@gmail.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20191025135943.12524-1-chris@chris-wilson.co.uk
parent 2d69c42e
...@@ -325,7 +325,8 @@ static bool __cancel_engine(struct intel_engine_cs *engine) ...@@ -325,7 +325,8 @@ static bool __cancel_engine(struct intel_engine_cs *engine)
* kill the banned context, we fallback to doing a local reset * kill the banned context, we fallback to doing a local reset
* instead. * instead.
*/ */
if (CONFIG_DRM_I915_PREEMPT_TIMEOUT && !intel_engine_pulse(engine)) if (IS_ACTIVE(CONFIG_DRM_I915_PREEMPT_TIMEOUT) &&
!intel_engine_pulse(engine))
return true; return true;
/* If we are unable to send a pulse, try resetting this engine. */ /* If we are unable to send a pulse, try resetting this engine. */
......
...@@ -312,7 +312,7 @@ vm_fault_t i915_gem_fault(struct vm_fault *vmf) ...@@ -312,7 +312,7 @@ vm_fault_t i915_gem_fault(struct vm_fault *vmf)
list_add(&obj->userfault_link, &i915->ggtt.userfault_list); list_add(&obj->userfault_link, &i915->ggtt.userfault_list);
mutex_unlock(&i915->ggtt.vm.mutex); mutex_unlock(&i915->ggtt.vm.mutex);
if (CONFIG_DRM_I915_USERFAULT_AUTOSUSPEND) if (IS_ACTIVE(CONFIG_DRM_I915_USERFAULT_AUTOSUSPEND))
intel_wakeref_auto(&i915->ggtt.userfault_wakeref, intel_wakeref_auto(&i915->ggtt.userfault_wakeref,
msecs_to_jiffies_timeout(CONFIG_DRM_I915_USERFAULT_AUTOSUSPEND)); msecs_to_jiffies_timeout(CONFIG_DRM_I915_USERFAULT_AUTOSUSPEND));
......
...@@ -133,7 +133,7 @@ static void heartbeat(struct work_struct *wrk) ...@@ -133,7 +133,7 @@ static void heartbeat(struct work_struct *wrk)
void intel_engine_unpark_heartbeat(struct intel_engine_cs *engine) void intel_engine_unpark_heartbeat(struct intel_engine_cs *engine)
{ {
if (!CONFIG_DRM_I915_HEARTBEAT_INTERVAL) if (!IS_ACTIVE(CONFIG_DRM_I915_HEARTBEAT_INTERVAL))
return; return;
next_heartbeat(engine); next_heartbeat(engine);
...@@ -156,7 +156,7 @@ int intel_engine_set_heartbeat(struct intel_engine_cs *engine, ...@@ -156,7 +156,7 @@ int intel_engine_set_heartbeat(struct intel_engine_cs *engine,
int err; int err;
/* Send one last pulse before to cleanup persistent hogs */ /* Send one last pulse before to cleanup persistent hogs */
if (!delay && CONFIG_DRM_I915_PREEMPT_TIMEOUT) { if (!delay && IS_ACTIVE(CONFIG_DRM_I915_PREEMPT_TIMEOUT)) {
err = intel_engine_pulse(engine); err = intel_engine_pulse(engine);
if (err) if (err)
return err; return err;
......
...@@ -1447,7 +1447,7 @@ long i915_request_wait(struct i915_request *rq, ...@@ -1447,7 +1447,7 @@ long i915_request_wait(struct i915_request *rq,
* completion. That requires having a good predictor for the request * completion. That requires having a good predictor for the request
* duration, which we currently lack. * duration, which we currently lack.
*/ */
if (CONFIG_DRM_I915_SPIN_REQUEST && if (IS_ACTIVE(CONFIG_DRM_I915_SPIN_REQUEST) &&
__i915_spin_request(rq, state, CONFIG_DRM_I915_SPIN_REQUEST)) { __i915_spin_request(rq, state, CONFIG_DRM_I915_SPIN_REQUEST)) {
dma_fence_signal(&rq->fence); dma_fence_signal(&rq->fence);
goto out; goto out;
......
...@@ -430,4 +430,17 @@ static inline bool timer_expired(const struct timer_list *t) ...@@ -430,4 +430,17 @@ static inline bool timer_expired(const struct timer_list *t)
return READ_ONCE(t->expires) && !timer_pending(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 */ #endif /* !__I915_UTILS_H */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment