1. 22 Sep, 2009 2 commits
    • Ingo Molnar's avatar
      ratelimit: Fix/allow use in atomic contexts · edaac8e3
      Ingo Molnar authored
      
      
      I'd like to use printk_ratelimit() in NMI context, but it's not
      robust right now due to spinlock usage in lib/ratelimit.c. If an
      NMI is unlucky enough to hit just that spot we might lock up trying
      to take the spinlock again.
      
      Fix that by using a trylock variant. If we contend on that lock we
      can genuinely skip the message because the state is just being
      accessed by another CPU (or by this CPU).
      
      ( We could use atomics for the suppressed messages field, but
        i doubt it matters in practice and it makes the code heavier. )
      
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: David S. Miller <davem@davemloft.net>
      LKML-Reference: <new-submission>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      edaac8e3
    • Ingo Molnar's avatar
      ratelimit: Use per ratelimit context locking · 979f693d
      Ingo Molnar authored
      I'd like to use printk_ratelimit() in atomic context, but that's
      not possible right now due to the spinlock usage this commit
      introduced more than a year ago:
      
        717115e1
      
      : printk ratelimiting rewrite
      
      As a first step push the lock into the ratelimit state structure.
      This allows us to deal with locking failures to be considered as an
      event related to that state being too busy.
      
      Also clean up the code a bit (without changing functionality):
      
       - tidy up the definitions
      
       - clean up the code flow
      
      This also shrinks the code a tiny bit:
      
         text	   data	    bss	    dec	    hex	filename
          264	      0	      4	    268	    10c	ratelimit.o.before
          255	      0	      0	    255	     ff	ratelimit.o.after
      
      ( Whole-kernel data size got a bit larger, because we have
        two ratelimit-state data structures right now. )
      
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: David S. Miller <davem@davemloft.net>
      LKML-Reference: <new-submission>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      979f693d
  2. 21 Sep, 2009 23 commits
  3. 20 Sep, 2009 15 commits