lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Thu, 10 Apr 2014 16:56:23 +0200
From:	Frederic Weisbecker <fweisbec@...il.com>
To:	Viresh Kumar <viresh.kumar@...aro.org>
Cc:	Thomas Gleixner <tglx@...utronix.de>,
	Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
	Lists linaro-kernel <linaro-kernel@...ts.linaro.org>
Subject: Re: [Query]: tick-sched: can idle_active be false in
 tick_nohz_idle_exit()?

On Wed, Apr 09, 2014 at 05:28:57PM +0530, Viresh Kumar wrote:
> Hi Guys,
> 
> File: kernel/time/tick-sched.c
> function: tick_nohz_idle_exit()
> 
> We are checking here if idle_active is true or not and then
> do some stuff. But is it possible that idle_active be false
> here?
> 
> The sequence as far as I understood is:
> idle-loop:
> 
> tick_nohz_idle_enter(), i.e. idle_active = true;
> local_irq_disable()
> 
> IDLE
> .
> .
> 
> wake up due to IPI ??
> 
> local_irq_enable()
>     tick_nohz_irq_enter(), i.e. idle_active = false;
>     tick_nohz_irq_exit(), i.e. idle_active = true;
> 
> tick_nohz_idle_exit()
> 
> How can idle_active be false here?

When a dynticks idle CPU is woken up (typically with an IPI), tick_nohz_stop_idle()
is called on interrupt entry but, because this is a waking up IPI, tick_nohz_start_idle()
won't be called. The reason is that need_resched() prevents tick_nohz_irq_exit() to be
called in irq_exit().

After all if we know that the CPU is going to exit the idle task, we don't need to account
any more idle time. We also don't need to retry to enter in dynticks idle mode since we
are going to restart the tick with tick_nohz_idle_exit().

So in case of wake up IPIs, we may end up with !ts->idle_active in tick_nohz_idle_exit() :)

I must confess this is not obvious. It confused me as well when I met that part. A small
comment in tick_nohz_idle_exit() would be welcome ;)

Thanks.

> 
> --
> viresh
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ