Commit 1a839e01 authored by Lucas De Marchi's avatar Lucas De Marchi

drm/i915: remove IS_ACTIVE

When trying to bring IS_ACTIVE to linux/kconfig.h I thought it wouldn't
provide much value just encapsulating it in a boolean context. So I also
added the support for handling undefined macros as the IS_ENABLED()
counterpart. However the feedback received from Masahiro Yamada was that
it is too ugly, not providing much value. And just wrapping in a boolean
context is too dumb - we could simply open code it.

As detailed in commit babaab2f ("drm/i915: Encapsulate kconfig
constant values inside boolean predicates"), the IS_ACTIVE macro was
added to workaround a compilation warning. However after checking again
our current uses of IS_ACTIVE it turned out there is only
1 case in which it triggers a warning in clang (due
-Wconstant-logical-operand) and 2 in smatch. All the others
can simply use the shorter version, without wrapping it in any macro.

So here I'm dialing all the way back to simply removing the macro. That
single case hit by clang can be changed to make the constant come first,
so it doesn't think it's mask:

	-       if (context && CONFIG_DRM_I915_FENCE_TIMEOUT)
	+       if (CONFIG_DRM_I915_FENCE_TIMEOUT && context)

As talked with Dan Carpenter, that logic will be added in smatch as
well, so it will also stop warning about it.
Signed-off-by: default avatarLucas De Marchi <lucas.demarchi@intel.com>
Reviewed-by: default avatarJani Nikula <jani.nikula@intel.com>
Reviewed-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20211005171728.3147094-1-lucas.demarchi@intel.com
parent 07f82a47
...@@ -804,7 +804,7 @@ static int intel_context_set_gem(struct intel_context *ce, ...@@ -804,7 +804,7 @@ static int intel_context_set_gem(struct intel_context *ce,
intel_engine_has_semaphores(ce->engine)) intel_engine_has_semaphores(ce->engine))
__set_bit(CONTEXT_USE_SEMAPHORES, &ce->flags); __set_bit(CONTEXT_USE_SEMAPHORES, &ce->flags);
if (IS_ACTIVE(CONFIG_DRM_I915_REQUEST_TIMEOUT) && if (CONFIG_DRM_I915_REQUEST_TIMEOUT &&
ctx->i915->params.request_timeout_ms) { ctx->i915->params.request_timeout_ms) {
unsigned int timeout_ms = ctx->i915->params.request_timeout_ms; unsigned int timeout_ms = ctx->i915->params.request_timeout_ms;
......
...@@ -395,7 +395,7 @@ static vm_fault_t vm_fault_gtt(struct vm_fault *vmf) ...@@ -395,7 +395,7 @@ static vm_fault_t vm_fault_gtt(struct vm_fault *vmf)
/* Track the mmo associated with the fenced vma */ /* Track the mmo associated with the fenced vma */
vma->mmo = mmo; vma->mmo = mmo;
if (IS_ACTIVE(CONFIG_DRM_I915_USERFAULT_AUTOSUSPEND)) if (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));
......
...@@ -275,7 +275,7 @@ static inline bool intel_engine_uses_guc(const struct intel_engine_cs *engine) ...@@ -275,7 +275,7 @@ static inline bool intel_engine_uses_guc(const struct intel_engine_cs *engine)
static inline bool static inline bool
intel_engine_has_preempt_reset(const struct intel_engine_cs *engine) intel_engine_has_preempt_reset(const struct intel_engine_cs *engine)
{ {
if (!IS_ACTIVE(CONFIG_DRM_I915_PREEMPT_TIMEOUT)) if (!CONFIG_DRM_I915_PREEMPT_TIMEOUT)
return false; return false;
return intel_engine_has_preemption(engine); return intel_engine_has_preemption(engine);
...@@ -302,7 +302,7 @@ intel_virtual_engine_has_heartbeat(const struct intel_engine_cs *engine) ...@@ -302,7 +302,7 @@ intel_virtual_engine_has_heartbeat(const struct intel_engine_cs *engine)
static inline bool static inline bool
intel_engine_has_heartbeat(const struct intel_engine_cs *engine) intel_engine_has_heartbeat(const struct intel_engine_cs *engine)
{ {
if (!IS_ACTIVE(CONFIG_DRM_I915_HEARTBEAT_INTERVAL)) if (!CONFIG_DRM_I915_HEARTBEAT_INTERVAL)
return false; return false;
if (intel_engine_is_virtual(engine)) if (intel_engine_is_virtual(engine))
......
...@@ -207,7 +207,7 @@ static void heartbeat(struct work_struct *wrk) ...@@ -207,7 +207,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 (!IS_ACTIVE(CONFIG_DRM_I915_HEARTBEAT_INTERVAL)) if (!CONFIG_DRM_I915_HEARTBEAT_INTERVAL)
return; return;
next_heartbeat(engine); next_heartbeat(engine);
......
...@@ -556,7 +556,7 @@ intel_engine_has_semaphores(const struct intel_engine_cs *engine) ...@@ -556,7 +556,7 @@ intel_engine_has_semaphores(const struct intel_engine_cs *engine)
static inline bool static inline bool
intel_engine_has_timeslices(const struct intel_engine_cs *engine) intel_engine_has_timeslices(const struct intel_engine_cs *engine)
{ {
if (!IS_ACTIVE(CONFIG_DRM_I915_TIMESLICE_DURATION)) if (!CONFIG_DRM_I915_TIMESLICE_DURATION)
return false; return false;
return engine->flags & I915_ENGINE_HAS_TIMESLICES; return engine->flags & I915_ENGINE_HAS_TIMESLICES;
......
...@@ -3339,7 +3339,7 @@ logical_ring_default_vfuncs(struct intel_engine_cs *engine) ...@@ -3339,7 +3339,7 @@ logical_ring_default_vfuncs(struct intel_engine_cs *engine)
engine->flags |= I915_ENGINE_HAS_SEMAPHORES; engine->flags |= I915_ENGINE_HAS_SEMAPHORES;
if (can_preempt(engine)) { if (can_preempt(engine)) {
engine->flags |= I915_ENGINE_HAS_PREEMPTION; engine->flags |= I915_ENGINE_HAS_PREEMPTION;
if (IS_ACTIVE(CONFIG_DRM_I915_TIMESLICE_DURATION)) if (CONFIG_DRM_I915_TIMESLICE_DURATION)
engine->flags |= I915_ENGINE_HAS_TIMESLICES; engine->flags |= I915_ENGINE_HAS_TIMESLICES;
} }
} }
......
...@@ -290,7 +290,7 @@ static int live_heartbeat_fast(void *arg) ...@@ -290,7 +290,7 @@ static int live_heartbeat_fast(void *arg)
int err = 0; int err = 0;
/* Check that the heartbeat ticks at the desired rate. */ /* Check that the heartbeat ticks at the desired rate. */
if (!IS_ACTIVE(CONFIG_DRM_I915_HEARTBEAT_INTERVAL)) if (!CONFIG_DRM_I915_HEARTBEAT_INTERVAL)
return 0; return 0;
for_each_engine(engine, gt, id) { for_each_engine(engine, gt, id) {
...@@ -352,7 +352,7 @@ static int live_heartbeat_off(void *arg) ...@@ -352,7 +352,7 @@ static int live_heartbeat_off(void *arg)
int err = 0; int err = 0;
/* Check that we can turn off heartbeat and not interrupt VIP */ /* Check that we can turn off heartbeat and not interrupt VIP */
if (!IS_ACTIVE(CONFIG_DRM_I915_HEARTBEAT_INTERVAL)) if (!CONFIG_DRM_I915_HEARTBEAT_INTERVAL)
return 0; return 0;
for_each_engine(engine, gt, id) { for_each_engine(engine, gt, id) {
......
...@@ -992,7 +992,7 @@ static int live_timeslice_preempt(void *arg) ...@@ -992,7 +992,7 @@ static int live_timeslice_preempt(void *arg)
* need to preempt the current task and replace it with another * need to preempt the current task and replace it with another
* ready task. * ready task.
*/ */
if (!IS_ACTIVE(CONFIG_DRM_I915_TIMESLICE_DURATION)) if (!CONFIG_DRM_I915_TIMESLICE_DURATION)
return 0; return 0;
obj = i915_gem_object_create_internal(gt->i915, PAGE_SIZE); obj = i915_gem_object_create_internal(gt->i915, PAGE_SIZE);
...@@ -1122,7 +1122,7 @@ static int live_timeslice_rewind(void *arg) ...@@ -1122,7 +1122,7 @@ static int live_timeslice_rewind(void *arg)
* but only a few of those requests, forcing us to rewind the * but only a few of those requests, forcing us to rewind the
* RING_TAIL of the original request. * RING_TAIL of the original request.
*/ */
if (!IS_ACTIVE(CONFIG_DRM_I915_TIMESLICE_DURATION)) if (!CONFIG_DRM_I915_TIMESLICE_DURATION)
return 0; return 0;
for_each_engine(engine, gt, id) { for_each_engine(engine, gt, id) {
...@@ -1299,7 +1299,7 @@ static int live_timeslice_queue(void *arg) ...@@ -1299,7 +1299,7 @@ static int live_timeslice_queue(void *arg)
* ELSP[1] is already occupied, so must rely on timeslicing to * ELSP[1] is already occupied, so must rely on timeslicing to
* eject ELSP[0] in favour of the queue.) * eject ELSP[0] in favour of the queue.)
*/ */
if (!IS_ACTIVE(CONFIG_DRM_I915_TIMESLICE_DURATION)) if (!CONFIG_DRM_I915_TIMESLICE_DURATION)
return 0; return 0;
obj = i915_gem_object_create_internal(gt->i915, PAGE_SIZE); obj = i915_gem_object_create_internal(gt->i915, PAGE_SIZE);
...@@ -1420,7 +1420,7 @@ static int live_timeslice_nopreempt(void *arg) ...@@ -1420,7 +1420,7 @@ static int live_timeslice_nopreempt(void *arg)
* We should not timeslice into a request that is marked with * We should not timeslice into a request that is marked with
* I915_REQUEST_NOPREEMPT. * I915_REQUEST_NOPREEMPT.
*/ */
if (!IS_ACTIVE(CONFIG_DRM_I915_TIMESLICE_DURATION)) if (!CONFIG_DRM_I915_TIMESLICE_DURATION)
return 0; return 0;
if (igt_spinner_init(&spin, gt)) if (igt_spinner_init(&spin, gt))
...@@ -2260,7 +2260,7 @@ static int __cancel_hostile(struct live_preempt_cancel *arg) ...@@ -2260,7 +2260,7 @@ static int __cancel_hostile(struct live_preempt_cancel *arg)
int err; int err;
/* Preempt cancel non-preemptible spinner in ELSP0 */ /* Preempt cancel non-preemptible spinner in ELSP0 */
if (!IS_ACTIVE(CONFIG_DRM_I915_PREEMPT_TIMEOUT)) if (!CONFIG_DRM_I915_PREEMPT_TIMEOUT)
return 0; return 0;
if (!intel_has_reset_engine(arg->engine->gt)) if (!intel_has_reset_engine(arg->engine->gt))
...@@ -2316,7 +2316,7 @@ static int __cancel_fail(struct live_preempt_cancel *arg) ...@@ -2316,7 +2316,7 @@ static int __cancel_fail(struct live_preempt_cancel *arg)
struct i915_request *rq; struct i915_request *rq;
int err; int err;
if (!IS_ACTIVE(CONFIG_DRM_I915_PREEMPT_TIMEOUT)) if (!CONFIG_DRM_I915_PREEMPT_TIMEOUT)
return 0; return 0;
if (!intel_has_reset_engine(engine->gt)) if (!intel_has_reset_engine(engine->gt))
...@@ -3375,7 +3375,7 @@ static int live_preempt_timeout(void *arg) ...@@ -3375,7 +3375,7 @@ static int live_preempt_timeout(void *arg)
* Check that we force preemption to occur by cancelling the previous * Check that we force preemption to occur by cancelling the previous
* context if it refuses to yield the GPU. * context if it refuses to yield the GPU.
*/ */
if (!IS_ACTIVE(CONFIG_DRM_I915_PREEMPT_TIMEOUT)) if (!CONFIG_DRM_I915_PREEMPT_TIMEOUT)
return 0; return 0;
if (!intel_has_reset_engine(gt)) if (!intel_has_reset_engine(gt))
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
unsigned long unsigned long
i915_fence_context_timeout(const struct drm_i915_private *i915, u64 context) i915_fence_context_timeout(const struct drm_i915_private *i915, u64 context)
{ {
if (context && IS_ACTIVE(CONFIG_DRM_I915_FENCE_TIMEOUT)) if (CONFIG_DRM_I915_FENCE_TIMEOUT && context)
return msecs_to_jiffies_timeout(CONFIG_DRM_I915_FENCE_TIMEOUT); return msecs_to_jiffies_timeout(CONFIG_DRM_I915_FENCE_TIMEOUT);
return 0; return 0;
......
...@@ -1862,7 +1862,7 @@ long i915_request_wait(struct i915_request *rq, ...@@ -1862,7 +1862,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 (IS_ACTIVE(CONFIG_DRM_I915_MAX_REQUEST_BUSYWAIT) && if (CONFIG_DRM_I915_MAX_REQUEST_BUSYWAIT &&
__i915_spin_request(rq, state)) __i915_spin_request(rq, state))
goto out; goto out;
......
...@@ -458,17 +458,4 @@ static inline bool timer_expired(const struct timer_list *t) ...@@ -458,17 +458,4 @@ static inline bool timer_expired(const struct timer_list *t)
return timer_active(t) && !timer_pending(t); return timer_active(t) && !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