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:
parent
2d69c42e37
commit
babaab2f47
5 changed files with 19 additions and 5 deletions
|
@ -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)
|
||||||
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 @@ out:
|
||||||
|
|
||||||
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,
|
||||||
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,
|
||||||
* 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)
|
||||||
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 */
|
||||||
|
|
Loading…
Add table
Reference in a new issue