[Intel-gfx] [PATCH v3 5/5] drm/i915: Simplify intel_engine_wakeup()

Tvrtko Ursulin tvrtko.ursulin at linux.intel.com
Mon Feb 27 10:34:12 UTC 2017


On 24/02/2017 18:01, Chris Wilson wrote:
> Now the only use of the return value is ask whether or not we actually
> woke a process up. With a single condition to report, we can go back to
> using a boolean.

Argh! :) I guess it depends on whether you keep or not the open coded 
intel_engine_wakeup's in the previous patch.

Regards,

Tvrtko

> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
> Cc: Mika Kuoppala <mika.kuoppala at linux.intel.com>
> ---
>  drivers/gpu/drm/i915/intel_breadcrumbs.c | 13 +++++--------
>  drivers/gpu/drm/i915/intel_ringbuffer.h  |  4 +---
>  2 files changed, 6 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_breadcrumbs.c b/drivers/gpu/drm/i915/intel_breadcrumbs.c
> index 8e83be343057..84034ee827af 100644
> --- a/drivers/gpu/drm/i915/intel_breadcrumbs.c
> +++ b/drivers/gpu/drm/i915/intel_breadcrumbs.c
> @@ -26,19 +26,16 @@
>
>  #include "i915_drv.h"
>
> -unsigned int intel_engine_wakeup(struct intel_engine_cs *engine)
> +bool intel_engine_wakeup(struct intel_engine_cs *engine)
>  {
>  	struct intel_wait *wait;
>  	unsigned long flags;
> -	unsigned int ret = 0;
> +	bool ret = false;
>
>  	spin_lock_irqsave(&engine->breadcrumbs.lock, flags);
>  	wait = engine->breadcrumbs.first_wait;
> -	if (wait) {
> -		ret = ENGINE_WAKEUP_WAITER;
> -		if (wake_up_process(wait->tsk))
> -			ret |= ENGINE_WAKEUP_ASLEEP;
> -	}
> +	if (wait && wake_up_process(wait->tsk))
> +		ret = true;
>  	spin_unlock_irqrestore(&engine->breadcrumbs.lock, flags);
>
>  	return ret;
> @@ -67,7 +64,7 @@ static void intel_breadcrumbs_hangcheck(unsigned long data)
>  	 * to process the pending interrupt (e.g, low priority task on a loaded
>  	 * system) and wait until it sleeps before declaring a missed interrupt.
>  	 */
> -	if (!(intel_engine_wakeup(engine) & ENGINE_WAKEUP_ASLEEP)) {
> +	if (!intel_engine_wakeup(engine)) {
>  		mod_timer(&b->hangcheck, wait_timeout());
>  		return;
>  	}
> diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.h b/drivers/gpu/drm/i915/intel_ringbuffer.h
> index 3dd6eee4a08b..007628231ec3 100644
> --- a/drivers/gpu/drm/i915/intel_ringbuffer.h
> +++ b/drivers/gpu/drm/i915/intel_ringbuffer.h
> @@ -642,9 +642,7 @@ static inline bool intel_engine_has_waiter(const struct intel_engine_cs *engine)
>  	return READ_ONCE(engine->breadcrumbs.first_wait);
>  }
>
> -unsigned int intel_engine_wakeup(struct intel_engine_cs *engine);
> -#define ENGINE_WAKEUP_WAITER BIT(0)
> -#define ENGINE_WAKEUP_ASLEEP BIT(1)
> +bool intel_engine_wakeup(struct intel_engine_cs *engine);
>
>  void __intel_engine_disarm_breadcrumbs(struct intel_engine_cs *engine);
>  void intel_engine_disarm_breadcrumbs(struct intel_engine_cs *engine);
>


More information about the Intel-gfx mailing list