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:	Mon, 29 Aug 2011 19:59:57 +0200
From:	Frederic Weisbecker <fweisbec@...il.com>
To:	Peter Zijlstra <a.p.zijlstra@...llo.nl>
Cc:	LKML <linux-kernel@...r.kernel.org>,
	Andrew Morton <akpm@...ux-foundation.org>,
	Anton Blanchard <anton@....ibm.com>,
	Avi Kivity <avi@...hat.com>, Ingo Molnar <mingo@...e.hu>,
	Lai Jiangshan <laijs@...fujitsu.com>,
	"Paul E . McKenney" <paulmck@...ux.vnet.ibm.com>,
	Paul Menage <menage@...gle.com>,
	Stephen Hemminger <shemminger@...tta.com>,
	Thomas Gleixner <tglx@...utronix.de>,
	Tim Pepper <lnxninja@...ux.vnet.ibm.com>
Subject: Re: [PATCH 05/32] nohz: Move rcu dynticks idle mode handling to idle
 enter/exit APIs

On Mon, Aug 29, 2011 at 07:49:15PM +0200, Peter Zijlstra wrote:
> On Mon, 2011-08-29 at 19:11 +0200, Frederic Weisbecker wrote:
> > On Mon, Aug 29, 2011 at 04:25:22PM +0200, Peter Zijlstra wrote:
> > > On Mon, 2011-08-15 at 17:52 +0200, Frederic Weisbecker wrote:
> > > > To prepare for nohz / idle logic split, pull out the rcu dynticks
> > > > idle mode switching to strict idle entry/exit areas.
> > > > 
> > > > So we make the dyntick mode possible without always involving rcu
> > > > extended quiescent state. 
> > > 
> > > Why is this a good thing? I would be thinking that if we're a userspace
> > > bound task and we disable the tick rcu would be finished on this cpu and
> > > thus the extended quiescent state is just what we want?
> > 
> > But we can stop the tick from the kernel, not just userspace.
> 
> Humm!? I'm confused, I thought the idea was to only stop the tick when
> we're 'stuck' in a user bound task. Now I get that we have to stop the
> tick from kernel space (as in the interrupt will clearly run in kernel
> space), but assuming the normal return from interrupt path doesn't use
> rcu, and using rcu (as per a later patch) re-enables the tick again, it
> doesn't matter, right?

Yeah. Either the interrupt returns to userspace and then we call
rcu_enter_nohz() or we return to kernel space and then a further
use of rcu will restart the tick.

Now this is not any use of rcu. Uses of rcu read side critical section
don't need the tick. But we need it as long as there is an RCU callback
enqueued on some CPU.

> Also, RCU needs the tick to drive the state machine, so how can you stop
> the tick and not also stop the RCU state machine?

This is why we have rcu_needs_cpu() and rcu_pending() checks before
stopping the tick.

rcu_needs_cpu() checks we have no local callback enqueued, in which
case the local CPU is responsible of the RCU state machine.

rcu_pending() is there to know if another CPU started a grace period
so we need the tick to complete it.
--
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