Agreed. We will fix it. Aurelien Texas Instruments France SA, 821 Avenue Jack Kilby, 06270 Villeneuve Loubet. 036 420 040 R.C.S Antibes. Capital de EUR 12.654.784 -----Original Message----- From: linus971@xxxxxxxxx [mailto:linus971@xxxxxxxxx] On Behalf Of Linus Torvalds Sent: Saturday, April 06, 2013 8:01 PM To: Vineet Gupta; Mark Salter; Jacquiot, Aurelien Cc: Thomas Gleixner; Christian Ruppert; Pierrick Hascoet; Frederic Weisbecker; Steven Rostedt; Peter Zijlstra; Ingo Molnar; Linux Kernel Mailing List; linux-arch@xxxxxxxxxxxxxxx; linux-c6x-dev@xxxxxxxxxxxxx Subject: Re: [PATCH] [PATCH] Gaurantee spinlocks implicit barrier for !PREEMPT_COUNT Looking around, it looks like c6x has the same bug. Some other architectures (tile) have such subtle implementations (where is __insn_mtspr() defined?) that I have a hard time judging. And maybe I missed something, but the rest seem ok. Linus On Sat, Apr 6, 2013 at 9:13 AM, Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> wrote: > This is all *COMPLETELY* wrong. > > Neither the normal preempt macros, nor the plain spinlocks, should > protect anything at all against interrupts. > > The real protection should come from the spin_lock_irqsave() in > lock_timer_base(), not from spinlocks, and not from preemption. > > It sounds like ARC is completely buggered, and hasn't made the irq > disable be a compiler barrier. That's an ARC bug, and it's a big one, > and can affect a lot more than just the timers. > > So the real fix is to add a "memory" clobber to > arch_local_irq_save/restore() and friends, so that the compiler > doesn't get to cache memory state from the irq-enabled region into the > irq-disabled one. > > Fix ARC, don't try to blame generic code. You should have asked > yourself why only ARC saw this bug, when the code apparently works > fine for everybody else! > > Linus > > On Sat, Apr 6, 2013 at 6:34 AM, Vineet Gupta <Vineet.Gupta1@xxxxxxxxxxxx> wrote: >>> On 04/05/2013 10:06 AM, Vineet Gupta wrote: >>> Hi Thomas, >>> >>> Given that we are closing on 3.9 release, and that one/more of these >>> patches fix a real issue for us - can you please consider my earlier >>> patch to fix >>> timer_pending() only for 3.9 >>> [http://www.spinics.net/lists/kernel/msg1508224.html] >>> This will be a localized / low risk change for this late in cycle. >>> >>> For 3.10 - assuming preempt_* change is blessed, we can revert this >>> one and add that fuller/better fix. >>> >>> What do you think ? >>> >>> Thx, >>> -Vineet >>> >> >> Ping ! Sorry for pestering, but one of the fixes is needed before 3.9 goes out. >> >> Simple localized fix: >> http://www.spinics.net/lists/kernel/msg1508224.html >> Better but risky: http://www.spinics.net/lists/kernel/msg1510885.html >> >> Thx, >> -Vineet ��.n��������+%������w��{.n�����{�����ܨ}���Ơz�j:+v�����w����ޙ��&�)ߡ�a����z�ޗ���ݢj��w�f