Thread (11 messages) 11 messages, 5 authors, 2012-11-29
STALE4934d

[PATCH v2] ARM: implement optimized percpu variable access

From: nico@fluxnic.net (Nicolas Pitre)
Date: 2012-11-29 16:02:39

On Thu, 29 Nov 2012, Russell King - ARM Linux wrote:
On Thu, Nov 29, 2012 at 10:45:50AM -0500, Nicolas Pitre wrote:
quoted
On Thu, 29 Nov 2012, Rob Herring wrote:
quoted
Signed-off-by: Rob Herring <redacted>
Acked-by: Will Deacon <redacted>
With the above, and moving the call to cpu_init() after the call to 
cpu_switch_mm(mm->pgd, mm) to fix Will's concerns (personally I'd put it 
right after local_flush_tlb_all())... 
You're confused.  We were suggesting before the printk().

The reasoning is: printk() is not guaranteed not to access per-cpu
variables, so it needs to be before the first printk.  It can't be
before cpu_switch_mm(), and putting it before the TLB flush does
_not_ guarantee that TLB/MMU isn't going to still be seeing the
strongly-ordered attribute - so it _must_ be after the TLB flush.
But isn't that what I wrote above?  I said "personally I'd put it right 
after local_flush_tlb_all()".
As for the setup of the active MM, that's something that I still
think should come as early as possible (even before the per-cpu
stuff) because that is getting everything properly initialized and
setup for this new thread; there's a risk that a fault occuring
before that point may cause issues, specially if active_mm were NULL.
Good point.
So, between cpumask_set_cpu() and printk() please.
Agreed.


Nicolas
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help