mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-03 10:10:33 +02:00 
			
		
		
		
	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
 | 
			
		||||
	 * 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;
 | 
			
		||||
 | 
			
		||||
	/* 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);
 | 
			
		||||
	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,
 | 
			
		||||
				   msecs_to_jiffies_timeout(CONFIG_DRM_I915_USERFAULT_AUTOSUSPEND));
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -133,7 +133,7 @@ static void heartbeat(struct work_struct *wrk)
 | 
			
		|||
 | 
			
		||||
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;
 | 
			
		||||
 | 
			
		||||
	next_heartbeat(engine);
 | 
			
		||||
| 
						 | 
				
			
			@ -156,7 +156,7 @@ int intel_engine_set_heartbeat(struct intel_engine_cs *engine,
 | 
			
		|||
	int err;
 | 
			
		||||
 | 
			
		||||
	/* 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);
 | 
			
		||||
		if (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
 | 
			
		||||
	 * 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)) {
 | 
			
		||||
		dma_fence_signal(&rq->fence);
 | 
			
		||||
		goto out;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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 */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue